Contains all data for each defined material. The material data is stored in the structure
TYPE (MAT), DIMENSION (:), POINTER :: MATERIALS, MATERIALS_TMP
TYPE (MAT), POINTER :: MTL, MTL_TMP
The array MATERIALS is allocated when a new model is loaded into the application.
The data for each material is stored in a type MAT contained in MODULE material. This contains the following data:
TYPE MAT
! **************************************************************
! DESCRIBES A SET OF EQUATIONS/FLAGS FOR ONE MATERIAL
! NAME - MATERIAL NAME
! REFERENCE - A REFERENCE FOR THE MATERIAL
! NOTES - ADDITIONAL NOTES ON THE MATERIAL
! TYP - TYPE CLASSIFICATION OF MATERIAL (ISOTROPIC, ORTH, GAS ETC)
! RHOREF - SOLID REFERENCE DENSITY FOR MATERIAL
! STIFFMAT - THE MATERIAL STIFFNESS MATRIX (ISOTROPIC MATERIALS ONLY)
! FLAGS - LIST OF POSSIBLE FLAGS (MATERIAL MODELLIGN OPTIONS) ASSOCIATED
! WITH A MATERIAL
! MAIN - PROPERTIES FOR MAIN MODELING OPTIONS, USED TO ASSIST IN UI
! GENERATION
! IFSOLVER - FLAG TO INDICATE WHICH SOLVERS A MATERIAL CAN BE USED WITH
! THIS IS GENERATED AS A SUPERSET OF ALL THE SELECTED MATERIAL
! MODELING OPTION FLAGS
! **************************************************************
CHARACTER(LEN=30) :: NAME
CHARACTER(LEN=256) :: REFERENCE, NOTES
INTEGER(INT4) :: TYP
REAL(REAL8) :: RHOREF
REAL(REAL8), DIMENSION(3) :: STIFFMAT
TYPE(PARAMLIST), DIMENSION(NUMFLAGS) :: FLAGS
TYPE(MAINFLAG), DIMENSION(NFLAGS_MAIN) :: MAIN
INTEGER (INT4), DIMENSION(LIMSOL) :: IFSOLVER
END TYPE MAT
Within each material definition, the array FLAGS contains data for all material modeling options available, NUMFLAGS. The index of all material modeling options (flags) is specified in matdef. Each option (flag) has a module associated with it which defines/provides
input parameters
variables
checks
equation solution
for that option. For example, IMF_EOS_LINEAR is the flag (index in the FLAGS array) for a linear equation of state. The input parameters , variables, checks and equation solution for the linear equation of state are contained within the module mdeos_linear.
The data for each flag is stored in TYPE PARAMLIST:
TYPE PARAMLIST
! TYPE DEFINITION FOR A LIST OF PARAMETERS
! NAME - NAME ASSOCIETD WITH LIST
! IACTIVE - INDICTES IF LIST (FLAG) IS ACTIVE
! VISIBLE - INDICATES IF LIST IS VISIBLE IN UI
! IFSOLVER - INDICATES SOLVER TYPES FOR WHICH FLAG IS AVAILABLE
! EQTYPE - FLAG INDEX
! NPAR - NUMBER OF REAL PARAMETERS IN LIST
! NUMOPT - NUMBER OF OPTIONS IN LIST
! NDEPFLG - NUMBER OF DEPENDANT FLAGS THAT ARE ALWAYS USED WITH THIS FLAG (CHILDREN)
! IPOS - ARRAY INDICATING POSITION OF REAL PARAMETERS TO BE DISPLAYED IN UI
! DEPFLG - LIST OF DEPENDANT (CHILD) OPTIONS (FLAGS)
! PAR - REAL PARAMETER DEFINITIONS
! OPTION - OPTION LIST(S) DEFINITIONS
CHARACTER (LEN=30) :: NAME
INTEGER (INT4) :: IACTIVE
INTEGER (INT4) :: VISIBLE
INTEGER (INT4), DIMENSION(LIMSOL) :: IFSOLVER
INTEGER (INT4) :: EQTYPE !(FLAG)
INTEGER (INT4) :: NPAR, NUMOPT, NDEPFLG
INTEGER (INT4), DIMENSION(:), POINTER :: IPOS
INTEGER (INT4), DIMENSION(:), POINTER :: DEPFLG
TYPE (PRMT), DIMENSION(:), POINTER :: PAR
TYPE (OPTION_LIST), DIMENSION(:), POINTER :: OPTION
END TYPE PARAMLIST
Within a PARAMLIST, the real parameters and options are defined through the types given below:
TYPE PRMT
! TYPE DEFINITION FOR A SINGLE MATERIAL INPUT PARAMETER
! NAME - NAME OF PARAMETER AS DISPLAYED IN UI
! D_L - POWER OF LENGTH UNIT
! D_T - POWER OF TIME UNIT
! D_M - POWER OF MASS UNIT
! D_H - POWER OF TEMEPRATURE UNIT
! VAL - CURRENT VALUE
! MIN - MINIMUM ALLOWABLE VALUE
! MAX - MAXIMUM ALLOWABLE VALUE
! DEFAULT - DEFAULT VALUE
! VISIBLE - VISIBILITY OF PARAMETER SWITCH
! REQUIRED - REQUIRED PARAMETER SWITCH
CHARACTER (LEN=50) :: NAME
INTEGER (INT4) :: D_L
INTEGER (INT4) :: D_T
INTEGER (INT4) :: D_M
INTEGER (INT4) :: D_H
REAL (REAL8) :: VAL
REAL (REAL8) :: MIN
REAL (REAL8) :: MAX
REAL (REAL8) :: DEFAULT
INTEGER (INT4) :: VISIBLE
INTEGER (INT4) :: REQUIRED
END TYPE PRMT
TYPE OPTION
! TYPE DEFINITION FOR A SINGLE MATERIAL INPUT OPTION
! NAME - OPTIONS NAME
! AUTH - AUTHORIZATION CODE
! REF - NAME OF THE REFERENCE FILE ABOUT THIS OPTION
! ID - INTEGER ID (USED FOR DIFFERENT PURPOSES, FOR EXAMPLE,
! IT CAN BE THE ID NUMBER FOR A DEPENDANT (CHILD) FLAG
CHARACTER(LEN=80) :: NAME
CHARACTER(LEN=10) :: AUTH
CHARACTER(LEN=10) :: REF
INTEGER(INT4) :: ID
END TYPE OPTION
TYPE OPTION_LIST
! TYPE DEFINITION FOR AN OPTION LIST
! NAME - OPTION LIST NAME
! NUMOPT - NUMBER OF OPTIONS IN THE LIST
! OPTS - DETAILS OF EACH OPTION
! DEFAULT - DEFAULT OPTION IN THE LIST
! SELETCED - CURRENT SELECTED OPTION
! IPOS - POSITION OF OPTION LIST WITHIN PARAMLIST
! REQUIRED - INDICATES WHETHER AN OPTION MUST BE SPECIFIED OR NOT
CHARACTER (LEN=30) :: NAME
INTEGER (INT4) :: NUMOPT
TYPE (OPTION), DIMENSION(:), POINTER :: OPTS
INTEGER (INT4) :: DEFAULT, SELECTED
INTEGER (INT4) :: IPOS, VISIBLE, REQUIRED
END TYPE
Local pointers used extensively throughout the code to create temporary shortcuts to the material data. The most common are
MTL => MATERIALS(MATNO) POINTER TO CURRENT MATERIAL EQ => MTL%FLAGS(IMF_****) POINTER TO PARAMETER LIST (FLAG) *** OF MATERIAL MATNO
Both these pointers are referenced in module material.
Subroutine GETMAT sets up the pointer MTL to the current material MATNO. The name of a material would subsequently be available as MTL%NAME.