Small Overview of Simulation Flags¶
This chapter contains a short overview of simulation flags as well as additional details of the numerical integration methods.
OpenModelica (C-runtime) Simulation Flags¶
The simulation executable takes the following flags:
- -abortSlowSimulation
- Aborts if the simulation chatters.
- -alarm=value or -alarm value
- Aborts after the given number of seconds (default=0 disables the alarm).
- -clock=value or -clock value
Selects the type of clock to use. Valid options include:
- RT (monotonic real-time clock)
- CYC (cpu cycles measured with RDTSC)
- CPU (process-based CPU-time)
- -cpu
- Dumps the cpu-time into the result-file using the variable named $cpuTime
-csvOstep=value or -csvOstep value value specifies csv-files for debuge values for optimizer step
- -dasslJacobian=value or -dasslJacobian value
Selects the type of the Jacobian that is used for the dassl solver:
- coloredNumerical (colored numerical Jacobian, the default).
- internalNumerical (internal dassl numerical Jacobian).
- coloredSymbolical (colored symbolical Jacobian. Only usable if the simulation is compiled with --generateSymbolicJacobian or --generateSymbolicLinearization.
- numerical - numerical Jacobian.
- symbolical - symbolical Jacobian. Only usable if the simulation is compiled with --generateSymbolicJacobian or --generateSymbolicLinearization.
- -dasslnoRestart
- Deactivates the restart of dassl after an event is performed.
- -dasslnoRootFinding
- Deactivates the internal root finding procedure of dassl.
- -emit_protected
- Emits protected variables to the result-file.
- -f=value or -f value
- Value specifies a new setup XML file to the generated simulation code.
- -help=value or -help value
- Get detailed information that specifies the command-line flag For example, -help=f prints detailed information for command-line flag f.
- -ignoreHideResult
- Emits also variables with HideResult=true annotation.
- -iif=value or -iif value
- Value specifies an external file for the initialization of the model.
- -iim=value or -iim value
Value specifies the initialization method.
- none (sets all variables to their start values and skips the initialization process)
- symbolic (solves the initialization problem symbolically - default)
- -iit=value or -iit value
- Value [Real] specifies a time for the initialization of the model.
- -ils=value or -ils value
- Value specifies the number of steps for homotopy method (required: -iim=symbolic) or 'start value homotopy' method (required: -iim=numeric -iom=nelder_mead_ex). The value is an Integer with default value 1.
- -initialStepSize=value or -initialStepSize value
- Value specifies an initial stepsize for the dassl solver.
- -csvInput=value or -csvInput value
- Value specifies an csv-file with inputs for the simulation/optimization of the model
- -exInputFile=value or -exInputFile value
- Value specifies an external file with inputs for the simulation/optimization of the model.
- -stateFile=value or -stateFile value
- Value specifies an file with states start values for the optimization of the model.
- -ipopt_hesse=value or -ipopt_hesse value
- Value specifies the hessematrix for Ipopt(OMC, BFGS, const).
- -ipopt_init=value or -ipopt_init value
- Value specifies the initial guess for optimization (sim, const).
- -ipopt_jac=value or -ipopt_jac value
- Value specifies the jacobian for Ipopt(SYM, NUM, NUMDENSE).
- -ipopt_max_iter=value or -ipopt_max_iter value
- Value specifies the max number of iteration for ipopt.
- -ipopt_warm_start=value or -ipopt_warm_start value
- Value specifies lvl for a warm start in ipopt: 1,2,3,...
- -l=value or -l value
- Value specifies a time where the linearization of the model should be performed.
- -logFormat=value or -logFormat value
Value specifies the log format of the executable:
- text (default)
- xml
- -ls=value or -ls value
Value specifies the linear solver method
- lapack (method using lapack LU factorization)
- lis (method using iterativ solver Lis)
- klu (method using klu sparse linear solver)
- umfpack (method using umfpack sparse linear solver)
- totalpivot (method using a total pivoting LU factorization for underdetermination systems)
- default (default method - lapack with total pivoting as fallback)
- -ls_ipopt=value or -ls_ipopt value
- Value specifies the linear solver method for Ipopt, default mumps. Note: Use if you build ipopt with other linear solver like ma27
- -lv=value or -lv value
Value (a comma-separated String list) specifies which logging levels to enable. Multiple options can be enabled at the same time.
- LOG_DASSL (additional information about dassl solver)
- LOG_DASSL_STATES (outputs the states at every dassl call)
- LOG_DEBUG (additional debug information)
- LOG_DSS (outputs information about dynamic state selection)
- LOG_DSS_JAC (outputs jacobian of the dynamic state selection)
- LOG_DT (additional information about dynamic tearing)
- LOG_EVENTS (additional information during event iteration)
- LOG_EVENTS_V (verbose logging of event system)
- LOG_INIT (additional information during initialization)
- LOG_IPOPT (information from Ipopt)
- LOG_IPOPT_FULL (more information from Ipopt)
- LOG_IPOPT_JAC (check jacobian matrix with Ipopt)
- LOG_IPOPT_HESSE (check hessian matrix with Ipopt)
- LOG_IPOPT_ERROR (print max error in the optimization)
- LOG_JAC (outputs the jacobian matrix used by dassl)
- LOG_LS (logging for linear systems)
- LOG_LS_V (verbose logging of linear systems)
- LOG_NLS (logging for nonlinear systems)
- LOG_NLS_V (verbose logging of nonlinear systems)
- LOG_NLS_HOMOTOPY (logging of homotopy solver for nonlinear systems)
- LOG_NLS_JAC (outputs the jacobian of nonlinear systems)
- LOG_NLS_JAC_TEST (tests the analytical jacobian of nonlinear systems)
- LOG_NLS_RES (outputs every evaluation of the residual function)
- LOG_NLS_EXTRAPOLATE (outputs debug information about extrapolate process)
- LOG_RES_INIT (outputs residuals of the initialization)
- LOG_SIMULATION (additional information about simulation process)
- LOG_SOLVER (additional information about solver process)
- LOG_SOTI (final solution of the initialization)
- LOG_STATS (additional statistics about timer/events/solver)
- LOG_STATS_V (additional statistics for LOG_STATS)
- LOG_UTIL (???)
- LOG_ZEROCROSSINGS (additional information about the zerocrossings)
- -maxIntegrationOrder=value or -maxIntegrationOrder value
- Value specifies maximum integration order, used by dassl solver.
- -maxStepSize=value or -maxStepSize value
- Value specifies maximum absolute step size, used by dassl solver.
- -measureTimePlotFormat=value or -measureTimePlotFormat value
Value specifies the output format of the measure time functionality
- svg
- jpg
- ps
- gif
- ...
- -newton=value or -newton value
Value specifies the damping strategy for the newton solver.
- damped (Newton with a damping strategy)
- damped2 (Newton with a damping strategy 2)
- damped_ls (Newton with a damping line search)
- damped_bt (Newton with a damping backtracking and a minimum search via golden ratio method)
- pure (Newton without damping strategy)
- -nls=value or -nls value
Value specifies the nonlinear solver:
- hybrid
- kinsol
- newton
- mixed
- hybrid (Modification of the Powell hybrid method from minpack - former default solver)
- kinsol (sundials/kinsol - prototype implementation)
- newton (Newton Raphson - prototype implementation)
- homotopy (Damped Newton solver if failing case fixed-point and Newton homotopies are tried.)
- mixed (Mixed strategy. First the homotopy solver is tried and then as fallback the hybrid solver.)
- -nlsInfo
- Outputs detailed information about solving process of non-linear systems into csv files.
- -noemit
- Do not emit any results to the result file.
- -noEquidistantTimeGrid
- Output the internal steps given by dassl instead of interpolating results into an equidistant time grid as given by stepSize or numberOfIntervals.
- -noEquidistantOutputFrequency=value or -noEquidistantOutputFrequency value
- Integer value n controls the output frequency in noEquidistantTimeGrid mode and outputs every n-th time step
- -noEquidistantOutputTime=value or -noEquidistantOutputTime value
- Real value timeValue controls the output time point in noEquidistantOutputTime mode and outputs every time>=k*timeValue, where k is an integer
- -noEventEmit
- Do not emit event points to the result file.
- -optDebugeJac=value or -optDebugeJac value
- Value specifies the number of itereations from the dynamic optimization, which will be debugged, creating .csv and .py files.
- -optimizerNP=value or -optimizerNP value
- Value specifies the number of points in a subinterval. Currently supports numbers 1 and 3.
- -optimizerTimeGrid=value or -optimizerTimeGrid value
- Value specifies external file with time points.
- -output=value or -output value
- Output the variables a, b and c at the end of the simulation to the standard output: time = value, a = value, b = value, c = value
- -override=value or -override value
- Override the variables or the simulation settings in the XML setup file For example: var1=start1,var2=start2,par3=start3,startTime=val1,stopTime=val2
- -overrideFile=value or -overrideFile value
- Will override the variables or the simulation settings in the XML setup file with the values from the file. Note that: -overrideFile CANNOT be used with -override. Use when variables for -override are too many. overrideFileName contains lines of the form: var1=start1
- -port=value or -port value
- Value specifies the port for simulation status (default disabled).
- -r=value or -r value
- Value specifies the name of the output result file. The default file-name is based on the model name and output format. For example: Model_res.mat.
- -s=value or -s value
Value specifies the solver (integration method).
- euler - Explicit Euler (order 1)
- rungekutta - Runge-Kutta (fixed step, order 4)
- dassl - BDF solver with colored numerical jacobian, with interval root finding - default
- optimization - Special solver for dynamic optimization
- radau5 - Radau IIA with 3 points, "Implicit Runge-Kutta", order 5 [sundial/kinsol needed]
- radau3 - Radau IIA with 2 points, "Implicit Runge-Kutta", order 3 [sundial/kinsol needed]
- impeuler - Implicit Euler (actually Radau IIA, order 1) [sundial/kinsol needed]
- trapezoid - Trapezoidal rule (actually Lobatto IIA with 2 points) [sundial/kinsol needed]
- lobatto4 - Lobatto IIA with 3 points, order 4 [sundial/kinsol needed]
- lobatto6 - Lobatto IIA with 4 points, order 6 [sundial/kinsol needed]
- symEuler - symbolic implicit euler, [compiler flag +symEuler needed]
- symEulerSsc - symbolic implicit euler with step-size control, [compiler flag +symEuler needed]
- heun - Heun's method (Runge-Kutta fixed step, order 2)
- qss - A QSS solver [experimental]
- -keepHessian=value or -keepHessian value
- Value specifies the number of steps, which keep hessian matrix constant.
- -w
- Shows all warnings even if a related log-stream is inactive.
Integration Methods¶
This section contains additional information about the different integration methods in OpenModelica, selected by the method flag of the simulate command or the -s simflag.
dassl¶
Default integration method in OpenModelica. Adams Moulton; the default uses a colored numerical Jacobian and interval root finding. To change settings, use simulation flags such as dasslJacobian, dasslNoRootFinding, dasslNoRestart, initialStepSize, maxStepSize, maxIntegrationOrder, noEquidistantTimeGrid.
Order: | 1-5 |
Step Size Control: | true |
Order Control: | true |
Stability Region: | variable; depend from order |
euler¶
Explicit Euler.
Order: | 1 |
Step Size Control: | false |
Order Control: | false |
Stability Region: | |(1,0) Padé | ≤ 1 |
rungekutta¶
Classical Runge-Kutta method.
Order: | 4 |
Step Size Control: | false |
Order Control: | false |
Stability Region: | |(4,0) Padé | ≤ 1 |
radau1¶
Radau IIA with one point.
Order: | 1 |
Step Size Control: | false |
Order Control: | false |
Stability Region: | |(0,1) Padé | ≤ 1 |
radau3¶
Radau IIA with two points.
Order: | 3 |
Step Size Control: | false |
Order Control: | false |
Stability Region: | |(1,2) Padé | ≤ 1 |
radau5¶
Radau IIA with three points.
Order: | 5 |
Step Size Control: | false |
Order Control: | false |
Stability Region: | |(2,3) Padé | ≤ 1 |
lobatto2¶
Lobatto IIIA with two points.
Order: | 2 |
Step Size Control: | false |
Order Control: | false |
Stability Region: | |(2,2) Padé | ≤ 1 |
lobatto4¶
Lobatto IIIA with three points.
Order: | 4 |
Step Size Control: | false |
Order Control: | false |
Stability Region: | |(3,3) Padé | ≤ 1 |
lobatto6¶
Lobatto IIIA with four points.
Order: | 6 |
Step Size Control: | false |
Order Control: | false |
Stability Region: | |(4,4) Padé | ≤ 1 |
Notes¶
Simulation flags maxStepSize and maxIntegrationOrder specifiy maximum absolute step size and maximum integration order used by the dassl solver.
General step size without control . Events change the step size (see Modelica spec 3.3 p. 88).
For (a,b) Padé see wikipedia.