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,NUVAR
86 TYPE(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
94 INTEGER ILAW
96 . e, nu, g, a0, fcut, eps0, pmin, rcp, tini, eta, bulk,
97 . m1, m2, m3, m4, m5, m7,rho0,rhor
98 LOGICAL IS_AVAILABLE,IS_ENCRYPTED
99
100
101
102 is_encrypted = .false.
103 is_available = .false.
104 ipm(3) = 1
105 ilaw = 103
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
113 CALL hm_get_floatv(
'MAT_E' , e ,is_available, lsubmodel, unitab)
114 CALL hm_get_floatv(
'MAT_NU' , nu ,is_available, lsubmodel, unitab)
115 CALL hm_get_floatv(
'MAT103_A0' , a0 ,is_available, lsubmodel, unitab)
116 CALL hm_get_floatv(
'MAT103_M1' , m1 ,is_available, lsubmodel, unitab)
119 CALL hm_get_floatv(
'MAT103_M4' , m4 ,is_available, lsubmodel, unitab
120
123
124 CALL hm_get_intv(
'MAT_FSMOOTH' , fsmooth ,is_available
126 CALL hm_get_floatv(
'MAT_SRP' , eps0 ,is_available, lsubmodel, unitab
127 CALL hm_get_floatv(
'MAT_PC' , pmin ,is_available, lsubmodel, unitab)
128
129 CALL hm_get_floatv(
'MAT_SPHEAT' ,rcp ,is_available, lsubmodel, unitab)
130 CALL hm_get_floatv(
'MAT_T0' ,tini ,is_available, lsubmodel, unitab)
131 CALL hm_get_floatv(
'MAT103_ETA',eta ,is_available, lsubmodel, unitab)
132
133
134
135
136 IF(pmin == zero) pmin=-infinity
137 IF(rcp == zero) rcp = infinity
138 IF(rhor==zero)rhor=rho0
139 pm(1) =rhor
140 pm(89)=rho0
141
142
143
144 IF(e <= zero)THEN
145 CALL ancmsg(msgid=276,msgtype=msgerror,anmode=aninfo,i1=103,i2=mat_id,c1=titr)
146 ENDIF
147
148 IF(nu <= -one) THEN
149 CALL ancmsg(msgid=300,msgtype=msgerror,anmode=aninfo,i1=103,i2=mat_id,c1=titr)
150 ENDIF
151
153
154
155
156 g = e/two/(one+nu)
157 nuparam = 14
158 uparam(1) = a0
159 uparam(2) = one/unitab%FAC_T_WORK
160 uparam(3) = g
161 uparam(4) = m1
162 uparam(5) = m2
163 uparam(6) = m3
164 uparam(7) = m4
165 uparam(8) = m5
166 uparam(9) = m7
167 uparam(10) = rcp
168 uparam(11) = tini
169 uparam(12) = eta
170 uparam(13) = 273.15
171 uparam(14) = eps0
172
173 nuvar = 1
174 nfunc = 0
175 bulk = e/three/(one-two*nu)
176 parmat(1) = bulk
177 parmat(2) = e
178 parmat(3) = nu
179 parmat(4) = fsmooth
180 parmat(5) = fcut
181 pm(32) = bulk
182 pm(37) = pmin
183 pm(69) = rcp
184 pm(100)= bulk
185
186 mtag%L_TEMP = 1
187 mtag%G_EPSD = 1
188 mtag%L_EPSD = 1
189 mtag%G_PLA = 1
190 mtag%L_PLA = 1
191
192
193
194 matparam%IEOS = 18
195
196
197
198
200
201
203
204
207
208
209
210 WRITE(iout,1010) trim(titr),mat_id,103
211 WRITE(iout,1000)
212 IF(is_encrypted)THEN
213 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
214 ELSE
215 WRITE(iout,1020)rho0,rhor
216 WRITE(iout,1100) e, nu, a0, m1, m2, m3, m4, m5, m7
217 WRITE(iout,1200) fsmooth, fcut, eps0, pmin, rcp, tini, eta
218 ENDIF
219
220 1000 FORMAT(
221 & 5x,' HENSEL SPITTEL MATERIAL ',/,
222 & 5x,' ----------------------- ',/,
223 & 5x,' ')
224 1010 FORMAT(/
225 & 5x,a,/,
226 & 5x,'MATERIAL NUMBER. . . . . . . . . . . . . . .=',i10/,
227 & 5x,'MATERIAL LAW . . . . . . . . . . . . . . . .=',i10/)
228 1020 FORMAT(
229 & 5x,'INITIAL DENSITY . . . . . . . . . . . .=',1pg20.13/,
230 & 5x,'REFERENCE DENSITY . . . . . . . . . . .=',1pg20.13)
231 1100 FORMAT(
232 & 5x,'YOUNG MODULUS. . . . . . . . . . . . . . . .=',1pg20.13/
233 & 5x,'POISSON RATIO. . . . . . . . . . . . . . . .=',1pg20.13/
234 & 5x,'YIELD PARAMETER A0 . . . . . . . . . . . . .=',1pg20.13/
235 & 5x,'YIELD PARAMETER M1 . . . . . . . . . . . . .=',1pg20.13/
236 & 5x,'YIELD PARAMETER M2 . . . . . . . . . . . . .=',1pg20.13/
237 & 5x,'YIELD PARAMETER M3 . . . . . . . . . . . . .=',1pg20.13/
238 & 5x,'yield PARAMETER m4 . . . . . . . . . . . . .=',1PG20.13/
239 & 5X,'yield PARAMETER m5 . . . . . . . . . . . . .=',1PG20.13/
240 & 5X,'yield PARAMETER m7 . . . . . . . . . . . . .=',1PG20.13/)
241 1200 FORMAT(
242 & 5X,'strain rate smoothing flag . . . . . . . . .=',I10/
243 & 5X,'cut off frequency strain rate smoothing . . =',1PG20.13/
244 & 5X,'reference strain . . . . . . . . . .',1PG20.13/
245 & 5X,'pressure cut-off . . . . . . . . . . . . . .=',1PG20.13/
246 & 5X,'specific heat rho*cp . . . . . . . . . . . .=',1PG20.13/
247 & 5X,'initial temperature k. . . . . . . . . . . .=',1PG20.13/
248 & 5X,'heat conversion PARAMETER eta. . . . . . . .=',1PG20.13/)
249
250 RETURN
251
252
253 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)