See, for example https://petsc.org/release/docs/manualpages/TS/TSTrajectoryGetVecs/ and https://petsc.org/release/docs/manualpages/TS/TSTrajectoryGetUpdatedHistoryVecs/
One does not directly access the data inside the trajectory; one calls functions in the API to obtained desired information. If you need specific information that it does not currently provide we can attempt to provide additional functionality. Barry > On Dec 14, 2022, at 1:07 PM, Guglielmo, Tyler Hardy via petsc-users > <petsc-users@mcs.anl.gov> wrote: > > Thanks Matt, > > I’m a bit confused on where the trajectory is being stored in the > TSTrajectory object. > > Basically I have run > > TSSetSaveTrajectory(ts); > … > TSSolve(ts, x); > TSTrajectory tj; > TSGetTrajectory(ts, &tj); > TSTrajectorySetType(tj, ts, TSTRAJECTORYMEMORY); > > How is the object supposed to be accessed to find the entire trajectory? I > couldn’t find a clear example of where this is laid out in the documentation. > > The TSTrajectory object looks like some complicated struct, but parsing which > pointer is pointing to the solution has alluded me. > > Thanks for your time! > > Best, > Tyler > > > From: Matthew Knepley <knep...@gmail.com <mailto:knep...@gmail.com>> > Date: Tuesday, December 13, 2022 at 6:41 AM > To: Guglielmo, Tyler Hardy <gugliel...@llnl.gov <mailto:gugliel...@llnl.gov>> > Cc: petsc-users@mcs.anl.gov <mailto:petsc-users@mcs.anl.gov> > <petsc-users@mcs.anl.gov <mailto:petsc-users@mcs.anl.gov>> > Subject: Re: [petsc-users] Saving solution with monitor function > > On Tue, Dec 13, 2022 at 8:40 AM Guglielmo, Tyler Hardy via petsc-users > <petsc-users@mcs.anl.gov <mailto:petsc-users@mcs.anl.gov>> wrote: > Hi all, > > I am a new PETSc user (and new to MPI in general), and was wondering if > someone could help me out with what I am sure is a basic question (if this is > not the appropriate email list or there is a better place please let me > know!). > > Basically, I am writing a code that requires a solution to an ODE that will > be used later on during runtime. I have written the basic ODE solver using > TSRK, however I haven’t thought of a good way to store the actual solution at > all time steps throughout the time evolution. I would like to avoid writing > each time step to a file through the monitor function, and instead just plug > each time step into an array. > > How is this usually done? I suppose the user defined struct that gets passed > into the monitor function could contain a pointer to an array in main? This > is how I would do this if the program wasn’t of the MPI variety, but I am not > sure how to properly declare a pointer to an array declared as Vec and built > through the usual PETSc process. Any tips are greatly appreciated > > I think this is what TSTrajectory is for. I believe you want > https://petsc.org/main/docs/manualpages/TS/TSTRAJECTORYMEMORY/ > <https://urldefense.us/v3/__https:/petsc.org/main/docs/manualpages/TS/TSTRAJECTORYMEMORY/__;!!G2kpM7uM-TzIFchu!irkbXWpYDosRslumKjVGCqxHkKyU-riye4i1dWe58HYH_sFxImRj33gOkhB2sgd_duk$> > > Thanks, > > Matt > > Thanks for your time, > Tyler > > +++++++++++++++++++++++++++++ > Tyler Guglielmo > Postdoctoral Researcher > Lawrence Livermore National Lab > Office: 925-423-6186 > Cell: 210-480-8000 > +++++++++++++++++++++++++++++ > > > -- > What most experimenters take for granted before they begin their experiments > is infinitely more interesting than any results to which their experiments > lead. > -- Norbert Wiener > > https://www.cse.buffalo.edu/~knepley/ > <https://urldefense.us/v3/__http:/www.cse.buffalo.edu/*knepley/__;fg!!G2kpM7uM-TzIFchu!irkbXWpYDosRslumKjVGCqxHkKyU-riye4i1dWe58HYH_sFxImRj33gOkhB27-uscIw$>