74 SUBROUTINE updmat(BUFMAT ,PM ,IPM ,TABLE ,FUNC_ID ,
75 . NPC ,PLD ,SENSORS ,NLOC_DMG ,MLAW_TAG ,
86 USE law19_upd_mod ,
ONLY : law19_upd
87 USE law81_upd_mod ,
ONLY : law81_upd
88 USE law87_upd_mod ,
ONLY : law87_upd
89 USE law129_upd_mod ,
ONLY : law129_upd
90 USE law133_upd_mod ,
ONLY : law133_upd
91 USE law163_upd_mod ,
ONLY : law163_upd
92 USE law190_upd_mod ,
ONLY : law190_upd
95 USE eosfun_usr2sys_mod ,
ONLY : eosfun_usr2sys
99#include "implicit_f.inc"
103#include "units_c.inc"
104#include "param_c.inc"
105#include "scr17_c.inc"
106#include "scr19_c.inc"
107#include "com04_c.inc"
108#include "tabsiz_c.inc"
112 INTEGER NPC(SNPC), FUNC_ID(NFUNCT)
113 INTEGER,
DIMENSION(NPROPMI,NUMMAT) ,
INTENT(INOUT) :: IPM
114 my_real pm(npropm,nummat), pld(stf),bufmat(sbufmat)
116 TYPE(
mlaw_tag_),
TARGET,
DIMENSION(NUMMAT) :: MLAW_TAG
117 TYPE(
ttable),
DIMENSION(NTABLE) ,
INTENT(INOUT) :: TABLE
118 TYPE (NLOCAL_STR_) :: NLOC_DMG
119 TYPE (SENSORS_) ,
INTENT(IN) :: SENSORS
120 TYPE(matparam_struct_) ,
DIMENSION(NUMMAT),
INTENT(INOUT) ,
TARGET :: MAT_PARAM
124 INTEGER IMAT,ILAW,IRUP,MAT_ID,IADD,IFC,FLAG_HE,NFUNC,NFUNCL,NUMTABL,
125 . NPARAM,NUPARF,NFAIL,IR,FLAG_FIT,IFAILG,
126 . nprony,j,itype_visc,form
128 INTEGER,
DIMENSION(NUMMAT) :: MULLINS,GURSON
129 INTEGER,
DIMENSION(MAXTAB) :: TABLE_ID
130 INTEGER,
DIMENSION(:),
POINTER :: IFUNC,ITABLE
131 my_real,
DIMENSION(:),
POINTER :: uparam,uparf
133 CHARACTER(LEN=NCHARTITLE)::TITR, TITLE
134 TYPE(matparam_struct_) ,
POINTER :: MATPARAM
135 TYPE (VISC_PARAM_) ,
POINTER :: VISC
140 mullins(1:nummat) = 0
143 ilaw = mat_param(imat)%ILAW
144 nfail = mat_param(imat)%NFAIL
146 mtag => mlaw_tag(imat)
148 irup = mat_param(imat)%FAIL(ir)%IRUPT
149 IF (irup == 33 .AND. ilaw /=100 .AND. ilaw /=95 .AND. ilaw/=92)
THEN
150 CALL ancmsg(msgid=1769, msgtype=msgerror, anmode=aninfo_blind_1,
154 IF (irup == 33 .AND. (ilaw ==100 .OR. ilaw ==95 .OR. ilaw==92))
THEN
156 ELSEIF (irup == 35 .and. ilaw==104)
THEN
157 IF (gurson(imat) == 0)
THEN
161 CALL ancmsg(msgid=1650,msgtype=msgerror,
162 . anmode=aninfo_blind_1,i1=imat)
164 ELSE IF (irup == 14)
THEN
166 ELSE IF (irup == 28)
THEN
169 ELSE IF (irup == 10 .OR. irup == 11 .OR. irup == 13 .OR. irup == 30 .OR.
170 . irup == 41 .OR. irup == 42 .OR. irup == 44 .OR. irup == 45 .OR.
171 . irup == 46 .OR. irup == 47 .OR. irup == 50 .OR. irup == 51)
THEN
175 ELSE IF (irup == 48)
THEN
187 mat_id = mat_param(imat)%MAT_ID
188 ilaw = mat_param(imat)%ILAW
191 nfunc_eos = mat_param(imat)%EOS%NFUNC
192 IF(nfunc_eos > 0)
THEN
193 title = mat_param(imat)%EOS%title
194 CALL eosfun_usr2sys(title,mat_id,nfunc_eos,mat_param(imat)%EOS%FUNC,func_id, nfunct )
198 IF (ilaw < 29.and.ilaw/=19.or.ilaw==32.or.ilaw==43.or.ilaw==49.or.ilaw==52.or.
199 . ilaw==57.or.ilaw==59.or.ilaw==60.or.ilaw==65.or.ilaw==75.or.
202 CALL fretitl2(titr,ipm(npropmi-ltitr+1,imat),ltitr)
204 iadd =
max(1,ipm(7,imat))
205 nparam =
min(ipm(9,imat),sbufmat)
206 uparam => bufmat(iadd:iadd+nparam-1)
208 itype_visc = mat_param(imat)%IVISC
210 IF (itype_visc == 2)
THEN
211 visc => mat_param(imat)%VISC
212 nprony = visc%IPARAM(1)
213 form = visc%IPARAM(2)
217 gama_inf = gama_inf - visc%UPARAM(j)
219 gama_inf =
max(em20, gama_inf)
222 gama_inf =
min(gama_inf, one)
228 nfunc = ipm(10 ,imat)
229 numtabl = ipm(226,imat)
230 ifunc => ipm(10+1:10+nfunc,imat)
231 itable => ipm(226+1:226+numtabl,imat)
237 IF (ilaw /= 73 .and. ilaw /= 74 .and. ilaw /= 80)
THEN
238 IF (numtabl > 0 )
THEN
239 table_id(1:numtabl) = ipm(226+1:226+numtabl,imat)
248 CALL law19_upd(mat_param(imat),sensors)
251 mtag => mlaw_tag(imat)
252 CALL law36_upd(iout ,titr ,mat_id ,nparam,uparam ,
253 . nfunc ,ifunc ,func_id,npc ,pld ,
257 CALL law42_upd(mat_param(imat),iout,titr,mat_id,pm(1,imat),gama_inf)
261 ifunc => ipm(10+1:10+nfunc+nfuncl,imat)
262 CALL law58_upd(mat_param(imat),titr,npc,pld,
263 . nfunc,nfuncl,ifunc,mat_id,func_id,
264 . pm(1,imat),sensors)
267 CALL law62_upd(iout,titr,mat_id,nparam,uparam, pm(1,imat),gama_inf)
271 . ifunc, func_id , npc , pld ,
272 . pm(1,imat),ipm(1,imat),gama_inf)
277 CALL law70_upd(mat_param(imat) ,titr ,mat_id ,nparam
278 . nfunc ,ifunc ,npc ,pld
279 . nfunct ,func_id ,npropm ,pm(1,imat))
282 CALL law76_upd(iout ,titr ,mat_id ,nparam ,mat_param(imat) ,
283 . uparam ,numtabl ,itable ,table ,nfunc ,
288 CALL law77_upd(titr ,mat_id ,nparam ,mat_param(imat) ,
289 . uparam ,nfunc ,ifunc ,npc ,pld )
293 CALL law81_upd(mat_param(imat) ,nfunc ,ifunc ,npc ,snpc ,
294 . pld ,stf ,pm(1,imat),npropm,iout ,
299 flag_fit = mat_param(imat)%IPARAM(3)
300 IF (flag_fit == 1)
THEN
301 CALL law87_upd(iout ,titr ,mat_id ,mat_param
307 . ipm(1,imat),func_id,npc,pld,pm(1,imat),
313 uparam(13) = mullins(imat)
316 CALL law92_upd(iout ,titr ,mat_id ,uparam
317 . ifunc ,func_id ,npc ,pld ,pm(1,imat
321 uparam(21) = mullins(imat)
326 uparam(3) = mullins(imat)
327 IF (flag_he == 2 )
THEN
331 . ifunc, func_id , npc , pld , pm(1,imat))
333 ELSEIF(flag_he == 13 )
THEN
335 . ifunc, func_id , npc , pld ,
343 nuparf = mat_param(imat
344 uparf => mat_param(imat
353 . nfunc,ifunc,mat_id,func_id,
357 IF (mat_param(imat)%NLOC > 0)
THEN
358 mlaw_tag(imat)%NUVAR = 1
366 CALL law111_upd(iout ,titr ,mat_id ,uparam ,nfunc ,
367 . ifunc ,func_id ,npc ,pld ,pm(1,imat),ipm(1,imat
372 . numtabl,itable,table,mat_id)
376 . nfunc,ifunc,mat_id,func_id,
382 . nfunc,ifunc,mat_id,func_id,
386 CALL law119_upd(nparam ,numtabl ,itable ,table ,table_id,
387 . uparam,pm(1,imat),titr ,mat_id )
390 CALL law120_upd(nparam ,numtabl ,itable ,table ,uparam)
393 CALL law129_upd(mat_param(imat),sensors)
396 CALL law133_upd(mat_param(imat),pm(1,imat),npropm)
400 ifunc => ipm(10+1:10+nfunc+nfuncl,imat)
402 . nfunc,nfuncl,ifunc,mat_id,func_id,
403 . pm(1,imat),sensors)
406 CALL law163_upd(mat_param(imat),pm(1,imat),npropm)
409 CALL law190_upd(mat_param(imat) ,numtabl ,itable ,table ,pm(1,imat),
414 pm(107,imat) = two*
max(pm(32,imat),pm(100,imat))
415 IF (ilaw==62) pm(107,imat) = hundred*pm(107,imat)
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)