5.9. MATDEF, Material Definitions

Module matdef includes global material data variables.

      MODULE matdef
      USE kindef

      ! **************************************************************

      ! THIS MODULE DEFINES ALL MATERIAL MODELING FLAGS/OPTIONS.

      ! MAIN/BASIC MATERIAL FLAGS AND OPTIONS:
      ! - THESE DEFINE THE TOP LEVEL STRUCTURE OF A MATERIAL MODEL
      !   AND MUST ALWAYS BE SET FOR A GIVEN MATERIAL
      !
      ! ADDITIONAL MATERIAL FLAGS/OPTIONS:
      ! - THESE DEFINE MATERIAL MODELING OPTIONS THAT CAN BE USED
      !   TO RECURSIVELY ACCESS MATERIAL MODELING OPTION INPUT
      !   AND EQUATIONS. IN PARTICULAR, THEY ARE USED IN THE GENERIC 
      !   MATERIAL MODEL BUILDER

      ! **************************************************************

      IMPLICIT NONE
      SAVE

      INTEGER (INT4) :: LIMMAT, LIMMAP
      INTEGER (INT4) :: IFUPDATE=0  ! FLAG TO INDICATE IF MATERIAL IS BEING UPDATED IN GET_VIS
      INTEGER (INT4), PARAMETER :: LIMSOL = 8
      INTEGER (INT4) :: IFSPH
      INTEGER (INT4) :: NUMMAT, NUMMAP, MATNO, MATOLD,  NEOS,  NSTR,   NFAI
      INTEGER (INT4) :: MUNTYP, KUNTYP, IFOUT, MATNOP
      INTEGER (INT4) :: NUMMAT_TMP 
      LOGICAL,DIMENSION(:), POINTER :: LSMTPL=>NULL()
      REAL (REAL8), DIMENSION(:), POINTER :: RMATIE=>NULL(), RMATKE=>NULL(), RMATDE=>NULL(), RMATVL=>NULL()
      REAL (REAL8), DIMENSION(:), POINTER :: RMATXM=>NULL(), RMATYM=>NULL(), RMATZM=>NULL(), RMATMS=>NULL()

      ! MODEL PARAMETERS COMMON TO SEVERAL FLAGS (OPTIONS)
      INTEGER(INT4) :: NSBSLD, IFSTOCH
      REAL (REAL8) :: RHOREF, A1, C1
      REAL (REAL8) ::  TPREF, SHCV
      REAL (REAL8) :: EY1, EY2, EY3, V12, V23, V31, G12, G23, G31
      REAL (REAL8) :: OAN, OXC, OYC, OZC
      REAL (REAL8) :: C11, C22, C33, C12, C23, C31, KEFF
      REAL (REAL8) :: SHRMDZ, YLDSTZ, EROMOD, EROSON, PMIN, EPSLIM
      REAL (REAL8) ::  DERIV1, DERIV2
      REAL (REAL8) :: FT11, FT22, FT33, FT12, FE11, FE22, FE33, FE12, FT31, FT23
      REAL (REAL8) :: FE23, FE31, X11M, Y11M, Z11M
      REAL (REAL8) :: OMTY, OMAN, OMXC, OMYC, OMZC, FTYPE
      REAL (REAL8) ::   GF, CCDIAG, CCOUP, CSHR
      REAL (REAL8) :: CC, SS

      ! DEFINE PROCESSOR FLAGS - THESE SHOULD GO IN COMMON GRID MODULE WHEN INTEGRATED
      INTEGER(INT4), PARAMETER  :: ISLV_LAG       = 1
      INTEGER(INT4), PARAMETER  :: ISLV_EULER     = 2
      INTEGER(INT4), PARAMETER  :: ISLV_ALE       = 3
      INTEGER(INT4), PARAMETER  :: ISLV_SHELL     = 4
      INTEGER(INT4), PARAMETER  :: ISLV_EULER_GOD = 5
      INTEGER(INT4), PARAMETER  :: ISLV_FCT       = 6
      INTEGER(INT4), PARAMETER  :: ISLV_SPH       = 7
      INTEGER(INT4), PARAMETER  :: ISLV_BEAM      = 8

      ! DEFINE PARAMETERS OF MATERIAL TYPES
      INTEGER(INT4), PARAMETER  :: MATTYP_ISO   = 1
      INTEGER(INT4), PARAMETER  :: MATTYP_ORTHO = 2
      INTEGER(INT4), PARAMETER  :: MATTYP_GAS   = 3

      ! COMPLETE LIST OF MODEL FLAGS INCLUDING FUTURE FLAGS
      INTEGER(INT4), PARAMETER  :: NUMFLAGS     = 1000
      INTEGER(INT4), PARAMETER  :: NFLAGS_MAIN  = 100

      INTEGER (INT4), PARAMETER::IMF_EQUATION      =1
      INTEGER (INT4), PARAMETER::IMF_EOS           =2 
      INTEGER (INT4), PARAMETER::IMF_STR           =3 
      INTEGER (INT4), PARAMETER::IMF_FAI           =4
      INTEGER (INT4), PARAMETER::IMF_POR           =5
      INTEGER (INT4), PARAMETER::IMF_ERO           =6
      INTEGER (INT4), PARAMETER::IMF_CUTOFFS       =7
      INTEGER (INT4), PARAMETER::IMF_OPTIONS       =8
      INTEGER (INT4), PARAMETER::IMF_USER_MAT_1    =90
      INTEGER (INT4), PARAMETER::IMF_USER_MAT_2    =91
      INTEGER (INT4), PARAMETER::IMF_USER_MAT_3    =92
      INTEGER (INT4), PARAMETER::IMF_USER_MAT_4    =93
      INTEGER (INT4), PARAMETER::IMF_USER_MAT_5    =94

      INTEGER (INT4), PARAMETER::IMF_EOS_LINEAR    =101    
      INTEGER (INT4), PARAMETER::IMF_EOS_POLYNOMIAL=102 
      INTEGER (INT4), PARAMETER::IMF_EOS_IDEALGAS  =103 
      INTEGER (INT4), PARAMETER::IMF_EOS_SHOCK     =104 
      INTEGER (INT4), PARAMETER::IMF_EOS_JWL       =105 
      INTEGER (INT4), PARAMETER::IMF_EOS_TILLOTSON =106 
      INTEGER (INT4), PARAMETER::IMF_EOS_PUFF      =107 
      INTEGER (INT4), PARAMETER::IMF_EOS_POROUS    =108 
      INTEGER (INT4), PARAMETER::IMF_EOS_ORTHO     =109 
      INTEGER (INT4), PARAMETER::IMF_EOS_TWOPHASE  =110 
      INTEGER (INT4), PARAMETER::IMF_EOS_LEETARVER =111 
      INTEGER (INT4), PARAMETER::IMF_EOS_SESAME    =112 
      INTEGER (INT4), PARAMETER::IMF_EOS_COMPACTION=113 
      INTEGER (INT4), PARAMETER::IMF_EOS_PALPHA    =114 
      INTEGER (INT4), PARAMETER::IMF_EOS_GRUN      =115 
      INTEGER (INT4), PARAMETER::IMF_EOS_GEN       =116 
      INTEGER (INT4), PARAMETER::IMF_EOS_HJC       =117
      INTEGER (INT4), PARAMETER::IMF_EOS_SLOWBURN  =118
      INTEGER (INT4), PARAMETER::IMF_EOS_USER_1    =190
      INTEGER (INT4), PARAMETER::IMF_EOS_USER_2    =191
      INTEGER (INT4), PARAMETER::IMF_EOS_USER_3    =192
      INTEGER (INT4), PARAMETER::IMF_EOS_USER_4    =193
      INTEGER (INT4), PARAMETER::IMF_EOS_USER_5    =194
      INTEGER (INT4), PARAMETER::IMF_LIMEOS        = IMF_EOS_LINEAR - 123

      INTEGER (INT4), PARAMETER::IMF_STR_HYDRO     =201
      INTEGER (INT4), PARAMETER::IMF_STR_ELASTIC   =202
      INTEGER (INT4), PARAMETER::IMF_STR_VONMISES  =203
      INTEGER (INT4), PARAMETER::IMF_STR_DRUCKERP  =204
      INTEGER (INT4), PARAMETER::IMF_STR_JNCOOK    =205
      INTEGER (INT4), PARAMETER::IMF_STR_ZERARM    =206
      INTEGER (INT4), PARAMETER::IMF_STR_STEINB    =207
      INTEGER (INT4), PARAMETER::IMF_STR_PCWISE    =208
      INTEGER (INT4), PARAMETER::IMF_STR_JH2       =209
      INTEGER (INT4), PARAMETER::IMF_STR_RHT       =210
      INTEGER (INT4), PARAMETER::IMF_STR_GRANULAR  =211
      INTEGER (INT4), PARAMETER::IMF_STR_GENERIC   =212
      INTEGER (INT4), PARAMETER::IMF_STR_VISCOEL   =213
      INTEGER (INT4), PARAMETER::IMF_STR_RJC       =214
      INTEGER (INT4), PARAMETER::IMF_STR_HJC       =215
      INTEGER (INT4), PARAMETER::IMF_STR_USER_1    =290
      INTEGER (INT4), PARAMETER::IMF_STR_USER_2    =291
      INTEGER (INT4), PARAMETER::IMF_STR_USER_3    =292
      INTEGER (INT4), PARAMETER::IMF_STR_USER_4    =293
      INTEGER (INT4), PARAMETER::IMF_STR_USER_5    =294
      INTEGER (INT4), PARAMETER::IMF_STR_BEAMRESIST=295
      INTEGER (INT4), PARAMETER::IMF_LIMSTR        = IMF_STR_HYDRO - 220

      INTEGER (INT4), PARAMETER ::IMF_FAI_NONE     =301
      INTEGER (INT4), PARAMETER ::IMF_FAI_HYDRO    =302  
      INTEGER (INT4), PARAMETER ::IMF_FAI_PLSTN    =303  
      INTEGER (INT4), PARAMETER ::IMF_FAI_PSTRESS  =304  
      INTEGER (INT4), PARAMETER ::IMF_FAI_PSTRAIN  =305 
      INTEGER (INT4), PARAMETER ::IMF_FAI_PSS      =306  
      INTEGER (INT4), PARAMETER ::IMF_FAI_MSTRESS  =307  
      INTEGER (INT4), PARAMETER ::IMF_FAI_MSTRAIN  =308  
      INTEGER (INT4), PARAMETER ::IMF_FAI_MSS      =309 
      INTEGER (INT4), PARAMETER ::IMF_FAI_CUMDAM   =310
      INTEGER (INT4), PARAMETER ::IMF_FAI_JH2      =311
      INTEGER (INT4), PARAMETER ::IMF_FAI_RHT      =312
      INTEGER (INT4), PARAMETER ::IMF_FAI_TSHOFF   =313
      INTEGER (INT4), PARAMETER ::IMF_FAI_GRADY    =314
      INTEGER (INT4), PARAMETER ::IMF_FAI_JNCOOK   =315
      INTEGER (INT4), PARAMETER ::IMF_FAI_USER_1   =390
      INTEGER (INT4), PARAMETER ::IMF_FAI_USER_2   =391
      INTEGER (INT4), PARAMETER ::IMF_FAI_USER_3   =392
      INTEGER (INT4), PARAMETER ::IMF_FAI_USER_4   =393
      INTEGER (INT4), PARAMETER ::IMF_FAI_USER_5   =394

      INTEGER (INT4), PARAMETER ::IMF_LIMFAI       =IMF_FAI_NONE - 301

      INTEGER (INT4), PARAMETER ::IMF_POR_NONE     =401
      INTEGER (INT4), PARAMETER ::IMF_POR_SIMPLE   =402
      INTEGER (INT4), PARAMETER ::IMF_POR_GENERIC  =403
      INTEGER (INT4), PARAMETER ::IMF_POR_USER_1   =490
      INTEGER (INT4), PARAMETER ::IMF_POR_USER_2   =491
      INTEGER (INT4), PARAMETER ::IMF_POR_USER_3   =492
      INTEGER (INT4), PARAMETER ::IMF_POR_USER_4   =493
      INTEGER (INT4), PARAMETER ::IMF_POR_USER_5   =494
      INTEGER (INT4), PARAMETER ::IMF_LIMPOR = IMF_POR_NONE - 404

      INTEGER (INT4), PARAMETER ::IMF_ERO_NONE     =501
      INTEGER (INT4), PARAMETER ::IMF_ERO_GEOMETRIC=502
      INTEGER (INT4), PARAMETER ::IMF_ERO_PLASTIC  =503
      INTEGER (INT4), PARAMETER ::IMF_ERO_USER_1   =590
      INTEGER (INT4), PARAMETER ::IMF_ERO_USER_2   =591
      INTEGER (INT4), PARAMETER ::IMF_ERO_USER_3   =592
      INTEGER (INT4), PARAMETER ::IMF_ERO_USER_4   =593
      INTEGER (INT4), PARAMETER ::IMF_ERO_USER_5   =594
      INTEGER (INT4), PARAMETER ::IMF_LIMERO = IMF_ERO_NONE - 508

      INTEGER (INT4) :: LIMPARAM  ! DEFINED IN GET_EQ_PARAM

      ! END OF MAIN/BASIC FLAGS

      ! EOS DEPENDENT FLAGS
      INTEGER (INT4), PARAMETER ::IMF_TEMPERATURE          =600
      INTEGER (INT4), PARAMETER ::IMF_ORTHO_MODULI         =601
      INTEGER (INT4), PARAMETER ::IMF_ORTHO_STIFFMAT       =602
      INTEGER (INT4), PARAMETER ::IMF_ORTHO_IJKSPACE       =603
      INTEGER (INT4), PARAMETER ::IMF_ORTHO_XYZSPACE       =604

      ! STRENGTH DEPENDENT FLAGS
      INTEGER (INT4), PARAMETER ::IMF_YP_PCWISE            =701
      INTEGER (INT4), PARAMETER ::IMF_YP_LINEAR            =702
      INTEGER (INT4), PARAMETER ::IMF_YP_STASSI            =703
      INTEGER (INT4), PARAMETER ::IMF_YD_PCWISE            =704
      INTEGER (INT4), PARAMETER ::IMF_GD_PCWISE            =705

      ! FAILURE DEPENDENT FLAGS
      INTEGER (INT4), PARAMETER ::IMF_FAI_CRACKSOFT        =801
      INTEGER (INT4), PARAMETER ::IMF_FAI_ORTHODAM         =802
      INTEGER (INT4), PARAMETER ::IMF_FAI_STOCHASTIC       =803


      END MODULE matdef
NUMMAT

Number of materials for problem

MATNO

Current material number

MATOLD

not available

NEOS

Current equation of state number

NSTR

Current strength model number

NFAI

Current failure model

For each cell, the following variables are defined, according to the material in that cell:

For all materials:

RHOREF

Reference density

TPREF

Reference temperature

SHCV

Specific heat (constant volume)

SHRMDZ

Shear modulus (initial)

YLDSTZ

Yield stress (initial)

EROMOD

Erosion model type

EROSON

Erosion model parameter

PMIN

Hydrodynamic tensile limit (pmin)

EPSLIM

Effective plastic strain limit