doc:user:integration:scheme:dynimplexpl
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
doc:user:integration:scheme:dynimplexpl [2013/07/12 15:24] – joris | doc:user:integration:scheme:dynimplexpl [2016/03/30 15:23] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== Dynamic implicit/ | ||
+ | ===== Description ===== | ||
+ | |||
+ | Can shift from implicit scheme to explicit scheme and reciprocally. | ||
+ | |||
+ | ===== Data set ===== | ||
+ | |||
+ | ==== Old Metafor Version <= 2422 ==== | ||
+ | |||
+ | See dynamic [[doc: | ||
+ | |||
+ | In addition, parameters must be defined to handle the shift ([[doc: | ||
+ | |||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | Shifting can be done automatically or manually or both. Another application of this algorithm is to stabilize explicit steps. | ||
+ | |||
+ | ==== New Metafor Version > 2422 ==== | ||
+ | |||
+ | < | ||
+ | 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. | ||
+ | |||
+ | ===== Automatic Shift (method 1 or 2) ===== | ||
+ | |||
+ | By default, the algorithm chooses the method based on an integration error, the time step and the machine time. The definition '' | ||
+ | |||
+ | ===== Manual Shift (method 3 or 4) ===== | ||
+ | |||
+ | The user can impose shifts (see command '' | ||
+ | |||
+ | ===== Balancing===== | ||
+ | |||
+ | 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. | ||
+ | |||
+ | |||
+ | ===== Balancing all explicit time steps (method 5) ===== | ||
+ | |||
+ | All the computation is done with explicit time steps ('' | ||
+ | |||
+ | ===== Implicit/ | ||
+ | |||
+ | 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 ^ | ||
+ | |'' | ||
+ | | | | = '' | ||
+ | | | | = '' | ||
+ | | | | = '' | ||
+ | | | | = '' | ||
+ | | | | = '' | ||
+ | |'' | ||
+ | |'' | ||
+ | |'' | ||
+ | |'' | ||
+ | For manual shift, the user can set times at which method is changed. This is done with the commands: | ||
+ | |||
+ | metafor.getIeShiftManager().pushTimeOfShiftingToExplicit(time) | ||
+ | metafor.getIeShiftManager().pushTimeOfShiftingToImplicit(time) | ||
+ | |||
+ | where | ||
+ | |||
+ | | '' | ||
+ | |||
+ | |||
+ | |||
+ |