37 . IGEO, IPART, IPARTTG, IPM, PTSH3N, NPF, ILOADP,
38 . XGRID, PM, GEO, SIGI, SKEW, TF, BUFMAT, FACLOAD, MULTI_FVM,
39 . ERROR_THROWN, DETONATORS,MAT_PARAM)
48 USE matparam_def_mod,
ONLY : matparam_struct_
52#include "implicit_f.inc"
64#include
"vect01_c.inc"
76 TYPE(elbuf_struct_),
INTENT(IN),
TARGET :: ELBUF_STR
77 INTEGER,
INTENT(IN) :: NEL, NSIGS, IXTG(NIXTG, *),
78 . IGEO(*), PTSH3N(*), NPF(*), ILOADP(SIZLOADP, *),
79 . ipart(lipart1, *), iparttg(*), ipm(npropmi, *)
80 INTEGER,
INTENT(INOUT) :: IPARG(*)
81 INTEGER,
INTENT(OUT) :: NVC
82 my_real,
INTENT(IN) :: XGRID(3, *), FACLOAD(LFACLOAD, *)
83 my_real,
INTENT(INOUT) :: pm(npropm, *)
84 my_real,
INTENT(INOUT) :: geo(*), sigi(nsigs, *), skew(lskew, *),
86 TYPE(multi_fvm_struct) :: MULTI_FVM
87 LOGICAL :: ERROR_THROWN
88 TYPE(DETONATORS_STRUCT_) DETONATORS
90 TYPE(matparam_struct_) ,
DIMENSION(NUMMAT) ,
INTENT(IN) :: MAT_PARAM
94 TYPE(l_bufel_) ,
POINTER :: LBUF
95 TYPE(G_BUFEL_) ,
POINTER :: GBUF
96 TYPE(BUF_MAT_) ,
POINTER :: MBUF
97 INTEGER :: NLAY, NGL(MVSIZ), MAT(MVSIZ), IX1(MVSIZ), IX2(MVSIZ), IX3(MVSIZ)
99 . y1(mvsiz), z1(mvsiz),
100 . y2(mvsiz), z2(mvsiz),
101 . y3(mvsiz), z3(mvsiz),
102 . nx(mvsiz), ny(mvsiz), nz(mvsiz),
103 . lgth1(mvsiz), lgth2(mvsiz), lgth3(mvsiz),pres,vfrac
104 my_real :: tempel(nel)
105 INTEGER :: II, I, IP, IBID, ILAY, MATLAW
109 IF(n2d>0 .AND. mtn /=151)
THEN
112 . anmode=aninfo_blind_1)
120 gbuf => elbuf_str%GBUF
122 nlay = elbuf_str%NLAY
126 ix1(ii) = ixtg(1 + 1, i)
127 ix2(ii) = ixtg(1 + 2, i)
128 ix3(ii) = ixtg(1 + 3, i)
129 y1(ii) = xgrid(2, ixtg(1 + 1, i))
130 z1(ii) = xgrid(3, ixtg(1 + 1, i))
131 y2(ii) = xgrid(2, ixtg(1 + 2, i))
132 z2(ii) = xgrid(3, ixtg(1 + 2, i))
133 y3(ii) = xgrid(2, ixtg(1 + 3, i))
134 z3(ii) = xgrid(3, ixtg(1 + 3, i))
136 nx(ii) = half * ((y2(ii) - y1(ii)) * (z3(ii) - z1(ii)) -
137 . (z2(ii) - z1(ii)) * (y3(ii) - y1(ii)))
140 gbuf%AREA(ii) = sqrt(nx(ii) * nx(ii) + ny(ii) * ny(ii) + nz(ii) * nz(ii))
142 gbuf%VOL(ii) = gbuf%AREA(ii)
144 gbuf%VOL(ii) = (y1(ii) + y2(ii) + y3(ii)) * (
145 . y1(ii) * (z2(ii) - z3(ii)) +
146 . y2(ii) * (z3(ii) - z1(ii)) +
147 . y3(ii) * (z1(ii) - z2(ii))) * one_over_6
150 lgth1(ii) = sqrt((y2(ii) - y1(ii)) * (y2(ii) - y1(ii)) +
151 . (z2(ii) - z1(ii)) * (z2(ii) - z1(ii)))
152 lgth2(ii) = sqrt((y3(ii) - y2(ii)) * (y3(ii) - y2(ii)) +
153 . (z3(ii) - z2(ii)) * (z3(ii) - z2(ii)))
154 lgth3(ii) = sqrt((y1(ii) - y3(ii)) * (y1(ii) - y3(ii)) +
155 . (z1(ii) - z3(ii)) * (z1(ii) - z3(ii)))
156 gbuf%DELTAX(ii) = gbuf%AREA(ii) /
max(lgth1(ii), lgth2(ii), lgth3(ii))
159 CALL c3veok3(nvc ,ix1 ,ix2 ,ix3 )
161 pm(104,ixtg(1, 1 + nft)) = zero
166 lbuf => elbuf_str%BUFLY(ilay)%LBUF(1,1,1)
167 mbuf => elbuf_str%BUFLY(ilay)%MAT(1,1,1)
170 mat(ii) = mat_param( ixtg(1,ii+nft) )%MULTIMAT%MID(ilay)
172 lbuf%VOL(ii) = mat_param( ixtg(1,ii+nft) )%MULTIMAT%VFRAC(ilay) * gbuf%VOL(ii)
177 CALL matini(pm, ixtg, nixtg, xgrid,
178 . geo, ale_connectivity, detonators, iparg,
179 . sigi, nel, skew, igeo,
181 . mat, ipm, nsigs, numsh3n, ptsh3n,
182 . ip, ngl, npf, tf, bufmat,
183 . gbuf, lbuf, mbuf, elbuf_str, iloadp,
184 . facload, gbuf%DELTAX,tempel)
186 vfrac = mat_param( ixtg(1,1+nft) )%MULTIMAT%VFRAC(ilay)
187 pres = pm(104, mat_param( ixtg(1,1+nft) )%MULTIMAT%MID(ilay) )
188 pm(104,ixtg(1, 1 + nft)) = pm(104,ixtg(1, 1 + nft)) + vfrac * pres
190 matlaw = ipm(2, mat(1))
191 IF (matlaw == 5)
THEN
193 IF (.NOT. error_thrown)
THEN
194 IF (pm(44, mat(1)) == zero)
THEN
195 CALL ancmsg(msgid = 1623, msgtype = msgerror, anmode = aninfo,
196 . i1 = ipm(1, ixtg(1, 1 + nft)), i2 = ipm(1, mat(1)))
198 error_thrown = .true.
200 CALL m5in2t(pm, mat, ipm(1, ixtg(1,1+nft)), detonators, lbuf%TB, xgrid, ixtg, nixtg)
209 lbuf => elbuf_str%BUFLY(ilay)%LBUF(1,1,1)
211 gbuf%RHO(ii) = gbuf%RHO(ii) + lbuf%RHO(ii) * mat_param( ixtg(1,ii+nft) )%MULTIMAT%VFRAC(ilay)
216 gbuf%TEMP(1:nel)=zero
218 lbuf => elbuf_str%BUFLY(ilay)%LBUF(1,1,1)
220 gbuf%TEMP(ii) = gbuf%TEMP(ii) + lbuf%TEMP(ii) *
221 . mat_param( ixtg(1,ii+nft) )%MULTIMAT%VFRAC(ilay)*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_init2t(elbuf_str, nel, nsigs, nvc, iparg, ixtg, ale_connectivity, igeo, ipart, iparttg, ipm, ptsh3n, npf, iloadp, xgrid, pm, geo, sigi, skew, tf, bufmat, facload, multi_fvm, error_thrown, detonators, mat_param)
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)