40 . MAXFUNC ,IFUNC ,MTAG ,PARMAT ,
41 . UNITAB ,LSUBMODEL,MAT_ID ,TITR )
65#include "implicit_f.inc"
74 INTEGER,
INTENT(IN) :: MAT_ID,MAXFUNC
75 CHARACTER(LEN=NCHARTITLE) ,
INTENT(IN) :: TITR
76 INTEGER,
INTENT(INOUT) :: NUVAR,NFUNC
77 INTEGER,
DIMENSION(MAXFUNC) ,
INTENT(INOUT) :: IFUNC
78 my_real,
DIMENSION(100) ,
INTENT(INOUT) :: parmat
80 TYPE (UNIT_TYPE_) ,
INTENT(IN) :: UNITAB
82 TYPE(matparam_struct_) ,
INTENT(INOUT) :: MATPARAM
86 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
87 INTEGER :: I,ILAW,NC,NT,ISENS,ILOAD,ULOAD
88 my_real :: rho0,rhor,young,ec,et,bc,bt,g,g0,gt,gb,gsh,gfrot,
89 . kc,kt,kkc,kkt,kxc,kxt,kfc,kft,flex,flex1,flex2,embc,embt,
90 . lc0,lt0,dc0,dt0,hc0,ht0,cosin,tan_lock,phi_lock,
91 . visce,viscg,areamin1,areamin2,zerostress,stress_unit
94 is_encrypted = .false.
95 is_available = .false.
103 CALL hm_get_floatv(
'MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
106 CALL hm_get_floatv(
'MAT_E1' ,ec ,is_available, lsubmodel, unitab)
107 CALL hm_get_floatv(
'MAT_B1' ,bc ,is_available, lsubmodel, unitab)
108 CALL hm_get_floatv(
'MAT_E2' ,et ,is_available, lsubmodel, unitab)
109 CALL hm_get_floatv(
'MAT_B2' ,bt ,is_available, lsubmodel, unitab
110 CALL hm_get_floatv(
'MAT_F' ,flex ,is_available, lsubmodel, unitab)
112 CALL hm_get_floatv(
'MAT_G0' ,g0 ,is_available, lsubmodel, unitab)
113 CALL hm_get_floatv(
'MAT_GI' ,gt ,is_available, lsubmodel, unitab)
114 CALL hm_get_floatv(
'MAT_ALPHA' ,phi_lock ,is_available, lsubmodel
115 CALL hm_get_floatv(
'MAT_G5' ,gsh ,is_available, lsubmodel, unitab)
116 CALL hm_get_intv (
'ISENSOR' ,isens ,is_available,lsubmodel)
120 CALL hm_get_floatv(
'Friction_phi' ,gfrot ,is_available, lsubmodel, unitab)
121 CALL hm_get_floatv(
'M58_Zerostress',zerostress,is_available, lsubmodel, unitab)
123 CALL hm_get_intv (
'N1_warp' ,nc ,is_available,lsubmodel)
124 CALL hm_get_intv (
'N2_weft' ,nt ,is_available,lsubmodel)
125 CALL hm_get_floatv(
'S1' ,embc ,is_available, lsubmodel, unitab)
126 CALL hm_get_floatv(
'S2' ,embt ,is_available, lsubmodel, unitab)
127 CALL hm_get_floatv(
'MAT_C4' ,flex1 ,is_available, lsubmodel, unitab)
128 CALL hm_get_floatv(
'MAT_C5' ,flex2 ,is_available, lsubmodel, unitab)
132 CALL hm_get_intv (
'FUN_A1' ,ifunc(1) ,is_available,lsubmodel)
133 CALL hm_get_floatv(
'MAT_C1' ,yfac(1) ,is_available, lsubmodel, unitab)
135 CALL hm_get_intv (
'FUN_A2' ,ifunc(2) ,is_available,lsubmodel)
136 CALL hm_get_floatv(
'MAT_C2' ,yfac(2) ,is_available, lsubmodel, unitab)
138 CALL hm_get_intv (
'FUN_A3' ,ifunc(3) ,is_available,lsubmodel)
139 CALL hm_get_floatv(
'MAT_C3' ,yfac(3) ,is_available, lsubmodel, unitab)
141 CALL hm_get_intv (
'FUN_A4' ,ifunc(4) ,is_available,lsubmodel)
142 CALL hm_get_intv (
'FUN_A5' ,ifunc(5) ,is_available,lsubmodel)
143 CALL hm_get_floatv(
'scale4' ,yfac(4) ,is_available, lsubmodel, unitab)
144 CALL hm_get_floatv(
'scale5' ,yfac(5) ,is_available, lsubmodel, unitab)
145 CALL hm_get_intv (
'FUN_A6' ,ifunc(6) ,is_available,lsubmodel)
146 CALL hm_get_floatv(
'scale6' ,yfac(6) ,is_available, lsubmodel, unitab)
154 IF (ifunc(1) /= 0 .or. ifunc(2) /= 0 .or. ifunc(3) /= 0)
THEN
157 IF (ifunc(4) /= 0 .or. ifunc(5) /= 0 .or. ifunc(6) /= 0)
THEN
167 IF (ifunc(5) == 0)
THEN
171 IF (ifunc(6) == 0)
THEN
176 IF (ifunc(1) == 0)
THEN
179 . anmode=aninfo_blind_2,
183 IF (ifunc(2) == 0)
THEN
186 . anmode=aninfo_blind_2,
190 IF (ifunc(3) == 0)
THEN
193 . anmode=aninfo_blind_2,
205 IF (yfac(i) == zero) yfac(i) = one * stress_unit
210 IF (embc == zero) embc = em01
211 IF (embt == zero) embt = em01
212 IF (flex == zero) flex = em03
213 IF (flex1 == zero .AND. flex2 == zero)
THEN
216 ELSEIF (flex1 == zero .AND. flex2 /= zero)
THEN
218 ELSEIF (flex2 == zero .AND. flex1 /= zero)
THEN
227 IF (gt == zero) gt = fourth*(ec + et)
233 hc0 = sqrt(dc0*dc0 - lc0*lc0)
234 ht0 = sqrt(dt0*dt0 - lt0*lt0)
241 kfc = flex1*kc*hc0/dc0
242 kft = flex2*kt*ht0/dt0
245 IF (phi_lock == zero)
THEN
246 cosin = half*(hc0/lc0 + ht0/lt0)
247 tan_lock = sqrt(one - cosin*cosin) / cosin
248 phi_lock = atan(tan_lock)
250 phi_lock = phi_lock*pi/hundred80
251 tan_lock = tan(phi_lock)
254 g = gt / (one + tan_lock*tan_lock)
255 IF (g0 == zero) g0 = g
256 gb = tan_lock*(g0 - g)
258 IF (gfrot == zero .and. iload == 0) gfrot = g0
259 IF (gsh == zero .and. iload == 0) gsh = g0
263 matparam%NUPARAM = 46
265 matparam%NFUNC = nfunc
267 ALLOCATE (matparam%UPARAM(matparam%NUPARAM))
268 ALLOCATE (matparam%IPARAM(matparam%NIPARAM))
269 matparam%UPARAM(:) = zero
270 matparam%IPARAM(:) = 0
272 matparam%IPARAM(1) = uload
273 matparam%IPARAM(2) = isens
274 matparam%IPARAM(3) = nc
275 matparam%IPARAM(4) = nt
277 matparam%UPARAM( 1) = lc0
278 matparam%UPARAM( 2) = lt0
279 matparam%UPARAM( 3) = dc0
280 matparam%UPARAM( 4) = dt0
281 matparam%UPARAM( 5) = hc0
282 matparam%UPARAM( 6) = ht0
283 matparam%UPARAM( 7) = 0
284 matparam%UPARAM( 8) = 0
285 matparam%UPARAM( 9) = kc
286 matparam%UPARAM(10) = kt
287 matparam%UPARAM(11) = kfc
288 matparam%UPARAM(12) = kft
289 matparam%UPARAM(13) = g0
290 matparam%UPARAM(14) = g
291 matparam%UPARAM(15) = gb
292 matparam%UPARAM(16) = tan_lock
293 matparam%UPARAM(17) = visce
294 matparam%UPARAM(18) = viscg
295 matparam%UPARAM(19) = kkc
296 matparam%UPARAM(20) = kkt
297 matparam%UPARAM(21) = gfrot
298 matparam%UPARAM(22) = areamin1
299 areamin2 = one + half*(areamin1-one)
300 IF (areamin2 > areamin1)
THEN
301 matparam%UPARAM(23)= one / (areamin2-areamin1)
303 matparam%UPARAM(23)= zero
305 matparam%UPARAM(24) = zerostress
306 matparam%UPARAM(25) = 0
307 matparam%UPARAM(26) = flex1
308 matparam%UPARAM(27) = flex2
309 matparam%UPARAM(28) = yfac(1)
310 matparam%UPARAM(29) = yfac(2)
311 matparam%UPARAM(30) = yfac(3)
312 matparam%UPARAM(31) = 0
313 matparam%UPARAM(32) = gsh
314 matparam%UPARAM(33) = yfac(4)
315 matparam%UPARAM(34) = yfac(5)
316 matparam%UPARAM(35) = 0
317 matparam%UPARAM(42) = yfac(6)
321 parmat(1) = young/three
329 matparam%YOUNG = young
340 WRITE(iout,1000) trim(titr),mat_id,58
342 IF (is_encrypted)
THEN
343 WRITE(iout,
'(5X,A,//)')
'CONFIDENTIAL DATA'
345 WRITE(iout,1200) rho0
346 WRITE(iout,1250) ec,et
348 WRITE(iout,1300) bc,bt,g0,gt,phi_lock*hundred80/pi
350 WRITE(iout,1400) ifunc(1),ifunc(2),ifunc(3),yfac(1),yfac(2),yfac(3)
352 .
WRITE(iout,1500) ifunc(4),ifunc(5),ifunc(6),yfac(4),yfac(5),yfac(6)
354 WRITE(iout,1600) visce,viscg,gfrot,gsh,zerostress,
355 . embc,embt,nc,nt,isens,flex1,flex2
360 & 5x,
'MATERIAL NUMBER. . . . . . . . . . . . . . . . . =',i10/,
361 & 5x,
'MATERIAL LAW . . . . . . . . . . . . . . . . . . =',i10/)
363 &(5x,
'MATERIAL MODEL : ANISOTROPIC FABRIC (LAW58) ',/,
364 & 5x,
'--------------------------------------------',/)
366 & 5x,
'INITIAL DENSITY . . . . . . . . . . . . . . . .='
368 & 5x,
'YOUNG MODULUS E1 (WARP DIRECTION) . . . . . . . .=',1pg20.13/
369 & 5x,
'YOUNG MODULUS E2 (WEFT DIRECTION) . . . . . . . .=',1pg20.13/)
371 & 5x,
'SOFTENING COEFFICIENT B1. . . . . . . . . . . . .=',1pg20.13/
372 & 5x,
'SOFTENING COEFFICIENT B2. . . . . . . . . . . . .=',1pg20.13/
373 & 5x,
'INITIAL SHEAR MODULUS . . . . . . . . . . . . . .=',1pg20.13/
374 & 5x,
'LOCK SHEAR MODULUS. . . . . . . . . . . . . . . .=',1pg20.13/
375 & 5x,
'SHEAR LOCK ANGLE. . . . . . . . . . . . . . . . .=',1pg20.13/)
377 & 5x,
'LOADING STRESS FUNCTION ID IN WARP DIRECTION. . .=',i10/
378 & 5x,
'LOADING STRESS FUNCTION ID IN WEFT DIRECTION. . .=',i10/
379 & 5x,'loading stress
FUNCTION id in shear . . . . . . .=
',I10/
380 & 5X,'loading function scale factor (WARP). . . . . . .=
',1PG20.13/
381 & 5X,'loading function scale factor (WEFT). . . . . . .=
',1PG20.13/
382 & 5X,'loading function scale factor (SHEAR) . . . . . .=
',1PG20.13/)
384 & 5X,'unloading stress function
id in warp direction. .=
',I10/
385 & 5X,'unloading stress function
id in weft direction. .=
',I10/
386 & 5X,'unloading stress function
id in shear direction .=
',I10/
387 & 5X,'unloading function scale factor (WARP). . . . . .=
',1PG20.13/
388 & 5X,'unloading function scale factor (WEFT). . . . . .=
',1PG20.13/
389 & 5X,'unloading function scale factor (SHEAR) . . . . .=
',1PG20.13/)
391 & 5X,'fiber viscosity coef. . . . . . . . . . . . . . .=
',1PG20.13/
392 & 5X,'shear friction coef . . . . . . . . . . . . . . .=
',1PG20.13/
393 & 5X,'shear friction modulus. . . . . . . . . . . . . .=
',1PG20.13/
394 & 5X,'transverse shear modulus. . . . . . . . . . . . .=
',1PG20.13/
395 & 5X,'ref-state stress relaxation factor. . . . . . . .=
',1PG20.13/
396 & 5X,'nominal warp stretch. . . . . . . . . . . . . . .=
',1PG20.13/
397 & 5X,'nominal weft stretch. . . . . . . . . . . . . . .=
',1PG20.13/
398 & 5X,'fiber density in warp direction . . . . . . . . .=
',I10/
399 & 5X,'fiber density in weft direction . . . . . . . . .=
',I10/
400 & 5X,'sensor
id . . . . . . . . . . . . . . . . . . . .=
',I10/
401 & 5X,'flex modulus reduction factor (WARP). . . . . . .=
',1PG20.13/
402 & 5X,'flex modulus reduction factor (WEFT). . . . . . .=
',1PG20.13)