39 . NUVAR ,NFUNC ,PARMAT ,
40 . UNITAB ,MAT_ID ,TITR ,MTAG , LSUBMODEL,
68 USE constant_mod ,
ONLY : pi, hundred80, four, zero, infinity, nine, one, six, three, two
69 USE precision_mod ,
ONLY : wp
83 TYPE (UNIT_TYPE_)
INTENT(IN) :: UNITAB
84 REAL(KIND=WP),
DIMENSION(NPROPM),
INTENT(INOUT) :: PM
85 REAL(KIND=WP),
DIMENSION(100),
INTENT(INOUT) :: PARMAT
86 REAL(KIND=wp),
DIMENSION(MAXUPARAM) ,
INTENT(INOUT) :: uparam
87 INTEGER,
DIMENSION(NPROPMI),
INTENT(INOUT) ::
88 INTEGER,
INTENT(INOUT)
90 INTEGER,
INTENT(IN) :: MAT_ID
91 CHARACTER(LEN=NCHARTITLE) ,
INTENT(IN) :: TITR
93 TYPE(matparam_struct_) ,
INTENT(INOUT) :: MATPARAM
97 REAL(KIND=wp) :: e,nu,c,pstar,amax,g, delta,stifint,pmin,phi_deg
98 REAL(KIND=wp) :: a0,a1,a2,rho0,rhor
100 REAL(KIND=wp) :: phi,k,
alpha
101 LOGICAL :: IS_ENCRYPTED,IS_AVAILABLE
102 CHARACTER*64 :: CHAIN
106 is_encrypted = .false.
107 is_available = .false.
112 CALL hm_get_intv (
'IFORM',iform ,is_available, lsubmodel)
114 CALL hm_get_floatv(
'MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
116 CALL hm_get_floatv(
'MAT_E' ,e ,is_available, lsubmodel, unitab)
117 CALL hm_get_floatv(
'MAT_NU' ,nu ,is_available, lsubmodel, unitab)
119 CALL hm_get_floatv(
'MAT102_C' ,c ,is_available, lsubmodel, unitab)
120 CALL hm_get_floatv(
'MAT102_PHI' ,phi ,is_available, lsubmodel, unitab)
121 CALL hm_get_floatv(
'MAT102_AMAX' ,amax ,is_available, lsubmodel, unitab)
123 CALL hm_get_floatv(
'MAT102_PMIN' ,pmin ,is_available, lsubmodel, unitab)
133 phi = phi*pi/hundred80
137 IF(iform<=0 .OR. iform>=4)iform=2
144 k = six*c*cos(phi)/sqrt(three)/(three-sin(phi))
147 k = six*c*cos(phi)/sqrt(three)/(three+sin(phi))
148 alpha = two*sin(phi)/sqrt(three)/(three+sin(phi))
150 k = three*c*cos(phi)/sqrt(nine+three*sin(phi)*sin(phi))
151 alpha = sin(phi)/sqrt(nine+three*sin(phi)*sin(phi))
158 chain=
'YOUNG MODULUS MUST BE DEFINED '
159 CALL ancmsg(msgid=829, msgtype=msgerror, anmode=aninfo, i1=10, i2=mat_id, c1=
'ERROR', c2=titr, c3=chain)
163 chain=
'POISSON RATIO MUST BE DEFINED '
164 CALL ancmsg(msgid=829, msgtype=msgerror, anmode=aninfo, i1=10, i2=mat_id, c1=
'ERROR', c2=titr, c3=chain)
168 IF(a2==zero .AND. a1/=zero)
THEN
171 delta = a1*a1-four*a0*a2
173 IF(delta >= zero)
THEN
175 pstar = (-a1+delta)/two/a2
187 IF(amax==zero) amax = infinity
188 IF(pmin==zero) pmin =-infinity
215 parmat(1) = stifint/three
225 pm(32) = e / three/(one - two*nu)
230 ! Material compatibility with /EOS option
231 CALL INIT_MAT_KEYWORD(MATPARAM,"eos
")
233 ! EOS/Thermo keyword for pressure treatment in elements
234 CALL INIT_MAT_KEYWORD(MATPARAM,"hydro_eos
")
236 ! Properties compatibility
237 CALL INIT_MAT_KEYWORD(MATPARAM,"solid_isotropic
")
238 CALL INIT_MAT_KEYWORD(MATPARAM,"sph
")
242 WRITE(IOUT,1001) TRIM(TITR),MAT_ID,102
245 WRITE(IOUT,'(5X,A,//)')'CONFIDENTIAL DATA'
247 WRITE(IOUT,1002)RHO0,RHOR
248 WRITE(IOUT,1100)E,NU,C,PHI_DEG,PMIN
249 WRITE(IOUT,1200)IFORM
260 WRITE(IOUT,1300)A0,A1,A2,AMAX,PSTAR
264 & 5X,' EXTENDED DRUCKER-PRAGER MATERIAL (DPRAG2) ',/,
265 & 5X,' ----------------------------------------- ')
268 & 5X,'MATERIAL NUMBER . . . . . . . . . . . .=',I10/,
269 & 5X,'MATERIAL LAW. . . . . . . . . . . . . .=',I10/)
271 & 5X,'INITIAL DENSITY . . . . . . . . . . . .=',1PG20.13/,
272 & 5X,'REFERENCE DENSITY . . . . . . . . . . .=',1PG20.13/)
274 & 5X,'YOUNG MODULUS . . . . . . . . . . . . .=',1PG20.13/
275 & 5X,'POISSON RATIO . . . . . . . . . . . . .=',1PG20.13/
276 & 5X,'COHESION. . . . . . . . . . . . . . . .=',1PG20.13/
277 & 5X,'ANGLE OF INTERNAL FRICTION. . . . . . .=',1PG20.13/
278 & 5X,'MINIMUM PRESSURE. . . . . . . . . . . .=',1PG20.13)
280 & 5X,'DRUCKER-PRAGER MATERIAL CRITERION DEFINED FROM MOHR-COULOMB PARAMETERS',/,
281 & 5X,'FORMULATION FLAG. . . . . . . . . . . .=',I10)
283 & 5X,'-> CIRCUMBSCRIBED CRITERIA')
285 & 5X,'-> MIDDLE CRITERIA')
287 & 5X,'-> INSCRIBED CRITERIA')
289 & 5X,'-> ORIGINAL MOHR-COULOMB CRITERIA')
291 & 5X,'PARAMETERS USED TO DEFINE CRITERIA',/,
292 & 5X,'A0. . . . . . . . . . . . . . . . . . .=',1PG20.13/
293 & 5X,'A1. . . . . . . . . . . . . . . . . . .=',1PG20.13/
294 & 5X,'A2. . . . . . . . . . . . . . . . . . .=',1PG20.13/
295 & 5X,'AMAX. . . . . . . . . . . . . . . . . .=',1PG20.13/
296 & 5X,'YIELD FUNCTION PRESSURE ROOT. . . . . .=',1PG20.13//)
subroutine hm_read_mat102(uparam, maxuparam, nuparam, israte, nuvar, 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)