This option enables the transfer of stresses and fiber orientations from certain material models onto a solid mesh. Thereby, *ELEMENT_SOLID_ORTHO elements are generated in order to consider the material orientation. The material model which is extensively tested is an extension of the draping material model *MAT_249 and is called *MAT_REINFORCED_THERMOPLASTIC_UDFIBER. Further information about the material model and the advantage of the mapping process for springback analysis can be found in [5], [14], and [20].
This section covers the following topics:
SourceFile = STRING | Define the name and, if needed, the path of the source file (usually a *.dynain file). |
TargetFile = STRING | Define the name and, if needed, the path of the target file. The target file must be an LS-DYNA application mesh. |
MappingResult = STRING | Define the result file name. The mapping result is written into this newly generated file. |
OrientationFile = HISV | To enable the transfer of orientations, define this flag. It informs the program that the orientation data is stored within the history variables (HISV). |
TransformedMeshFile = STRING | Specify the file name where the transformed mesh is written. This option is intended solely for postprocessing of the transformation. For additional details, refer to the Transformation Options section below. |
AddEleHISVFile# = STRING | A file name carrying element histories in an additional file. Multiple of these files can be defined. The first 10 digits of the lines must hold the element ID, the following 10 digits carry some arbitray value, interpreted as an additional history variable on element level. |
LookupTable# = STRING | A file name carrying lookup tables. Values within one line are separated by a space. As described in the Equation Parser section, the Envyo application enables history variable lookup based on these looktables provided by you. Following the lookup table command, you must define the columns that are considered for variable lookup. See the example in the Equation Parser section. |
The following are available options for source and result file formats:
SourceFileFormat = LS-DYNA, ESI-PC, Nastran, HDF5, ESI-HDF5, GCODE, ABAQUS, STEP, CSV | The source file format. The preferred format is LS-DYNA. |
TargetFileFormat = LS-DYNA | The target file format. The only format available is LS-DYNA. |
ResultFileFormat = LS-DYNA | The result file format. The only format available is LS-DYNA. |
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. |
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 used for mapping. This enables verifying the success of the transformation. 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 specification of the desired transformation option. |
NodalPair#i = INT INT | Define nodal pairs to initialize mesh alignment for the ICP algorithm. You may specify up to ten nodal pairs, with a minimum of three required. 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 provided 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, a custom sequence of user-defined transformations can be applied. These transformations are executed in the order in which they are specified and multiple transformations may be defined:
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. |
In addition to the transformation options, there are options for converting the unit system:
ChangeUnitSystem = YES NO | Activates or deactives unit system conversion. |
SourceUnitSystem = kg - m - s ton - mm - s kg - mm - ms g - mm - ms lb - in - s | If the unit system conversion is activated, provide information about the source unit system. |
TargetUnitSystem = kg - m - s ton - mm - s kg - mm - ms g - mm - ms lb - in - s | If the unit system conversion is activated, provide information about the target unit system. |
ALGORITHM = ClosestPoint
ElementSizeSearchRadius |
The ClosestPoint option is the most commonly used feature. It accounts for most of the mapping purposes being targeted with the Envyo application. Beginning from the target mesh, the next element or integration point is identified and its data is transferred onto the target mesh. The ElementSizeSearchRadius option has been implemented in order to map results from mesoscale process simulations using shell elements onto the target mesh. Therefore, the target mesh element size is used as a search radius, whereas the source mesh elements is projected onto the target mesh along the source meshes normal, and a check is performed to see if the intersection is within the target element. The element size can be scaled using Scale_SearchRadius - see below. |
Search_Radius = SrcEleLen TarEleLen DOUBLE | Search radius declaration for mapping algorithm. SrcEleLen is default, which uses average source mesh element size as the search radius. Average target mesh element size can be used by defining either TarEleLen or a positive DOUBLE value. |
Scale_SearchRadius = DOUBLE |
Coefficient to scale search radius. The default value is 1.0. |
MapStress = YES NO | Define if stresses have to be transferred or not. |
MapStrain = YES NO | Define if strains have to be transferred or not. |
NumFibers = INT | For *MAT 249 UDFIBER, this value must be equal to one. |
FiberID#i = INT | Define as many fiber IDs as given in NumFibers. For *MAT 249 UDFIBER, this is only one integer. |
ETYP = INT |
1 - Reduced integrated solid elements. 2 - Fully integrated solid elements. |
SourceMaterialModel = 34 234 235 249 2491 | Define the material ID corresponding to the numbering in the LS-DYNA material manual. For the mapping of fiber orientations from *MAT 249 UDFIBER, the value is 2491. |
SOLID_OPTION = ORTHO | Tells the Envyo application to generate *ELEMENT SOLID ORTHO elements from the mapped orientations. |
TargetOption = OpenFOAM | With this option, the Envyo application handles the data properly to link LS-DYNA mesh to OpenFOAM. INN=2 must be declared to use this option. |
INN = INT | This flag is similar to the invariant node numbering flag in LS-DYNA provided in the *CONTROL_ACCURACY card, see [19]. To properly calculate orientations with respect to the element coordinate system, the program needs information about how the LS-DYNA application calculates the element coordinate system. The default is similar to the default in the LS-DYNA application: Off. TargetOption=OpenFOAM must be declared to use this option. |
ConsiderStacks = YES NO | Define if stacking sequence must be considered. |
SORT = BUCKET | Using bucket sort is strongly recommended, as it provides a substantial performance improvement for 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. |
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], [4]. If CLEAR, all history variables are removed before generating the result file. If YES, define as many history variables as must be modified (see Equation Parser). |
MAX_NUM_HISV = INT | Define a new maximum number of history variables. This is an easy way to get rid of unwanted histories that are not useful to the new model, but also enables extending the amount of histories being output. If a history variable is being moved to a position which is higher then the actual number of history variables in the input deck, the number of histories are extended automatically. |
The Envyo application implements an equation parser based on the Shunting yard algorithm and is available as MIT license [6]. his equation parser has been modified to work with common variables in the LS-DYNA application such as histories, eff. plast. strains, and stresses. Variables are declared, using 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 second order stress tensor. |
&SIG_INIT | Enables initializing a specific stress value that refers to all stress components. |
&ADD ELE HISV#i | Element history variable from file i is used. |
&LookupTable#1 | Lookup table from file i is used. |
exp | Exponent. An alternative input would be e**. |
Example of History Variable Manipulation
The following example illustrates the usage of the equation parser in combination with the lookup tables. The commands following the additional history and lookup table definition are executed in the order of input:
AddEleHISVFile#1 = Results A.dyn AddEleHISVFile#2 = Results B.dyn LookupTable#1 = data A.txt,&COL#1,&COL#2,&COL#3 LookupTable#2 = data B.txt,&COL#1,&COL#2,&COL#3 &HISV#3 = &ADDELE HISV#2 &HISV#2 = &ADDELE HISV#1 &HISV#4 = abs(&HISV#3-&HISV#2)*0.000467354 &EPS = &LookupTable#1,linearInterpolation,&HISV#4,&ELELENGTH,&COL#3 &HISV#6 = &LookupTable#2,nextNeighbour,&EPS,&ELELENGTH,&COL#3 &HISV#8 = &HISV#2 &HISV#9 = &ELELENGTH MAX_NUM_HISV = 8
Two additional element history files are loaded into the Envyo application, and are stored internally. In addition, two lookup table files are read. Column one, two, and three are considered for both of them. Those numbers can be different, and it is also possible to have more than just three columns. After reading the data, the following commands are executed:
Additional element history variable from file 2 is stored as history variable #3. Additional element history variable from file 1 is stored as history variable #2. The value of history variable #4 is calculated by multiplying the absolute value of history #3 - #2 with a scale factor.
To get information about the eff. plastic strain, lookup table #1 is used. If values are inbetween two values provided within one of the columns, linear interpolation is used. In this case, history variable #4 is compared to values stored in column #1. Following that, Envyo takes the element length of each element and compares it with the values stored in column #2 of lookup table #1. The final result is the value provided in column #3.
The value of history variable #6 is derived in a comparable way, using the next neighbor instead of performing a linear interpolation between the values. The first input is the resulting eff. plastic strain from the previous step. Again, results are provided in column #3.
Following these operations, history variable #8 is assigned the value at history variable #2, and the element length is stored at history variable #9. Only eight history variables are written to the final result file due to MAX_NUM_HISV.