39 . IPARG, IXQ, IPM, ALE_CONNECTIVITY, IGEO, IPART, IPARTQ, NPF,
40 . PTQUAD, ILOADP, X, PM,
41 . GEO, SIGI, SKEW, TF, BUFMAT, FACLOAD, ELBUF_STR, ERROR_THROWN, DETONATORS,
50 USE matparam_def_mod,
ONLY : matparam_struct_
54#include "implicit_f.inc"
66#include "vect01_c.inc"
76 INTEGER,
INTENT(IN) :: NEL, NSIGS,IXQ(NIXQ, *), IPM(NPROPMI, NUMMAT),
77 . IGEO(*), IPART(LIPART1, *), IPARTQ(*), PTQUAD(*),
78 . NPF(*), ILOADP(SIZLOADP, *)
79 INTEGER,
INTENT(INOUT) :: IPARG(*)
80 TYPE(elbuf_struct_),
INTENT(IN),
TARGET :: ELBUF_STR
81 my_real,
INTENT(IN) :: X(*), FACLOAD(LFACLOAD, *)
82 my_real,
INTENT(INOUT) :: PM(NPROPM, NUMMAT)
83 my_real,
INTENT(INOUT) :: geo(*), sigi(nsigs, *),
84 . skew(lskew, *), tf(*), bufmat(*)
85 LOGICAL :: ERROR_THROWN
88 TYPE(MATPARAM_STRUCT_) ,
DIMENSION(NUMMAT) ,
INTENT(IN) :: MAT_PARAM
92 INTEGER :: ILAY, NLAY, II, IP, IBID, MATLAW
93 INTEGER :: NGL(MVSIZ), MAT(MVSIZ), PID(MVSIZ)
94 INTEGER :: IX1(MVSIZ), IX2(MVSIZ), IX3(MVSIZ), IX4(MVSIZ)
95 my_real :: Y1(MVSIZ), Y2(MVSIZ), Y3(MVSIZ),Y4(MVSIZ),
96 . z1(mvsiz), z2(mvsiz), z3(mvsiz),z4(mvsiz),
97 . sy(mvsiz), sz(mvsiz), ty(mvsiz),tz(mvsiz),pres,vfrac
98 my_real :: tempel(nel)
99 TYPE(l_bufel_) ,
POINTER :: LBUF
100 TYPE(G_BUFEL_) ,
POINTER :: GBUF
101 TYPE(BUF_MAT_) ,
POINTER :: MBUF
106 gbuf => elbuf_str%GBUF
108 nlay = elbuf_str%NLAY
110 CALL qcoor2(x, ixq(1, nft + 1), ngl, mat, pid,
111 . ix1, ix2, ix3, ix4,
116 CALL qvoli2(gbuf%VOL, ixq(1, nft + 1), ngl, gbuf%AREA,
122 . gbuf%AREA, gbuf%DELTAX,
127 pm(104,ixq(1, 1 + nft)) = zero
132 lbuf => elbuf_str%BUFLY(ilay)%LBUF(1,1,1)
133 mbuf => elbuf_str%BUFLY(ilay)%MAT(1,1,1)
136 mat(ii) = mat_param( ixq(1,ii+nft) )%MULTIMAT%MID(ilay)
138 lbuf%VOL(ii) =mat_param( ixq(1,ii+nft) )%MULTIMAT%VFRAC(ilay) * gbuf%VOL(ii
143 CALL matini(pm, ixq, nixq, x,
144 . geo, ale_connectivity, detonators, iparg,
145 . sigi, nel, skew, igeo,
147 . mat, ipm, nsigs, numquad, ptquad,
148 . ip, ngl,npf, tf, bufmat,
149 . gbuf, lbuf, mbuf, elbuf_str, iloadp,
150 . facload, gbuf%DELTAX,tempel)
152 vfrac = mat_param( ixq(1,1+nft) )%MULTIMAT%VFRAC(ilay)
153 pres = pm(104, mat_param( ixq(1,1+nft) )%MULTIMAT%MID(ilay) )
154 pm(104,ixq(1, 1 + nft)) = pm(104,ixq(1, 1 + nft)) + vfrac * pres
156 matlaw = ipm(2, mat(1))
157 IF (matlaw == 5)
THEN
159 IF (.NOT. error_thrown)
THEN
160 IF (pm(44, mat(1)) == zero)
THEN
161 CALL ancmsg(msgid = 1623, msgtype = msgerror, anmode = aninfo,
162 . i1 = ipm(1, ixq(1, 1 + nft)), i2 = ipm(1, mat(1)))
164 error_thrown = .true.
166 CALL m5in2(pm, mat, ipm(1, ixq(1,1+nft)), detonators, lbuf%TB, x, ixq, nixq)
175 lbuf => elbuf_str%BUFLY(ilay)%LBUF(1,1,1)
177 gbuf%RHO(ii) = gbuf%RHO(ii) + lbuf%RHO(ii) * mat_param( ixq(1,ii+nft) )%MULTIMAT%VFRAC(ilay)
182 gbuf%TEMP(1:nel)=zero
184 lbuf => elbuf_str%BUFLY(ilay)%LBUF(1,1,1)
186 gbuf%TEMP(ii) = gbuf%TEMP(ii) + lbuf%TEMP(ii) * mat_param( ixq(1,ii+nft) )%MULTIMAT%VFRAC(ilay) *
187 . lbuf%RHO(ii)/gbuf%RHO(ii)
subroutine matini(pm, ix, nix, x, geo, ale_connectivity, detonators, iparg, sigi, nel, skew, igeo, ipart, ipartel, mat, ipm, nsig, nums, pt, ipt, ngl, npf, tf, bufmat, gbuf, lbuf, mbuf, elbuf_str, iloadp, facload, ddeltax, tempel)
subroutine multifluid_init2(nel, nsigs, iparg, ixq, ipm, ale_connectivity, igeo, ipart, ipartq, npf, ptquad, iloadp, x, pm, geo, sigi, skew, tf, bufmat, facload, elbuf_str, error_thrown, detonators, mat_param)
subroutine qcoor2(x, ixq, ngl, mxt, pid, ix1, ix2, ix3, ix4, y1, y2, y3, y4, z1, z2, z3, z4, sy, sz, ty, tz)
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)