-
Notifications
You must be signed in to change notification settings - Fork 9
Open
Description
Hi bro,
A quick question, a piece of my code is like below,
write(6,*) 'before =', x0_test,xf_test
call erkvar%Init(me, MAX_STEPS, Method=ERK_DOP853, ATol=[atol], RTol=[rtol],&
InterpOn=.false., EventsOn=.FALSE. )
if (erkvar%status == FLINT_SUCCESS) then
stiffstatus = stifftestval
stepsz = stepsz0
call erkvar%Integrate(x0_test, y0_test, xf_test, yf_test, StepSz=stepsz, UseConstStepSz=CONST_STEPSZ, &
IntStepsOn=.false.,Xint = Xint, Yint = Yint, &
EventStates=EventStates, EventMask = EvMask,StiffTest=stiffstatus)
endif
write(6,*) 'after =', x0_test,xf_test
You know the x0_test and xf_test are the initial time and final time for the integral.
I expect that before and after call erkvar%Integrate, x0_test and xf_test will not change.
However, I notice that sometimes x0_test and xf_test will be changed after call erkvar%Integrate .
I checked erkvar%status, and, errstr.
I found erkvar%status = 5 , and
errstr is "Maximum integration steps reached"
It looks like, in this case FLINT did not complete the intergration, so x0_test and xf_test are somehow changed.
In such case, increasing max_steps does not really help.
- I wonder, so in such case, do you have some suggestions? Like how to complete the integral correctly? Do I use a different integral method instead of the default ERK_DOP853?
- If FLINT cannot complete the integral correctly, does that basically mean that the ODE does not have a numerical solution?
Thanks a lot!
Best regards,
Rong
Metadata
Metadata
Assignees
Labels
No labels