<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<div class="moz-cite-prefix">On 9/16/19 11:38 AM, Mark Lohry wrote:<br>
</div>
<blockquote type="cite" cite="mid:CAJ7aB-Ld-s3E6r+vCU7OKJBNPcqBprxf_zF8ub1uVJKjHraU4Q@mail.gmail.com">
<div dir="ltr">
<div>Hi Emil, maybe I was unclear, let me try to clarify, I only want the local truncation error at a given step.<br>
</div>
<div><br>
</div>
<div>Most integrators outside of GLEE also support ts_adapt basic (I'm specifically testing arkimex and bdf), and they compute the WLTE weighted error term, e.g. for arkimex:<br>
</div>
<div><br>
</div>
<div>TSAdapt basic arkimex 0:3 step   0 accepted t=0          + 1.896e-02 dt=1.967e-02  wlte=0.653  wltea=   -1 wlter=   -1</div>
<div><br>
</div>
<div>or BDF2:<br>
</div>
<div><br>
</div>
<div>TSAdapt basic bdf 0:2 step   0 rejected t=0          + 3.673e-02 dt=3.673e-03  wlte= 36.6  wltea=   -1 wlter=   -1</div>
<div><br>
</div>
<div>I'd like to have access to that wlte value. I can call TSEvaluateWLTE which works for BDF2 but crashes on arkimex for not being implemented. Is there a different avenue to getting this value through arkimex?<br>
</div>
<div><br>
</div>
</div>
</blockquote>
<p>I see, wlte is estimated in the adapter and logically separated from the time stepper. For ARKIMEX wlte is computed in TSAdaptChoose_Basic:
<a href="https://www.mcs.anl.gov/petsc/petsc-current/src/ts/adapt/impls/basic/adaptbasic.c.html#TSAdaptChoose_Basic">
https://www.mcs.anl.gov/petsc/petsc-current/src/ts/adapt/impls/basic/adaptbasic.c.html#TSAdaptChoose_Basic</a></p>
<p>That is used internally in ARKIMEX to adapt the step size, but you would have to call it after every step. TSEvaluateWLTE will also provide wlte after each step.</p>
<p>Emil<br>
</p>
<blockquote type="cite" cite="mid:CAJ7aB-Ld-s3E6r+vCU7OKJBNPcqBprxf_zF8ub1uVJKjHraU4Q@mail.gmail.com">
<div dir="ltr">
<div><br>
</div>
<div><br>
</div>
<div><br>
</div>
<div><br>
</div>
</div>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">On Mon, Sep 16, 2019 at 10:56 AM Constantinescu, Emil M. <<a href="mailto:emconsta@anl.gov" moz-do-not-send="true">emconsta@anl.gov</a>> wrote:<br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px
          0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
Mark, most integrators estimate the error occurring every step for <br>
adapting the step size. These are called local errors. GLEE are <br>
specialized integrator that estimate the actual error in time; this is <br>
called the global error. GLEE returns TimeError because it computes it <br>
internally, however none of the other solvers does it.<br>
<br>
To assess the accuracy for a specific problem you have two options, and <br>
both involve you estimating the error yourself:<br>
<br>
1. Use an integrator with very small step, store or save the solution <br>
(call it reference) and do the same for the others and then compute the <br>
error with respect to the reference. A strategy similar to this is <br>
implemented in src/ts/examples/tutorials/ex31.c<br>
<br>
2. If you have an exact or manufactured solution, you can compare <br>
against that.<br>
<br>
Emil<br>
<br>
On 9/16/19 9:07 AM, Mark Lohry via petsc-users wrote:<br>
> I'm trying to assess time accuracy for a couple different integrators <br>
> and timesteps in a setup where I need constant time steps.<br>
><br>
> TSGetTimeError seems to only work for GLEE methods (it returns a 0 <br>
> vector otherwise); is there an equivalent for others?<br>
><br>
> I can run -ts_adapt_type basic, and just set min=max=constant, and it <br>
> clearly computes some integrator errors for printf, but is there a way <br>
> I can get that programmatically?<br>
><br>
> Thanks,<br>
> Mark<br>
><br>
><br>
><br>
</blockquote>
</div>
</blockquote>
</body>
</html>