39 . NUVAR ,IFUNC ,MAXFUNC ,NFUNC , PARMAT ,
40 . UNITAB ,MAT_ID ,TITR ,MTAG , LSUBMODEL,
71#include "implicit_f.inc"
80 TYPE (UNIT_TYPE_),
INTENT(IN) :: UNITAB
81 my_real,
DIMENSION(NPROPM),
INTENT(INOUT) :: PM
82 my_real,
DIMENSION(100),
INTENT(INOUT) :: PARMAT
83 my_real,
DIMENSION(MAXUPARAM) ,
INTENT(INOUT) :: uparam
84 INTEGER,
DIMENSION(NPROPMI),
INTENT(INOUT) :: IPM
85 INTEGER,
DIMENSION(MAXFUNC),
INTENT(INOUT) :: IFUNC
86 INTEGER,
INTENT(INOUT) :: ISRATE,IMATVIS,NFUNC,MAXFUNC,MAXUPARAM,NUPARAM,NUVAR
88 INTEGER,
INTENT(IN) :: MAT_ID
89 CHARACTER(LEN=NCHARTITLE) ,
INTENT(IN) :: TITR
91 TYPE(matparam_struct_) ,
INTENT(INOUT) :: MATPARAM
95 my_real :: e,nu,c,pstar,amax,g, delta,stifint,pmin,bid,phi_deg
96 my_real :: a0,a1,a2,rho0,rhor
98 CHARACTER(LEN=NCHARFIELD) :: STRING, KEYNET
99 CHARACTER(LEN=NCHARKEY) :: KEY
103 DOUBLE PRECISION :: PHI,K,ALPHA
105 LOGICAL :: IS_ENCRYPTED,
107 CHARACTER*64 :: CHAIN
111 is_encrypted = .false.
112 is_available = .false.
117 CALL hm_get_intv (
'IFORM',iform ,is_available, lsubmodel)
119 CALL hm_get_floatv(
'MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
121 CALL hm_get_floatv(
'MAT_E' ,e ,is_available, lsubmodel, unitab)
122 CALL hm_get_floatv(
'MAT_NU' ,nu ,is_available, lsubmodel, unitab)
124 CALL hm_get_floatv(
'MAT102_C' ,c ,is_available, lsubmodel, unitab)
125 CALL hm_get_floatv(
'MAT102_PHI' ,phi ,is_available, lsubmodel, unitab)
126 CALL hm_get_floatv(
'MAT102_AMAX' ,amax ,is_available, lsubmodel, unitab)
128 CALL hm_get_floatv(
'MAT102_PMIN' ,pmin ,is_available, lsubmodel, unitab)
138 phi = phi*3.141592653589793238d00/180.d00
142 IF(iform<=0 .OR. iform>=4)iform=2
149 k = six*c*cos(phi)/sqrt(three)/(three-sin(phi))
150 alpha = two*sin(phi)/sqrt(three)/(three-sin(phi))
152 k = six*c*cos(phi)/sqrt(three)/(three+sin(phi))
153 alpha = two*sin(phi)/sqrt(three)/(three+sin(phi))
155 k = three*c*cos(phi)/sqrt(nine+three*sin(phi)*sin(phi))
156 alpha = sin(phi)/sqrt(nine+three*sin(phi)*sin(phi))
160 a2 = nine*alpha*alpha
163 chain=
'YOUNG MODULUS MUST BE DEFINED '
164 CALL ancmsg(msgid=829, msgtype
'ERROR', c2=titr, c3=chain)
168 chain=
'POISSON RATIO MUST BE DEFINED '
169 CALL ancmsg(msgid=829, msgtype=msgerror, anmode=aninfo, i1=10, i2=mat_id, c1=
'ERROR', c2=titr, c3=chain)
173 IF(a2==zero .AND. a1/=zero)
THEN
176 delta = a1*a1-four*a0*a2
178 IF(delta >= zero)
THEN
180 pstar = (-a1+delta)/two/a2
192 IF(amax==zero) amax = infinity
193 IF(pmin==zero) pmin =-infinity
220 parmat(1) = stifint/three
230 pm(32) = e / three/(one - two*nu)
247 WRITE(iout,1001) trim(titr),mat_id,102
250 WRITE(iout,
'(5X,A,//)')
'CONFIDENTIAL DATA'
252 WRITE(iout,1002)rho0,rhor
253 WRITE(iout,1100)e,nu,c,phi_deg,pmin
254 WRITE(iout,1200)iform
265 WRITE(iout,1300)a0,a1,a2,amax,pstar
269 & 5x,
' EXTENDED DRUCKER-PRAGER MATERIAL (DPRAG2) ',/,
270 & 5x,
' ----------------------------------------- ')
273 & 5x,
'MATERIAL NUMBER . . . . . . . . . . . .=',i10/,
274 & 5x,
'MATERIAL LAW. . . . . . . . . . . . . .=',i10/)
276 & 5x,
'INITIAL DENSITY . . . . . . . . . . . .=',1pg20.13/,
277 & 5x,
'REFERENCE DENSITY . . . . . . . . . . .=',1pg20.13/)
279 & 5x,
'YOUNG MODULUS . . . . . . . . . . . . .=',1pg20.13/
280 & 5x,
'POISSON RATIO . . . . . . . . . . . . .=',1pg20.13/
281 & 5x,
'COHESION. . . . . . . . . . . . . . . .=',1pg20.13/
282 & 5x,
'ANGLE OF INTERNAL FRICTION. . . . . . .=',1pg20.13/
283 & 5x,
'MINIMUM PRESSURE. . . . . . . . . . . .=',1pg20.13)
285 & 5x,
'DRUCKER-PRAGER MATERIAL CRITERION DEFINED FROM MOHR-COULOMB PARAMETERS',/,
286 & 5x,
'FORMULATION FLAG. . . . . . . . . . . .=',i10)
288 & 5x,
'-> CIRCUMBSCRIBED CRITERIA')
290 & 5x,
'-> MIDDLE CRITERIA')
292 & 5x,
'-> INSCRIBED CRITERIA')
294 & 5x,
'-> ORIGINAL MOHR-COULOMB CRITERIA')
296 & 5x,
'PARAMETERS USED TO DEFINE CRITERIA',/,
297 & 5x,
'A0. . . . . . . . . . . . . . . . . . .=',1pg20.13/
298 & 5x,
'A1. . . . . . . . . . . . . . . . . . .=',1pg20.13/
299 & 5x,
'A2. . . . . . . . . . . . . . . . . . .=',1pg20.13/
300 & 5x,
'AMAX. . . . . . . . . . . . . . . . . .=',1pg20.13/
301 & 5x,
'YIELD FUNCTION PRESSURE ROOT. . . . . .=',1pg20.13//)
subroutine hm_read_mat102(uparam, maxuparam, nuparam, israte, imatvis, nuvar, ifunc, maxfunc, nfunc, parmat, unitab, mat_id, titr, mtag, lsubmodel, pm, ipm, matparam)
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)