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_
51 use element_mod ,
only : nixq
55#include
"implicit_f.inc"
67#include "vect01_c.inc"
77 INTEGER,
INTENT(IN) :: NEL, NSIGS,IXQ(NIXQ, *), IPM(NPROPMI, NUMMAT),
78 . IGEO(*), IPART(LIPART1, *), IPARTQ(*), PTQUAD(*),
79 . NPF(*), ILOADP(SIZLOADP, *)
80 INTEGER,
INTENT(INOUT) :: IPARG(*)
81 TYPE(elbuf_struct_),
INTENT(IN),
TARGET :: ELBUF_STR
82 my_real,
INTENT(IN) :: X(*), FACLOAD(LFACLOAD, *)
83 my_real,
INTENT(INOUT) :: PM(NPROPM, NUMMAT)
84 my_real,
INTENT(INOUT) :: geo(*), sigi(nsigs, *),
85 . skew(lskew, *), tf(*), bufmat(*)
86 LOGICAL :: ERROR_THROWN
89 TYPE(MATPARAM_STRUCT_) ,
DIMENSION(NUMMAT) ,
INTENT(IN) :: MAT_PARAM
93 INTEGER :: ILAY, NLAY, II, IP, IBID, MATLAW
94 INTEGER :: NGL(MVSIZ), MAT(MVSIZ), PID(MVSIZ)
95 INTEGER :: IX1(MVSIZ), IX2(MVSIZ), IX3(MVSIZ), IX4(MVSIZ)
96 my_real :: Y1(MVSIZ), Y2(MVSIZ), Y3(MVSIZ),Y4(MVSIZ),
97 . z1(mvsiz), z2(mvsiz), z3(mvsiz),z4(mvsiz),
98 . sy(mvsiz), sz(mvsiz), ty(mvsiz),tz(mvsiz),pres,vfrac
99 my_real :: tempel(nel)
100 TYPE(l_bufel_) ,
POINTER :: LBUF
101 TYPE(G_BUFEL_) ,
POINTER :: GBUF
102 TYPE(BUF_MAT_) ,
POINTER :: MBUF
107 gbuf => elbuf_str%GBUF
109 nlay = elbuf_str%NLAY
111 CALL qcoor2(x, ixq(1, nft + 1), ngl, mat, pid,
112 . ix1, ix2, ix3, ix4,
117 CALL qvoli2(gbuf%VOL, ixq(1, nft + 1), ngl, gbuf%AREA,
123 . gbuf%AREA, gbuf%DELTAX,
128 pm(104,ixq(1, 1 + nft)) = zero
133 lbuf => elbuf_str%BUFLY(ilay)%LBUF(1,1,1)
134 mbuf => elbuf_str%BUFLY(ilay)%MAT(1,1,1)
137 mat(ii) = mat_param( ixq(1,ii+nft) )%MULTIMAT%MID(ilay)
139 lbuf%VOL(ii) =mat_param( ixq(1,ii+nft) )%MULTIMAT%VFRAC(ilay) * gbuf%VOL(ii)
144 CALL matini(pm, ixq, nixq, x,
145 . geo, ale_connectivity, detonators, iparg,
146 . sigi, nel, skew, igeo,
148 . mat, ipm, nsigs, numquad, ptquad,
149 . ip, ngl,npf, tf, bufmat,
150 . gbuf, lbuf, mbuf, elbuf_str, iloadp,
151 . facload, gbuf%DELTAX,tempel,mat_param )
153 vfrac = mat_param( ixq(1,1+nft) )%MULTIMAT%VFRAC(ilay)
154 pres = pm(104, mat_param( ixq(1,1+nft) )%MULTIMAT%MID(ilay) )
155 pm(104,ixq(1, 1 + nft)) = pm(104,ixq(1, 1 + nft)) + vfrac * pres
157 matlaw = ipm(2, mat(1))
158 IF (matlaw == 5)
THEN
160 IF (.NOT. error_thrown)
THEN
161 IF (pm(44, mat(1)) == zero)
THEN
162 CALL ancmsg(msgid = 1623, msgtype = msgerror, anmode = aninfo,
163 . i1 = ipm(1, ixq(1, 1 + nft)), i2 = ipm(1, mat(1)))
165 error_thrown = .true.
167 CALL m5in2(pm, mat, ipm(1, ixq(1,1+nft)), detonators, lbuf%TB, x, ixq, nixq)
176 lbuf => elbuf_str%BUFLY(ilay)%LBUF(1,1,1)
178 gbuf%RHO(ii) = gbuf%RHO(ii) + lbuf%RHO(ii) * mat_param( ixq(1,ii+nft) )%MULTIMAT%VFRAC(ilay)
183 gbuf%TEMP(1:nel)=zero
185 lbuf => elbuf_str%BUFLY(ilay)%LBUF(1,1,1)
187 gbuf%TEMP(ii) = gbuf%TEMP(ii) + lbuf%TEMP(ii) * mat_param( ixq(1,ii+nft) )%MULTIMAT%VFRAC(ilay) *
188 . 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, mat_param)
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)