<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
</head>
<body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">
<div class="">The following code should work.</div>
<div class=""><br class="">
</div>
<div class="">class Pendulum(object):</div>
<div class=""> n = 5</div>
<div class=""> comm = PETSc.COMM_SELF</div>
<div class=""> l = 1.0</div>
<div class=""> m = 1.0</div>
<div class=""> g = 1.0</div>
<div class=""> def initialCondition(self, x):</div>
<div class=""> # mu = self.mu_</div>
<div class=""> #initial condition</div>
<div class=""> theta0= np.pi/3 #starting angle</div>
<div class=""> x0=np.sin(theta0)</div>
<div class=""> y0=-(self.l-x0**2)**.5</div>
<div class=""> lambdaval = 0.1</div>
<div class=""> x[0] = x0</div>
<div class=""> x[1] = y0</div>
<div class=""> x[2] = 0</div>
<div class=""> x[4] = 0</div>
<div class=""> x[5] = lambdaval</div>
<div class=""> x.assemble()</div>
<div class=""><br class="">
</div>
<div class=""> def evalIFunction(self, ts, t, x, xdot, f):</div>
<div class=""> f[0] = x[2]-xdot[0]</div>
<div class=""> f[1] = x[3]-xdot[1]</div>
<div class=""> f[2] = -xdot[2]+x[4]*x[0]/self.m</div>
<div class=""> f[3] = -xdot[3]+x[4]*x[1]/self.m-self.g</div>
<div class=""> f[4] = [x[2]**2 + x[3]**2 + (x[0]**2 + x[1]**2)/self.m*x[4] - x[1] * self.g]</div>
<div class=""> f.assemble()</div>
<div><br class="">
</div>
<div>You do not need to initialize xdot. Only x needs to be initialized. </div>
<div><br class="">
</div>
<div>Hong </div>
<div><br class="">
<blockquote type="cite" class="">
<div class="">On Jan 25, 2022, at 12:03 AM, Xiong, Jing via petsc-users <<a href="mailto:petsc-users@mcs.anl.gov" class="">petsc-users@mcs.anl.gov</a>> wrote:</div>
<br class="Apple-interchange-newline">
<div class="">
<div style="font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class="">
Good morning,</div>
<div style="font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class="">
<br class="">
</div>
<div style="font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class="">
Thanks for all your help.</div>
<div style="font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class="">
I'm trying to implement a toy example solving a DAE for a Pendulum system and I got two questions:</div>
<div style="font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class="">
<ol class="">
<li class=""><span class="">How to set the initial value for xdot?</span></li><li class=""><span style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class="">I got the following error information:</span><br class="">
</li></ol>
</div>
<div style="font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class="">
<ul class="">
<li class=""><span class=""><b style="font-size: 12pt; font-style: inherit; font-variant-ligatures: inherit; font-variant-caps: inherit;" class="">Assertion failed: (!PyErr_Occurred()), function __Pyx_PyCFunction_FastCall, file src/petsc4py.PETSc.c, line 359099.</b><br class="">
</span></li></ul>
</div>
<div style="font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class="">
<span style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class="">The system equation is given in </span><a href="https://en.wikipedia.org/wiki/Differential-algebraic_system_of_equations" id="LPNoLPOWALinkPreview" style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class="">https://en.wikipedia.org/wiki/Differential-algebraic_system_of_equations</a><br class="">
</div>
<div class="_EReadonly_1 _EType_OWALinkPreview _Entity _EId_OWALinkPreview" style="caret-color: rgb(0, 0, 0); font-family: Verdana; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;">
</div>
<div style="font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class="">
The formula I used is shown as follows:</div>
<div style="font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class="">
<span id="cid:3001ee1d-031e-4500-b5e0-bc14e99812b5"><image.png></span><br class="">
</div>
<div style="font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class="">
<br class="">
</div>
<div style="font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class="">
I also attached my code below:</div>
<div style="font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class="">
<pre style="background-color: rgb(255, 255, 255); color: rgb(8, 8, 8); font-family: "JetBrains Mono", monospace; font-size: 9.8pt;" class=""><span style="color: rgb(0, 51, 179);" class="">import </span>sys, petsc4py<br class="">petsc4py.init(sys.argv)<br class=""><span style="color: rgb(0, 51, 179);" class="">import </span>numpy <span style="color: rgb(0, 51, 179);" class="">as </span>np<br class=""><br class=""><span style="color: rgb(0, 51, 179);" class="">from </span>petsc4py <span style="color: rgb(0, 51, 179);" class="">import </span>PETSc<br class=""><br class=""><span style="color: rgb(0, 51, 179);" class="">class </span><span style="" class="">Pendulum</span>(object):<br class=""> n = <span style="color: rgb(23, 80, 235);" class="">5<br class=""></span><span style="color: rgb(23, 80, 235);" class=""> </span>comm = PETSc.COMM_SELF<br class=""> <span style="color: rgb(0, 51, 179);" class="">def </span><span style="color: rgb(0, 98, 122);" class="">initialCondition</span>(<span style="color: rgb(148, 85, 141);" class="">self</span>, x):<br class=""> <span style="color: rgb(140, 140, 140); font-style: italic;" class=""># mu = self.mu_<br class=""></span><span style="color: rgb(140, 140, 140); font-style: italic;" class=""> </span>l = <span style="color: rgb(23, 80, 235);" class="">1.0<br class=""></span><span style="color: rgb(23, 80, 235);" class=""> </span><span style="color: rgb(128, 128, 128);" class="">m </span>= <span style="color: rgb(23, 80, 235);" class="">1.0<br class=""></span><span style="color: rgb(23, 80, 235);" class=""> </span><span style="color: rgb(128, 128, 128);" class="">g </span>= <span style="color: rgb(23, 80, 235);" class="">1.0<br class=""></span><span style="color: rgb(23, 80, 235);" class=""> </span><span style="color: rgb(140, 140, 140); font-style: italic;" class="">#initial condition<br class=""></span><span style="color: rgb(140, 140, 140); font-style: italic;" class=""> </span>theta0= np.pi/<span style="color: rgb(23, 80, 235);" class="">3 </span><span style="color: rgb(140, 140, 140); font-style: italic;" class="">#starting angle<br class=""></span><span style="color: rgb(140, 140, 140); font-style: italic;" class=""> </span>x0=np.sin(theta0)<br class=""> y0=-(l-x0**<span style="color: rgb(23, 80, 235);" class="">2</span>)**<span style="color: rgb(23, 80, 235);" class="">.5<br class=""></span><span style="color: rgb(23, 80, 235);" class=""> </span>lambdaval = <span style="color: rgb(23, 80, 235);" class="">0.1<br class=""></span><span style="color: rgb(23, 80, 235);" class=""> </span>x[<span style="color: rgb(23, 80, 235);" class="">0</span>] = x0<br class=""> x[<span style="color: rgb(23, 80, 235);" class="">1</span>] = y0<br class=""> x[<span style="color: rgb(23, 80, 235);" class="">4</span>] = lambdaval<br class=""> x.assemble()<br class=""><br class=""> <span style="color: rgb(0, 51, 179);" class="">def </span><span style="color: rgb(0, 98, 122);" class="">evalIFunction</span>(<span style="color: rgb(148, 85, 141);" class="">self</span>, <span style="color: rgb(128, 128, 128);" class="">ts</span>, <span style="color: rgb(128, 128, 128);" class="">t</span>, x, xdot, f):<br class=""> f.setArray ([x[<span style="color: rgb(23, 80, 235);" class="">2</span>]-xdot[<span style="color: rgb(23, 80, 235);" class="">0</span>]],<br class=""> [x[<span style="color: rgb(23, 80, 235);" class="">3</span>]-xdot[<span style="color: rgb(23, 80, 235);" class="">1</span>]],<br class=""> [-xdot[<span style="color: rgb(23, 80, 235);" class="">2</span>]+x[<span style="color: rgb(23, 80, 235);" class="">4</span>]*x[<span style="color: rgb(23, 80, 235);" class="">0</span>]/m],<br class=""> [-xdot[<span style="color: rgb(23, 80, 235);" class="">3</span>]+x[<span style="color: rgb(23, 80, 235);" class="">4</span>]*x[<span style="color: rgb(23, 80, 235);" class="">1</span>]/m-g],<br class=""> [x[<span style="color: rgb(23, 80, 235);" class="">2</span>]**<span style="color: rgb(23, 80, 235);" class="">2 </span>+ x[<span style="color: rgb(23, 80, 235);" class="">3</span>]**<span style="color: rgb(23, 80, 235);" class="">2 </span>+ (x[<span style="color: rgb(23, 80, 235);" class="">0</span>]**<span style="color: rgb(23, 80, 235);" class="">2 </span>+ x[<span style="color: rgb(23, 80, 235);" class="">1</span>]**<span style="color: rgb(23, 80, 235);" class="">2</span>)/m*x[<span style="color: rgb(23, 80, 235);" class="">4</span>] - x[<span style="color: rgb(23, 80, 235);" class="">1</span>] * g])<br class=""><br class="">OptDB = PETSc.Options()<br class="">ode = Pendulum()<br class=""><br class="">x = PETSc.Vec().createSeq(ode.n, <span style="color: rgb(102, 0, 153);" class="">comm</span>=ode.comm)<br class="">f = x.duplicate()<br class=""><br class="">ts = PETSc.TS().create(<span style="color: rgb(102, 0, 153);" class="">comm</span>=ode.comm)<span style="color: rgb(140, 140, 140); font-style: italic;" class=""><br class=""></span><span style="color: rgb(140, 140, 140); font-style: italic;" class=""><br class=""></span>ts.setType(ts.Type.CN)<br class="">ts.setIFunction(ode.evalIFunction, f)<br class=""><br class="">ts.setSaveTrajectory()<br class="">ts.setTime(<span style="color: rgb(23, 80, 235);" class="">0.0</span>)<br class="">ts.setTimeStep(<span style="color: rgb(23, 80, 235);" class="">0.001</span>)<br class="">ts.setMaxTime(<span style="color: rgb(23, 80, 235);" class="">0.5</span>)<br class="">ts.setMaxSteps(<span style="color: rgb(23, 80, 235);" class="">1000</span>)<br class="">ts.setExactFinalTime(PETSc.TS.ExactFinalTime.MATCHSTEP)<br class=""><span style="color: rgb(140, 140, 140); font-style: italic;" class=""><br class=""></span>ts.setFromOptions()<br class="">ode.initialCondition(x)<br class="">ts.solve(x)</pre>
<br class="">
</div>
<div style="font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class="">
Best,<br class="">
Jing</div>
<div id="appendonsend" style="caret-color: rgb(0, 0, 0); font-family: Verdana; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">
</div>
<hr tabindex="-1" style="caret-color: rgb(0, 0, 0); font-family: Verdana; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; display: inline-block; width: 1090.734375px;" class="">
<span style="caret-color: rgb(0, 0, 0); font-family: Verdana; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class=""></span>
<div id="divRplyFwdMsg" dir="ltr" style="caret-color: rgb(0, 0, 0); font-family: Verdana; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">
<font face="Calibri, sans-serif" style="font-size: 11pt;" class=""><b class="">From:</b><span class="Apple-converted-space"> </span>Zhang, Hong <<a href="mailto:hongzhang@anl.gov" class="">hongzhang@anl.gov</a>><br class="">
<b class="">Sent:</b><span class="Apple-converted-space"> </span>Thursday, January 20, 2022 3:05 PM<br class="">
<b class="">To:</b><span class="Apple-converted-space"> </span>Xiong, Jing <<a href="mailto:jxiong@anl.gov" class="">jxiong@anl.gov</a>><br class="">
<b class="">Cc:</b><span class="Apple-converted-space"> </span><a href="mailto:petsc-users@mcs.anl.gov" class="">petsc-users@mcs.anl.gov</a> <<a href="mailto:petsc-users@mcs.anl.gov" class="">petsc-users@mcs.anl.gov</a>>; Zhao, Dongbo <<a href="mailto:dongbo.zhao@anl.gov" class="">dongbo.zhao@anl.gov</a>>;
Hong, Tianqi <<a href="mailto:thong@anl.gov" class="">thong@anl.gov</a>><br class="">
<b class="">Subject:</b><span class="Apple-converted-space"> </span>Re: [petsc-users] Asking examples about solving DAE in python</font>
<div class=""> </div>
</div>
<div class="" style="caret-color: rgb(0, 0, 0); font-family: Verdana; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; word-wrap: break-word; line-break: after-white-space;">
<br class="">
<div class=""><br class="">
<blockquote type="cite" class="">
<div class="">On Jan 20, 2022, at 4:13 PM, Xiong, Jing via petsc-users <<a href="mailto:petsc-users@mcs.anl.gov" class="">petsc-users@mcs.anl.gov</a>> wrote:</div>
<br class="x_Apple-interchange-newline">
<div class="">
<div class="" style="font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; text-decoration: none; font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;">
<div class="" style="margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26); background-color: transparent;">
<span class="" style="background-color: transparent;">Hi,</span></div>
<div class="" style="margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26); background-color: transparent;">
<br class="">
</div>
<div class="" style="margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26); background-color: transparent;">
<span class="" style="background-color: transparent;">I hope you are well.</span></div>
<div class="" style="margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26); background-color: transparent;">
<span class="" style="background-color: transparent;">I'm very interested in PETSc and want to explore the possibility of whether it could solve Differential-algebraic equations (DAE) in python. I know there are great examples in C, but I'm struggling to connect
the examples in python. </span></div>
<div class="" style="margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26); background-color: transparent;">
<br class="">
</div>
<div class="" style="margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26); background-color: transparent;">
<span class="" style="background-color: transparent;">The only example I got right now is for solving ODEs in the paper: PETSc/TS: A Modern Scalable ODE/DAE Solver Library. </span></div>
<div class="" style="margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26); background-color: transparent;">
<span class="" style="background-color: transparent;">And I got the following questions:</span></div>
<ol class="" style="color: rgb(14, 16, 26); background-color: transparent; margin-top: 0pt; margin-bottom: 0pt;">
<li class="" style="background-color: transparent; margin-top: 0pt; margin-bottom: 0pt; list-style-type: decimal;">
<span class="" style="background-color: transparent; margin-top: 0pt; margin-bottom: 0pt;"><b class="">Is petsc4py the right package to use?</b></span></li></ol>
</div>
</div>
</blockquote>
<div class=""><br class="">
</div>
<div class="">Yes, you need petsc4py for python. </div>
<br class="">
<blockquote type="cite" class="">
<div class="">
<div class="" style="font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; text-decoration: none; font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;">
<ol class="" start="2" style="color: rgb(14, 16, 26); background-color: transparent; margin-top: 0pt; margin-bottom: 0pt;">
<li class="" style="background-color: transparent; margin-top: 0pt; margin-bottom: 0pt; list-style-type: decimal;">
<span class="" style="background-color: transparent; margin-top: 0pt; margin-bottom: 0pt;"><b class="">Could you give an example for solving DAEs in python?</b></span></li></ol>
</div>
</div>
</blockquote>
<div class=""><br class="">
</div>
<div class="">src/binding/petsc4py/demo/ode/vanderpol.py gives a simple example to demonstrate a variety of PETSc capabilities. The corresponding C version of this example is ex20adj.c in src/ts/tutorials/.</div>
<div class="">
<ol class="x_MailOutline">
<li class="">How to solve an ODE with explicit methods.</li><li class="">How to solve an ODE/DAE with implicit methods.</li><li class="">How to use TSAdjoint to calculate adjoint sensitivities.</li><li class="">How to do a manual matrix-free implementation (e.g. you may already have a way to differentiate your RHS function to generate the Jacobian-vector product). </li></ol>
</div>
<br class="">
<blockquote type="cite" class="">
<div class="">
<div class="" style="font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; text-decoration: none; font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;">
<ol class="" start="3" style="color: rgb(14, 16, 26); background-color: transparent; margin-top: 0pt; margin-bottom: 0pt;">
<li class="" style="background-color: transparent; margin-top: 0pt; margin-bottom: 0pt; list-style-type: decimal;">
<span class="" style="background-color: transparent; margin-top: 0pt; margin-bottom: 0pt;"><b class="">Is Jacobian must be specified? If not, could your show an example for solving DAEs without specified Jacobian in python?</b></span></li></ol>
</div>
</div>
</blockquote>
<div class=""><br class="">
</div>
PETSc can do finite-difference approximations to generate the Jacobian matrix automatically. This may work nicely for small-sized problems. You can also try to use an AD tool to produce the Jacobian-vector product and use it in a matrix-free implementation.</div>
<div class=""><br class="">
</div>
<div class="">Hong</div>
<div class=""><br class="">
<blockquote type="cite" class="">
<div class="">
<div class="" style="font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; text-decoration: none; font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;">
<div class=""><span class="" style="background-color: transparent; margin-top: 0pt; margin-bottom: 0pt;"><br class="">
</span></div>
<div class=""><span class="" style="background-color: transparent; margin-top: 0pt; margin-bottom: 0pt;">Thank you for your help.</span></div>
<div class=""><span class="" style="background-color: transparent; margin-top: 0pt; margin-bottom: 0pt;"><b class=""><br class="">
</b></span></div>
<div class=""><span class="" style="background-color: transparent; margin-top: 0pt; margin-bottom: 0pt;">Best,</span></div>
<div class=""><span class="" style="background-color: transparent; margin-top: 0pt; margin-bottom: 0pt;">Jing</span></div>
</div>
</div>
</blockquote>
</div>
</div>
</div>
</blockquote>
</div>
<br class="">
</body>
</html>