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 my_real,
DIMENSION(NPROPM) ,
INTENT(INOUT) :: pm
82 my_real,
DIMENSION(100) ,
INTENT(INOUT) :: parmat
83 my_real,
DIMENSION(MAXUPARAM) ,
INTENT(INOUT) :: uparam
84 INTEGER, DIMENSION(MAXFUNC) ,INTENT(INOUT) :: IFUNC
85 INTEGER, INTENT(INOUT) :: IPM(NPROPMI),FSMOOTH,IMATVIS,NFUNC,MAXFUNC,MAXUPARAM,NUPARAM
86TYPE(MLAW_TAG_),INTENT(INOUT) :: MTAG
87 INTEGER,INTENT(IN) :: MAT_ID
88 CHARACTER(LEN=NCHARTITLE) ,INTENT(IN) :: TITR
89 TYPE(SUBMODEL_DATA),INTENT(IN) :: LSUBMODEL(*)
90 TYPE(MATPARAM_STRUCT_) ,INTENT(INOUT) :: MATPARAM
91
92
93
95 . sigm, tref, tmelt, tmax, tol, fcut,rho0,rhor,cm_unit
97 . pmin, cs, stifint, dummy
98 INTEGER NMAX,ILAW
99 LOGICAL IS_AVAILABLE,IS_ENCRYPTED
100
101
102
103 is_encrypted = .false.
104 is_available = .false.
105 ilaw= 106
106
108
109 CALL hm_get_floatv(
'MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
110 CALL hm_get_floatv(
'Refer_Rho' ,rhor ,is_available, lsubmodel, unitab)
111
112 CALL hm_get_floatv(
'MAT_E' , e ,is_available, lsubmodel, unitab)
113 CALL hm_get_floatv(
'MAT_NU' , nu ,is_available, lsubmodel, unitab)
114 CALL hm_get_intv(
'MLAW106_FCT_ID1' , ifunc(1) ,is_available, lsubmodel)
115 CALL hm_get_intv(
'MLAW106_FCT_ID2' , ifunc(2) ,is_available, lsubmodel)
116 CALL hm_get_intv(
'MLAW106_FCT_ID3' , ifunc(3) ,is_available, lsubmodel)
117
118
119 CALL hm_get_floatv(
'MAT_SIGY' , ca ,is_available, lsubmodel, unitab)
120 CALL hm_get_floatv(
'MAT_BETA' , cb ,is_available, lsubmodel, unitab)
121 CALL hm_get_floatv(
'MAT_HARD' , cn ,is_available, lsubmodel, unitab)
122 CALL hm_get_floatv(
'MLAW106_EP_MAX ' , epsm ,is_available, lsubmodel, unitab)
123 CALL hm_get_floatv(
'MLAW106_SIGMA_MAX' , sigm ,is_available, lsubmodel, unitab)
124
125 CALL hm_get_floatv(
'MAT_PC' ,pmin ,is_available, lsubmodel, unitab)
126 CALL hm_get_intv(
'MLAW106_NMAX' ,nmax ,is_available, lsubmodel)
127 CALL hm_get_floatv(
'MLAW106_TOL' ,tol ,is_available, lsubmodel, unitab)
128
129 CALL hm_get_floatv(
'MAT_M' , cm ,is_available, lsubmodel,unitab)
130 CALL hm_get_floatv(
'MAT_TMELT' , tmelt ,is_available, lsubmodel, unitab)
131 CALL hm_get_floatv(
'MAT_TMAX' , tmax ,is_available, lsubmodel, unitab)
132
133 CALL hm_get_floatv(
'MAT_SPHEAT' , cs ,is_available, lsubmodel, unitab)
134 CALL hm_get_floatv(
'MLAW106_TR' , tref ,is_available, lsubmodel, unitab)
135
136
137
138 IF(cs == zero.AND.tmelt == zero)THEN
140 . msgtype=msgwarning,
141 . anmode=aninfo_blind_1,
142 . i1=mat_id,c1=titr)
143 cs=infinity
144 ELSEIF(cs == zero)THEN
146 . msgtype=msgerror,
147 . anmode=aninfo_blind_1,
148 . i1=mat_id,c1=titr)
149 END IF
150 IF(pmin == zero) pmin =-infinity
151
152 IF(epsm == zero) epsm = infinity
153 IF(sigm == zero) sigm = infinity
154
155 IF(cm == zero) cm = one
156 IF(tmelt <= zero)tmelt = infinity
157 IF(tmax <= zero) tmax = infinity
158 IF(tref <= zero) tref = three100
159 IF(nmax == 0) nmax = 1
160 IF(tol <= zero) tol = em7
161 IF(rhor == zero)rhor=rho0
162 pm(1) =rhor
163 pm(89)=rho0
164
165
166
167 IF(e <= zero)THEN
168 CALL ancmsg(msgid=276,msgtype=msgerror,anmode=aninfo,i1=106,i2=mat_id,c1=titr)
169 ENDIF
170 IF(nu <= -one) THEN
171 CALL ancmsg(msgid=300,msgtype=msgerror,anmode=aninfo,i1=106,i2=mat_id,c1=titr)
172 ENDIF
173
174
175
176
177 nuparam = 15
178 uparam(1) = e
179 uparam(2) = nu
180 uparam(3) = ca
181 uparam(4) = cb
182 uparam(5) = cm
183 uparam(6) = cn
184 uparam(7) = tmelt
185 uparam(8) = tref
186 uparam(9) = zero
187 uparam(10) = zero
188 uparam(11) = epsm
189 uparam(12) = sigm
190 uparam(13) = nmax
191 uparam(14) = tol
192 uparam(15) = cs
193
194 nuvar = 14
195 nfunc = 3
196
197 stifint = e*(one-nu)/(one+nu)/(one-two*nu)
198 parmat(1) = stifint
199 parmat(2) = e
200 parmat(3) = nu
201 parmat(4) = 0
202
203
204 mtag%G_TEMP = 1
205 mtag%L_TEMP = 1
206 mtag%G_EPSD = 1
207 mtag%L_EPSD = 1
208 mtag%G_PLA = 1
209 mtag%L_PLA = 1
210 pm(100) = parmat(1)
211
212
213
214 matparam%HEAT_FLAG = 1
215
216
218
220
221
222
223 WRITE(iout,1010) trim(titr),mat_id,106
224 WRITE(iout,1000)
225 IF(is_encrypted)THEN
226 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
227 ELSE
228 WRITE(iout,1020)rho0
229 WRITE(iout,1100) e,nu,ifunc(1),ifunc(2),ifunc(3),ca,cb,cm,cn,epsm,sigm,tmelt,tref
230 WRITE(iout,1300) nmax,tol
231 ENDIF
232
233 1000 FORMAT(
234 & 5x,' JOHNSON COOK LAW - TEMPERATURE DEPENDENT YOUNG MODULUS ',/,
235 & 5x,' ------------------------------------------------------ '//)
236 1010 FORMAT(/
237 & 5x,a,/,
238 & 5x,'MATERIAL NUMBER. . . . . . . . . . . . . . .=',i10/,
239 & 5x,'MATERIAL LAW . . . . . . . . . . . . . . . .=',i10/)
240 1020 FORMAT(
241 & 5x,'INITIAL DENSITY . . . . . . . . . . . . . . =',1pg20.13/)
242 1100 FORMAT(
243 & 5x,'YOUNG MODULUS E. . . . . . . . . . . . . . .=',1pg20.13/
244 & 5x,'POISSON RATIO NU . . . . . . . . . . . . . .=',1pg20.13/
245 & 5x,'FUNCTION E(T) (HEATING). . . . . . . . . . .=',i10/
246 & 5x,'FUNCTION E(T) (COOLING). . . . . . . . . . .=',i10/
247 & 5x,'FUNCTION NU(T) . . . . . . . . . . . . . . .=',i10/
248 & 5x,'YIELD COEFFICIENT A. . . . . . . . . . . . .=',1pg20.13/
249 & 5x,'YIELD COEFFICIENT B. . . . . . . . . . . . .='
250 & 5x,'YIELD COEFFICIENT M (TEMPERATURE). . . . . .=',1pg20.13/
251 & 5x,'YIELD COEFFICIENT N (HARDENING). . . . . . .=',1pg20.13/
252 & 5x,'EPS-MAX. . . . . . . . . . . . . . . . . . .=',1pg20.13/
253 & 5x,'SIG-MAX. . . . . . . . . . . . . . . . . . .=',1pg20.13/
254 & 5x,'MELTING TEMPERATURE. . . . . . . . . . . . .=',1pg20.13/
255 & 5x,'REFERENCE TEMPERATURE. . . . . . . . . . . .=',1pg20.13/
256 & 5x,'SPECIFIC HEAT RHO*CP . . . . . . . . . . . .=',1pg20.13/)
257 1300 FORMAT(
258 & 5x,'MAXIMUM NUMBER OF ITERATIONS . . . . . . . .=',i10/
259 & 5x,'PLASTICITY TOLERANCE . . . . . . . . . . . .=',1pg20.13/)
260 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)