Skip to content

Latest commit

 

History

History
74 lines (39 loc) · 4.51 KB

SolversInExudyn.rst

File metadata and controls

74 lines (39 loc) · 4.51 KB

Solvers in Exudyn

The user has a couple of basic solvers available in Exudyn , see :numref:`fig-available-solvers`:

  • exudyn.SolveStatic(...): compute static solution for given problem (may also be used to compute kinematic behavior by prescribing joint motion)
  • exudyn.SolveDynamic(...): time integration of equations of motion
  • exudyn.ComputeLinearizedSystem(...): computes the linearized system of equations and returns mass, stiffness, damping matrices
  • exudyn.ComputeODE2Eigenvalues(...): computes the eigenvalues of the linearized system of equations; only possible if no algebraic constraints in system; uses scipy to compute eigenvalues
../theDoc/figures/solversAvailableSolvers.png

Basic and advanced solvers in Exudyn ; advanced solvers build upon any basic solver to perform more sophisticated operations

There are advanced solvers, like in exudyn.processing:

  • Optimization:

    GeneticOptimization(...): find optimum for given set of parameter ranges using genetic optimization; works in parallel Minimize(...): find optimum with scipy.optimize.minimize(...)

  • ParameterVariation(...): compute a series of simulations for given set(s) of parameters; works in parallel

  • ComputeSensitivities(...): compute sensitivities for certain parameters; works in parallel

The advanced methods are build upon the basic solvers and essentially run single simulations in the background, see the according examples.

The basic solvers need a MainSystem, usually denoted as mbs, to be solved. Furthermore, a couple of options are usually to be given, which are explained shortly:

  • simulationSettings: This is a big structure, containing all solver options; note that only the according options for staticSolver or timeIntegration are used. Look at the detailed description of these options in Section :ref:`sec-settingsstructures`. These settings influence the output rate and output quantity of the solution, solver reporting, accuracy, solver type, etc. Specifically, the verboseMode may be increased (2-4) to see the behavior of the solver and intermediate quantities.

  • solverType: Only for exudyn.SolveDynamic(...): This is a simpler access to the solverType given in the internal structure of

    timeIntegration.generalizedAlpha and simulationSettings.timeIntegration.explicitIntegration.dynamicSolverType.

The function exudyn.SolveDynamic(...) sets the according variables internally. For available solver types, see the description of exudyn.DynamicSolverType in Section :ref:`sec-dynamicsolvertype`.

  • storeSolver: if True, the solver is stored in mbs.sys['staticSolver'] or mbs.sys['dynamicSolver'] and also solver settings are stored in mbs.sys['simulationSettings']. After the solver has finished, mbs.sys['staticSolver'] can be used to retrieve additional information on convergence, system matrices, etc. (see the solver structure).
  • showHints: This shows a lot of possible solutions in case of no convergence
  • showCausingItems: This shows a potential causing item if the linear solver failed; the item number is computed from the coordinate number that caused problems (e.g., a row that became zero during factorization); note that this item may not be the real cause in your problem

System equations of motion

The system equations of motion in Exudyn follow the notations of Section :ref:`sec-nomenclatureeom` and are represented as

{\mathbf{M}} \ddot {\mathbf{q}} + \frac{\partial {\mathbf{g}}}{\partial {\mathbf{q}}^\mathrm{T}} \tlambda & = &{\mathbf{f}}_\SO({\mathbf{q}}, \dot {\mathbf{q}}, t) \\
\dot {\mathbf{y}} + \frac{\partial {\mathbf{g}}}{\partial {\mathbf{y}}^\mathrm{T}} \tlambda & = &{\mathbf{f}}_\FO({\mathbf{y}}, t) \\
{\mathbf{g}}({\mathbf{q}}, \dot {\mathbf{q}}, {\mathbf{y}}, \tlambda, t) &=& 0

It is important to note, that for linear mechanical the term {\mathbf{f}}_\SO becomes

{\mathbf{f}}^{lin}_\SO = {\mathbf{f}}_a - {\mathbf{K}} {\mathbf{q}} - {\mathbf{D}} \dot {\mathbf{q}}

in which {\mathbf{f}}^a represents applied forces and stiffness matrix {\mathbf{K}} and damping matrix {\mathbf{D}} become part of the system Jacobian for time integration.