Configure the output
The output options for the solver are configured through an output.dat file located in the data/ directory. This file allows you to customize what quantities are written to the result file, including the type of strain and stress measures, rotation information, tangent modulus, temperature, and internal state variables.
File structure
The output.dat file should be placed in the data/ subdirectory relative to your simulation working directory. The complete structure of the file is as follows:
#Output_values
strain_type <value>
nb_strain <number>
<strain component indices...>
stress_type <value>
nb_stress <number>
<stress component indices...>
Rotation_type <value>
Tangent_type <value>
T <value>
Number_of_wanted_internal_variables <n|all>
[#number from <start> to <end>]
#Block #type_1_N_2_T #every
<block_num> <output_type> <frequency>
...
Basic example
Here is a basic example of an output.dat file:
#Output_values
strain_type 0
nb_strain 6
0 1 2 3 4 5
stress_type 4
nb_stress 6
0 1 2 3 4 5
Rotation_type 0
Tangent_type 0
T 1
Number_of_wanted_internal_variables 0
#Block #type_1_N_2_T #every
1 1 1
This configuration outputs all 6 components of Green-Lagrange strain and Cauchy stress, along with temperature, at every increment of block 1.
Note
In the case of small deformations (Control_type = 1, no NLGEOM), all strain and stress measures reduce to the same quantities. The Green-Lagrange strain becomes equivalent to the infinitesimal strain tensor, and all stress measures become equivalent to the Cauchy stress. Therefore, strain_type = 0 (Green-Lagrange) and stress_type = 4 (Cauchy) are used by default for small deformation problems.
Strain output options
strain_type controls which strain measure is output. The available options are:
Value |
Strain Type |
Description |
|---|---|---|
0 |
Green-Lagrange |
\(\mathbf{E} = \frac{1}{2}(\mathbf{F}^T\mathbf{F} - \mathbf{I})\) in Voigt notation (6 components) |
1 |
Biot |
\(\sqrt{2\mathbf{E}+\mathbf{I}} - \mathbf{I}\) (6 components) |
2 |
Deformation Gradient |
Full \(\mathbf{F}\) matrix (9 components) as row-wise vector |
3 |
Logarithmic (Eulerian) |
Small strain tensor \(\boldsymbol{\varepsilon}\) (6 components) |
4 |
Isochoric Principal Stretches |
\(\bar{\lambda}_i\) (3 principal stretches from \(\mathbf{V}\) decomposition) |
nb_strain specifies the number of strain components to output.
The following line contains space-separated component indices. For Voigt notation (types 0, 1, 3), the indices are:
0: \(\varepsilon_{11}\) (or \(E_{11}\))
1: \(\varepsilon_{22}\)
2: \(\varepsilon_{33}\)
3: \(\varepsilon_{12}\) (or \(\gamma_{12}\))
4: \(\varepsilon_{13}\)
5: \(\varepsilon_{23}\)
For full tensor notation (type 2), the indices are 0-8 for the 9 components in row-wise order.
For isochoric principal stretches (type 4), the indices are 0-2 for the 3 principal stretches.
Stress output options
stress_type controls which stress measure is output. The available options are:
Value |
Stress Type |
Description |
|---|---|---|
0 |
2nd Piola-Kirchhoff (PKII) |
\(\mathbf{S}\) - Reference configuration (6 components) |
1 |
Nominal Stress |
\(\mathbf{P}^T\) - Transpose of 1st Piola-Kirchhoff (9 components) |
2 |
1st Piola-Kirchhoff (PKI) |
\(\mathbf{P}\) - Unsymmetric (9 components) |
3 |
Kirchhoff |
\(\boldsymbol{\tau} = J\boldsymbol{\sigma}\) (6 components) |
4 |
Cauchy |
\(\boldsymbol{\sigma}\) - True stress (6 components) |
nb_stress specifies the number of stress components to output.
The following line contains space-separated component indices. For Voigt notation (types 0, 3, 4), the indices are 0-5. For full tensor notation (types 1, 2), the indices are 0-8.
Rotation output options
Rotation_type controls what rotation information is output:
Value |
Description |
|---|---|
0 |
No rotation output |
1 |
Rotation matrix \(\mathbf{R}\) (9 components) + corotational basis vectors \(\mathbf{g}_i\) (9 components) |
2 |
Rotation increment \(\Delta\mathbf{R}\) (9 components) |
3 |
Rotation matrix \(\mathbf{R}\) (9 components) + rotation increment \(\Delta\mathbf{R}\) (9 components) |
Tangent modulus output
Tangent_type controls whether the tangent modulus is output:
Value |
Description |
|---|---|
0 |
No tangent modulus output |
1 |
Output tangent modulus \(\mathbf{L}_t\) (36 components for mechanical, additional components for thermomechanical) |
For thermomechanical problems (Loading_type = 2), additional coupling terms are output: \(\partial\mathbf{S}/\partial T\) (6 components), \(\partial r/\partial\mathbf{E}\) (6 components), and \(\partial r/\partial T\) (1 component).
Temperature output
T controls whether temperature information is output:
Value |
Description |
|---|---|
0 |
No temperature output |
1 |
Output temperature \(T\), heat flux \(Q\), and heat source \(r\) |
Internal state variables
Number_of_wanted_internal_variables controls which internal state variables are output. There are three options:
0: No internal state variables are output
all (or All or ALL): Output all internal state variables
n (a positive integer): Output n specific selections of state variables
If you specify a positive integer n, you need to provide n selection lines. Each selection can be either:
A single state variable:
#<num> <index>A range of state variables:
#<num> from <start> to <end>
Example with specific state variables:
Number_of_wanted_internal_variables 3
#1 5
#2 from 10 to 15
#3 20
This outputs state variable 5, state variables 10 through 15, and state variable 20.
Block output control
The last section controls the output frequency for each simulation block:
#Block #type_1_N_2_T #every
<block_num> <type> <frequency>
For each block, you specify:
block_num: The block number
type: The output type (1 for increment-based, 2 for time-based)
frequency: The output frequency
Type |
Meaning |
Frequency |
|---|---|---|
1 |
Every N increments |
Integer N = output every N increments |
2 |
Time-based |
Float = output at time intervals |
Example for multiple blocks:
#Block #type_1_N_2_T #every
1 1 1
2 1 5
3 2 0.1
This outputs every increment for block 1, every 5 increments for block 2, and at time intervals of 0.1 for block 3.
Hyperelasticity example
Here is an example for hyperelastic simulations where you want to output isochoric principal stretches and nominal stress:
#Output_values
strain_type 4
nb_strain 3
0 1 2
stress_type 1
nb_stress 9
0 1 2 3 4 5 6 7 8
Rotation_type 0
Tangent_type 0
T 1
Number_of_wanted_internal_variables 0
#Block #type_1_N_2_T #every
1 1 1
This configuration outputs the 3 isochoric principal stretches and all 9 components of the nominal stress tensor.
Default values
If the output.dat file is not present, the solver uses the following default values:
strain_type: 0 (Green-Lagrange)
stress_type: 4 (Cauchy)
nb_strain: 6 (all components)
nb_stress: 6 (all components)
Rotation_type: 0 (no rotation output)
Tangent_type: 0 (no tangent modulus)
T: 1 (output temperature)
Number_of_wanted_internal_variables: 0 (no state variables)
type: 1 (increment-based for all blocks)
frequency: 1 (every increment)
Result file format
The result file contains columns in the following order:
Block number
Cycle number
Step number
Increment number
Time
Temperature, heat flux Q, heat source r (if T = 1)
Strain components (based on strain_type and indices)
Stress components (based on stress_type and indices)
Rotation data (if Rotation_type > 0)
Tangent modulus (if Tangent_type = 1)
Mechanical energy components: \(W_m\) (4 values)
Thermal energy components: \(W_t\) (3 values, only for thermomechanical problems)
Selected internal state variables (if Number_of_wanted_internal_variables > 0 or all)