This option enables transfer of moldflow orientation data for short and long fiber reinforced composites to shell meshes for further structural analysis.
Several options are available to handle short fiber reinforced composite materials with the LS-DYNA application. The Envyo program supports *MAT_ANISOTROPIC_ELASTIC_PLASTIC (*MAT_157) and output of *ELEMENT_SHELL_COMPOSITE fields for the use of other arbitrary orthotropic material models in the LS-DYNA application. Support for *MAT_4A_MICROMEC (*MAT_215) is also available.
For more information about the handling of short fiber reinforced materials with *MAT_157, see [11], [16], [15], [10].
This section covers the following topics:
SourceFile = STRING | Define the name and, if needed, the path of the source file. This should be the Moldflow mesh that is translated into LS-DYNA application format. |
TargetFile = STRING |
Define the name and, if needed, the path of the target file. This should be an LS-DYNA application mesh. |
MappingResult = STRING |
Define the result filename. The mapping result is written to this newly-generated file. |
OrientationFile = STRING |
Only moldflow-xml files containing the fiber orientation tensor are considered. Extensions also enable mapping orientations from the main axis of this tensor and its eigenvalues. |
TransformedMeshFile = STRING | Specify the filename 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. |
NumTargetPids = INT |
Define the number of parts in the target mesh that are considered within the mapping. This option should be followed by TargetPid#i definitions. |
TargetPid#i = INT | Define as many part IDs as specified in NumTargetPids. These parts are considered for the mapping. |
NumSourcePIDs = INT |
Define the number of parts in the source mesh that are considered within the mapping. This option should be followed by SourcePID#i definitions. |
SourcePID#i = INT | Define as many part IDs as specified 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 | Enable/disable the transformation option. |
TransformBack = YES NO | Activate/deactivate backward transformation. |
WriteTransformedMesh = YES NO | Flag to enable output of the transformed mesh used for mapping. This enables success verification for the transformation. If set to YES, a TransformedMeshFile must be specified (see above). |
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 should 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 required transformation option. |
NodalPair#i = INT INT | Define nodal pairs to initialize mesh alignment for the ICP algorithm. You can 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 should be space-delimited, 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 measurement to accept transformation as best fit for the 4PCS algorithm. |
MATCHING_POINT_DIST = DOUBLE |
Maximum distance between points such that they are accepted as matching (4PCS). |
PERCENTAGE_OF_MATCHING_POINTS = DOUBLE | Percentage of matching points for transformation acceptance (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 is rotated 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 is moved along the user-defined vector (x y z). |
ScaleSRC = DOUBLE | The source mesh is scaled around the origin using the specified scale factor. |
In addition to the transformation options, you can convert the unit systems:
ChangeUnitSystem = YES NO | Activate/deactivate unit system conversion. |
SourceUnitSystem = kg - m - s ton - mm - s kg - mm - ms g - mm - ms lb - in - s | If 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 unit system conversion is activated, provide information about the target unit system. |
ALGORITHM = ClosestPoint | The only available option is ClosestPoint. Values are mapped to the nearest node, integration point, or element center. |
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 buckets in the bucket search algorithm. |
OUTPUT_OPTION = INITIAL STRESS ONLY |
Only *INITIAL_OPTION fields will be written to the mapping result file. Nodes and elements are skipped. |
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 to which they belong. This is especially critical for components with ribs. With the default setting (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 points via shape functions, allowing for the correct calculation of the local through-thickness integration points. By choosing the Nodal Avg option, the application first collects all thicknesses stored on one node from its attached elements and averages these thicknesses. Interpolation to the in-plane integration points using shape functions is then performed. |
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. |
The following fields are needed to define the output for *ELEMENT_SHELL_COMPOSITE cards for the LS-DYNA application. The mapped orientations are given from the main axis of the orientation tensor corresponding to the largest eigenvalue. This enables modeling with any arbitrary orthotropic material law available in the LS-DYNA application. The thicknesses of the layers are equally spaced.
NPLANE = INT |
1 - Reduced integrated shell elements 4 - Fully integrated shell elements |
NTHICK = INT | Number of through-thickness integration points in the target mesh. |
IntegrationRule = Gauss Lobatto Autoform Moldflow Eq Distr | Define the through-thickness integration rule for the mapping result. This option directly affects the positions of the through-thickness integration points on the target mesh. |
MapStress = NO | Specify whether *INITIAL_STRESS_SHELL fields should be written. For the *ELEMENT_SHELL_COMPOSITE option, set this flag to NO. |
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 to which they belong. This is especially critical for components with ribs. With the default setting (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 points via shape functions, allowing for the correct calculation of the local through-thickness integration points. By choosing the Nodal Avg option, the application first collects all thicknesses stored on one node from its attached elements and averages these thicknesses. Interpolation to the in-plane integration points using shape functions is then performed. |
MapMainDir = YES | Activate mapping of the main directions to *ELEMENT_SHELL_COMPOSITE fields. |
TargetThickness = DOUBLE | Define the thickness of the target part. If a SectionFile is included in the source mesh, this value will be ignored. If the target mesh already has elements with thickness values, this option can be ignored. |
Shell_Option = Composite | Activates the output of *ELEMENT_SHELL_COMPOSITE fields. |
Note: When using the MapMainDir=YES functionality, *ELEMENT_SHELL_COMPOSITE keyword cards are created. Since neither Gauss nor Lobatto integration rules can be reproduced using this keyword, regardless of the chosen integration point thickness, which is interpreted as weighting-factors in the LS-DYNA application, you should use an equal distribution of the integration points (IntegrationRule=Eq Distr). Integration points are assigned to the mid-point of the layer thickness defined in either *PART - or *ELEMENT_SHELL_COMPOSITE. When Gauss or Lobatto is set as the integration rule together with MapMainDir=YES, the weights calculated from the Legendre polynomial are used to calculate the integration point positions and corresponding thicknesses. The real relative integration point position would not be at ±1 (with Lobatto, for example), since this would lead to a zero thickness at the integration point, following the *ELEMENT_SHELL_COMPOSITE definition. This does not affect the integration point positions calculated using *INITIAL_STRESS_SHELL output for *MAT_157 or *MAT_215.
Instead of writing *ELEMENT_SHELL_COMPOSITE, it is also possible to generate *ELEMENT_SHELL_BETA as output. In this case, the application uses a single initial material orientation that is assumed to be constant throughout the thickness during the simulation. The input information is similar to that for the COMPOSITE option output. SHELL OPTION requires different information and you must specify how the BETA angle should be determined. In other respects, the mapping procedure is similar to the *ELEMENT_SHELL_COMPOSITE option, but postprocessing prior to output of the mapped orientation angles is handled differently. Thicknesses are written to the nodes within the *ELEMENT_SHELL_BETA card.
NPLANE = INT |
1 - Reduced integrated shell elements. 4 - Fully integrated shell elements. |
NTHICK = INT | The number of through-thickness integration points in the target mesh. When an even number is provided, and SCALARINT is set to CENTER IP the two integration points closest to the mid-surface are averaged to determine the BETA angle for *ELEMENT_SHELL_BETA output. If an odd number is provided and SCALARINT is set to CENTER IP, the program uses the mid-point as BETA for output. |
IntegrationRule = Gauss Lobatto Autoform Moldflow Eq_Distr | Define the through-thickness integration rule for the mapping result. This option directly affects the positions of the through-thickness integration points on the target mesh. |
MapStress = NO | Define whether *INITIAL_STRESS_SHELL cards should be written. For the *ELEMENT_SHELL_COMPOSITE option, set this flag to NO. |
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 to which they belong. This is especially critical for components with ribs. With the default setting (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 points via shape functions, allowing for the correct calculation of the local through-thickness integration points. By choosing the Nodal Avg option, the application first collects all thicknesses stored on one node from its attached elements and averages these thicknesses. Interpolation to the in-plane integration points using shape functions is then performed. |
MapMainDir = YES | Activate mapping of main directions to *ELEMENT_SHELL_COMPOSITE cards. |
TargetThickness = DOUBLE | Define the thickness of the target part. If a SectionFile is included in the source mesh, this value is ignored. If the target mesh already has elements with a thickness value, this option can again be ignored. |
SCALARINT = AVG CENTER_IP | Define the interpolation method for transferred fiber-orientation angles derived from mapping the orientation tensors. AVG calculates the mean of all the fiber directions assigned to the integration points through the mapping process. CENTER_IP takes the mid-surface integration point information only, or calculates the average of the orientation from the two integration points closest to the mid-surface (see also NTHICK). |
Shell_Option= Beta |
Activates the output of *ELEMENT_SHELL_BETA fields. |
This section describes the options available for the mapping of material properties for *MAT ANISOTROPIC_ELASTIC_PLASTIC (*MAT_157). The initial input is the same as above, with minor changes to the target options and additional fields being specific for the initialization of material properties for (*MAT_157) with the *INITIAL_STRESS_SHELL card.
This section covers:
TargetMaterialModel = INT |
Define the ID of the target material model corresponding to [20]. Here, it must be 157. |
NTHICK = INT | The number of through-thickness integration points in the target mesh. |
NPLANE = INT |
1 - Reduced integrated shell elements 4 - Fully integrated shell elements |
MapStress = YES | Define whether *INITIAL_STRESS_SHELL cards should be written. If the data should be available for the *MAT_157 material model via *INITIAL_STRESS_SHELL cards, this option should be YES. Newer versions will also map the stresses stored on the source mesh to the target mesh. These stresses may be the result of a spring-back simulation, performed within Moldflow. If stresses should not be mapped, exclude them from the source mesh. |
MapMainDir = NO | Activate mapping of the main directions onto *ELEMENT_SHELL_COMPOSITE cards. For use with *MAT_157, this option is NO. |
TargetThickness = DOUBLE | Define the thickness of the target part. If a SectionFile is included in the source mesh, this value is ignored. If the target mesh already has elements with a thickness value, this option can again be ignored. |
IHIS = INT |
Flag that defines the material parameter written to *INITIAL_STRESS_SOLID cards for *MAT_157, according to [20]. The following values are supported: |
IHIS = 1 - q-values are written to the first two history variables. | |
IHIS = 3 - q-values are written to the first two history variables, tensor components Cij are written to history variables #7 - #27. | |
IHIS = 11 - q-values are written to the first two history variables, tensor components Cij are written to history variables #7 - #27, table IDs for strain rate dependent plasticity are defined in history variable #28. | |
For IHIS = 1, no further input has to be defined. | |
If IHIS > 1, define the following variables: |
HomogenizationMethod = Halpin − Tsai Tandon − Weng Voigt Kukuri Mori − Tanaka 1 Mori − Tanaka 2 Mori − Tanaka 3 | Define the homogenization method used to calculate the unidirectional stiffness matrix. For further information about these methods, see [10] or [16]. |
ClosureApproximation = Linear Quadratic HybridA HybridB ORF ORS |
Define the closure approximation method used to calculate the 4th-order orientation tensor from the 2nd-order orientation tensor given by Moldflow. For further information about these methods, see [10] or [16]. ORF calls the orthotropic fitted closure approximation proposed by [12], distinguishing between different fiber interaction coefficients based on the equation provided in [7]. ORS refers to the orthotropic smooth closure approximation. |
The following elastic constants must be defined:
E11F = DOUBLE | Fiber Young’s modulus in the main direction. |
E22F = DOUBLE | Fiber Young’s modulus perpendicular to the main direction. |
RHOF = DOUBLE | Fiber density. |
PRBAF = DOUBLE | Fiber in-plane Poisson’s ratio. |
PRCBF = DOUBLE | Fiber out-of-plane Poisson’s ratio. |
G12F = DOUBLE | Fiber shear modulus. |
EM = DOUBLE | Matrix Young’s modulus. |
RHOM = DOUBLE | Matrix density. |
PRM = DOUBLE | Matrix Poisson’s ratio. |
AspectRatio = DOUBLE | Fiber aspect ratio (length/thickness). |
FiberVolumeFraction = DOUBLE |
Fiber volume fraction in percent. |
InclusionShape = Ellipsoidal Spherical Needle Disc |
Shape of the inclusions. |
If IHIS > 3, you must define several direction-dependent curve files, representing different strain rates, so that the strain rate and direction-dependent plasticity can be defined. The following input can be given:
NumberOfCurveFiles = INT |
Define the number of curve files that are read. |
CurveFileName#i = STRING |
Define the name and, if needed, path of the curve files. This card must be written NumberOfCurveFiles times. |
NumberOfDirections = INT | Define the number of directions to which the curve files belong. The recommended value for short fiber reinforced plastic materials is 3. |
Direction#i = DOUBLE | Define angles, relative to the direction of flow, used to generate the plasticity curves. Typical angles are 0◦, 45◦, and 90◦. This card must be written NumberOfDirections times. |
NumberOfStrainRates = INT | Define the number of strain rates to which the curve files belong. |
StrainRate#i = DOUBLE | Define the strain rates that are considered by the defined curves. This card must be written NumberOfStrainRates times. |
StrainRate#iDirection#j = INT | Define the curve IDs that belong to the respective strain-rate/direction combination. This card must be written NumberOfDirections x NumberOfStrainRates times. |
HISV_HANDLING = YES NO CLEAR | Enables you to move and modify history variables manually. Refer to [20] and [4] for the meaning of these. If CLEAR, all history variables will be removed before generating the result file. If YES, define as many history variables as should be modified (see below). |
MAX_NUM_HISV = INT | Define the new maximum number of history variables. This is an easy way to remove unwanted histories that are of no use for the new model, but also enables you to extend the number 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 will be extended automatically. |
The Envyo application implements an equation parser based on the Shunting yard algorithm and is available as an MIT license [6]. This equation parser has been modified to work with common LS-DYNA application variables such as histories, and effective plastic 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 to eff. plast. strain). |
&ELELENGTH |
Element length of the current element. |
&SIG_IJ |
Components of the second order stress tensor. |
&SIG_INIT |
Enables initialization of a specific stress value that refers to all stress components. |
exp |
Exponent. An alternative input would be e**. |
Example
The following example illustrates 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 will be calculated using the absolute value of history #3 - #2, multiplied by a scale factor. Following these operations, history variable #8 will be assigned the value at history variable #2, and the element length will be stored at history variable #9. Nevertheless, only eight history variables will be written to the final result file due to MAX_NUM_HISV.
The Envyo® application supports two methods to assign material ID (or material properties) according to the source fiber orientation tensor found during the mapping process.
Method 1: Using *ELEMENT_SHELL_COMPOSITE(_LONG)
Since each through-thickness IP of composite elements can have a different material ID, you can define a list of fiber orientation tensors and material ID pairs to assign materials IDs for matching tensors. The following options must be defined:
NumOriTensorMIDs = INT |
Define the number of material IDs in the target mesh that are considered within the mapping. This option should be followed by OriTensorMID#i definitions. |
OriTensorMID#i = DOUBLE DOUBLE DOUBLE;INT |
Define as many fiber orientation tensor and material ID pairs as specified in NumOriTensorMIDs. Three double values represent a11, a22 and a33 orientations of the tensor, respectively. The integer value separated by a semicolon represents the material ID signed for this orientation tensor. |
MapMainDir = YES |
This option must be defined. The output is *ELEMENT_SHELL_COMPOSITE. Fiber orientations are represented by BETA angles for each through thickness IP. |
Method 2: Using *MAT_157 IHIS Option
Independent of the previous options for *MAT_157, you can define IHIS=7 or IHIS=15 to activate fiber orientation-dependent mapping of material properties. *MAT_157 cards must be defined in the target mesh, and can also be added to the target mesh as an include using the *INCLUDE keyword. It is important to note that direction components q1 & q2 and material stiffness parameters Cij will be calculated by the Envyo® application. All parameters mentioned above for the IHIS=3 option should therefore be defined. R00, R45, and R90 values for IHIS=7 and an additional LCSS value for IHIS=15 will be taken from the included *MAT_157 cards. The fiber orientation tensors of material cards must be defined as a material card title using the following format:
EnvyoOrient:DOUBLE;DOUBLE;DOUBLE
Where double values represent the a11, a22 and a33 orientations of the tensor. The material ID will be taken from the material model.
This method can be enhanced to define through-thickness IP material IDs using the *ELEMENT_SHELL_COMPOSITE keyword. The following options should be defined in addition to the options discussed above:
Shell_Option = Composite | Activates the *ELEMENT_SHELL_COMPOSITE output routine. |
Note that the first method always overrides the second one. To use the enhancements of the second method, MapMainDir option should be either set to NO, or not defined at all.
This section describes the options available for mapping of material properties for *MAT_4A_MICROMEC (*MAT_215). The initial input is the same as above, with minor changes to the target options and additional cards specific to the initialization of material properties for (*MAT_215) with the *INITIAL_STRESS_SOLID card.
TargetMaterialModel = 215 |
Define the ID of the target material model corresponding to [20]. Here, it must be 215. |
MapStress = YES | Define whether *INITIAL_STRESS_SHELL cards should be written. If data should be made available for the *MAT_215 material model using *INITIAL_STRESS_SHELL cards, this option must be YES. Newer versions also map the stresses stored on the source mesh to the target mesh. These stresses may be the result of a spring-back simulation, performed within Moldflow. If stresses should not be mapped, exclude them from the source mesh. |
MapMainDir = NO |
Activate the mapping of the main directions to *ELEMENT_SOLID_ORTHO cards. For usage with *MAT_215, this option is NO. |