39 . LSUBMODEL ,MTAG ,UNITAB ,IPM ,PM ,
40 . MAT_ID ,TITR ,ISRATE ,MATPARAM)
64#include "implicit_f.inc"
74 TYPE (UNIT_TYPE_),
INTENT(IN) ::UNITAB
75 INTEGER,
INTENT(IN) :: MAT_ID
76 INTEGER,
INTENT(INOUT) :: ISRATE
77 INTEGER,
DIMENSION(NPROPMI) ,
INTENT(INOUT) :: IPM
78 CHARACTER(LEN=NCHARTITLE) ,
INTENT(IN) :: TITR
79 my_real,
DIMENSION(NPROPM) ,
INTENT(INOUT) :: pm
82 TYPE(matparam_struct_) ,
INTENT(INOUT) ::
86 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
89 . n12, n23, n31, e11, e22, e33, g12, g23, g31, sigt1, sigt2,
90 . sigt3, delta, ca, cb, cn, fmax, sigyt1, sigyt2, sigyc1,
91 . sigyc2,sigyt3,sigyc3,sigyt12, sigyc12, sigyt23, sigyc23,
92 . sigy12t,sigyt13, sigyc13, f3,f33,
93 . f6,f66,f13,
alpha, efib, epsft,
94 . epsfc, c11, c22, c33, c12, c13, c23, detc, d11, d12, d13, d22,
95 . d23, d33, d21, d31, d32, a11, a12, a13, a22, a23, a33, c1, ssp,
96 . f1, f2, f4, f5, f11, f22, f44, f55, f12, f23, ft1, ft2,
97 . cc,eps0,dmin,wplaref,rhor,rho0
102 is_encrypted = .false.
103 is_available = .false.
108 CALL hm_get_floatv(
'MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
109 CALL hm_get_floatv(
'Refer_Rho' ,rhor ,is_available, lsubmodel, unitab)
111 CALL hm_get_floatv(
'MAT_EA' ,e11 ,is_available, lsubmodel, unitab)
112 CALL hm_get_floatv(
'MAT_EB' ,e22 ,is_available, lsubmodel, unitab)
113 CALL hm_get_floatv(
'MAT_EC' ,e33 ,is_available, lsubmodel, unitab)
115 CALL hm_get_floatv(
'MAT_PRAB' ,n12 ,is_available, lsubmodel, unitab)
116 CALL hm_get_floatv(
'MAT_PRBC' ,n23 ,is_available, lsubmodel, unitab)
117 CALL hm_get_floatv(
'MAT_PRCA' ,n31 ,is_available, lsubmodel, unitab
119 CALL hm_get_floatv(
'MAT_GAB' ,g12 ,is_available, lsubmodel, unitab)
120 CALL hm_get_floatv(
'MAT_GBC' ,g23 ,is_available, lsubmodel, unitab)
121 CALL hm_get_floatv(
'MAT_GCA' ,g31 ,is_available, lsubmodel, unitab)
123 CALL hm_get_floatv(
'MAT_SIGT1' ,sigt1 ,is_available, lsubmodel, unitab)
124 CALL hm_get_floatv(
'MAT_SIGT2' ,sigt2 ,is_available, lsubmodel, unitab)
125 CALL hm_get_floatv(
'MAT_SIGT3' ,sigt3 ,is_available, lsubmodel, unitab)
126 CALL hm_get_floatv(
'MAT_DAMAGE' ,delta ,is_available, lsubmodel, unitab)
128 CALL hm_get_floatv(
'MAT_BETA' ,cb ,is_available, lsubmodel, unitab)
129 CALL hm_get_floatv(
'MAT_HARD' ,cn ,is_available, lsubmodel, unitab)
130 CALL hm_get_floatv(
'MAT_SIG' ,fmax ,is_available, lsubmodel, unitab)
131 CALL hm_get_floatv(
'WPREF' ,wplaref ,is_available, lsubmodel, unitab)
133 CALL hm_get_floatv(
'MAT_SIGYT1' ,sigyt1 ,is_available, lsubmodel, unitab)
134 CALL hm_get_floatv(
'MAT_SIGYT2' ,sigyt2 ,is_available, lsubmodel, unitab)
135 CALL hm_get_floatv(
'MAT_SIGYC1' ,sigyc1 ,is_available, lsubmodel, unitab)
136 CALL hm_get_floatv(
'MAT_SIGYC2' ,sigyc2 ,is_available, lsubmodel, unitab)
138 CALL hm_get_floatv(
'MAT_SIGT12' ,sigyt12 ,is_available, lsubmodel, unitab)
139 CALL hm_get_floatv(
'MAT_SIGC12' ,sigyc12 ,is_available, lsubmodel, unitab)
140 CALL hm_get_floatv(
'MAT_SIGT23' ,sigyt23 ,is_available, lsubmodel, unitab)
141 CALL hm_get_floatv(
'MAT_SIGC23' ,sigyc23 ,is_available, lsubmodel, unitab)
143 CALL hm_get_floatv(
'MAT_SIGYT3' ,sigyt3 ,is_available, lsubmodel, unitab)
144 CALL hm_get_floatv(
'MAT_SIGYC3' ,sigyc3 ,is_available, lsubmodel, unitab)
145 CALL hm_get_floatv(
'MAT_SIGYT13' ,sigyt13 ,is_available, lsubmodel, unitab)
146 CALL hm_get_floatv(
'MAT_SIGYC13' ,sigyc13 ,is_available, lsubmodel, unitab)
149 CALL hm_get_floatv(
'MAT_EFIB' ,efib ,is_available, lsubmodel, unitab)
150 CALL hm_get_floatv(
'MAT_SRC' ,cc ,is_available, lsubmodel, unitab)
151 CALL hm_get_floatv(
'MAT_SRP' ,eps0 ,is_available, lsubmodel, unitab)
153 CALL hm_get_intv (
'STRFLAG' ,icc ,is_available,lsubmodel)
155 IF (rhor==zero) rhor=rho0
159 IF(e11 == zero .OR.e22 == zero .OR. e33 == zero)
THEN
166 . c2=
'E11, E22 or E33')
179 IF(wplaref == zero) wplaref = one
181 IF(delta==zero)delta= fiveem2
182 IF(sigt1==zero)sigt1= infinity
183 IF(sigt2==zero)sigt2= sigt1
184 IF(sigt3==zero)sigt3= sigt1
185 IF(sigyt1==zero)sigyt1= infinity
186 IF(sigyc1==zero)sigyc1= sigyt1
187 IF(sigyt2==zero)sigyt2= sigyt1
188 IF(sigyc2==zero)sigyc2= sigyc1
189 IF(sigyt3 == zero) sigyt3 = sigyt2
190 IF(sigyc3 == zero) sigyc3 = sigyc2
191 IF(sigyt12 == zero) sigyt12 = infinity
192 IF(sigyc12 == zero) sigyc12 = infinity
193 IF(sigyt23 == zero) sigyt23 = infinity
194 IF(sigyc23 == zero) sigyc23 = infinity
195 IF(sigyt13 == zero) sigyt13 = sigyt12
196 IF(sigyc13 == zero) sigyc13 = sigyc12
198 IF(cn==zero) cn = one
199 IF(fmax==zero)fmax= ep10
200 IF(cc==zero) eps0 = one
205 WRITE(iout,1001) trim(titr),mat_id,12
208 WRITE(iout,
'(5X,A,//)')
'CONFIDENTIAL DATA'
210 WRITE(iout,1002) rho0,rhor
211 WRITE(iout,1100) e11,e22,e33
212 WRITE(iout,1200) n12,n23,n31
213 WRITE(iout,1300) g12,g23,g31
214 WRITE(iout,1400) sigt1,sigt2,sigt3,delta
215 WRITE(iout,1510) cb,cn,fmax,wplaref
216 WRITE(iout,1550) sigyt1,sigyt2,sigyc1,sigyc2
217 WRITE(iout,1560) sigyt12,sigyc12,sigyt23,sigyc23
218 WRITE(iout,1610)
alpha,efib
219 WRITE(iout,1620) cc,eps0,icc
231 detc= c11*c22*c33-c11*c23*c23-c12*c12*c33+c12*c13*c23
232 + +c13*c12*c23-c13*c22*c13
233 IF(detc <= zero)
THEN
240 d11 = (c22*c33-c23*c23)/detc
241 d12 =-(c12*c33-c13*c23)/detc
242 d13 = (c12*c23-c13*c22)/detc
243 d22 = (c11*c33-c13*c13)/detc
244 d23 =-(c11*c23-c13*c12)/detc
245 d33 = (c11*c22-c12*c12)/detc
251 a11 = c11*d11+c12*d21+c13*d31
252 a12 = c11*d12+c12*d22+c13*d32
253 a13 = c11*d13+c12*d23+c13*d33
254 a22 = c12*d12+c22*d22+c23*d23
255 a23 = c12*d13+c22*d23+c23
256 a33 = c13*d13+c23*d23+c33*d33
258 pm(20)=
max(e11,e22,e33)
259 pm(21)= third*(n12+n31+n23)
260 pm(22)= third*(g12+g23+g31)
265 pm(28) =
max(onep0001,fmax)
266 c1 =
max(d11,d22,d33)
267 ssp = sqrt(c1/
max(pm(1),em20))
292 f1 = one/sigyt1-one/sigyc1
293 f2 = one/sigyt2-one/sigyc2
294 f3 = one/sigyt3-one/sigyc3
295 f4 = one/sigyt12-one/sigyc12
296 f5 = one/sigyt23-one/sigyc23
297 f6 = one/sigyt13-one/sigyc13
298 f11 = one/(sigyt1*sigyc1)
299 f22 = one/(sigyt2*sigyc2)
300 f33 = one/(sigyt3*sigyc3)
301 f44 = one/(sigyt12*sigyc12)
302 f55 = one/(sigyt23*sigyc23)
303 f66 = one/(sigyt13*sigyc13)
304 f12 = -half/sqrt(sigyt1*sigyc1*sigyt2*sigyc2)
305 f23 = -half/sqrt(sigyt2*sigyc2*sigyt3*sigyc3)
306 f13= - half/sqrt(sigyt1*sigyc1*sigyt3*sigyc3)
307 ft1=f11*f22- four*f12**2
308 ft2=f22**2- four*f23**2
309 IF(.NOT.is_encrypted)
THEN
310 WRITE(iout,1650) f1,f2,f3,f4,f5,f6,f11,f22,f33,f44,f55,f66,f12,f23,f13,ft1,ft2
352 dmin =
min(d11*d22-d12**2,d22*d33-d23**2,d11*d33-d13**2)
385 IF(.NOT.is_encrypted)
THEN
386 WRITE(iout,
'(A)')
' COMPOSITE CONSTITUTIVE LAW'
387 WRITE(iout,
'( 1P3G20.13 )') pm(40),pm(41),pm(42)
388 WRITE(iout,
'(20X,1P2G20.13 )') pm(43),pm(44)
389 WRITE(iout,
'(40X, 1PG20.13/)') pm(45)
395 & 5x,
' ORTHOTROPIC MATERIAL WITH FIBERS ',/,
396 & 5x,
' --------------------------------- ',//)
399 & 5x,
'MATERIAL NUMBER . . . . . . . . . . . .=',i10/,
400 & 5x,
'MATERIAL LAW. . . . . . . . . . . . . .=',i10/)
402 & 5x,
'INITIAL DENSITY . . . . . . . . . . . .=',1pg20.13/,
403 & 5x,
'REFERENCE DENSITY . . . . . . . . . . .=',1pg20.13)
405 & 5x,
'YOUNG MODULUS E11 . . . . . . . . . . .=',1pg20.13/,
406 & 5x,
'YOUNG MODULUS E22 . . . . . . . . . . .=',1pg20.13/,
407 & 5x,
'YOUNG MODULUS E33 . . . . . . . . . . .=',1pg20.13//)
409 & 5x,
'POISSON RATIO N12 . . . . . . . . . . .=',1pg20.13/,
410 & 5x,
'POISSON RATIO N23 . . . . . . . . . . .=',1pg20.13/,
411 & 5x,
'POISSON RATIO N31 . . . . . . . . . . .=',1pg20.13//)
413 & 5x,
'SHEAR MODULUS G12 . . . . . . . . . .=',1pg20.13/,
414 & 5x,
'SHEAR MODULUS G23 . . . . . . . . . .=',1pg20.13/,
415 & 5x,
'SHEAR MODULUS G31 . . . . . . . . . .=',1pg20.13//)
417 & 5x,
'MATRIX TENSILE FAILURE STRESS DIR-1 . .=',1pg20.13/,
418 & 5x,
'MATRIX TENSILE FAILURE STRESS DIR-2 . .=',1pg20.13/,
419 & 5x,
'MATRIX TENSILE FAILURE STRESS DIR-3 . .=',1pg20.13/,
420 & 5x,
'DAMAGE PARAMETER . . . . . . . . . . . =',1pg20.13//)
422 & 5x,
'COMPOSITE YIELD STRESS (A) . . . . . .=',1pg20.13/,
423 & 5x,
'COMPOSITE HARDENING PARAMETER (B). . .=',1pg20.13/,
424 & 5x,
'COMPOSITE HARDENING PARAMETER (N). . .=',1pg20.13/,
425 & 5x,
'COMPOSITE MAXIMUM STRESS. . . . . . . .=',1pg20.13//)
427 & 5x,
'COMPOSITE HARDENING PARAMETER (B). . .=',1pg20.13/,
428 & 5x,
'COMPOSITE HARDENING PARAMETER (N). . .=',1pg20.13/,
429 & 5x,
'COMPOSITE MAXIMUM YIELD FUNCTION FMAX .=',1pg20.13/,
430 & 5x,
'REFERENCE PLASTIC WORK WPLAREF .=',1pg20.13//)
432 & 5x,
'COMPOSITE YIELD IN TRACTION (1) . . . .=',1pg20.13/,
433 & 5x,
'COMPOSITE YIELD IN TRACTION (2-3) . . =',1pg20.13/,
434 & 5x,
'COMPOSITE YIELD IN COMPRESSION (1) . =',1pg20.13/,
435 & 5x,
'COMPOSITE YIELD IN COMPRESSION (2-3). =',1pg20.13//)
437 & 5x,
'COMPOSITE YIELD IN SHEAR (+12) . . . . =',1pg20.13/,
438 & 5x,
'COMPOSITE YIELD IN SHEAR (-12) . . . . =',1pg20.13/,
439 & 5x,
'COMPOSITE YIELD IN SHEAR (+23) . . . . =',1pg20.13/,
440 & 5x,
'COMPOSITE YIELD IN SHEAR (-23) . . . . =',1pg20.13//)
442 & 5x,
'FIBER VOLUME FRACTION . . . . . . . . .=',1pg20.13/,
443 & 5x,
'FIBER MODULUS . . . . . . . . . . . . .=',1pg20.13/,
444 & 5x,
'FIBER TENSILE FAILURE STRAIN. . . . . .=',1pg20.13/,
445 & 5x,
'FIBER COMPRESSIVE FAILURE STRAIN. . . .=',1pg20.13//)
447 & 5x,
'FIBER VOLUME FRACTION . . . . . . . . .='
448 & 5x,
'FIBER MODULUS . . . . . . . . . . . . .=',1pg20.13//)
450 & 5x,
'STRAIN RATE COEFFICIENT CC. . . . . . .=',1pg20.13/,
451 & 5x,
'REFERENCE STRAIN RATE . . . . . . . . .=',1pg20.13/,
452 & 5x,
'FLAG FOR STRAIN RATE ON F-MAX Wp-MAX. .=',i10//)
454 & 5x,
' YIELD FUNCTION CONSTANTS ,'/,
455 & 5x,
' ------------------------ ,'//,
456 & 5x,
'F1 , F2 , F3 . . . . . . . . . . . . .=',3e12.4/,
457 & 5x,
'F4 , F5 , F6. . . . . . . . . . . . . .=',3e12.4/,
458 & 5x,
'F11, F22, F33 . . . . . . . . . . . . =',3e12.4/,
459 & 5x,
'F44, F55, F66 . . . . . . . . . . . . . =',3e12.4/,
460 & 5x,
'F12, F23, F13 . . . . . . . . . . . . ..=',3e12.4
461 & 5x,
'FT1, FT2. . . . . . . . . . . . . . . .=',2e12.4//)