<div dir="ltr"><div>Hello, </div><div>I'trying to solve an ODE system using PETSc TS through its wrapper petsc4py, and I'm having problems with the setting. The problem is of the kind: u_t = G(t, u) with u being a vector with DoF from a FEM problem and G is computed by a series of matrix operations and manipulations, which are implemented for distributed domains.</div><div>I set up the problem as explicit using the TSSetRHSFunction, but when I try to solve it using explicit solvers I got a weird behavior: the unknown variable (u above) is never updated (I checked it inside the RHS function I provided), despite having a non null evaluation of f = G(t, u). This happens for RK, SSP, SUNDIALS (adams), but strangely not for FE (where u is updated in every step). That is what disturbs me, because I'd like to use the more sophisticated solvers. </div><div><br></div><div>I followed this steps in order to get the time evolution of u:</div><div><br></div><div># Create and Setup time stepper</div><div>ts = PETSc.TS().create(comm=self.comm)</div><div><br></div><div># Set problem type</div><div>ts.setProblemType(ts.ProblemType.NONLINEAR)</div><div><br></div><div># Set solver type</div><div>ts.setType(ts.Type.RK)</div><div><br></div><div># Set initial time</div><div>ts.setTime(sTime)</div><div><br></div><div># Set max time or max number of iterations</div><div>ts.setDuration(eTime, max_steps=maxSteps)</div><div><br></div><div># Set how to treat the final step</div><div>ts.setExactFinalTime(ts.ExactFinalTime.INTERPOLATE)</div><div><br></div><div># Allocate variables for internal computations of the RHS</div><div>vector 'U' for the solution</div><div>vector 'f' for the RHS evaluation</div><div><br></div><div># Set rhs function</div><div>ts.setRHSFunction(self.evalRHSFunction, self.g)</div><div>(where evalRHSFunction has the form f(self, ts, t, Vort, f))</div><div><br></div><div># Set fuction to be run after each step</div><div>ts.setPostStep(convergedStepFunction)</div><div><br></div><div># Set from other command line options</div><div>ts.setFromOptions()</div><div><br></div><div># Set initial conditions in vector 'U'</div><div><br></div><div># Run TS</div><div>ts.solve(U)</div><div><br></div><div>Is there anything am I doing wrong?</div><div>Thanks in advance, </div><div><br></div><div>Alejandro</div></div>