This option enables transferring arbitrary values from point clouds onto shell meshes. Therefore, the point cloud has to be given in a specific format.
This section covers:
SourceFile = STRING | Define the name and, if needed, the path of the source file (in this case, a *.csv file). |
SourceFileFormat = CSV PIXEL − CSV | Define the format of the file that is read. |
NumSourceFile = INT | Number of source *.csv files used for the input. This works in combination with pixel csv files and temperature mapping. Temperature data from several files is mapped onto the target mesh either as LS-DYNA lsda tprint files, or as ASCII, using *BOUNDARY_TEMPERATURE_NODE. |
SourceFile#i = STRING,DOUBLE |
If multiple source files are used, first provide the file name followed by a time value used as abscissa value of a temperature-time curve. The output can either be LS-DYNA lsda tprint - files, or ASCII, using *BOUNDARY_TEMPERATURE_NODE. |
TargetFile = STRING | Define the name and, if needed, the path of the target file. This must be an LS-DYNA mesh. |
MappingResult = STRING | Define the result file name. The mapping result is written into this newly generated file. |
For csv-format, assume the following: the first line is left for comments about the meaning of the listed values. All other lines are interpreted as points of the point cloud. The first three values separated with commas are assumed to be the coordinates of the points. All the other following values are considered to be history variables. Future developments may take into consideration such values as stresses, strains and others with the methods described below.
For pixel-csv, data is provided as result data for a point cloud which has to be generated first. This application only works in combination with temperature mapping and the input of the PixelSize is necessary. The point cloud for the provided values is generated using the PixelSize starting at the origin (0,0,0) and generating points in the x- and y direction following the values provided in the pixel-csv file.
ResultFileFormat = LS−DYNA LSDA | Define the result file format. LS-DYNA is the default value. Also, the output of lsda binary tprint files can be activated. Those can be used within LS-DYNA in combination with the keyword *LOAD THERMAL BINOUT. |
TransformedMeshFile = STRING | Specify the file name where the transformed mesh will be written. This option is intended only for the postprocessing of the transformation. For additional details, refer to the Transformation Options section below. |
Transformation refers to the transformation of the source meshes. Operations include transformation, rotation, and scaling in this particular order.
TRANSFORMATION = YES NO | Turn transformation on or off. |
WriteTransformedMesh = YES NO |
Activates the output of the transformed mesh file to control the accuracy of the applied transformation. Define a TransformedMeshFile, as mentioned above. |
RotateSRC = DOUBLE;X DOUBLE;Y DOUBLE;Z DOUBLE; DOUBLE DOUBLE DOUBLE | The source mesh is rotated at an angle (first value) in degrees about the defined axis. Predefined axes are X, Y, and Z. A user-defined axis is also possible, separating three double values with space, following the semicolon (x y z). |
MoveSRC = DOUBLE DOUBLE DOUBLE | The source mesh is moved along the user-defined vector (x y z). |
ScaleSRC = DOUBLE | The source mesh is scaled about the origin using the defined scale factor. |
ChangeUnitSystem = YES NO | Enables changing the unit system of the source mesh to the unit system of the target mesh. Check the results carefully since not all options may work properly. |
SourceUnitSystem = kg − m − s ton − mm − s kg − mm − ms g − mm − ms | Available unit systems for the source mesh. |
TargetUnitSystem = kg − m − s ton − mm − s kg − mm − ms g − mm − ms |
Available unit systems for the target mesh. |
NumTargetPIDs = INT | Define the number of parts in the target mesh to be 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. |
Note: The options given above specifically narrow down the scope of the mapping procedure to defined part IDs. Other parts are ignored.
ALGORITHM = ClosestPoint | The ClosestPoint option 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. |
Search_Radius = SrcEleLen TarEleLen DOUBLE | Specifies the search radius for the mapping algorithm. By default, SrcEleLen is used, which sets the radius to the average element size of the source mesh. Alternatively, you can use TarEleLen to apply the average element size of the target mesh, or provide a positive DOUBLE value to define a custom radius. |
Scale_SearchRadius = DOUBLE |
Coefficient to scale search radius. The default value is 1.0. |
NPLANE = INT |
1 - Reduced integrated thick shell elements 4 - Fully integrated thick shell elements |
NTHICK= INT | Define the number of through-thickness integration points. |
Thck_Avg_Opt = Ele Avg Nodal Avg | Thickness averaging option. When using *ELEMENT_SHELL_THICKNESS, nodes may hold different thickness information, depending on the element they belong to. This is especially crucial for the components with ribs. By default, Thck_Avg_Opt = Ele Avg, the Envyo application calculates through-thickness integration points using the nodal thicknesses stored on the element nodes by interpolating the resulting thicknesses at the in-plane integration point(s) using shape functions, allowing for the correct calculation of the local through-thickness integration points. By choosing Thck_Avg_Opt = Nodal Avg option, the program collects all thicknesses stored on one node from its attached elements in the first step and averages these thicknesses. Afterwards, the interpolation to the in-plane integration points using the shape functions is performed. |
MapStrain = YES NO | Enable this option to ensure strains are transferred. |
MapStress = YES NO | Enable this option to ensure stresses are transferred. This option must be turned on to transfer histories as well. |
MapTemperature = YES NO | Enable this option to ensure temperatures are transferred. It activates the output if *INITIAL_TEMPERATURE_NODE in the result file and only works in combination with the pixel-csv file format. |
InitialStress = double | Enables initializing a specific stress value for all elements and integration points. This flag is mainly used to remove all stresses after mapping is performed, so that InitialStress = 0.0. |
PixelSize = double |
Defines the size of the pixels. Pixels hold result data stored in pixel-csv file and are mapped onto nodes using *INITIAL_TEMPERATURE_NODE with the current implementation. |
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 you want modified. See Equation Parser. |
MAX_NUM_HISV = INT | Define a new maximum number of history variables. This allows you to get rid of unwanted histories which are of no use for 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 is extended automatically. |
SORT = BUCKET | Always use bucket sort for a significant speed up of 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. |
The Envyo application implements an equation parser based on the Shunting yard algorithm and is available as a MIT license [6]. This equation parser has been modified to work with common LS-DYNA variables such as histories, eff. plast. strains, stresses, temperatures and others. 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 2nd order stress tensor. |
&SIG_INIT | Enables initializing a specific stress value that refers to all stress components. |
T | Enables modifying temperature initial values or curves stored on nodes. |
&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 is 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, times 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. Only eight history variables are written to the final result file due to MAX_NUM_HISV.
The temperature stored on nodes as fixed initial values and/or curves as temperature over time are transferred from Celsius degrees to Kelvin degrees.