This mapping option enables calculating and transferring hardening parameters based on the Johnson-Mehl-Avrami-Kolmogorow (JMAK) equation from a source file containing temperature-time histories to a target mesh. Initially for HDF5 based THESEUS simulation result meshes, temperature-time histories are now available in different file formats. For further information, see [13] and [18].
This section covers the following:
SourceFile = STRING | Define the name and, if needed, the path of the source file. This must be the mesh, translated into LS-DYNA format. |
TargetFile = STRING | Define the name and, if needed, the path of the target file. This must be an LS-DYNA mesh. If the source and target file names are identical, mapping routines are skipped and the hardening parameter is initialized directly. |
MappingResult = STRING | Define the result file name. The mapping result is written into this newly generated file. |
ResultFileFormat = LS-DYNA LSDA |
If temperature mapping is active, there is the option to have the output as a *.lsda file using tprint to initialize temperatures using *INCLUDE_THERMAL_BINOUT. |
TransformedMeshFile = STRING | Define the name of the transformed mesh file. The transformation result is written into this newly generated file. |
Add SRCPartSetFile = STRING |
Define an additional file containing part sets which is assigned a specific set of hardening parameters (see JMAK Parameters). This can also be used for specific part set mapping. |
Add TARPartSetFile = STRING | Define an additional file containing part sets which are only considered during the target mesh mapping. |
SourceFileFormat = LS-DYNA HDF5 | Give information about the source file format. LS-DYNA meshes and the THESEUS native HDF5 format are available options. |
NumSourceFiles = INT | After several simulations where the results add up, use this option to define multiple source files. |
SourceFile#i = STRING | Define as many source file names as NumSourceFiles. |
TemperatureFile = STRING | Define the file name that holds the temperature-time curves. You must define this if they are not included in the SourceFile. |
TemperatureFileFormat = LSDA CSV | The Envyo application supports *.lsda and *.csv based temperature-time result files. |
NumTargetPIDs = INT |
Define the number of parts in the target mesh which are considered within the mapping. This option must be followed by TargetPid#i definitions. |
TargetPID#i = INT | Define as many part IDs as given in NumTargetPids. These parts are considered for the mapping. |
NumSourcePIDs = INT | Define the number of parts in the source mesh which are considered within the mapping. This option must be followed by SourcePID#i definitions. |
SourcePID#i = INT | Define as many part IDs as given in NumSourcePIDs. These parts are considered for the mapping. |
TargetPSETID#i = INT | Define the number of part sets on the target mesh for mapping instead of defining individual part IDs. Part sets are either already included in the input file, or added with an additional Add TARPartSetFile. |
SourcePSETID#i = INT | Define the number of part sets on the source mesh for mapping instead of individual part IDs. Part sets are either already included in the input file, or added with an additional Add SRCPartSetFile. |
Note: The options above specifically narrow down the scope of the mapping procedure to defined-part IDs. Other parts are ignored on both the source and target meshes.
TRANSFORMATION = YES NO | Turns the transformation option on or off. |
WriteTransformedMesh = YES NO | Flag to enable output of the transformed mesh for mapping. This enables verifying the transformation success. If set to YES, a TransformedMeshFile must be specified (see Input and Output Meshes). |
There are three available methods for performing mesh transformation:
TRAFO_OPTION is required:
Iterative Closest Point (ICP)
Four-Points-Congruent Sets (4PCS)
TRAFO_OPTION is not required:
User-defined translation and rotation
The 4PCS method must be used with caution, as it is fully automatic and may not accurately transform stress tensors and fiber orientations between different coordinate systems. The ICP algorithm is the recommended approach.
The user-defined translation and rotation options are listed underneath TRAFO_OPTION.
Note: Transformation options are used to transform the source mesh.
TRAFO_OPTION = 4PCS ICP | Flag that enables specifying the desired transformation option. |
NodalPair#i = INT INT | Define nodal pairs to initialize mesh alignment for the ICP algorithm. You must specify a minimum of three nodal pairs, and this option supports up to ten nodal pairs. In each pair, the first integer represents a node ID in the source mesh, and the second corresponds to a node ID in the target mesh. Input values must be space-separated, with each nodal pair on a separate line. |
MAX_NUM_ITER = INT | Maximum number of iterations to be performed by the 4PCS algorithm. |
GLOBAL_ERR = DOUBLE | Global error measure to accept transformation as best fit 4PCS algorithm. |
MATCHING_POINT_DIST = DOUBLE |
Maximum distance between points so that they are accepted as matching (4PCS). |
PERCENTAGE_OF_MATCHING_POINTS = DOUBLE | Percentage of matching points to accept the transformation (4PCS). |
Additionally, there are options to apply a custom sequence of user-defined transformations. These transformations are executed in the order in which they are specified:
RotateSRC = DOUBLE;X DOUBLE;Y DOUBLE;Z DOUBLE; DOUBLE DOUBLE DOUBLE | The source mesh rotates by a specified angle (first value, in degrees) around a defined axis. Predefined axes include X, Y, and Z. Alternatively, a custom axis can be specified by providing three space-separated floating-point values following a semicolon (; x y z). |
MoveSRC = DOUBLE DOUBLE DOUBLE | The source mesh moves along the user-defined vector (x y z). |
ScaleSRC = DOUBLE | The source mesh scales around the origin using the defined scale factor. |
ALGORITHM = ClosestPoint | The only available option is ClosestPoint. Values are mapped to the nearest node, integration point, or element center. |
SORT = BUCKET | Using bucket sort is strongly recommended, as it substantially speeds-up the search algorithm. |
REPEAT = YES | Enable this option to ensure that all elements and integration points receive mapped data. When there is a significant difference in element sizes between the source and target meshes, the default bucket refinement may be insufficient to cover all points, sometimes by design. In such cases, this flag must be set to guarantee complete data coverage. |
If the target mesh does not contain any information regarding the integration rules being used, such as element formulation and through-thickness integration points, you must define them. The input is as follows:
NPLANE = INT |
1 - Reduced integrated thick shell elements. 4 - Fully integrated thick shell elements. |
NTHICK = INT | Number of through thickness integration points. |
IntegrationRule = GAUSS LOBATTO AUTOFORM MOLDFLOW | Options for different predefined through-thickness integration rules. |
In theory, stress and strain mapping options are also available with the THESEUS-SHELL mapping option. You must activate MapStress to activate *INITIAL_STRESS_SHELL output. If stress or strain mapping are active, existing stresses and strains on the target side are overwritten.
MapStress = YES NO |
Activates stress mapping. |
MapStrain = YES NO |
Activates strain mapping. |
MapTemperature = YES NO |
Activates temperature mapping. Instead of using the JMAK parameters to calculate a hardening degree, temperature curves from THESEUS-HDF files are mapped directly onto the target mesh. If ResultFileFormat is LS-DYNA, an ASCII result file generates with *BOUNDARY_THERMAL_NODE and *DEFINE_CURVE cards included. If *.lsda is used as ResultFileFormat, a binary file containing tprint - information used with *INCLUDE_THERMAL_BINOUT is created. |
HISV_HANDLING = YES NO CLEAR |
Enables you to move and modify history variables in a user-defined way. Regarding the meaning of histories, refer to [20] and [4]. If CLEAR, all history variables are removed before generating the result file. If YES, define as many history variables to modify. See Equation Parser. |
MAX_NUM_HISV = INT |
Define a new maximum number of history variables. This is an easy way to remove unwanted histories that are useless for the new model, but also extends the histories being output. If a history variable is moved to a position which is higher than the actual number of history variables in the input deck, the number of histories are extended automatically. |
OUTPUT_OPTION = INITIAL STRESS ONLY |
Only *INITIAL_OPTION cards are written to the mapping result file. Nodes and elements are skipped. |
The following are JMAK parameters for the hardening calculation
JMAK Parameter#i = PSetID;t0;Q;n;Y0;R |
Define the JMAK parameter in the order provided. The first value in the mapping command refers to a part set in the source mesh that is assigned with the respective parameters for calculating the hardening degree. All parameters must be seperated by a semi-colon. If the same parameter set is assigned to all parts, use JMAK Parameter#i=ALL;t0;Q;n;Y0;R. This option also allows assigning some parameters to specific part sets, and the remaining parts use the parameters in the JMAK Parameter#i=ALL;... option. |
Y POS = &HISV#i |
Defines the history variable position i where the hardening degree is assigned to. |
The JMAK equation is given by:
(4–12) |
with:
(4–13) |
where
T = the Temperature (in degrees C)
R = the gas constant
Y = the resulting hardening degree
Y0 = the initial hardening degree
t0, Q, and n can be determined by experiments
The Envyo application implements an equation parser based on the Shunting yard algorithm, and is available as MIT license [6]. This equation parser is modified to work with common LS-DYNA application variables such as histories, eff. plast. strains, stresses, and more. Variables are declared with the & symbol, and commands are executed in the order of input. The following variables are available:
&HISV#i |
History variable at position i. |
&EPS |
Effective plastic strain (the last entry in *INITIAL STRESS SHELL which may have a different meaning than eff. plast. strain). |
&ELELENGTH |
Element length of the current element. |
&SIG_IJ |
Components of the 2nd order stress tensor. |
&SIG_INIT |
Enables initializing a specific stress value - refers to all stress components. |
exp | Exponent. An alternative input would be e**. |
Example
The following example illustrates the usage of the equation parser. The commands following the additional history are executed in the order of input:
&HISV#4 = abs(&HISV#3-&HISV#2)*0.000467354 &HISV#8 = &HISV#2 &HISV#9 = &ELELENGTH MAX_NUM_HISV = 8
The value of history variable #4 is calculated using the absolute value of history #3 - #2, multiplied by a scale factor. Following these operations, history variable #8 is assigned the value at history variable #2, and the element length is stored at history variable # 9. Nevertheless, only eight history variables is written to the final result file due to MAX_NUM_HISV.