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(), INTENT(INOUT) ::
81 TYPE(MATPARAM_STRUCT_) ,INTENT(INOUT) :: MATPARAM
82
83
84
85 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
86 INTEGER IEOS, COUNT
88 . young,nu,sig0,cb,cn,sigm,epsm,t0,tmelt,pmin,
89 . sph,cb1,cb2,ch,cf,g0,bulk,
90 .
91 .
92 .
93 . psh,rho0,rhor
94 CHARACTER*32 :: MTL_MSG
95
96
97
98 count = 0
99 ieos = 0
100 bulk=zero
101
102 bulk = zero
103 psh = zero
104
105 is_encrypted=.false.
106 is_available=.false.
107
108 mtl_msg = ''
109
111
112 CALL hm_get_floatv(
'MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
113 CALL hm_get_floatv(
'Refer_Rho' ,rhor ,is_available, lsubmodel, unitab)
114
115 CALL hm_get_floatv(
'MAT_E0' ,young ,is_available, lsubmodel, unitab)
116 CALL hm_get_floatv(
'MAT_NU' ,nu ,is_available, lsubmodel, unitab)
117
118 CALL hm_get_floatv(
'MAT_SIGY' ,sig0 ,is_available, lsubmodel, unitab)
119 CALL hm_get_floatv(
'MAT_BETA' ,cb ,is_available, lsubmodel, unitab)
120 CALL hm_get_floatv(
'MAT_HARD' ,cn ,is_available, lsubmodel, unitab)
121 CALL hm_get_floatv(
'MAT_EPS' ,epsm ,is_available, lsubmodel, unitab)
122 CALL hm_get_floatv(
'MAT_SIG' ,sigm ,is_available, lsubmodel, unitab)
123
124 CALL hm_get_floatv(
'MAT_T0' ,t0 ,is_available, lsubmodel, unitab)
125 CALL hm_get_floatv(
'MAT_TMELT' ,tmelt ,is_available, lsubmodel, unitab)
126 CALL hm_get_floatv(
'MAT_SPHEAT' ,sph ,is_available, lsubmodel, unitab)
127 CALL hm_get_floatv(
'MAT_PC' ,pmin ,is_available, lsubmodel, unitab)
128
129 CALL hm_get_floatv(
'MAT_B1' ,cb1 ,is_available, lsubmodel, unitab)
130 CALL hm_get_floatv(
'MAT_B2' ,cb2 ,is_available, lsubmodel, unitab)
132 CALL hm_get_floatv(
'MAT_F' ,cf ,is_available, lsubmodel, unitab)
133
134 CALL hm_get_intv (
'Line_count' ,count ,is_available, lsubmodel)
135
136
137 ieos = 18
138 matparam%IEOS = ieos
139 ipm(4) = ieos
140
141 IF (pmin==zero) pmin=-ep20
142 IF (rhor==zero) rhor=rho0
143 pm(1) = rhor
144 pm(89)= rho0
145
146 IF(cf < zero) THEN
147 CALL ancmsg(msgid=1513,msgtype=msgerror,anmode=aninfo,i1 = mat_id,c1 = titr)
148 ENDIF
149
150 IF(nu<zero.OR.nu>=half)THEN
151 mtl_msg = "LAW49 (STEINBERG GUINAN)"
152 CALL ancmsg(msgid=1514,msgtype=msgerror,anmode=aninfo,i1=mat_id,c1=mtl_msg,c2=titr)
153 ENDIF
154
155 IF(epsm==zero) epsm = ep20
156 IF(sigm==zero) sigm = ep20
157 IF(tmelt==zero)tmelt = ep20
158 IF(pmin==zero) pmin =-ep20
159 IF(t0==zero) t0 = three100
160 g0 = young /two / (one+nu)
161 bulk=young/(three*(one - two*nu))
162
163 pm(20) = young
164 pm(21) = nu
165 pm(22) = g0
166 pm(24) = nu * young / (one-nu*nu)
167 pm(32) = bulk
168 pm(37) = pmin
169 pm(38) = sig0
170 pm(39) = cb
171 pm(40) = cn
172 pm(41) = epsm
173 pm(42) = sigm
174 pm(43) = cb1
175 pm(44) = cb2
176 pm(45) = ch
177 pm(46) = tmelt
178 pm(69) = sph
179 pm(77) = cf
180 pm(78) = t0
181 pm(79) = t0
182 pm(80) = tmelt
183
184
185 ipm(252)= 2
186 pm(105) = two*g0/(bulk+four_over_3*g0)
187
188
190
191
193
194
196
197
200
201 WRITE(iout,1000)
202 IF(is_encrypted)THEN
203 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
204 ELSE
205 WRITE(iout,2001) titr,mat_id,49
206 WRITE(iout,2002) rho0,rhor
207 WRITE(iout,1100)young,sig0,nu,cb,cn,sigm,epsm,t0,tmelt,sph,pmin,cb1,cb2,ch,cf
208 ENDIF
209
210 mtag%G_PLA = 1
211 mtag%G_TEMP = 1
212
213 mtag%L_PLA = 1
214 mtag%L_TEMP = 1
215 mtag%L_EPSD = 1
216
217 1000 FORMAT(
218 & 5x,' STEINBERG-GUINAN CONSTITUTIVE LAW ',/,
219 & 5x,' ---------------------------------- ',//)
220 1100 FORMAT(
221 & 5x,'INITIAL YOUNG MODULUS . . . . . . . . .=',1pg20.13/
222 & 5x,'INITIAL YIELD STRESS. . . . . . . . . .=',1pg20.13/
223 & 5x,'POISSON RATIO . . . . . . . . . . . . .=',1pg20.13/
224 & 5x,'HARDENING COEFFICIENT . . . . . . . . .=',1pg20.13/
225 & 5x,'HARDENING EXPONENT. . . . . . . . . . .=',1pg20.13/
226 & 5x,'MAXIMUM STRESS. . . . . . . . . . . . .=',1pg20.13/
227 & 5x,'MAXIMUM STRAIN. . . . . . . . . . . . .=',1pg20
228 & 5x,'INITIAL TEMPERATURE . . . . . . . . . .=',1pg20.13/
229 & 5x,'MELTING TEMPERATURE . . . . . . . . . .=',1pg20.13/
230 & 5x,'SPECIFIC HEAT . . . . . . . . . . . . .=',1pg20.13/
231 & 5x,'MINIMAL PRESSURE. . . . . . . . . . . .=',1pg20.13/
232 & 5x,'B1 COEFFICIENT. . . . . . . . . . . . .=',1pg20.13/
233 & 5x,'b2 coefficient. . . . . . . . . . . . .=',1PG20.13/
234 & 5X,'h coefficient . . . . . . . . . . . . .=',1PG20.13/
235 & 5X,'f coefficient . . . . . . . . . . . . .=',1PG20.13//)
236
237 2001 FORMAT(/
238 & 5X,A,/,
239 & 5X,' material number . . . . . . . . . . . .=',I10/,
240 & 5X,' material law. . . . . . . . . . . . . .=',I10/)
241 2002 FORMAT(
242 & 5X,' initial density . . . . . . . . . . . .=',1PG20.13/,
243 & 5X,' reference density . . . . . . . . . . .=',1PG20.13/)
244 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)