42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
66 USE matparam_def_mod
68
69
70
71#include "implicit_f.inc"
72
73
74
75#include "units_c.inc"
76#include "param_c.inc"
77
78
79
80 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
81 INTEGER,INTENT(INOUT) :: (NPROPMI)
82 my_real,
DIMENSION(NPROPM) ,
INTENT(INOUT) :: pm
83 my_real,
DIMENSION(100) ,
INTENT(INOUT) :: parmat
84 my_real,
DIMENSION(MAXUPARAM) ,
INTENT(INOUT) :: uparam
85 INTEGER, DIMENSION(MAXFUNC) ,INTENT(INOUT) :: IFUNC
86 INTEGER, INTENT(INOUT) :: ISRATE,IMATVIS,NFUNC,MAXFUNC,MAXUPARAM,NUPARAM,NUVAR
87 TYPE(MLAW_TAG_),INTENT(INOUT) :: MTAG
88 INTEGER,INTENT(IN) :: MAT_ID
89 CHARACTER(LEN=NCHARTITLE) ,INTENT(IN) :: TITR
90 TYPE(SUBMODEL_DATA),INTENT(IN) :: LSUBMODEL(*)
91 TYPE(MATPARAM_STRUCT_) ,INTENT(INOUT) :: MATPARAM
92
93
94
95 INTEGER ICC,IR0
96
98 . young, anu, ca, ce, cn, epsm, sigm, cm, eps0, g, e0, c0, c1,
99 . e1mn2, en1n2, sdsp, epst1, epsm1, epst2, epsm2, dmax1, dmax2,
100 . amu, r00, r45, r90, r, h, a11, a22, a1122, a12, rho0, rhor
101
102 LOGICAL :: IS_ENCRYPTED,IS_AVAILABLE
103
104
105
106 nfunc=0
107 nuvar=0
108 is_encrypted
109 is_available = .false.
110 israte=0
111 imatvis=1
112
114
115 CALL hm_get_floatv(
'MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
116 CALL hm_get_floatv(
'Refer_Rho' ,rhor ,is_available, lsubmodel, unitab)
117
118 CALL hm_get_floatv(
'MAT_E' ,young ,is_available, lsubmodel, unitab)
119 CALL hm_get_floatv(
'MAT_NU' ,anu ,is_available, lsubmodel, unitab)
120
121 CALL hm_get_floatv(
'MAT_SIGY' ,ca ,is_available, lsubmodel, unitab)
122 CALL hm_get_floatv(
'MAT_BETA' ,ce ,is_available, lsubmodel, unitab)
123 CALL hm_get_floatv(
'MAT_HARD' ,cn ,is_available, lsubmodel, unitab)
124 CALL hm_get_floatv(
'MAT_EPS' ,epsm ,is_available, lsubmodel, unitab)
125 CALL hm_get_floatv(
'MAT_SIG' ,sigm ,is_available, lsubmodel, unitab)
126
127 CALL hm_get_floatv(
'MAT_SRP' ,eps0 ,is_available, lsubmodel, unitab)
128 CALL hm_get_floatv(
'MAT_SRC' ,cm ,is_available, lsubmodel, unitab)
129
130 CALL hm_get_floatv(
'MAT_R00' ,r00 ,is_available, lsubmodel, unitab)
131 CALL hm_get_floatv(
'MAT_R45' ,r45 ,is_available, lsubmodel, unitab)
132 CALL hm_get_floatv(
'MAT_R90' ,r90 ,is_available, lsubmodel, unitab)
133 CALL hm_get_intv (
'MAT_Iyield' ,ir0 ,is_available, lsubmodel)
134
135 IF(rhor==zero)rhor=rho0
136 pm(01)=rhor
137 pm(89)=rho0
138
139 IF(anu==half)anu=zep499
140 IF(r00==zero) r00 = one
141 IF(r45==zero) r45 = one
142 IF(r90==zero) r90 = one
143 IF(ca==zero) ca = infinity
144 IF(cn==zero) cn = one
145 IF(epsm==zero) epsm = infinity
146 IF(sigm==zero) sigm = infinity
147 IF(cm==zero) eps0 = one
148
149 g=young/(two*(one + anu))
150 e0=zero
151 c0=zero
152 c1=young/(three*(one - two*anu))
153 e1mn2=young/(one-anu**2)
154 en1n2=anu*e1mn2
155 sdsp =sqrt(young/
max(pm(1),em20))
156 amu=pm(17)
157 r = fourth * (r00 + two*r45 + r90)
158 h = r / (one + r)
159 a11 = h * (one + one/r00)
160 a22 = h * (one + one/r90)
161 a1122 = h * two
162 a12 = h * two * (r45 + half) * (one/r00 + one/r90)
163 IF (ir0 > 0) THEN
164 a22=a22/a11
165 a1122=a1122/a11
166 a12=a12/a11
167 a11=one
168 END IF
169 icc = 0
170
171 pm(20)=young
172 pm(21)=anu
173 pm(22)=g
174 pm(23)=e0
175 pm(24)=e1mn2
176 pm(25)=en1n2
177 pm(26)=five_over_6
178 pm(27)=sdsp
179 pm(28)=one/young
180 pm(29)=-anu*pm(28)
181 pm(30)=one/g
182 pm(31)=c0
183 pm(32)=c1
184 pm(38)=ca
185 pm(39)=ce
186 pm(40)=cn
187 pm(41)=epsm
188 pm(42)=sigm
189 pm(43)=cm
190 pm(44)=eps0
191 pm(45)=a11
192 pm(46)=a22
193 pm(47)=a1122
194 pm(48)=a12
195 pm(49)=icc
196 pm(52)=onep414*amu*pm(1)*sdsp
197
198
199 ipm(252)= 2
200 pm(105) = (one -two*anu)/(one - anu)
201
202 mtag%G_SEQ = 1
203
204 WRITE(iout,1001) trim(titr),mat_id,32
205 WRITE(iout,1000)
206
207 IF(is_encrypted)THEN
208 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
209 ELSE
210 WRITE(iout,1002)rho0
211 WRITE(iout,1300)young,anu,g
212 WRITE(iout,1400)ca,ce,cn,epsm,sigm
213 WRITE(iout,1600)eps0,cm
214 WRITE(iout,1700)r00,r45,r90
215 IF (ir0 >0) WRITE(iout,1110)
216 ENDIF
217
218
219 IF(cn>1.) THEN
221 . msgtype=msgerror,
222 . anmode=aninfo)
223 ENDIF
224 IF(eps0<=zero) THEN
226 . msgtype=msgerror,
227 . anmode=aninfo,
228 . i1=32,
229 . i2=mat_id,
230 . c1=titr)
231 ENDIF
232
233
234
235 mtag%G_PLA = 1
236 mtag%G_EPSD = 1
237
238 mtag%LY_DIRA = 2
239
240 mtag%L_PLA = 1
241 mtag%L_EPSD = 1
242
243 mtag%G_SEQ = 1
244 mtag%L_SEQ = 1
245
246
249
250
252
253
254 RETURN
255
256 1000 FORMAT(
257 & 5x,' HILL ANISOTROPIC PLASTICITY '/,
258 & 5x,' --------------------------- '//)
259 1001 FORMAT(
260 & 5x,a,/,
261 & 5x,'MATERIAL NUMBER . . . . . . . . . . . .=',i10/,
262 & 5x,'MATERIAL LAW. . . . . . . . . . . . . .=',i10/)
263 1002 FORMAT(
264 & 5x,'INITIAL DENSITY . . . . . . . . . . . .=',1pg20.13/)
265 1300 FORMAT(
266 & 5x,'YOUNG MODULUS . . . . . . . . . . . .=',1pg20.13/,
267 & 5x,'POISSON RATIO . . . . . . . . . . . . .=',1pg20.13/,
268 & 5x,'SHEAR MODULUS . . . . . . . . . . . . .=',1pg20.13//)
269 1400 FORMAT(
270 & 5x,'YIELD COEFFICIENT A . . . . . . . . . .=',1pg20.13/,
271 & 5x,'YIELD COEFFICIENT CE. . . . . . . . . .=',1pg20.13/,
272 & 5x,'YIELD COEFFICIENT CN. . . . . . . . . .=',1pg20.13/,
273 & 5x,'EPS-MAX . . . . . . . . . . . . . . . .=',1pg20.13/,
274 & 5x,'SIG-MAX . . . . . . . . . . . . . . . .=',1pg20.13//)
275 1600 FORMAT(
276 & 5x,'REFERENCE STRAIN RATE . . . . . . . . .=',1pg20.13/,
277 & 5x,'STRAIN RATE COEFFICIENT CM. . . . . . .=',1pg20.13//)
278 1700 FORMAT(
279 & 5x,'LANKFORD COEFFICIENT R00. . . . . . . .=',1pg20.13/,
280 & 5x,'LANKFORD COEFFICIENT R45. . . . . . . .=',1pg20.13/,
281 & 5x,'LANKFORD COEFFICIENT R90. . . . . . . .=',1pg20.13/)
282 1110 FORMAT(
283 & 5x,'YIELD STRESS IN ORTHOTROPIC DIR. 1 IS SUPPOSSD '/)
284
285 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)