Skip to content

erkvar%Integrate will change the initial time and final time?  #11

@CRquantum

Description

@CRquantum

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.

  1. 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?
  2. 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

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions