Gideon Simpson <gideon.simp...@gmail.com> writes:

> In terms of the TS PreStep, PostStep, Monitor, etc., what is the calling 
> order?  I’m specifically curious as to whether the Monitor routine is run 
> before or after the PostStep, but I’d be interested to know what the whole 
> workflow is.

Look at TSSolve:

    while (!ts->reason) {
      ierr = TSMonitor(ts,ts->total_steps,ts->ptime,ts->vec_sol);CHKERRQ(ierr);
      if (!ts->steprollback) {
        ierr = TSPreStep(ts);CHKERRQ(ierr);
      }
      ierr = TSStep(ts);CHKERRQ(ierr);
      if (ts->vec_costintegral && ts->costintegralfwd) { /* Must evaluate the 
cost integral before event is handled. The cost integral value can also be 
rolled back. */
        ierr = TSForwardCostIntegral(ts);CHKERRQ(ierr);
      }
      ierr = TSPostEvaluate(ts);CHKERRQ(ierr);
      ierr = TSEventHandler(ts);CHKERRQ(ierr); /* The right-hand side may be 
changed due to event. Be careful with Any computation using the RHS information 
after this point. */
      if (!ts->steprollback) {
        ierr = 
TSTrajectorySet(ts->trajectory,ts,ts->total_steps,ts->ptime,ts->vec_sol);CHKERRQ(ierr);
        ierr = TSPostStep(ts);CHKERRQ(ierr);
      }
    }
    ierr = TSMonitor(ts,ts->total_steps,ts->ptime,ts->vec_sol);CHKERRQ(ierr);

Attachment: signature.asc
Description: PGP signature

Reply via email to