42 . NUVAR ,IFUNC ,MAXFUNC ,NFUNC , PARMAT ,
43 . UNITAB ,MAT_ID ,TITR ,MTAG , LSUBMODEL,
44 . PM ,IPM ,MATPARAM ,NVARTMP )
73#include "implicit_f.inc"
82 TYPE (UNIT_TYPE_),
INTENT(IN) :: UNITAB
83 my_real,
INTENT(INOUT) :: PM(NPROPM),PARMAT(100),UPARAM(MAXUPARAM)
84 INTEGER,
INTENT(INOUT) :: IPM(NPROPMI),ISRATE,IFUNC(MAXFUNC),NFUNC,
85 . maxfunc,maxuparam,nuparam,nuvar,imatvis ,
88 INTEGER,
INTENT(IN) :: MAT_ID
89 CHARACTER(LEN=NCHARTITLE) ,
INTENT(IN) :: TITR
91 TYPE(matparam_struct_) ,
INTENT(INOUT) :: MATPARAM
95 INTEGER J,NRATE,I,ILAW,VP
97 . E11,E22,E33,NU12,NU23,NU13,G12,G13,G23,QR1,QR2,CR1,CR2,
98 . sigy,r11,r22,r33,r12,r13,r23,a1,a2,a3,hh,ff,gg,ll,mm,nn,
99 . d11,d22,d33,d12,d13,d23,a11,a22,a12,c11,c22,c33,c12,c13,
100 . c23,nu21,nu31,nu32,detc,fac,yfac(100),rate(100),dmin,dmax,
101 . yscale_unit,rho0,rhor,asrate
102 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
106 is_encrypted = .false.
107 is_available = .false.
115 CALL hm_get_floatv(
'MAT_RHO',rho0 ,is_available, lsubmodel, unitab)
117 CALL hm_get_floatv(
'LAW93_E11' ,e11 ,is_available, lsubmodel, unitab)
118 CALL hm_get_floatv(
'LAW93_E22' ,e22 ,is_available, lsubmodel, unitab)
119 CALL hm_get_floatv(
'LAW93_E33' ,e33 ,is_available, lsubmodel, unitab)
120 CALL hm_get_floatv(
'LAW93_G12' ,g12 ,is_available, lsubmodel, unitab)
121 CALL hm_get_floatv(
'LAW93_Nu12',nu12 ,is_available, lsubmodel, unitab)
123 CALL hm_get_floatv(
'LAW93_G13' ,g13 ,is_available, lsubmodel, unitab)
124 CALL hm_get_floatv(
'LAW93_G23' ,g23 ,is_available, lsubmodel, unitab)
125 CALL hm_get_floatv(
'LAW93_Nu13',nu13 ,is_available, lsubmodel
126 CALL hm_get_floatv(
'LAW93_Nu23',nu23 ,is_available, lsubmodel, unitab)
128 CALL hm_get_intv (
'LAW93_NL' ,nrate ,is_available, lsubmodel)
129 CALL hm_get_floatv(
'FCUT' ,asrate ,is_available, lsubmodel, unitab)
137 IF (yfac(i) == zero)
THEN
138 CALL hm_get_floatv_dim(
'LAW93_arr2' ,yscale_unit ,is_available, lsubmodel, unitab)
139 yfac(i) = one * yscale_unit
144 CALL hm_get_floatv(
'LAW93_Sigma_y',sigy ,is_available, lsubmodel, unitab)
145 CALL hm_get_floatv(
'LAW93_QR1' ,qr1 ,is_available, lsubmodel, unitab)
146 CALL hm_get_floatv(
'LAW93_CR1' ,cr1 ,is_available, lsubmodel, unitab)
147 CALL hm_get_floatv(
'LAW93_QR2' ,qr2 ,is_available, lsubmodel, unitab)
148 CALL hm_get_floatv(
'LAW93_CR2' ,cr2 ,is_available, lsubmodel, unitab
150 CALL hm_get_floatv(
'LAW93_R11' ,r11 ,is_available, lsubmodel, unitab)
151 CALL hm_get_floatv(
'LAW93_R22' ,r22 ,is_available, lsubmodel, unitab)
152 CALL hm_get_floatv(
'LAW93_R12' ,r12 ,is_available, lsubmodel, unitab)
155 CALL hm_get_floatv(
'LAW93_R13' ,r13 ,is_available, lsubmodel, unitab)
156 CALL hm_get_floatv(
'LAW93_R23' ,r23 ,is_available, lsubmodel, unitab)
163 IF (rate(1) == zero)
THEN
168 ifunc(j+1) = ifunc(j)
177 IF(sigy == zero) sigy = infinity
178 IF(r11 == zero) r11 = one
179 IF(r22 == zero) r22 = one
180 IF(r33 == zero) r33 = one
181 IF(r12 == zero) r12 = one
182 IF(r23 == zero) r23 = one
183 IF(r13 == zero) r13 = one
186 IF (e22 == zero) e22 = e11
187 IF (e33 == zero) e33 = e22
189 IF (g13 == zero) g13 = g12
190 IF (g23 == zero) g23 = g12
197 if(nu12*nu21 >= one )
then
200 . anmode=aninfo_blind_2,
203 else if(nu13*nu31 >= one )
then
206 . anmode=aninfo_blind_2,
209 else if(nu23*nu32 >= one )
then
212 . anmode=aninfo_blind_2,
221 ff = half*(a2 + a3 - a1)
222 gg = half*(a3 + a1 - a2)
224 ll = three_half/r23/r23
225 mm = three_half/r13/r13
226 nn = three_half/r12/r12
229 fac = one/(one - nu12*nu21)
241 detc= c11*c22*c33-c11*c23*c23-c12*c12*c33+c12*c13*c23
242 + +c13*c12*c23-c13*c22*c13
251 d11 = (c22*c33-c23*c23)/detc
252 d12 =-(c12*c33-c13*c23)/detc
253 d13 = (c12*c23-c13*c22)/detc
254 d22 = (c11*c33-c13*c13)/detc
255 d23 =-(c11*c23-c13*c12)/detc
256 d33 = (c11*c22-c12*c12)/detc
257 dmin =
min(d11*d22 -d12**2, d11*d33 - d13**2, d22*d33 - d23**2 )
258 dmax =
max(d11,d22,d33)
265 asrate = 1.0d4*unitab%FAC_T_WORK
267 IF (asrate == zero) asrate = 1.0d4*unitab%FAC_T_WORK
280 parmat(1) =
max(a11,a22,d11,d22,d33)
281 parmat(2) =
max(e11,e22,e33)
282 parmat(3) =
max(nu12,nu13,nu23)
286 parmat(17) = dmin/dmax/dmax
312 IF ((nrate > 1).AND.(vp /= 2))
THEN
319 nuparam = 30 + 2*nfunc
360 uparam(30 + j) = rate(j)
361 uparam(30 + nfunc + j) = yfac(j)
368 WRITE(iout,1001) trim(titr),mat_id,ilaw
371 WRITE(iout,
'(5X,A,//)')
'CONFIDENTIAL DATA'
373 WRITE(iout,1002) rho0
374 WRITE(iout,1300) e11,e22,e33,g12,g13,g23,nu12,nu13,nu23
377 WRITE(iout,1400) sigy,qr1,cr1,qr2,cr2
381 WRITE(iout,1500) ifunc(j),yfac(j),rate(j)
384 WRITE(iout,1575) asrate,vp
387 WRITE(iout,1600) r11,r22,r33,r12,r13,r23
391 & 5x,
' ORTHOTROPIC ELASTIC + HILL CRITERION '/,
392 & 5x,
' ------------------------------------ '//)
395 & 5x,
'MATERIAL NUMBER . . . . . . . . . . .=',i10/,
396 & 5x,
'MATERIAL LAW. . . . . . . . . . . . .=',i10/)
398 & 5x,
'INITIAL DENSITY . . . . . . . . . . .=',1pg20.13/)
400 & 5x,
'YOUNG MODULUS IN 11 DIRECTION . . . .=',1pg20.13/,
401 & 5x,
'YOUNG MODULUS IN 22 DIRECTION . . . .=',1pg20.13/,
402 & 5x,
'YOUNG MODULUS IN 33 DIRECTION . . . .=',1pg20.13/,
403 & 5x,
'SHEAR MODULUS IN 12 DIRECTION . . . .=',1pg20.13/,
404 & 5x,
'SHEAR MODULUS IN 13 DIRECTION . . . .=',1pg20.13/,
405 & 5x,
'SHEAR MODULUS IN 23 DIRECTION . . . .=',1pg20.13/,
406 & 5x,
'POISSON RATIO 12. . . . . . . . . . .=',1pg20.13/,
407 & 5x,
'POISSON RATIO 13. . . . . . . . . . .=',1pg20.13/,
408 & 5x,
'POISSON RATIO 23. . . . . . . . . . .=',1pg20.13//)
410 & 5x,
'--------------------------------------'/,
411 & 5x,
'TABULATED YIELD STRESS '/,
412 & 5x,
'--------------------------------------'//)
414 & 5x,
'YIELD STRESS FUNCTION NUMBER. . . . .=',i10/,
415 & 5x,
'YIELD SCALE FACTOR. . . . . . . . . .=',1pg20.13/,
416 & 5x,
'STRAIN RATE . . . . . . . . . . . . .=',1pg20.13/)
418 & 5x,
'STRAIN RATE CUTTING FREQUENCY . . . .=',1pg20.13/
419 & 5x,
'STRAIN RATE CHOICE FLAG . . . . . . .=',i10/
420 & 5x,
' VP=1 EQUIVALENT PLASTIC STRAIN RATE'/
421 & 5x,
' VP=2 TOTAL STRAIN RATE (DEFAULT)'/
422 & 5x,
' VP=3 DEVIATORIC STRAIN RATE'/)
424 & 5x,
'--------------------------------------'/,
425 & 5x,
'CONTINUOUS YIELD STRESS '/,
426 & 5x,
'--------------------------------------'//)
428 & 5x,
'INITIAL YIELD STRESS. . . . . . . . .=',1pg20.13/,
429 & 5x,
'PARAMETER QR1 OF HARDENING . . . . .=',1pg20.13/,
430 & 5x,
'PARAMETER CR1 OF HARDENING . . . . .=',1pg20.13/,
431 & 5x,
'PARAMETER QR2 OF HARDENING . . . . .=',1pg20.13/,
432 & 5x,
'PARAMETER CR2 OF HARDENING . . . . .=',1pg20.13/,
433 & 5x,
'REFERENCE STRAIN. . . . . . . . . . .=',1pg20.13//)
435 & 5x,
'RATIO YIELD PARAMETER R11 . . . . . .=',1pg20.13/,
436 & 5x,
'RATIO YIELD PARAMETER R22 . . . . . .=',1pg20.13/,
437 & 5x,
'RATIO YIELD PARAMETER R33 . . . . . .=',1pg20.13/,
438 & 5x,
'RATIO YIELD PARAMETER R12 . . . . . .='
439 & 5x,
'RATIO YIELD PARAMETER R13 . . . . . .=',1pg20.13/,
440 & 5x,
'RATIO YIELD PARAMETER R23 . . . . . .=',1pg20.13/)
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)