74#include "implicit_f.inc"
86 INTEGER,
INTENT(IN) :: BUFLEN
87 INTEGER,
DIMENSION(NPROPMI,NUMMAT),
INTENT(INOUT) :: IPM
88 my_real,
DIMENSION(NPROPM ,NUMMAT),
INTENT(INOUT) :: pm
89 my_real,
DIMENSION(BUFLEN),
INTENT(INOUT) :: bufmat
90 TYPE (UNIT_TYPE_) ,
INTENT(IN) :: UNITAB
91 TYPE(
submodel_data) ,
DIMENSION(NSUBMOD) ,
INTENT(IN) :: LSUBMODEL
92 TYPE(matparam_struct_) ,
DIMENSION(NUMMAT) ,
INTENT(INOUT) :: MAT_PARAM
96 INTEGER :: I,ITH,FLAGMAT,FLAGUNIT,IUNIT,UID,MAT_ID,IMAT,ILAW,ALE,
97 . lag,eul,jale,jtur,iad_therm,ntherm,iform,law2_form
98 my_real :: tini,tmelt,rho_cp,as,bs,al,bl,rho_cpm1,efrac
99 CHARACTER(LEN=NCHARTITLE) :: TITR
101 LOGICAL IS_AVAILABLE,
117 CALL hm_option_read_key(lsubmodel, option_id=mat_id , option_titr=titr , unit_id=uid , keyword2=key )
125 IF (mat_id == mat_param(i)%MAT_ID)
THEN
131 IF (mat_id > 0 .AND. flagmat == 0)
THEN
132 CALL ancmsg(msgid=1663,anmode=aninfo,msgtype=msgerror,
133 & i1= mat_id, c1=
'HEAT/MAT', c2=
'HEAT/MAT', c3=
'')
135 ilaw = mat_param(imat)%ILAW
140 DO iunit=1,unitab%NUNITS
141 IF (unitab%UNIT_ID(iunit) == uid)
THEN
146 IF (uid > 0 .AND. flagunit == 0)
THEN
147 CALL ancmsg(msgid=659, anmode=aninfo, msgtype=msgerror
157 CALL hm_get_floatv(
'HEAT_T0' ,tini ,is_available, lsubmodel, unitab)
158 CALL hm_get_floatv(
'HEAT_RHocp' ,rho_cp ,is_available, lsubmodel, unitab)
159 CALL hm_get_floatv(
'HEAT_AS' ,as ,is_available, lsubmodel, unitab)
160 CALL hm_get_floatv(
'HEAT_BS' ,bs ,is_available, lsubmodel, unitab)
161 CALL hm_get_intv (
'HEAT_Iform' ,iform ,is_available_iform, lsubmodel)
163 CALL hm_get_floatv(
'HEAT_T1' ,tmelt ,is_available, lsubmodel, unitab)
164 CALL hm_get_floatv(
'HEAT_AL' ,al ,is_available, lsubmodel, unitab)
165 CALL hm_get_floatv(
'HEAT_BL' ,bl ,is_available, lsubmodel, unitab)
166 CALL hm_get_floatv(
'HEAT_EFRAC' ,efrac ,is_available, lsubmodel, unitab)
171 law2_form = nint(pm(50,imat))
172 IF (tmelt /= pm(54,imat) .AND. law2_form == 1)
THEN
173 CALL ancmsg(msgid=764, msgtype=msgwarning, anmode=aninfo_blind_1,
174 & i1=mat_id, c1=titr, i2=mat_id, i3=mat_id)
176 IF (rho_cp /= pm(69,imat))
THEN
177 CALL ancmsg(msgid=765, msgtype=msgwarning, anmode=aninfo_blind_1,
178 & i1=mat_id, c3=titr, i2=mat_id, i3=mat_id)
183 ELSEIF (ilaw == 73)
THEN
184 iad_therm = ipm(7,imat)-1
185 IF (bufmat(iad_therm+20) /= pm(79,imat) )
THEN
186 CALL ancmsg(msgid=764, msgtype=msgwarning, anmode=aninfo_blind_1,
187 & i1=mat_id, c1=titr, i2=mat_id, i3=mat_id)
189 IF (rho_cp == zero)
THEN
192 rho_cpm1 = one/rho_cp
194 IF (bufmat(iad_therm+21) /= rho_cpm1)
THEN
195 CALL ancmsg(msgid=765, msgtype=msgwarning, anmode=aninfo_blind_1,
196 & i1=mat_id, c1=titr, i2=mat_id, i3=mat_id)
204 jale = nint(pm(72,imat))
205 IF (jale == 0 .AND. ilaw/=18 .AND. ilaw/=11)
THEN
208 ELSEIF(jale == 1)
THEN
211 ELSEIF(jale == 2)
THEN
214 ELSEIF(jale == 3)
THEN
219 IF(is_available_iform)
THEN
220 IF(iform /=0 .AND. lag == 0)
THEN
222 CALL ancmsg(msgid=1609, msgtype=msgwarning, anmode=aninfo_blind_1,
223 & i1=mat_id, c1="warning
", C2=TITR,
224 & C3="iform = 1 is incompatible with /ale and /euler materials, it will be ignored
")
228.AND.
IF (RHO_CP == ZERO LAG == 0) THEN
229 CALL ANCMSG(MSGID=1609, MSGTYPE=MSGERROR, ANMODE=ANINFO_BLIND_1,
230 & I1=MAT_ID, C1="error
", C2=TITR,
231 & C3="rho_0 cp
PARAMETER must be greater than zero
")
236 IF (TINI == ZERO) TINI = PM(23,IMAT) / MAX(EM20,RHO_CP) ! E0 / rho_cp
237 IF (TINI == ZERO) TINI = THREE100
238 IF (TMELT == ZERO) TMELT = EP20
239 IF (EFRAC < ZERO) EFRAC = ZERO
240 IF (EFRAC > ONE ) EFRAC = ONE
241 IF (EFRAC == ZERO) EFRAC = ONE
243 PM(71,IMAT) = ONEP1 ! jthe
253 MAT_PARAM(IMAT)%ITHERM = 1 ! setting jthe=1
254 MAT_PARAM(IMAT)%THERM%RHOCP = RHO_CP
255 MAT_PARAM(IMAT)%THERM%TINI = TINI
256 MAT_PARAM(IMAT)%THERM%TMELT = TMELT
257 MAT_PARAM(IMAT)%THERM%AS = AS
258 MAT_PARAM(IMAT)%THERM%BS = BS
259 MAT_PARAM(IMAT)%THERM%AL = AL
260 MAT_PARAM(IMAT)%THERM%BL = BL
261 MAT_PARAM(IMAT)%THERM%EFRAC = EFRAC
265 WRITE(IOUT,2000) MAT_ID,TINI,TMELT,RHO_CP,AS,BS,AL,BL,EFRAC
271 & 5X,' THERMAL PARAMETERS ',/,
272 & 5X,' ------------------ ',/,
273 & 5X,'MATERIAL NUMBER . . . . . . . . . . . . . . . =',I10/,
274 & 5X,'T0 (INITIAL TEMPERATURE). . . . . . . . . . . =',1PG20.13/,
275 & 5X,'TMELT (MELTING TEMPERATURE) . . . . . . . . . =',1PG20.13/,
276 & 5X,'SPECIFIC HEAT . . . . . . . . . . . . . . . . =',1PG20.13/,
277 & 5X,'AS (SOLID PHASE). . . . . . . . . . . . . . . =',1PG20.13/,
278 & 5X,'BS (SOLID PHASE). . . . . . . . . . . . . . . =',1PG20.13/,
279 & 5X,'AL (LIQUID PHASE) . . . . . . . . . . . . . . =',1PG20.13/,
280 & 5X,'BL (LIQUID PHASE) . . . . . . . . . . . . . . =',1PG20.13/,
281 & 5X,'FRACTION OF STRAIN ENERGY CONVERTED INTO HEAT =',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)