Can shift from implicit scheme to explicit scheme and reciprocally.
In addition, parameters must be defined to handle the shift (Global Parameters [REMOVED]):
MDE_SHIM: implicit scheme (=
MDE_SHEX: explicit scheme
Shifting can be done automatically or manually or both. Another application of this algorithm is to stabilize explicit steps.
ti = IeTimeIntegration(metafor) ti.setExplicitTimeIntegration(tiExp) ti.setImplicitTimeIntegration(tiImp) ti.setCurrentDynamicTimeIntegration(tiImp)
where tiExp and tiImp are the references towards the explicit and implicit time integration scheme respectively.
By default, the algorithm chooses the method based on an integration error, the time step and the machine time. The definition
MDE_ICPU = 1 must be done (shift based on CPU time, otherwise dummy shift for the battery). The shift is done only if estimated and critical time steps are equal (to a safety factor). When shifting from an explicit alpha-generalized method, explicit time steps can be computed with a bifurcation radius equal to zero to increase numerical dissipation. The option is activated for
method=1 but not for
method=2 (see Implicit/explicit shift management).
The user can impose shifts (see command
.sie). When shifting from an explicit alpha-generalized method, explicit time steps can be computed with a bifurcation radius equal to zero to increase numerical dissipation. The option is activated for
method=3 but not for
method=4 (see Implicit/explicit shift management).
When shifting from explicit to implicit, the first implicit time step is computed based on an integration error (majored by a value equal to the maximal change of step times the explicit step) in automatic shift and is equal to this value (maximal change of step times the explicit step) in manual shift. In addition, the user can impose a number of implicit balancing time steps when shifting from explicit to implicit. An implicit balancing step is computed based on an explicit number of steps corresponding to the maximal change, justifying why this is an integer.
All the computation is done with explicit time steps (
method5). All explicit maximal change of explicit steps are balanced by an implicit step.
It is mandatory to instanciate the IeShifManager and then the parameters can adjusted if required :
iesm = IeShiftManager(metafor) iems.setIeShiftMethod(meth) iesm.setNbOfBalanceSteps(nbbs) iesm.setMaxStepIncrease(msin) iesm.setAutomaticShiftSecurity(secu) iesm.setCpuDependency(cpuDep)
^ Parameter ^ default ^ description ^
|0||when shifting to implicit, is equal to the number of balancing steps|
|6||maximal change of the time step; this value is the ratio of the implicit step to the explicit step for a change to implicit or a balancing, so this is an integer|
|1.5||safety coefficient for automatic shift|
| ||specify if the automatic criterion for shifting from one time integration to another depends on the User CPU time. (Metafor Version > 2422)|
For manual shift, the user can set times at which method is changed. This is done with the commands:
| ||time at which the shift takes place|