***energy_monitoring#

Description#

This command can be used to monitor the evolution over time of the energies involved in the model (work of external forces, kinetic energy, energy dissipated by damage or plasticity, etc). It is also possible to monitor the evolution of linear momentum and angular momentum. An ASCII file is written at the end of the simulation, each row corresponds to an increment. This command processes in two ways depending on the considered energy :

  • the kinetic energy (\(W_{kin}\)), the internal energy (\(W_{int}\)) and the work of external forces (\(W_{ext}\)) are computed from the global nodal vectors. \(W_{int}\) and \(W_{ext}\) are integrated through a trapezoidal rule:

    (63)#\[\begin{split}\begin{aligned} W_{int}^{n+1} &=& W_{int}^{n} + \frac{1}{2}\Delta U^T\left(F_{int}^{n}+F_{int}^{n+1}\right)\\ W_{ext}^{n+1} &=& W_{ext}^{n} + \frac{1}{2}\Delta U^T\left(F_{ext}^{n}+F_{ext}^{n+1}\right)\end{aligned}\end{split}\]

    where \(\Delta U\) is the variation of displacement over the current increment (i.e. \(U^{n+1}-U^{n}\)). The kinetic energy is computed by:

    (64)#\[W_{kin}^{n+1} = \frac{1}{2}V^T M V\]

    where \(M\) is the mass matrix and \(V\) is the nodal velocity vector.

  • all other energies are computed by integrating dedicated internal variables over the time increment and over the whole domain. These variables have to be defined and updated within the material model, there are expected to be increments of energy densities (i.e. not energy rate neither cumulated energies).

    For instance, if one is interested in monitoring the dissipation due to a mechanism modelized with the state variable \(a\) associated to the driving force \(A\), classical thermodynamics of material states that (if \(a\) and \(A\) are tensors):

    (65)#\[\dot{e}=A:\dot{a}\]

    This requires the energy increment to be computed through a trapezoidal rule within the material model:

    (66)#\[\begin{split}\begin{aligned} \Delta e &=& \frac{1}{2}\Delta a(A^{n+1}+A^n)\\\end{aligned}\end{split}\]

    where \(\Delta e\) is the increment of energy density that has to be defined by the user within the material model as an internal variable (VAR_AUX).

    ../../_images/energy_integration.svg

    The purpose of ***energy_monitoring is to perform the integration over the domain (following the integration rule associated to each element) :

    (67)#\[\begin{split}\begin{aligned} \Delta E &=& \int_\Omega \Delta e \, d\Omega\\ E^{n+1} &=& E^n + \Delta E\end{aligned}\end{split}\]

    Note that if \(A\equiv \sigma\) and \(a \equiv \varepsilon\), the resulting energy should be equal to \(W_{int}\).

    Also note that if \(A\equiv \sigma\) and \(a \equiv \varepsilon_{el}\) (elastic strain), the resulting energy should be equal to the elastic energy.

It is also possible to compute linear and angular momenta. This is can be a useful guideline to check the validity of simulations, especially in the case of finite rotations in dynamics (it is well know that the Newmark integration scheme does not properly conserve angular momentum).

  • the linear momentum is defined as:

    (68)#\[\begin{aligned} \vect{p} &=& \int_\Omega \rho \vect{v}\, d\Omega\end{aligned}\]

    where \(\vect{v}\) is the velocity field and \(\rho\) is the local density. It is computed following the integration rule of the elements.

  • the angular momentum is defined as:

    (69)#\[\begin{aligned} \vect{L}_O &=& \int_\Omega \rho\, \vect{OM} \times \vect{v}\, d\Omega \end{aligned}\]

    where \(O\) is an arbitrary fixed point and \(\vect{OM}\) is the position vector. It is also computed following the integration rule of the elements.

Syntax#

***energy_monitoring [ **file_name file_name ] [ **energy \(~\,~\,\) *energy_density energy_density_name \(~\,~\,\) *name name ] [ **momentum \(~\,~\,\) *center (momentum_point) ] [ **elset elset_name ] [ **no_nodal_global_energies ]

file_name

is the name of the output file. It is optional, if not given the output file is named problem_name-energy_monitoring.dat.

energy_density_name

is the name of the internal variable (VAR_AUX) defined in the internal model as the energy density increment.

name

is the name of the current energy as it will appear in the header of the output file.

elset name

is the name of the elset where to apply the integration. Default is ALL_ELEMENT. One can use several ***energy_monitoring if one want to separate the output on different elsets.

momentum_point

is a vector defining the position where the angular momentum is computed

One can use as many **energy blocks as desired. Note that time, \(W_{int}\), \(W_{ext}\) and \(W_{kin}\) are always computed as the first four columns of the output file unless **no_nodal_global_energies is used. Note also that \(W_{int}\), \(W_{ext}\) and \(W_{kin}\) are always related to the whole structure even if **elset is used. This is because these quantities are computed from nodal values and can thus not be related to elements.

Example#

***energy_monitoring
 **file_name toto.energy
 **elset ALL_ELEMENT

 % energy dissipated through damage
 **energy
  *name E_elastic
  *energy_density damage_energy

 **momentum
  *center (0. 0. 0.)