42
43
44
49 USE matparam_def_mod
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65#include "implicit_f.inc"
66
67
68
69#include "units_c.inc"
70#include "param_c.inc"
71
72
73
74 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
75 INTEGER, INTENT(IN) :: MAT_ID,MAXFUNC
76 CHARACTER(LEN=NCHARTITLE) ,INTENT(IN) :: TITR
77 INTEGER, INTENT(INOUT) :: NUVAR,NFUNC
78 INTEGER, DIMENSION(MAXFUNC) ,INTENT(INOUT) :: IFUNC
79 TYPE(SUBMODEL_DATA), DIMENSION(*),INTENT(IN) :: LSUBMODEL
80 TYPE(MLAW_TAG_), INTENT(INOUT) :: MTAG
81 TYPE(MATPARAM_STRUCT_) ,INTENT(INOUT) :: MATPARAM
82
83
84
85 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
86 INTEGER :: I,ILAW,ISENS
87 my_real :: rho0,kflex,kflex1,kflex2,embc,embt,zerostress,
88 . lc0,lt0,dc0,dt0,hc0,ht0,stress_unit
90
91 is_encrypted = .false.
92 is_available = .false.
93 ilaw = 158
94 nfunc = 5
95
96
98
99
100 CALL hm_get_floatv(
'MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
101
102 CALL hm_get_floatv(
'S1' ,embc ,is_available, lsubmodel, unitab)
103 CALL hm_get_floatv(
'S2' ,embt ,is_available, lsubmodel, unitab)
104 CALL hm_get_floatv(
'MAT_FLEX' ,kflex ,is_available, lsubmodel, unitab)
105 CALL hm_get_floatv(
'MAT_FLX1' ,kflex1 ,is_available, lsubmodel, unitab)
106 CALL hm_get_floatv(
'MAT_FLX2' ,kflex2 ,is_available, lsubmodel, unitab)
107
108 CALL hm_get_floatv(
'Zerostress' ,zerostress,is_available, lsubmodel, unitab)
109 CALL hm_get_intv (
'ISENSOR' ,isens ,is_available, lsubmodel)
110
111 CALL hm_get_intv (
'FUN_A1' ,ifunc(1) ,is_available, lsubmodel)
112 CALL hm_get_floatv(
'MAT_C1' ,yfac(1) ,is_available, lsubmodel, unitab)
113
114 CALL hm_get_intv (
'FUN_A2' ,ifunc(2) ,is_available, lsubmodel)
115 CALL hm_get_floatv(
'MAT_C2' ,yfac(2) ,is_available, lsubmodel, unitab)
116
117 CALL hm_get_intv (
'FUN_A3' ,ifunc(3) ,is_available, lsubmodel)
118 CALL hm_get_floatv(
'MAT_C3' ,yfac(3) ,is_available, lsubmodel, unitab)
119
120 CALL hm_get_intv (
'FUN_A4' ,ifunc(4) ,is_available, lsubmodel)
121 CALL hm_get_intv (
'FUN_A5' ,ifunc(5) ,is_available, lsubmodel)
122
123 IF (ifunc(1) == 0) THEN
124 CALL ancmsg(msgid=1578 , msgtype=msgerror, anmode=aninfo_blind_2,
125 . i1=mat_id,
126 . c1=titr)
127 ENDIF
128 IF (ifunc(2) == 0) THEN
129 CALL ancmsg(msgid=1579 , msgtype=msgerror, anmode=aninfo_blind_2,
130 . i1=mat_id,
131 . c1=titr)
132 ENDIF
133 IF (ifunc(3) == 0) THEN
134 CALL ancmsg(msgid=1580 , msgtype=msgerror, anmode=aninfo_blind_2,
135 . i1=mat_id
136 . c1=titr)
137 ENDIF
138
139
140
142
143 IF (yfac(1) == zero) yfac(1) = one * stress_unit
144 IF (yfac(2) == zero) yfac(2) = one * stress_unit
145 IF (yfac(3) == zero) yfac(3) = one * stress_unit
146 IF (kflex1 == zero)
147 IF (kflex2 == zero) kflex2 = one * stress_unit
148 IF (kflex == zero) kflex = one * stress_unit
149 IF (embc == zero) embc = em01
150 IF (embt == zero) embt
151
152 lc0 = one
153 lt0 = one
154 dc0 = lc0 * (one + embc)
155 dt0 = lt0 * (one + embt)
156 hc0 = sqrt(dc0*dc0 - lc0*lc0)
157 ht0 = sqrt(dt0*dt0 - lt0*lt0)
158
159 nuvar = 40
160 matparam%NUPARAM = 14
161 matparam%NIPARAM = 1
162 matparam%NFUNC = nfunc
163
164 ALLOCATE (matparam%UPARAM(matparam%NUPARAM))
165 ALLOCATE (matparam%IPARAM(matparam%NIPARAM))
166
167 matparam%IPARAM(1) = isens
168
169 matparam%UPARAM( 1) = dc0
170 matparam%UPARAM( 2) = dt0
171 matparam%UPARAM( 3) = hc0
172 matparam%UPARAM( 4) = ht0
173 matparam%UPARAM( 5) = kflex
174 matparam%UPARAM( 6) = kflex1
175 matparam%UPARAM( 7) = kflex2
176 matparam%UPARAM( 8) = zerostress
177 matparam%UPARAM( 9) = 0
178 matparam%UPARAM(10) = zero
179
180
181 matparam%UPARAM(13) = yfac(2)
182 matparam%UPARAM(14) = yfac(3)
183
184 matparam%RHO = rho0
185 matparam%RHO0 = rho0
186
188
189
191
192 mtag%L_ANG = 1
193
194
195
196 WRITE
197 WRITE(iout,1100)
198 IF (is_encrypted) THEN
199 WRITE(iout'(5X,A,//)')'CONFIDENTIAL DATA'
200 ELSE
201 WRITE(iout,1200) rho0,embc,embt,kflex,kflex1,kflex2,
202 . ifunc(1),ifunc(2),ifunc(3),ifunc(4),ifunc(5),
203 . yfac(1),yfac(2),yfac(3),isens,zerostress
204 ENDIF
205
206 1000 FORMAT(/
207 & 5x,a,/,
208 & 5x,'MATERIAL NUMBER. . . . . . . . . . . . . . . . . =',i10/,
209 & 5x,'MATERIAL LAW . . . . . . . . . . . . . . . . . . =',i10/)
210 1100 FORMAT
211 &(5x,'MATERIAL MODEL : ANISOTROPIC FABRIC (LAW158) ',/,
212 & 5x,'-------------------------------------------- ',/)
213 1200 FORMAT(
214 & 5x,'INITIAL DENSITY . . . . . . . . . . . . . . . .=',1pg20.13/
215 & 5x,'NOMINAL WARP STRETCH. . . . . . . . . . . . . . .=',1pg20.13/
216 & 5x,'NOMINAL WEFT STRETCH. . . . . . . . . . . . . . .=',1pg20.13/
217 & 5x,'COUPLING STIFFNESS MODULUS. . . . . . . . . . . .=',1pg20.13/
218 & 5x,'FLEX MODULUS (WARP) . . . . . . . . . . . . . .=',1pg20.13/
219 & 5x,'FLEX MODULUS (WEFT) . . . . . . . . . . . . . .=',1pg20.13/
220 & 5x,'LOADING STRESS FUNCTION ID IN WARP DIRECTION. . .=',i10/
221 & 5x,'LOADING STRESS FUNCTION ID IN WEFT DIRECTION. . .=',i10/
222 & 5x,'LOADING STRESS FUNCTION ID IN SHEAR . . . . . . .=',i10/
223 & 5x,'flex stress
FUNCTION id in warp direction . . . .=
',I10/
224 & 5X,'flex stress function
id in weft direction . . . .=
',I10/
225 & 5X,'loading function scale factor (WARP). . . . . . .=',1PG20.13/
226 & 5X,'loading function scale factor (WEFT). . . . . . .=',1PG20.13/
227 & 5X,'loading function scale factor (SHEAR) . . . . . .=',1PG20.13/
228 & 5X,'sensor
id . . . . . . . . . . . . . . . . . . . .=
',I10/
229 & 5X,'ref-state stress relaxation factor. . . . . . . .=',1PG20.13/)
230 1250 FORMAT(
231 & 5X,'young modulus e1 (WARP DIRECTION) . . . . . . . .=',1PG20.13/
232 & 5X,'young modulus e2 (WEFT DIRECTION) . . . . . . . .=',1PG20.13/)
233
234 RETURN
subroutine hm_get_floatv(name, rval, is_available, lsubmodel, unitab)
subroutine hm_get_floatv_dim(name, dim_fac, is_available, lsubmodel, unitab)
subroutine hm_get_intv(name, ival, is_available, lsubmodel)
subroutine hm_option_is_encrypted(is_encrypted)
subroutine init_mat_keyword(matparam, keyword)
integer, parameter nchartitle
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)