***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).
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.)