FEDEM Solver
R8.0
Source code of the dynamics solver
|
Module with subroutines for quasi-static time-domain simulation. More...
Functions/Subroutines | |
subroutine, public | staticequilibrium (sam, sys, mech, ctrl, xinp, num_xinp, lpu, ierr) |
Performs static equilibrium iterations to find start configuration. More... | |
subroutine, public | staticint (sam, sys, mech, ctrl, extRhs, iop, resFileFormat, lpu, ierr) |
Advances the quasi-static solution one time step. More... | |
subroutine | staticincandupdate (sam, sys, mech, ierr, delta, noCorotUpd, doIterations, doFrictions) |
Increments all position variables and updates the configuration. More... | |
subroutine | finalstaticupdate (sam, sys, mech, ierr) |
Updates the configuration after initial static equilibrium. More... | |
Module with subroutines for quasi-static time-domain simulation.
subroutine staticequilibriummodule::finalstaticupdate | ( | type(samtype), intent(in) | sam, |
type(systemtype), intent(inout) | sys, | ||
type(mechanismtype), intent(inout) | mech, | ||
integer, intent(out) | ierr | ||
) |
Updates the configuration after initial static equilibrium.
[in] | sam | Data for managing system matrix assembly |
sys | System level model data | |
mech | Mechanism components of the model | |
[out] | ierr | Error flag |
This subroutine performs some final updates after the initial static equilibrium iterations have converged. Typically, this is (initial) velocity-dependent stuff, like dampers, etc. There is no need to update those during the iterations themselves which are purely static, only on the converged configuration.
subroutine, public staticequilibriummodule::staticequilibrium | ( | type(samtype), intent(inout) | sam, |
type(systemtype), intent(inout) | sys, | ||
type(mechanismtype), intent(inout) | mech, | ||
type(controltype), intent(inout) | ctrl, | ||
real(dp), dimension(*), intent(in), optional | xinp, | ||
integer, intent(inout), optional | num_xinp, | ||
integer, intent(in) | lpu, | ||
integer, intent(out) | ierr | ||
) |
Performs static equilibrium iterations to find start configuration.
sam | Data for managing system matrix assembly | |
sys | System level model data | |
mech | Mechanism components of the model | |
ctrl | Control system data | |
[in] | xinp | External function values for initial state |
num_xinp | Number of external function values to extract/extracted | |
[in] | lpu | File unit number for res-file output |
[out] | ierr | Error flag |
This is a rewritten version of the old QUAEQL subroutine by OIS and others from 1989. It solves for the initial configuration where all external loads (including gravity) is evaluated at the starting time, through Newton-Raphson iterations. The purpose is to avoid initial noise in the subsequent dynamic simulation due to large initial transients.
|
private |
Increments all position variables and updates the configuration.
[in] | sam | Data for managing system matrix assembly |
sys | System level model data | |
mech | Mechanism components of the model | |
[out] | ierr | Error flag |
[in] | delta | Iterative solution increment |
[in] | noCorotUpd | If .true., the co-rotated frames are not updated |
[in] | doIterations | If .false., no initial equilibrium iterations (used by the tire module only) |
[in] | doFrictions | If not present, skip friction update. If .false., use pseudo-velocities during friction update. |
All mechanism objects are brought up-to-date with the updated configuration while the velocity and acceleration variables are assumed identically zero.
subroutine, public staticequilibriummodule::staticint | ( | type(samtype), intent(in) | sam, |
type(systemtype), intent(inout) | sys, | ||
type(mechanismtype), intent(inout) | mech, | ||
type(controltype), intent(inout) | ctrl, | ||
real(dp), dimension(:), intent(in), optional | extRhs, | ||
integer, intent(inout) | iop, | ||
integer, intent(inout) | resFileFormat, | ||
integer, intent(in) | lpu, | ||
integer, intent(out) | ierr | ||
) |
Advances the quasi-static solution one time step.
sam | Data for managing system matrix assembly | |
sys | System level model data | |
mech | Mechanism components of the model | |
ctrl | Control system data | |
[in] | extRhs | Additional external forces set by some external process |
iop | Control variable defining what to do (see below) | |
resfileFormat | Flag for res-file output of convergence history | |
[in] | lpu | File unit number for res-file output |
[out] | ierr | Error flag |
This subroutine performs different sub-tasks of the solution process, depending on the value of the control variable iop, as follows: