39 . MAT_ID , TITR,MATPARAM)
56#include "implicit_f.inc"
68 TYPE (UNIT_TYPE_),
INTENT(IN) ::UNITAB
69 CHARACTER(LEN=NCHARTITLE),
INTENT(IN) :: TITR
70 INTEGER,
INTENT(IN) :: MAT_ID
71 INTEGER,
INTENT(INOUT) :: IPM(NPROPMI)
72 my_real,
INTENT(INOUT) :: pm(npropm)
78 . n12, n23, n31, e11, e22, e33, g12, g23, g31, sigt1, sigt2,
79 . sigt3, delta, ca, cb, cn, sigmx, sigyt1, sigyt2, sigyc1,
80 . sigyc2, sysp12, sysn12, sysp23, sysn23,
alpha, efib, epsft,
81 . epsfc, c11, c22, c33, c12, c13, c23, detc, d11, d12, d13, d22,
82 . d23, d33, d21, d31, d32, a11, a12, a13, a22, a23, a33, c1, ssp,
83 . f1, f2, f4, f5, f11, f22, f44, f55, f12, f23, ft1, ft2,
84 . cc,eps0,wplaref,rho0,rhor
85 TYPE(matparam_struct_) ,
INTENT(INOUT) :: MATPARAM
87 LOGICAL :: IS_ENCRYPTED, IS_AVAILABLE
91 is_encrypted = .false.
92 is_available = .false.
96 CALL hm_get_floatv(
'MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab
97 CALL hm_get_floatv(
'Refer_Rho' ,rhor ,is_available, lsubmodel, unitab
98 IF (rhor == zero)
THEN
104 CALL hm_get_floatv(
'MAT_EA', e11, is_available, lsubmodel, unitab)
105 CALL hm_get_floatv(
'MAT_EB', e22, is_available, lsubmodel, unitab)
106 CALL hm_get_floatv(
'MAT_EC', e33, is_available, lsubmodel, unitab)
108 CALL hm_get_floatv(
'MAT_PRAB', n12, is_available, lsubmodel, unitab)
109 CALL hm_get_floatv(
'MAT_PRBC', n23, is_available, lsubmodel, unitab)
110 CALL hm_get_floatv(
'MAT_PRCA', n31, is_available, lsubmodel, unitab)
112 CALL hm_get_floatv(
'MAT_GAB', g12, is_available, lsubmodel, unitab)
113 CALL hm_get_floatv(
'MAT_GBC', g23, is_available, lsubmodel, unitab)
114 CALL hm_get_floatv(
'MAT_GCA', g31, is_available, lsubmodel, unitab)
116 CALL hm_get_floatv(
'MAT_SIGT1', sigt1, is_available, lsubmodel, unitab)
117 CALL hm_get_floatv(
'MAT_SIGT2', sigt2, is_available, lsubmodel, unitab)
118 CALL hm_get_floatv(
'MAT_SIGT3', sigt3, is_available, lsubmodel, unitab)
119 CALL hm_get_floatv(
'MAT_DAMAGE', delta, is_available, lsubmodel, unitab)
121 CALL hm_get_floatv(
'MAT_BETA', cb, is_available, lsubmodel, unitab)
122 CALL hm_get_floatv(
'MAT_HARD', cn, is_available, lsubmodel, unitab)
123 CALL hm_get_floatv(
'MAT_SIG', sigmx, is_available, lsubmodel, unitab)
124 CALL hm_get_floatv(
'MAT_WPREF', wplaref, is_available, lsubmodel, unitab)
126 CALL hm_get_floatv(
'MAT_SIGYT1', sigyt1, is_available, lsubmodel, unitab)
127 CALL hm_get_floatv(
'MAT_SIGYT2', sigyt2, is_available, lsubmodel, unitab)
128 CALL hm_get_floatv(
'MAT_SIGYC1', sigyc1, is_available, lsubmodel, unitab)
129 CALL hm_get_floatv(
'MAT_SIGYC2', sigyc2, is_available, lsubmodel
131 CALL hm_get_floatv(
'MAT_SIGT12', sysp12, is_available, lsubmodel, unitab)
132 CALL hm_get_floatv(
'MAT_SIGT23', sysn12, is_available, lsubmodel, unitab)
133 CALL hm_get_floatv(
'MAT_SIGC12', sysp23, is_available, lsubmodel, unitab)
134 CALL hm_get_floatv(
'MAT_SIGC23', sysn23, is_available, lsubmodel, unitab)
137 CALL hm_get_floatv(
'MAT_EFIB', efib, is_available, lsubmodel, unitab)
138 CALL hm_get_floatv(
'MAT_SRC', cc, is_available, lsubmodel, unitab)
139 CALL hm_get_floatv(
'MAT_SRP', eps0, is_available, lsubmodel, unitab)
140 CALL hm_get_intv(
'STRFLAG', icc, is_available, lsubmodel)
142 IF(e11==0..OR.e22==0..OR.e33==0.)
THEN
149 . c2=
'E11, E22 or E33')
161 IF(wplaref == zero) wplaref = one
164 IF(delta==zero)delta= fiveem2
165 IF(sigt1==zero)sigt1= infinity
166 IF(sigt2==zero)sigt2= sigt1
167 IF(sigt3==zero)sigt3= sigt1
169 IF(cn==zero) cn = one
170 IF(sigmx==zero)sigmx= ep10
171 IF(cc==zero) eps0 = one
176 WRITE(iout, 900) trim(titr),mat_id,14
179 WRITE(iout,
'(5X,A,//)')
'CONFIDENTIAL DATA'
182 WRITE(iout,1100)e11,e22,e33
183 WRITE(iout,1200)n12,n23,n31
184 WRITE(iout,1300)g12,g23,g31
185 WRITE(iout,1400)sigt1,sigt2,sigt3,delta
186 WRITE(iout,1510)cb,cn,sigmx,wplaref
187 WRITE(iout,1550)sigyt1,sigyt2,sigyc1,sigyc2
188 WRITE(iout,1560)sysp12,sysn12,sysp23,sysn23
189 WRITE(iout,1610)
alpha,efib
190 WRITE(iout,1620)cc,eps0,icc
202 detc= c11*c22*c33-c11*c23*c23-c12*c12*c33+c12*c13*c23
203 + +c13*c12*c23-c13*c22*c13
211 d11 = (c22*c33-c23*c23)/detc
212 d12 =-(c12*c33-c13*c23)/detc
213 d13 = (c12*c23-c13*c22)/detc
214 d22 = (c11*c33-c13*c13)/detc
215 d23 =-(c11*c23-c13*c12)/detc
216 d33 = (c11*c22-c12*c12)/detc
222 a11 = c11*d11+c12*d21+c13*d31
223 a12 = c11*d12+c12*d22+c13*d32
224 a13 = c11*d13+c12*d23+c13*d33
225 a22 = c12*d12+c22*d22+c23*d23
226 a23 = c12*d13+c22*d23+c23*d33
227 a33 = c13*d13+c23*d23+c33*d33
229 pm(20)=
max(e11,e22,e33)
230 pm(21)= third*(n12+n31+n23)
231 pm(22)= third*(g12+g23+g31)
236 pm(28) =
max(onep0001,(sigmx/ca)**2)
237 c1 =
max(d11,d22,d33)
238 ssp = sqrt(c1/
max(pm(1),em20))
264 pm(105) =
min(d11*d22-d12**2,d22*d33-d23**2,d11*d33-d13**2)/c1**2
268 IF ( sigyt1==zero.OR.sigyt2==zero
269 . .OR.sigyc1==zero.OR.sigyc2==zero
270 . .OR.sysp12==zero.OR.sysp23==zero
271 . .OR.sysn12==zero.OR.sysn23==zero )
THEN
278 f1 = one/sigyt1-one/sigyc1
280 f4 = one/sysp12-one/sysn12
281 f5 = one/sysp23-one/sysn23
282 f11 = one/(sigyt1*sigyc1)
283 f22 = one/(sigyt2*sigyc2)
284 f44 = one/(sysp12*sysn12)
285 f55 = one/(sysp23*sysn23)
286 f12 = -one/(two*sqrt(sigyt1*sigyc1*sigyt2*sigyc2))
287 f23 = -one/(two*sqrt(sigyt2*sigyc2*sigyt2*sigyc2))
289 ft1=f11*f22- four*f12**2
290 ft2=f22**2- four*f23**2
292 WRITE(iout,1650) f1,f2,f4,f5,f11,f22,f44,f55,f12,f23,ft1,ft2
331 IF(.NOT.is_encrypted)
THEN
332 WRITE(iout,
'(A)')
' COMPOSITE CONSTITUTIVE LAW'
333 WRITE(iout,
'( 1P3G20.13 )') pm(40),pm(41),pm(42)
334 WRITE(iout,
'(20X,1P2G20.13 )') pm(43),pm(44)
335 WRITE(iout,
'(40X, 1PG20.13/)') pm(45)
367 & 5x,
'MATERIAL NUMBER. . . . . . . . . . . . . . .=',i10/,
368 & 5x,
'MATERIAL LAW . . . . . . . . . . . . . . . .=',i10/)
370 & 5x,
'INITIAL DENSITY . . . . . . . . . . . . .=',1pg20.13/)
372 & 5x,
' ORTHOTROPIC MATERIAL WITH FIBERS ',/,
373 & 5x,
' --------------------------------- ',//)
375 & 5x,
'YOUNG MODULUS E11 . . . . . . . . . .=',1pg20.13/,
376 & 5x,
'YOUNG MODULUS E22 . . . . . . . . . .=',1pg20.13/,
377 & 5x,
'YOUNG MODULUS E33 . . . . . . . . . .=',1pg20.13//)
379 & 5x,
'POISSON RATIO N12 . . . . . . . . . .=',1pg20.13/,
380 & 5x,
'POISSON RATIO N23 . . . . . . . . . .=',1pg20.13/,
381 & 5x,
'POISSON RATIO N31 . . . . . . . . . .=',1pg20.13//)
383 & 5x,
'SHEAR MODULUS G12 . . . . . . . . . .=',1pg20.13/,
384 & 5x,
'SHEAR MODULUS G23 . . . . . . . . . .=',1pg20.13/,
385 & 5x,
'SHEAR MODULUS G31 . . . . . . . . . .=',1pg20.13//)
387 & 5x,
'MATRIX TENSILE FAILURE STRESS DIR-1 . .=',1pg20.13/,
388 & 5x,
'MATRIX TENSILE FAILURE STRESS DIR-2 . .=',1pg20.13/,
389 & 5x,
'MATRIX TENSILE FAILURE STRESS DIR-3 . .=',1pg20.13/,
390 & 5x,
'DAMAGE PARAMETER . . . . . . . . . . . =',1pg20.13//)
392 & 5x,
'COMPOSITE YIELD STRESS (A) . . . . . .=',1pg20.13/,
393 & 5x,
'COMPOSITE HARDENING PARAMETER (B). . .=',1pg20.13/,
394 & 5x,
'COMPOSITE HARDENING PARAMETER (N). . .=',1pg20.13/,
395 & 5x,
'COMPOSITE MAXIMUM STRESS. . . . . . . .=',1pg20.13//)
397 & 5x,
'COMPOSITE HARDENING PARAMETER (B). . .=',1pg20.13/,
398 & 5x,
'COMPOSITE HARDENING PARAMETER (N). . .=',1pg20.13/,
399 & 5x,
'COMPOSITE MAXIMUM YIELD FUNCTION FMAX .=',1pg20.13/,
400 & 5x,
'REFERENCE PLASTIC WORK WPLAREF .=',1pg20.13//)
402 & 5x,
'COMPOSITE YIELD IN TRACTION (1) . . . . . . .=',1pg20.13/,
403 & 5x,
'COMPOSITE YIELD IN TRACTION (2-3) . . . . . .=',1pg20.13/,
404 & 5x,
'COMPOSITE YIELD IN COMPRESSION (1) . . . . .=',1pg20.13/,
405 & 5x,
'COMPOSITE YIELD IN COMPRESSION (2-3) . . . . =',1pg20.13//)
407 & 5x,
'COMPOSITE YIELD IN SHEAR (+12) . . . .=',1pg20.13/,
408 & 5x,
'COMPOSITE YIELD IN SHEAR (-12) . . . .=',1pg20.13/,
409 & 5x,
'COMPOSITE YIELD IN SHEAR (+23) . . . .=',1pg20.13/,
410 & 5x,
'COMPOSITE YIELD IN SHEAR (-23) . . . .=',1pg20.13//)
412 & 5x,
'FIBER VOLUME FRACTION . . . . . . . . .=',1pg20.13/,
413 & 5x,
'FIBER MODULUS . . . . . . . . . . . . .=',1pg20.13/,
414 & 5x,
'FIBER TENSILE FAILURE STRAIN. . . . . .=',1pg20.13/,
415 & 5x,
'FIBER COMPRESSIVE FAILURE STRAIN. . . .=',1pg20.13//)
417 & 5x,
'FIBER VOLUME FRACTION . . . . . . . . .=',1pg20.13/,
418 & 5x,
'FIBER MODULUS . . . . . . . . . . . . .=',1pg20.13//)
420 & 5x,
'STRAIN RATE COEFFICIENT CC. . . . . . .=',1pg20.13/,
421 & 5x,
'REFERENCE STRAIN RATE . . . . . . . . .=',1pg20.13/,
422 & 5x,
'FLAG FOR STRAIN RATE ON F-MAX Wp-MAX. .=',i10//)
424 & 5x,
' YIELD FUNCTION CONSTANTS ,'/,
425 & 5x,
' ------------------------ ,'//,
426 & 5x,
'F1 , F2 . . . . . . . . . . . . . . . .=',2e12.4/,
427 & 5x,
'F4 , F5 . . . . . . . . . . . . . . . .=',2e12.4/,
428 & 5x,
'F11, F22. . . . . . . . . . . . . . . .=',2e12.4/,
429 & 5x,
'F44, F55. . . . . . . . . . . . . . . .=',2e12.4/,
430 & 5x,
'F12, F23. . . . . . . . . . . . . . . .=',2e12.4/,
431 & 5x,
'FT1, FT2. . . . . . . . . . . . . . . .=',2e12.4//)
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)