[petsc-users] Turning off TSADAPT still adapts time step
Mark Lohry
mlohry at princeton.edu
Wed Apr 29 14:49:01 CDT 2015
To continue beating this horse, I wrote this:
PetscErrorCode CheckStageTrue(TSAdapt adapt,TS ts,PetscBool *accept){
*accept = PETSC_TRUE;
}
TSAdaptSetCheckStage(adapt,CheckStageTrue);
But TSAdapt then still rejects the stage, but quits altogether instead
of continuing:
Nonlinear solve did not converge due to DIVERGED_LINEAR_SOLVE
iterations 4
TSAdapt 'basic': step 0 stage rejected t=0 + 1.000e-01
retrying with dt=2.500e-02
Am I not using TSAdaptSetCheckStage correctly?
On 04/27/2015 12:55 PM, Jed Brown wrote:
> Mark Lohry <mlohry at princeton.edu> writes:
>
>> TSAdaptChoose_None is being called, yes. Output with -ts_adapt monitor
>> looks like this:
>>
>> TSAdapt 'none': step 17 accepted t=680 + 4.000e+01
>> family='beuler' scheme=0:'(null)' dt=4.000e+01
>> TSAdapt 'none': step 18 accepted t=720 + 4.000e+01
>> family='beuler' scheme=0:'(null)' dt=4.000e+01
>> TSAdapt 'none': step 19 accepted t=760 + 4.000e+01
>> family='beuler' scheme=0:'(null)' dt=4.000e+01
>> TSAdapt 'none': step 20 stage rejected t=800 + 4.000e+01
>> retrying with dt=1.000e+01
> Add -snes_converged_reason. What do you want to do when the solver
> fails? Pretend like it succeeded and get the wrong answer? Usually
> people shorten the time step and retry, which is what you see happening
> here.
>
> You can call TSAdaptSetCheckStage and have your function unconditionally
> set accept to PETSC_TRUE (and you'll likely get the wrong answer).
More information about the petsc-users
mailing list