41
42
43
47 USE matparam_def_mod
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64#include "implicit_f.inc"
65
66
67
68#include "units_c.inc"
69#include "param_c.inc"
70
71
72
73 INTEGER, INTENT(INOUT) :: MAT_ID
74 INTEGER, INTENT(INOUT) :: ISRATE
75 INTEGER, DIMENSION(NPROPMI) ,INTENT(INOUT) :: IPM
76 CHARACTER(LEN=NCHARTITLE) ,INTENT(IN) :: TITR
77 my_real,
DIMENSION(NPROPM) ,
INTENT(INOUT) :: pm
78 TYPE(UNIT_TYPE_), INTENT(in) :: UNITAB
79 TYPE(SUBMODEL_DATA), DIMENSION(NSUBMOD),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 JTUR, I, IEOS,EMPTY_LINE,COUNT
87 INTEGER JTHE, IFLAGR
89 . young,nu,sig0,cb,cn,sigm,epsm,t0,tmelt,pmin,
90 . sph,cb1,cb2,ch,cf,g0,bulk,
91 . fac_l,fac_t,fac_m,fac_c,
92 . bid2 ,bid3 ,bid4 ,bid5 ,
93 . bid2_,bid3_,bid4_,bid5_,
94 . c0,c1,c2,c3,c4,c5,e0,psh,rho0,rhor
95 CHARACTER*32 :: MTL_MSG
96
97
98
99 count = 0
100 ieos = 0
101 bulk=zero
102
103 bulk = zero
104 psh = zero
105
106 is_encrypted=.false.
107 is_available=.false.
108
109 mtl_msg = ''
110
111 CALL HM_OPTION_IS_ENCRYPTED(IS_ENCRYPTED)
112
113 CALL HM_GET_FLOATV('mat_rho' ,RHO0 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
114 CALL HM_GET_FLOATV('refer_rho' ,RHOR ,IS_AVAILABLE, LSUBMODEL, UNITAB)
115
116 CALL HM_GET_FLOATV('mat_e0' ,YOUNG ,IS_AVAILABLE, LSUBMODEL, UNITAB)
117 CALL HM_GET_FLOATV('mat_nu' ,NU ,IS_AVAILABLE, LSUBMODEL, UNITAB)
118
119 CALL HM_GET_FLOATV('mat_sigy' ,SIG0 ,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('mat_eps' ,EPSM ,IS_AVAILABLE, LSUBMODEL, UNITAB)
123 CALL HM_GET_FLOATV('mat_sig' ,SIGM ,IS_AVAILABLE, LSUBMODEL, UNITAB)
124
125 CALL HM_GET_FLOATV('mat_t0' ,T0 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
126 CALL HM_GET_FLOATV('mat_tmelt' ,TMELT ,IS_AVAILABLE, LSUBMODEL, UNITAB)
127 CALL HM_GET_FLOATV('mat_spheat' ,SPH ,IS_AVAILABLE, LSUBMODEL, UNITAB)
128 CALL HM_GET_FLOATV('mat_pc' ,PMIN ,IS_AVAILABLE, LSUBMODEL, UNITAB)
129
130 CALL HM_GET_FLOATV('mat_b1' ,CB1 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
131 CALL HM_GET_FLOATV('mat_b2' ,CB2 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
132 CALL HM_GET_FLOATV('h' ,CH ,IS_AVAILABLE, LSUBMODEL, UNITAB)
133 CALL HM_GET_FLOATV('mat_f' ,CF ,IS_AVAILABLE, LSUBMODEL, UNITAB)
134
135 CALL HM_GET_INTV ('line_count' ,COUNT ,IS_AVAILABLE, LSUBMODEL)
136
137 !Default EoS
138 IEOS = 18 ! Linear EOS is used by default
139 MATPARAM%IEOS = IEOS
140 IPM(4) = IEOS ! keep this temporarily for output and fluid sections
141
142 IF (PMIN==ZERO) PMIN=-EP20
143 IF (RHOR==ZERO) RHOR=RHO0
144 PM(1) = RHOR
145 PM(89)= RHO0
146
147 IF(CF < ZERO) THEN
148 CALL ANCMSG(MSGID=1513,MSGTYPE=MSGERROR,ANMODE=ANINFO,I1 = MAT_ID,C1 = TITR)
149 ENDIF
150
151.OR. IF(NU<ZERONU>=HALF)THEN
152 MTL_MSG = "LAW49 (STEINBERG GUINAN)"
153 CALL ANCMSG(MSGID=1514,MSGTYPE=MSGERROR,ANMODE=ANINFO,I1=MAT_ID,C1=MTL_MSG,C2=TITR)
154 ENDIF
155
156 IF(EPSM==ZERO) EPSM = EP20
157 IF(SIGM==ZERO) SIGM = EP20
158 IF(TMELT==ZERO)TMELT = EP20
159 IF(PMIN==ZERO) PMIN =-EP20
160 IF(T0==ZERO) T0 = THREE100
161 G0 = YOUNG /TWO / (ONE+NU)
162 BULK=YOUNG/(THREE*(ONE - TWO*NU))
163
164 PM(20) = YOUNG
165 PM(21) = NU
166 PM(22) = G0
167 PM(24) = NU * YOUNG / (ONE-NU*NU)
168 PM(32) = BULK
169 PM(37) = PMIN
170 PM(38) = SIG0
171 PM(39) = CB
172 PM(40) = CN
173 PM(41) = EPSM
174 PM(42) = SIGM
175 PM(43) = CB1
176 PM(44) = CB2
177 PM(45) = CH
178 PM(46) = TMELT
179 PM(69) = SPH
180 PM(77) = CF
181 PM(78) = T0
182 PM(79) = T0
183 PM(80) = TMELT
184
185 !Formulation for solid elements time step computation.
186 IPM(252)= 2
187 PM(105) = TWO*G0/(BULK+FOUR_OVER_3*G0) ! =(1-2*Nu)/(1-Nu)
188
189 ! MATPARAM keywords
190 CALL INIT_MAT_KEYWORD(MATPARAM,"INCOMPRESSIBLE")
191
192 ! Material compatibility with /EOS option
193 CALL INIT_MAT_KEYWORD(MATPARAM,"EOS")
194
195 ! EOS/Thermo keyword for pressure treatment in elements
196 CALL INIT_MAT_KEYWORD(MATPARAM,"HYDRO_EOS")
197
198 ! Properties compatibility
199 CALL INIT_MAT_KEYWORD(MATPARAM,"SOLID_ISOTROPIC")
200 CALL INIT_MAT_KEYWORD(MATPARAM,"SPH")
201
202 WRITE(IOUT,1000)
203 IF(IS_ENCRYPTED)THEN
204 WRITE(IOUT,'(5x,a,//)')'confidential data'
205 ELSE
206 WRITE(IOUT,2001) TITR,MAT_ID,49
207 WRITE(IOUT,2002) RHO0,RHOR
208 WRITE(IOUT,1100)YOUNG,SIG0,NU,CB,CN,SIGM,EPSM,T0,TMELT,SPH,PMIN,CB1,CB2,CH,CF
209 ENDIF
210
211 MTAG%G_PLA = 1
212 MTAG%G_TEMP = 1
213
214 MTAG%L_PLA = 1
215 MTAG%L_TEMP = 1
216 MTAG%L_EPSD = 1
217
218 1000 FORMAT(
219 & 5X,' steinberg-guinan constitutive law ',/,
220 & 5X,' ---------------------------------- ',//)
221 1100 FORMAT(
222 & 5X,'initial young modulus . . . . . . . . .=',1PG20.13/
223 & 5X,'initial yield stress. . . . . . . . . .=',1PG20.13/
224 & 5X,'poisson ratio . . . . . . . . . . . . .=',1PG20.13/
225 & 5X,'hardening coefficient . . . . . . . . .=',1PG20.13/
226 & 5X,'hardening exponent. . . . . . . . . . .=',1PG20.13/
227 & 5X,'maximum stress. . . . . . . . . . . . .=',1PG20.13/
228 & 5X,'maximum strain. . . . . . . . . . . . .=',1PG20.13/
229 & 5X,'initial temperature . . . . . . . . . .=',1PG20.13/
230 & 5X,'melting temperature . . . . . . . . . .=',1PG20.13/
231 & 5X,'specific heat . . . . . . . . . . . . .=',1PG20.13/
232 & 5X,'minimal pressure. . . . . . . . . . . .=',1PG20.13/
233 & 5X,'b1 coefficient. . . . . . . . . . . . .=',1PG20.13/
234 & 5X,'b2 coefficient. . . . . . . . . . . . .=',1PG20.13/
235 & 5X,'h coefficient . . . . . . . . . . . . .=',1PG20.13/
236 & 5X,'f coefficient . . . . . . . . . . . . .=',1PG20.13//)
237
238 2000 FORMAT(
239 & 5X,' polynomial eos ',/,
240 & 5X,' -------------- ',/,
241 & 5X,' input 100 is obsolete ',/,
242 & 5X,' it can be replaced by /eos card ',/)
243 2001 FORMAT(/
244 & 5X,A,/,
245 & 5X,' material number . . . . . . . . . . . .=',I10/,
246 & 5X,' material law. . . . . . . . . . . . . .=',I10/)
247 2002 FORMAT(
248 & 5X,' initial density . . . . . . . . . . . .=',1PG20.13/,
249 & 5X,' reference density . . . . . . . . . . .=',1PG20.13/)
250 RETURN
integer, parameter nchartitle