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:

Nonlinear subroutine:
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)
Linear subroutine:
subroutine smatusr(idu, nprop, prop, smat)
integer idu, nprop
double precision prop(nprop), smat(*)
Note: It is important that both subroutines be named “usermaterial” and “smatusr”, respectively.

Subroutine Arguments

The following table briefly describes the arguments which are passed among OptiStruct and the external subroutines. OptiStruct calls these two subroutines for every integration point of every element in the model. Therefore, the values listed below are calculated at each integration point.
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.