****calcul
#
Description#
This command marks the beginning of a FEM calculation definition. The
Z-set program in FEM mode will search this command and interpret all the
sub-commands until the termination token ****return
is reached. A
keyword following the ****calcul
token will indicate the type of
calculation which is to be made.
Syntax#
The calculation will be defined using the following syntax:
****calcul
[ type ]
\(~\,~\,\) options
****return
The calculation types which are possible are listed below:
Type |
Description |
---|---|
mechanical |
static mechanical (no inertial effects) |
eigen |
eigen frequency analysis |
dynamic |
mechanical with inertial effects (implicit) |
explicit mechanical |
explicit solver for structural dynamics |
thermal steady state |
stationary thermal calculation |
thermal transient |
transient thermal calculation |
diffusion |
Ficks Law diffusion analysis with multiple phases |
weak_coupling |
Generalized coupled analysis |
In the absence of a type, the default will be mechanical
.
The basic components of the allowable input data after ****calcul
are summarized below 1More options may exist. Later versions of the code output all
available command names with the -H
switch.:
CODE |
Description |
---|---|
|
used to specify the types of elements in a mesh, or give an alternate geometry file name. |
|
requests that the calculation be continued from a previous stored result. |
|
used to declare the solution procedures including the loading sequences. |
|
declare relationships between entities (multi-point constraints) within the calculation. |
|
imposes a geometrical evolution for problems which do not have displacement variables but do have an integration volume which changes (thermal, diffusion). |
|
used to define a sub-problem in the sequential weak coupling algorithm; may be post calculations or re-meshing operations as well. |
|
allows specification of externally calculated (given) parameters which may be used to alter the material characteristics during the calculation. |
|
defines surfaces of possible contact and the method of enforcement in the event there is contact. |
|
specify both the geometrical and force boundary conditions. |
|
specify the tabular loading magnitudes for parameters and boundary conditions. |
|
specify functional loading magnitudes for parameters and boundary conditions in terms of the time. |
|
gives the information for material files as attached to element sets, local integration methods, material rotations, and initial variable values. |
|
used to specify the desired output from the analysis; multiple output sections can be given to optimize the solution storage. |
****calcul dynamic
#
Description#
****calcul
command indicates that dynamic
effects should be taken into account. The solution procedure is either
an implicit d-form of the Newmark time integration scheme or the
\(\alpha\)-method form Hilber, Hughes and Taylor. These methods
are compatible with all mechanical element formulations. Most of the
following explanations can be found in [U3]
and [U4].where \(\bf d(t)\), \(\bf v(t)=\dot{\bf d}(t)\) and \(\bf a(t)=\dot{\bf v}(t)\) are the vectors of nodal displacement, velocity and acceleration respectively. \(\bf M\) is the mass matrix and \(\bf F_{damp}\) and \(\bf F_{ext}(t)\) are the nodal vectors of damping and external forces respectively. The following initial conditions hold:
The linear (or linearized) form of Eq. (7) reads:
where \(\bf C\) and \(\bf K\) are the damping and rigidity (or tangential rigidity) matrices respectively.
Newmark schemes#
The methods of the Newmark family consist in discretizing Eq. (9) in time in the following way:
- where the predictors (known from the previous increment)
\(\widetilde{\bf d}^{t+\Delta t}\) and \(\widetilde{\bf v}^{t+\Delta t}\) are defined by:
\(\bf d^t\), \(\bf v^t\) and \(\bf a^t\) are approximations of \(\bf d(t)\), \(\dot{\bf d}(t)\) and \({\rm d}ot{\bf d}(t)\) respectively. Parameters \(\beta\) and \(\gamma\) determine the stability and accuracy of the algorithm. | There are several possible implementations of the Newmark algorithm. The one used in Z-set is the d-form, meaning that the equations are solved in terms of \(\bf d\) (i.e. not in terms of \(\bf a\) or \(\bf v\)). The linear system to solve then reads:
Note that the choice \(\beta=0\) (corresponding to the explicit Newmark algorithm if \(\bf M\) and \(\bf C\) are diagonal) is not suitable for the d-form.
\(\alpha\)-method (HHT)#
The \(\alpha\)-method introduced by Hilber, Hughes and Taylor owns to a more general class of integration schemes called linear multisteps methods (LMS). The \(\alpha\)-method is only slightly different from the Newmark one: the update equations (10)-(11) are conserved, the difference lies in the time-discrete equation which now reads:
By setting \(\alpha=0\), the Newmark family of time integration methods is recovered. The \(\alpha\)-method is usually used with the following set of parameters:
The reasons of this choice will be explained in the following section.
Linear problems#
For linear problems, the behaviors of the Newmark and \(\alpha\)-methods are well known. To select the appropriate set of parameters \((\alpha,\beta,\gamma)\), three points are of particular importance:
stability (conditional or unconditional)
order of convergence
controllable algorithmic dissipation of the high-frequency modes
The last attribute if often desirable in structural dynamics problems. High-frequency modes are poorly approximated by the spatial finite element discretization. By employing algorithms with high-frequency dissipation, spurious high-frequency response is damped out. Properties of some classical methods are summarized in Table 1. Generally, the stability condition reads:
Where \(\omega^h\) corresponds to the highest pulsation of the spatially discretized problem (\(h\) is related to the spatial discretization, i.e. to the size of the finite elements) and \(\Omega_\text{crit}\) depends on the physical damping parameter. It can be shown that \(\omega^h\) is bounded by the maximum element pulsation \(\omega^h\leq\omega^h_e\) which increases when \(h\) decreases. As a consequence, for conditional stability, the critical time step decreases with decreasing element size. Moreover, selecting \(\gamma=\frac{1}{2}\) ensures a second order accuracy but adds no damping of high-frequency modes. Selecting \(\gamma>\frac{1}{2}=\frac{1}{2}+\alpha\) allows artificial (purely numerical) damping of spurious high frequency modes. This damping is maximized for \(\beta=\frac{(1+\alpha)^2}{4}\). Within the Newmark framework, this choice leads to a first-order accuracy whereas a second-order accuracy is achieved with the \(\alpha\)-method, and this is the main advantage of the \(\alpha\)-method compared to the Newmark one. Note that damping is proportional to \(\alpha\) and that low-frequency modes are affected more strongly for higher values of \(\alpha\).
Method |
\(\beta\) |
\(\gamma\) |
Stability condition |
Order of accuracy |
Note |
---|---|---|---|---|---|
Central difference |
\(0\) |
\(\frac{1}{2}\) |
\(\omega^h \Delta t\leq 2\) |
2 |
Not suitable for the d-form |
Linear acceleration |
\(\frac{1}{6}\) |
\(\frac{1}{2}\) |
\(\omega^h\Delta t\leq 2\sqrt{3}\) |
2 |
No HF damping |
Fox-Goodwin |
\(\frac{1}{2 }\) |
\(\frac{1}{2}\) |
\(\omega^h\Delta t\leq \sqrt{6}\) |
2 |
No HF damping |
Average acceleration (trapezoidal rule) |
\(\frac{1}{4}\) |
\(\frac{1}{2}\) |
Unconditional |
2 |
No HF damping |
Newmark modified average acceleration (\(\alpha>0\)) |
\(\frac{(1+\alpha)^2}{4}\) |
\(\frac{1}{2}+\alpha\) |
Unconditional |
1 |
HF damping proportional to \(\alpha\) |
\(\alpha\)-method (\(\alpha>0\)) |
\(\frac{(1+\alpha)^2}{4}\) |
\(\frac{1}{2}+\alpha\) |
Unconditional |
2 |
HF damping proportional to \(\alpha\) |
Nonlinear problems#
The notion of stability and accuracy developed for linear dynamics are not sufficient for nonlinear problems. The use of the previous rules does not guarantee stability.
Syntax#
Dynamic calculations accept a subset of the ****-level
commands,
with an additional ***init_velocity
command used to specify initial
velocity conditions. The dynamics specific commands are found in the
following table:
Commands |
Description |
---|---|
|
same as for the static case with specification of the time integration
scheme parameters \(\alpha\), \(\beta\) and \(\gamma\) within the sequence
definition (see |
|
set up initial velocities |
The command ***init_velocity
has the following syntax:
***init_velocity
\(~\,~\,~\,\) dof_name
elset
elset_name value
**sequence
block (see page ) through optional commands
*alpha
, *beta
and *gamma
. All other **sequence
sub-commands are available and remain unchanged.**sequence
[ N ]
[ *alpha
val1 [ val2, valN ] ]
[ *beta
val1 [ val2, valN ] ]
[ *gamma
val1 [ val2, valN ] ]
These commands can be used with the following increasing level of description:
none of these command is used. The \(\alpha\)-method is selected with \(\alpha=0.05\), \(\beta=\frac{(1+\alpha)^2}{4}\) and \(\gamma=\frac{1}{2}+\alpha\).
only
*alpha
is used. This selects the coefficients of the \(\alpha\)-method with \(\beta=\frac{(1+\alpha)^2}{4}\) and \(\gamma=\frac{1}{2}+\alpha\).only
*alpha
and*gamma
are used. This selects the coefficients of the \(\alpha\)-method with \(\beta=\frac{(\frac{1}{2}+\gamma)^2}{4}\).*alpha
,*beta
and*gamma
are used. The three parameters are defined independently.
To select the Newmark integration scheme, \(\alpha\) must be set to \(0\). Due to its unconditional stability and good convergence rate, it is recommended using the \(\alpha\)-method in accordance with relations in (14), even for non-linear problems.
Example#
An example implicit dynamic calculation follows. In the first sequence a
Newmark average acceleration scheme is selected. In the second one, an
\(\alpha\)-method with \(\alpha=0.1\) has been chosen. Initial
velocity of nset INIT1
is set up to 0.1. Note the expiring boundary
condition to move and then release a load point.
****calcul dynamic
***mesh updated_lagrangian_plane_strain
***resolution
**sequence
*dtime 1.0 1.0
*increment 10 10
*alpha 0. 0.1
*ratio absolu 1.e-6
*algorithm p1p2p3
***bc
**impose_nodal_dof
wall U2 0.0
wall U1 0.0
load exp U2 -1.0 tab
***table
**name tab
*time 0.0 1.
*value 0.0 1.
***init_velocity
U1 elset INIT1 0.1
***output
**curve dynam_ul.test
*node_var 6 U2
***material
*file ../MAT/dynam_ul
****return
****calcul mechanical_explicit
#
Description#
This option of the ****calcul
command is used to activate the
explicit solver. Such a solver can be used to model and capture short
time scale phenomena such as waves propagation. Explicit solvers can
although be used for rough problems like crash, impact or metal sheet
forming where contact occurs on large surfaces (contact is very rough
from a computational point of view).
Central difference explicit schemes#
The central difference explicit scheme can be derived from the Newmark
integration scheme in (10)-(11)
of the ****calcul dynamic
section) with \(\beta=0\) and
\(\gamma=0.5\). The a-form of the integration scheme then reads:
with
The following expression follows from equations (10) b-(11)b
hence the name “central difference” scheme. Note that \(\bf d^{t+\Delta t}\) and \(\bf v^{t+\Delta t}d\) are known from the previous step at time \(t\) (equations (17) and (18)) so that the right hand side of (16) is known.
In order to make this scheme explicit, a diagonalization of \(\bf M\) and \(\bf C\) is performed (also called a lump) so that the solution of equation (16) is trivial. Each time step is therefore solved very quickly through a simple matrix vector product and there is no linear system to solve. The basic algorithm is described below:
initiate \(\bf d^0\) and \(\bf v^0\)
compute \(\bf a^0=\bf M^{-1}\left( \bf F_{ext}^0 - \bf K \bf d^0 -\bf C \bf v^0 \right)\) and \(\bf v^{1/2} = \bf v^0 + \frac{\Delta t}{2} \bf a^0\)
enforce velocity boundary conditions
increment time from \(t-{\Delta t}\) to \(t\) and compute \(\bf d^t=\bf d^{t-{\Delta t}}+\Delta t \bf v^{t-{\Delta t}/2}\)
compute \(\bf a^t=\bf M^{-1}\left( \bf F_{ext}^t - \bf K \bf d^t -\bf C \bf v^{t-{\Delta t}/2} \right)\)
compute \(\bf v^{t+\Delta t}d = \bf v^{t-{\Delta t}/2} + \Delta t \bf a^t\)
if computation not finished, go to step 3.
The drawback of explicit algorithms lies in the stability condition that imposes that the time step \(\Delta t\) is bounded by a critical time step \(\Delta t_{crit}\). The stability criterion for explicit central difference method reads (damping has no effect on stability):
where \(\omega^h\) is the highest natural frequency of the discretized structure. Computing \(\omega^h\) is very expensive since it requires solving a large eigen values system. It can be shown that \(\omega^h\) is bounded by the maximum frequency of individual elements:
Let us take the example of a linear beam element with stiffness \(\bf K\) and lumped mass matrix \(\bf M\) such that:
where \(h\), \(S\), \(E\) and \(\rho\) are the element length, section, Young’s modulus and mass density respectively. The non-zero solution of the eigen value problem \(K-{\omega^h_{el}}^2M\) leads to \(\omega^h_{el}=2/h\sqrt{E/\rho}=2c/h\) where \(c\) is the wave speed. The critical time step can therefore be written:
This corresponds to the time for the wave to go through the element. This interpretation can be verified for every kind of finite element. In practice, this last remark is used in Z-set to evaluate \(\Delta t_{crit}\). The characteristic size of the element is taken as the minimum distance between two nodes of the element. The wave speed is taken to be the longitudinal wave speed (the fastest one) which reads :
where \(\lambda\) and \(G\) are the Lamé coefficients. An important property of finite elements applied to hyperbolic problems is that \(\Delta t_{crit}\) is \(O(h)\) whereas it is \(O(h^{2})\) for parabolic problems. This makes explicit methods difficult to apply to parabolic problems such as heat conduction or diffusion in general. It is important to note that the critical time step is governed by the size of the smallest element in the mesh. If there is only one spurious small element (due to a bad meshing for instance), the computational cost would increase.
Explicit algorithms are very interesting in the sense that no linear system need to be solved. However, a major limitation lies in the \(O(h)\) critical time step. Explicit methods are therefore well suited to model problems where small time steps are imposed by the physics. If there is no need for small time steps, implicit methods may be economically competitive.
Non linear problems#
Extension to non-linear problems is direct and equation (16) is replaced by:
In the algorithm presented above, the computation of \(\bf F_{int}^{t+\Delta t}(\bf d^{t+\Delta t},\bf v^{t+\Delta t}d)\) is performed between steps 3 and 5.
The stability condition (19) emanates from an analysis of linear equations. At this time, there is no stability theorem that covers the range of nonlinear phenomena such as contact-impact. Instability cannot be overlooked in linear problems since the solution tends to grow exponentially. However, this is not always true for nonlinear equations. A good way to detect instabilities is to check the energy balance and make sure that no spurious energy is created. The default stability criterion used in Z-set is defined as:
where \(W_\text{kin}\) is the kinematic energy, \(W_\text{int}\) and \(W_\text{ext}\) are works done by internal and external forces respectively, and \(W_\text{dmp}\) is the energy dissipated by damping. An absolute criterion can also be used :
\(\varepsilon\) is a small value defined with the
**sequence *ratio
command. The absolute criterion is selected by
using the absolute option (see below). If the energy balance is not
verified, the sub-step is recomputed with half time step.
Syntax#
The resolution procedure is specified by the usual way using the
***resolution
command. Specific commands are therefore added to
control some parameters. Here are the different options available within
the resolution block:
***resolution
\(~\,\) **sequence
[ N ]
\(~\,\) [ *ratio
[ absolute
] val1 [ val2 … valN ] ]
\(~\,\) [ *beta
val1 [ val2 … valN ] ]
\(~\,\) [ *fixed_dt
val1 [ val2 … valN ] ]
\(~\,\) [ *max_dt
val1 [ val2 … valN ] ]
\(~\,\) [ *min_dt
val1 [ val2 … valN ] ]
\(~\,\) [ *damping
val1 [ val2 … valN ] ]
\(~\,\) [ *max_successive
val1 [ val2 … valN ] ]
[ **show_gauge]
**sequence
has the same syntax as in ****calcul
(see sequence) with
additional commands. Note that the time stepping is not defined by the
number of increments set in **sequence
but is either automatically
computed by Z-set (by default) or explicitly specified using
*fixed_dt
. If the time increment is larger than the algorithm time
step, sub-stepping occurs. The number of sub-steps performed within each
sequence increment is displayed in the standard output.
*ratio [absolute]
valuedefines \(\varepsilon\) in (25) (or in (26) if the keyword
absolute
is used).*beta
valueIf the critical time step is computed by Z-set, the effective time step is taken to be \(\Delta t_{crit}\times\) value. Values between \(0.8\) (default) and \(0.9\) are usual.
*fixed_dt
valuespecifies the time step to use. This value is not affected by
*beta
.*max_dt
valuespecifies the upper bound of the time step
*min_dt
valuespecifies the lower bound of the time step. If the time step is lower than value, an error message is sent and the computation is stopped.
*damping
valueadd constant diagonal components in the damping matrix \(\bf C\). This command is similar to the command
***explicit **damp
(see below).*max_successive
valuespecifies that if the energy balance is not verified after value successive sub-steps (dividing each successive time step by \(2\)), Z-set will stop and send an error message. The default value is set to \(50\) which is a relatively large value.
**show_gauge
allows to display the sub-stepping evolution within an increment. A percent value is displayed in the standard output. This can be useful to get an idea on how fast the computation goes when a lot of sub-steps are performed.**
Additional options are also available through the ***explicit
command.
***explicit
\(~\,\) **damp
[ constant
] value
\(~\,\) **every_update
value
**damp
[constant
] valueis similar to
*damping
. Each**damp
command is cumulative. At the moment, the only damp type is “constant” (default).**every_update
valuespecifies that the critical time step is computed every value time steps. The default value is set to 20. Recomputing the critical time step is useful within a finite strain calculation, where large deformation of some elements can indeed modify \(\Delta t_{crit}\) (i.e. the time for the wave to go through the element can decrease or increase). However, this can be time consuming, please check CPU time at the end of the computation.**
Example#
An example explicit dynamic calculation follows.
****calcul explicit_mechanical
***mesh plane_strain
***resolution
**sequence
*time 10. 20.
*increment 10 30
*fixed_dt 0.05 0.01
*ratio 1.e-2
*max_successive 10. 20.
*beta 0.9 0.8
**show_gauge
***explicit
**every_update 1
**damp constant 1.e-3
***bc
**impose_nodal_dof
left U2 0.0
left U1 0.0
**pressure
right 0.00001 echelon
***table
**name echelon
*time 0.0 1.e-10 10000000.
*value 0.0 1.0 1.0
***material
**elset R1
*file dynam_unit
****return
****calcul eigen
#
Description#
This option of the ****calcul
command indicates that eigen value
solution of the natural frequencies are to be calculated. The solution
of the eigen-value problem is controlled using the command ***eigen
(see eigen).
Eigen mode calculations accept a sub-set of the above commands, with an
additional command ***eigen
used to give parameters of the eigen
problem solution. The allowable commands are found in the following
table:
Commands |
Description |
---|---|
|
same as above |
|
give eigen solution parameters and resolution method |
|
same as above |
|
same as above; only fixed conditions are allowed |
|
same as above |
|
specifies what output to save at the end of an eigen solution; this is a sub-set of the above |
Example#
An example file for Eigen solution follows.
****calcul eigen
***mesh
**elset solid small_deformation
**elset springs spr1
***eigen lanczos
6 0.01 2.
***bc
**impose_nodal_dof
base U1 0.00
base U2 0.00
base U3 0.00
***output
***material
*file building.mat
****return
****calcul thermal_transient
#
Description#
This option of the ****calcul
command indicates that the problem is
transient thermal analysis.
Example#
****calcul thermal_transient
***resolution
**sequence
*time 10. 8010.0
*increment 10 100
*iteration 50 50
*ratio 0.01 0.01
*algorithm p1p1p1
***bc
**fluconv exte
h 232.5
Te 1000.0 tab1
***init_dof_value
TP uniform 20.
***material
*file ../MAT/TTLL_02_89
***table
**name tab1
*time 0. 50000.
*value 1. 1.
***output
**curve
*precision 4 *small 1.e-4
*node_var 1 TP
*node_var 16 TP
****return
****calcul diffusion
#
This option of the ****calcul
command indicates that the problem is
a diffusion one, obeying Ficks law.
Command |
Description |
---|---|
|
used to allow the geometry to evolve which can be very useful for coupled analysis |
****calcul weak_coupling
#
Description#
The weak-coupling implementation uses an iterative approach to an arbitrary coupled problem. Any number of sub-problems are solved (thus keeping the individual systems small) with the coupling taking place through appropriate transfer of results between problems. For example, a mechanical problem can transfer internal heat generation due to mechanical dissipation to a thermal problem which calculates the resulting temperature field evolution which is re-transferred to the mechanical problem to allow coefficient alteration.
Syntax#
Some special commands are of interest for the coupled problem. These
define the sub-problem files (standard .inp
files), and the method
of determination for convergence of the coupled problems.
***resolution
define the global time steps to be run; convergence parameters for the sub-problems are determined in their input files.
coupled_resolution
additional convergence parameters specific to the coupled solution.
sub_problem
specify a sub-problem to be added; these will be run in the order they are entered.
Example#
The following is the top level command file for the test
$Z7PATH/test/Coupled_test/INP/MechTherm.inp
****calcul weak_coupling
***resolution
**sequence
*time 4.0 8.0
*increment 10 10
*ratio 1.e-4
***coupled_resolution
**iteration 2
***sub_problem fem MechTherm/plastic
**transfer integ_nodeparam
*variable q_dot
*file MechTherm/heat_out
**transfer node_kinematic
*file MechTherm/kine_out
***sub_problem fem MechTherm/thermal
**transfer node_nodeparam
*variable TP
*file MechTherm/temp_out
****return
This following section lists all three stars commands available under
****calcul
. You may find an exhaustive list of these commands in the Index.