41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
63 USE matparam_def_mod
66
67
68
69#include "implicit_f.inc"
70
71
72
73#include "param_c.inc"
74#include "units_c.inc"
75
76
77
78 INTEGER ,INTENT(INOUT) :: NUVAR,ISRATE
79 INTEGER ,INTENT(IN) :: MAT_ID
80 my_real ,
INTENT(INOUT) :: pm(npropm)
81 my_real ,
INTENT(INOUT) :: parmat(100)
82 CHARACTER(LEN=NCHARTITLE),INTENT(IN) :: TITR
83 TYPE (UNIT_TYPE_) ,INTENT(IN) :: UNITAB
84 TYPE(SUBMODEL_DATA) ,INTENT(IN) :: LSUBMODEL((NSUBMOD))
85 TYPE(MLAW_TAG_) ,INTENT(INOUT) :: MTAG
86 TYPE(MATPARAM_STRUCT_) ,INTENT(INOUT) :: MATPARAM
87
88
89
90 my_real :: n12,n21,e11,e22,g12,g23,g31,rcomp,detc,amu,c1,ssp,
91 . a11,a22,a12,zerostress,porosity,areamin1,areamin2,rhor,rho0
92 INTEGER ISENS
93 LOGICAL IS_AVAILABLE,IS_ENCRYPTED
94
95
96
97 is_encrypted = .false.
98 is_available = .false.
99
101
102 CALL hm_get_floatv(
'MAT_RHO' ,rho0 ,is_available,lsubmodel,unitab)
103 CALL hm_get_floatv(
'Refer_Rho',rhor ,is_available,lsubmodel,unitab)
104
106 CALL hm_get_floatv(
'MAT_EB' ,e22 ,is_available,lsubmodel,unitab)
107 CALL hm_get_floatv(
'MAT_PRAB' ,n12 ,is_available,lsubmodel,unitab
108
109 CALL hm_get_floatv(
'MAT_GAB' ,g12 ,is_available,lsubmodel,unitab)
110 CALL hm_get_floatv(
'MAT_GBC' ,g23 ,is_available,lsubmodel,unitab)
111 CALL hm_get_floatv(
'MAT_GCA' ,g31 ,is_available,lsubmodel,unitab)
112
113 CALL hm_get_floatv(
'MAT_REDFACT' ,rcomp ,is_available,lsubmodel,unitab)
114 CALL hm_get_floatv(
'M58_Zerostress',zerostress ,is_available,lsubmodel,unitab)
115 CALL hm_get_floatv(
'MAT_POROS' ,porosity ,is_available,lsubmodel,unitab)
116 CALL hm_get_intv (
'ISENSOR' ,isens ,is_available,lsubmodel)
117
118
119 israte = -1
120 n21 = n12*e22/e11
121 detc = one - n12*n21
122 a11 = e11 / detc
123 a22 = e22 / detc
124 a12 = a11 * n21
125 c1 =
max(e11,e22) / detc
126 ssp = sqrt(c1/rho0)
127
128 IF(e11 == zero.OR. e22 == zero .OR. g12 == zero .OR. g23 == zero .OR. g31 == zero) THEN
129 CALL ancmsg(msgid=306, msgtype=msgerror, anmode=aninfo,
130 . i1=19,
131 . i2=mat_id,
132 . c1=titr,
133 . c2='E11, E22, G12, G23, or G31')
134 ENDIF
135
136 IF (detc <= zero) THEN
137 CALL ancmsg(msgid=307, msgtype=msgerror, anmode=aninfo,
138 . i1=mat_id,
139 . c1=titr)
140 ENDIF
141
142 IF (rcomp == zero) rcomp=one
143 IF (rcomp < em03) THEN
144 CALL ancmsg(msgid=1572, msgtype=msgwarning, anmode=aninfo,
145 . i1=mat_id,
146 . c1=titr)
147 rcomp = em03
148 ENDIF
149
150 IF (porosity < zero .OR. porosity > one) THEN
151 CALL ancmsg(msgid=775, msgtype=msgerror, anmode=aninfo,
152 . i1=mat_id,
153 . c1=titr)
154 ENDIF
155
156 IF (rhor == zero ) rhor=rho0
157 pm(1) = rhor
158 pm(89)= rho0
159 amu = pm(17)
160 IF (amu == zero) amu = fourth
161
162 pm(17) = amu
163 pm(20) =
max(e11,e22)/detc
164 pm(21) = sqrt(n12*n21)
165 pm(22) =
max(g12,g23,g31)
166 pm(24) = pm(20)
167 pm(25) = pm(21)*pm(24)
168 pm(26) = five_over_6
169 pm(27) = ssp
170 pm(32) = c1
171 pm(33) = e11
172 pm(34) = e22
173 pm(35) = n12
174 pm(36) = n21
175 pm(37) = g12
176 pm(38) = g23
177 pm(39) = g31
178 pm(44) = rcomp
179
180 areamin1 = zero
181 pm(53) = areamin1
182 areamin2 = one + half*(areamin1-one)
183 IF (areamin2 > areamin1) THEN
184 pm(54) = one / (areamin2-areamin1)
185 ELSE
186 pm(54) = zero
187 ENDIF
188 pm(56) = porosity
189
190 nuvar = 0
191 matparam%NUPARAM = 15
192 matparam%NIPARAM = 1
193 matparam%NFUNC = 0
194
195 ALLOCATE (matparam%UPARAM(matparam%NUPARAM))
196 ALLOCATE (matparam%IPARAM(matparam%NIPARAM))
197
198 matparam%IPARAM(1) = isens
199
200 matparam%UPARAM(1) = e11
201 matparam%UPARAM(2) = e22
202 matparam%UPARAM(3) = n12
203 matparam%UPARAM(4) = n21
204 matparam%UPARAM(5) = g12
205 matparam%UPARAM(6) = g23
206 matparam%UPARAM(7) = g31
207 matparam%UPARAM(8) = rcomp
208 matparam%UPARAM(9) = ssp
209 matparam%UPARAM(10) = a11
210 matparam%UPARAM(11) = a22
211 matparam%UPARAM(12) = a12
212 matparam%UPARAM(13) = zero
213 matparam%UPARAM(14) = zerostress
214 matparam%UPARAM(15) = porosity
215
216 matparam%RHO = rhor
217 matparam%RHO0 = rho0
218 matparam%YOUNG =
max(e11,e22)
219
220 parmat(1) = c1
221 parmat(2) =
max(e11,e22)/detc
222 parmat(3) = sqrt(n12*n21)
223 parmat(4) = israte
224 parmat(5) = zero
225
226
227
228 mtag%G_SIGI = 3
229
230
234
235
237
238 WRITE(iout,1000) trim(titr),mat_id,19
239 WRITE(iout,1100)
240 IF (is_encrypted) THEN
241 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
242 ELSE
243 WRITE(iout,1200) rho0
244 WRITE(iout,1300) e11,e22,n12,g12,g23,g31,
245 . rcomp,zerostress,isens,porosity
246 ENDIF
247
248 1000 FORMAT(
249 & 5x,a,/,
250 & 5x,'MATERIAL NUMBER. . . . . . . . . . . . . . . . . =',i10/,
251 & 5x,'MATERIAL LAW . . . . . . . . . . . . . . . . . . =',i10/)
252 1100 FORMAT
253 &(5x,'ORTHOTROPIC MATERIAL FOR SHELLS (LAW19) ',/,
254 & 5x,'--------------------------------------------',/)
255 1200 FORMAT(
256 & 5x,'INITIAL DENSITY . . . . . . . . . . . . . . . .=',1pg20.13/)
257 1300 FORMAT(
258 & 5x,'YOUNG MODULUS E11 (TENSION) . . . . . . . . . . .=',1pg20.13/
259 & 5x,'YOUNG MODULUS E22 (TENSION) . . . . . . . . . . .=',1pg20.13/
260 & 5x,'POISSON RATIO NU12. . . . . . . . . . . . . . . .=',1pg20.13/
261 & 5x,'SHEAR MODULUS G12 . . . . . . . . . . . . . . . .=',1pg20.13/
262 & 5x,'SHEAR MODULUS G23 . . . . . . . . . . . . . . . .=',1pg20.13/
263 & 5x,'SHEAR MODULUS G31 . . . . . . . . . . . . . . . .=',1pg20.13/
264 & 5x,'COMPRESSION REDUCTION FACTOR. . . . . . . . . . . ',/
265 & 5x,' RCOMP=E11C/E11= E22C/E22 . . . . . . . . . .=',1pg20.13/
266 & 5x,'REF-STATE STRESS RELAXATION FACTOR. . . . . . . .=',1pg20.13/
267 & 5x,'REF-STATE ACTIVATION SENSOR ID. . . . . . . . . .=',1pg20.13/
268 & 5x,'POROSITY. . . . . . . . . . . . . . . . . . . . .=',1pg20.13/)
269
270 RETURN
subroutine hm_get_floatv(name, rval, 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)