Materials
The different elastic material types provided by OptiStruct are: isotropic, orthotropic, and anisotropic materials. The material property definition cards are used to define the properties for each of the materials used in a structural model.
The MATT1 Bulk Data Entry is used to define the properties for isotropic elastic materials. It can be referenced by any of the structural elements and can also be referenced by any property card.
The MATT2 entry is used to define the properties for an-isotropic materials. It applies only to triangular or quadrilateral membrane and bending elements, and can only be referenced by PSHELL, PCOMP, and PCOMPG property cards. This material type specifies the relationship between the in-plane stresses and strains. The angle between the material coordinate system and the element coordinate system is specified on the connection cards.
The MAT3 entry is used to define the material properties for axisymmetric materials. It can be referenced by CTRIAX6 elements and can also be referenced by any PAXI property card which is in turn referenced on CTAXI or CQAXI elements.
The MAT4 entry is used to define the properties for isotropic elastic materials. It can be referenced by any of the structural elements, and can also be referenced by any property card.
The MAT5 entry is used to define the properties for an-isotropic elastic materials. It can be referenced by any of the structural elements and can also be referenced by any property card.
The MAT8 card is used to define the properties for planar orthotropic elastic materials in two dimensions. Individual plys of a layered composite lay-up typically possess such orthotropic properties. Since layered composite laminates are modeled using shell elements, MAT8 property data can only be referenced by PSHELL, PCOMP, and PCOMPG property cards.
The MAT9 Bulk Data Entry can be used to define the properties for an-isotropic elastic materials for three dimensional solid elements. The general an-isotropic stress-strain relationship linking the six independent stress components of the stress tensor at a point and the six independent strain components of the tensor at the point contain 21 independent constants in the elasticity matrix. These values are supplied using the MAT9 Bulk Data card. The MAT9 Bulk Data card is used with the CHEXA, CPENTA, CPYRA, and CTETRA solid elements, and can only be referenced on the PSOLID property card. The optional coordinate system in which MAT9 data are specified is supplied via the PSOLID Bulk Data Entry.
The MAT10 Bulk Data Entry is used to define material properties for fluid elements in coupled fluid-structural (acoustic) analysis. It may only be referenced on PSOLID entries with FCTN=PFLUID.
Temperature dependent material properties are defined using MATT1, MATT2, MATT8, and MATT9. All four have the same characteristics as described above. The temperature dependency of each property is defined through TABLEM1, TABLEM2, TABLEM3, or TABLEM4 table entries.
Composite Laminates are defined using the PCOMP and PCOMPG properties. They are not material types; each ply in the laminate lay-up can reference a different material.
Nonlinear material properties are defined using MATS1. The nonlinear material characteristics may need the table input TABLES1. MATS1 is defined as an extension to a MAT1 with the same MID. MATS1 is applicable to all nonlinear solutions.
User-defined material properties are available using MATUSR. .dll or .so libraries can be referenced via the LOADLIB entry. For more information, refer to User-Defined Material in the User Guide.
For explicit dynamic subcases (with Radioss integration), more nonlinear material laws are available. As a general rule, material definitions that are only applicable in explicit dynamic analysis are defined on extensions to a MAT1 material that defines the basic elastic properties. The extensions are grouped with the base entry by sharing the same MID. The table below lists the MATXyz extensions available. If a law requires material curves, TABLES1 entries are used.
Example
MAT1, 102, 60.4, , 0.33, 2.70e-6
MATX02, 102, 0.09026, 0.22313, 0.3746, 100.0, 0.175
- MATXy
- Description
- MATX0
- Void material
- MATX02
- Johnson-Cook elastic-plastic material
- MATX13
- Rigid material
- MATX21
- Rock-Concrete material
- MATX25
- Composite shell material, TSAI-WU and CRASURV formulations
- MATX27
- Brittle elastic-plastic material
- MATX28
- Honeycomb material
- MATX33
- Visco-elastic foam material
- MATX36
- Piece-wise linear elastic-plastic material
- MATX42
- Ogden-Mooney and Rivlin material
- MATX43
- Hill orthotropic material
- MATX44
- Cowper-Symonds elastic-plastic material
- MATX60
- Piece-wise nonlinear elastic-plastic material
- MATX62
- Hyper-visco-elastic material
- MATX65
- Tabulated strain-rate dependent elastic-plastic material
- MATX68
- Honeycomb material
- MATX70
- Tabulated visco-elastic foam material
- MATX82
- Ogden material
User-Defined Material
The MATUSR Bulk Data Entry, in combination with the LOADLIB I/O Option Entry, allows for the definition of material through user-defined external functions.
The external functions may be written in Fortran or C. The resulting libraries and files should be accessible by OptiStruct regardless of the coding language, provided that consistent function prototyping is respected, and adequate compiling and linking options are used.
Writing External Functions
The OptiStruct installation provides an example file with subroutines for Fortran (umat.F) with proper subroutine definition, arguments, and compilation directives. This file can be used as a starting point to write your own subroutines.
Two Fortran subroutines are required to define user material in OptiStruct. First, a Nonlinear subroutine for the nonlinear solution, and another subroutine for the linear solution. Both subroutines are mandatory, and the same argument order should be followed as:
subroutine usermaterial(idu, stress, strain, dstrain, stater,
state, nstate, drot, props, nprops,
temp, dtemp, ieuid, kinc, dt, t_step,
t_total, cdev, cbulk)
integer idu, nstate, nprops, kinc, ieuid
double precision stress(6),stater(*),state(*),
$ cdev(6,6),cbulk, drot(3,3), temp, dtemp, dt,
$ t_step, t_total,
$ strain(6), dstrain(6), props(nprops)
subroutine smatusr(idu, nprop, prop, smat)
integer idu, nprop
double precision prop(nprop), smat(*)
Subroutine Arguments
Argument | Type | Input / Output | Description |
---|---|---|---|
idu |
integer | Input | This is defined via the USUBID parameter
on the MATUSR Bulk Data Entry. This argument
can be used to define and choose between different types of
materials within the same user subroutine. optional use |
stress |
double (table) | Input/Output | This is the Stress tensor. The initial stress is considered to be input and the stress, tensor calculated during the nonlinear solution are output from the user subroutine to OptiStruct. |
strain |
double (table) | Input | Strain tensor. The initial strain is considered to be input. |
dstrain |
double (table) | Input | Incremental strain table. The incremental strain is input from OptiStruct to the user subroutine. |
stater |
double (table) | Input/Output | Table of State variables at the previous increment. State variables are variables that can be requested as output in the H3D file. Any variable (for example, plastic strain, equivalent plastic strain, and so on) calculated within the solution process in the subroutine can be output by defining it as a state variable. |
state |
double (table) | Input/Output | Table of State variables at the current increment. See
stater for more information. |
nstate |
integer | Input/Output | Number of State Variables that the user requires in the
subroutine. See stater for more information.
|
props |
double (table) | Input | This table contains all the user-defined material property information from the PROPERTY continuation line of the MATUSR entry. |
nprops |
Integer | Input | This is the total number of material properties defined on the PROPERTY continuation line of the MATUSR entry. |
temp |
double | Input | This is the temperature at the previous converged increment. |
dtemp |
double | Input | This is the temperature increment. |
ieuid |
integer | Input | Element ID. This subroutine is called for every integration point for every element. |
kinc |
integer | Input | Current increment. |
dt |
double | Input | Current Time increment |
t_step |
double | Input | Subcase time. |
t_total |
double | Input | Total time (if CNTNLSUB is used) |
cdev |
double (table) | Output | Deviatoric material modulus matrix. These are calculated during the solution and are output to OptiStruct to form the stiffness matrix. |
cbulk |
double (table) | Output | Bulk material modulus Matrix. These are calculated during the solution and are output to OptiStruct to form the stiffness matrix. |
smat |
Double (table) | Output | Material modulus matrix. These are calculated during the solution and are output to OptiStruct to form the stiffness matrix. |
Build External Libraries for User-defined Materials
Allows building shared libraries on Windows or Linux.
Refer to Build External Libraries for more information.