39 . LSUBMODEL ,MTAG ,UNITAB ,IPM ,PM ,
40 . MAT_ID ,TITR ,ISRATE ,MAT_PARAM)
64#include "implicit_f.inc"
74 INTEGER,
INTENT(INOUT) :: MAT_ID
75 INTEGER,
INTENT(INOUT) :: ISRATE
76 INTEGER,
DIMENSION(NPROPMI) ,
INTENT(INOUT) :: IPM
77 CHARACTER(LEN=NCHARTITLE) ,
INTENT(IN) :: TITR
78 my_real,
DIMENSION(NPROPM) ,
INTENT(INOUT) :: pm
80 TYPE(
submodel_data),
DIMENSION(NSUBMOD),
INTENT(IN) :: LSUBMODEL
82 TYPE(matparam_struct_),
INTENT(INOUT) :: MAT_PARAM
86 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED,IS_EOS, EOS_EMBEDDED
89 . young, anu, ca, cb, cn, epsm, sigm, bulk,
90 . pmin, cc, eps0, cm, tmelt, tmax, cs, t0, sph,
94 . c0,c1,c2,c3,c4,c5,e0,psh,rho0,rhor
104 is_encrypted = .false.
105 is_available = .false.
109 CALL hm_get_floatv(
'MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
110 CALL hm_get_floatv(
'Refer_Rho' ,rhor ,is_available, lsubmodel
112 CALL hm_get_floatv(
'MAT_E' ,young ,is_available, lsubmodel, unitab)
113 CALL hm_get_floatv(
'MAT_NU' ,anu ,is_available, lsubmodel, unitab)
115 CALL hm_get_floatv(
'MAT_SIGY' ,ca ,is_available, lsubmodel, unitab)
117 CALL hm_get_floatv(
'MAT_HARD' ,cn ,is_available, lsubmodel, unitab)
118 CALL hm_get_floatv(
'MAT_EPS' ,epsm ,is_available, lsubmodel, unitab)
119 CALL hm_get_floatv(
'MAT_SIG' ,sigm ,is_available, lsubmodel, unitab)
121 CALL hm_get_floatv(
'MAT_PC' ,pmin ,is_available, lsubmodel, unitab)
123 CALL hm_get_floatv(
'MAT_SRC' ,cc ,is_available, lsubmodel, unitab)
124 CALL hm_get_floatv(
'MAT_SRP' ,eps0 ,is_available, lsubmodel, unitab)
125 CALL hm_get_floatv(
'MAT_M' ,cm ,is_available, lsubmodel, unitab)
126 CALL hm_get_floatv(
'MAT_TMELT' ,tmelt ,is_available, lsubmodel, unitab)
127 CALL hm_get_floatv(
'MAT_TMAX' ,tmax ,is_available, lsubmodel, unitab)
129 CALL hm_get_floatv(
'MAT_SPHEAT' ,cs ,is_available, lsubmodel, unitab)
130 CALL hm_get_floatv(
'MAT_T0' ,t0 ,is_available, lsubmodel, unitab)
132 CALL hm_get_intv (
'Line_count' ,count ,is_available, lsubmodel)
134 IF(invers_init>=2018)
THEN
136 ELSEIF(invers_init>=110)
THEN
137 IF(count==3)eos_embedded=.true.
147 IF(invers_init>=140)
THEN
155 CALL hm_get_floatv(
'MAT_C0' ,c0 ,is_available, lsubmodel, unitab)
156 CALL hm_get_floatv(
'MAT_C1' ,c1 ,is_available, lsubmodel, unitab)
157 CALL hm_get_floatv(
'MAT_C2' ,c2 ,is_available, lsubmodel, unitab)
158 CALL hm_get_floatv(
'MAT_C3' ,c3 ,is_available, lsubmodel, unitab)
159 CALL hm_get_floatv(
'MAT_C4' ,c4 ,is_available, lsubmodel, unitab)
160 CALL hm_get_floatv(
'MAT_C5' ,c5 ,is_available, lsubmodel, unitab)
161 CALL hm_get_floatv(
'MAT_E0' ,e0 ,is_available, lsubmodel, unitab
165 mat_param%EOS%NUPARAM = 7
166 mat_param%EOS%NIPARAM = 0
167 mat_param%EOS%NFUNC = 0
168 mat_param%EOS%NTABLE = 0
169 CALL mat_param%EOS%CONSTRUCT()
170 mat_param%EOS%UPARAM(1) = c0-psh
171 mat_param%EOS%UPARAM(2) = c1
172 mat_param%EOS%UPARAM(3) = c2
173 mat_param%EOS%UPARAM(4) = c3
174 mat_param%EOS%UPARAM(5) = c4
175 mat_param%EOS%UPARAM(6) = c5
176 mat_param%EOS%UPARAM(7) = zero
177 mat_param%EOS%PSH = psh
178 mat_param%EOS%E0 = e0
193 mat_param%IEOS = ieos
196 IF (pmin==zero) pmin=-ep20
197 IF (rhor==zero) rhor=rho0
202 IF(cs == zero.AND.tmelt == zero)
THEN
204 . msgtype=msgwarning,
205 . anmode=aninfo_blind_1,
209 ELSEIF(cs == zero)
THEN
212 . anmode=aninfo_blind_1,
217 IF(pmin == zero) pmin =-ep20
218 IF(cn == zero.OR.cn == one) cn = onep0001
219 IF(epsm == zero) epsm = ep20
220 IF(sigm == zero) sigm = ep20
221 IF(cc == zero) eps0 = one
222 IF(cm == zero) cm = one
223 IF(tmelt == zero)tmelt = ep20
224 IF(tmax == zero) tmax = ep20
225 IF(t0<=zero) t0 = three100
226 g=young/(two*(one + anu))
227 IF(.NOT.eos_embedded)bulk=young/(three*(one - two*anu))
251 pm(105) = (one -two*anu)/(one - anu)
274 mat_param%HEAT_FLAG = 1
277 WRITE(iout,2001) titr,mat_id,4
281 WRITE(iout,
'(5X,A,//)')
'CONFIDENTIAL DATA'
283 WRITE(iout,2002)rho0,rhor
284 WRITE(iout,1300)young,anu,g,bulk
285 WRITE(iout,1400)ca,cb,cn,epsm,sigm
287 WRITE(iout,1600)cc,eps0,cm,tmelt,tmax,cs,t0
296 WRITE(iout,
'(5X,A,//)')
'CONFIDENTIAL DATA'
298 WRITE(iout,2500)c0,c1,c2,c3,c4,c5,e0,pm(1),psh !
303 IF(eps0 == zero)
THEN
304 CALL ancmsg(msgid=298,msgtype=msgerror,anmode=aninfo,i1=4,i2=mat_id,c1=titr)
308 & 5x,
' JOHNSON COOK LAW ',/,
309 & 5x,
' ---------------- ',//)
311 & 5x,
'YOUNG',1h
','s modulus . . . . . . . . . . . .=
',1PG20.13/,
312 & 5X,'poisson',1h
','s ratio . . . . . . . . . . . .=
',1PG20.13/,
313 & 5X,'shear modulus . . . . . . . . . . . . .=
',1PG20.13/,
314 & 5X,'bulk modulus . . . . . . . . . . . . .=
',1PG20.13//)
316 & 5X,'yield coefficient ca. . . . . . . . . .=
',1PG20.13/,
317 & 5X,'yield coefficient cb. . . . . . . . . .=
',1PG20.13/,
318 & 5X,'yield coefficient cn. . . . . . . . . .=
',1PG20.13/,
319 & 5X,'eps-
max . . . . . . . . . . . . . . . .=
',1PG20.13/,
320 & 5X,'sig-
max . . . . . . . . . . . . . . . .=
',1PG20.13//)
322 & 5X,'pressure cutoff . . . . . . . . . . . .=
',1PG20.13/)
324 & 5X,'strain rate coefficient cc. . . . . . .=
',1PG20.13/,
325 & 5X,'reference strain rate . . . . . . . . .=
',1PG20.13/,
326 & 5X,'temperature exponent. . . . . . . . . .=
',1PG20.13/,
327 & 5X,'melting temperature degree k. . . . . .=
',1PG20.13/,
328 & 5X,'theta-
max . . . . . . . .
',1PG20.13/,
329 & 5X,'specific heat . . . . . . . . . . . . .=
',1PG20.13/,
330 & 5X,'room temperature . . . . . . . . . . . =
',1PG20.13//)
332 & 5X,' polynomial eos
',/,
333 & 5X,' --------------
',/,
334 & 5X,' input 100 is obsolete
',/,
335 & 5X,' it can be erased by /eos card
',/)
338 & 5X,' material number . . . . . . . . . . . .=
',I10/,
339 & 5X,' material law. . . . . . . . . . . . . .=
',I10/)
341 & 5X,' initial density . . . . . . . . . . . .=
',1PG20.13/,
342 & 5X,' reference density . . . . . . . . . . .=
',1PG20.13/)
344 & 5X,'c0. . . . . . . . . . . . . . . . . . . .=
',1PG20.13/,
345 & 5X,'c1. . . . . . . . . . . . . . . . . . . .=
',1PG20.13/,
346 & 5X,'c2. . . . . . . . . . . . . . . . . . . .=
',1PG20.13/,
347 & 5X,'c3. . . . . . . . . . . . . . . . . . . .=
',1PG20.13/,
348 & 5X,'c4. . . . . . . . . . . . . . . . . . . .=',1pg20.13/,
349 & 5x,
'C5. . . . . . . . . . . . . . . . . . . .=',1pg20.13/,
350 & 5x,
'INITIAL INTERNAL ENERGY PER UNIT VOLUME .=',1pg20.13/,
351 & 5x,
'REFERENCE DENSITY . . . . . . . . . . . .=',1pg20.13/,
352 & 5x,
'PRESSURE SHIFT. . . . . . . . . . . . . .=',1pg20.13//)
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)