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_
49 use element_mod ,
only : nixtg
53#include "implicit_f.inc"
65#include "vect01_c.inc"
77 TYPE(elbuf_struct_),
INTENT(IN),
TARGET :: ELBUF_STR
78 INTEGER,
INTENT(IN) :: NEL, NSIGS, IXTG(NIXTG, *),
79 . IGEO(*), PTSH3N(*), NPF(*), ILOADP(SIZLOADP, *),
80 . ipart(lipart1, *), iparttg(*), ipm(npropmi, *)
81 INTEGER,
INTENT(INOUT) :: IPARG(*)
82 INTEGER,
INTENT(OUT) :: NVC
83 my_real,
INTENT(IN) :: XGRID(3, *), FACLOAD(LFACLOAD, *)
84 my_real,
INTENT(INOUT) :: pm(npropm, *)
85 my_real,
INTENT(INOUT) :: geo(*), sigi(nsigs, *), skew(lskew, *),
87 TYPE(multi_fvm_struct) :: MULTI_FVM
88 LOGICAL :: ERROR_THROWN
89 TYPE(DETONATORS_STRUCT_) DETONATORS
91 TYPE(matparam_struct_) ,
DIMENSION(NUMMAT) ,
INTENT(IN) :: MAT_PARAM
95 TYPE(l_bufel_) ,
POINTER :: LBUF
96 TYPE(G_BUFEL_) ,
POINTER :: GBUF
97 TYPE(BUF_MAT_) ,
POINTER :: MBUF
98 INTEGER :: NLAY, NGL(MVSIZ), MAT(MVSIZ), IX1(MVSIZ), IX2(MVSIZ), IX3(MVSIZ)
100 . y1(mvsiz), z1(mvsiz),
101 . y2(mvsiz), z2(mvsiz),
102 . y3(mvsiz), z3(mvsiz),
103 . nx(mvsiz), ny(mvsiz), nz(mvsiz),
104 . lgth1(mvsiz), lgth2(mvsiz), lgth3(mvsiz),pres,vfrac
105 my_real :: tempel(nel)
106 INTEGER :: II, I, IP, IBID, ILAY, MATLAW
110 IF(n2d>0 .AND. mtn /=151)
THEN
113 . anmode=aninfo_blind_1)
121 gbuf => elbuf_str%GBUF
123 nlay = elbuf_str%NLAY
127 ix1(ii) = ixtg(1 + 1, i)
128 ix2(ii) = ixtg(1 + 2, i)
129 ix3(ii) = ixtg(1 + 3, i)
130 y1(ii) = xgrid(2, ixtg(1 + 1, i))
131 z1(ii) = xgrid(3, ixtg(1 + 1, i))
132 y2(ii) = xgrid(2, ixtg(1 + 2, i))
133 z2(ii) = xgrid(3, ixtg(1 + 2, i))
134 y3(ii) = xgrid(2, ixtg(1 + 3, i))
135 z3(ii) = xgrid(3, ixtg(1 + 3, i))
137 nx(ii) = half * ((y2(ii) - y1(ii)) * (z3(ii) - z1(ii)) -
138 . (z2(ii) - z1(ii)) * (y3(ii) - y1(ii)))
141 gbuf%AREA(ii) = sqrt(nx(ii) * nx(ii) + ny(ii) * ny(ii) + nz(ii) * nz(ii))
143 gbuf%VOL(ii) = gbuf%AREA(ii)
145 gbuf%VOL(ii) = (y1(ii) + y2(ii) + y3(ii)) * (
146 . y1(ii) * (z2(ii) - z3(ii)) +
147 . y2(ii) * (z3(ii) - z1(ii)) +
148 . y3(ii) * (z1(ii) - z2(ii))) * one_over_6
151 lgth1(ii) = sqrt((y2(ii) - y1(ii)) * (y2(ii) - y1(ii)) +
152 . (z2(ii) - z1(ii)) * (z2(ii) - z1(ii)))
153 lgth2(ii) = sqrt((y3(ii) - y2(ii)) * (y3(ii) - y2(ii)) +
154 . (z3(ii) - z2(ii)) * (z3(ii) - z2(ii)))
155 lgth3(ii) = sqrt((y1(ii) - y3(ii)) * (y1(ii) - y3(ii)) +
156 . (z1(ii) - z3(ii)) * (z1(ii) - z3(ii)))
157 gbuf%DELTAX(ii) = gbuf%AREA(ii) /
max(lgth1(ii), lgth2(ii), lgth3(ii))
160 CALL c3veok3(nvc ,ix1 ,ix2 ,ix3 )
162 pm(104,ixtg(1, 1 + nft)) = zero
167 lbuf => elbuf_str%BUFLY(ilay)%LBUF(1,1,1)
168 mbuf => elbuf_str%BUFLY(ilay)%MAT(1,1,1)
171 mat(ii) = mat_param( ixtg(1,ii+nft) )%MULTIMAT%MID(ilay)
173 lbuf%VOL(ii) = mat_param( ixtg(1,ii+nft) )%MULTIMAT%VFRAC(ilay) * gbuf%VOL(ii)
178 CALL matini(pm, ixtg, nixtg, xgrid,
179 . geo, ale_connectivity, detonators, iparg,
180 . sigi, nel, skew, igeo,
182 . mat, ipm, nsigs, numsh3n, ptsh3n,
183 . ip, ngl, npf, tf, bufmat,
184 . gbuf, lbuf, mbuf, elbuf_str, iloadp,
185 . facload, gbuf%DELTAX,tempel,mat_param )
187 vfrac = mat_param( ixtg(1,1+nft) )%MULTIMAT%VFRAC(ilay)
188 pres = pm(104, mat_param( ixtg(1,1+nft) )%MULTIMAT%MID(ilay) )
189 pm(104,ixtg(1, 1 + nft)) = pm(104,ixtg(1, 1 + nft)) + vfrac * pres
191 matlaw = ipm(2, mat(1))
192 IF (matlaw == 5)
THEN
194 IF (.NOT. error_thrown)
THEN
195 IF (pm(44, mat(1)) == zero)
THEN
196 CALL ancmsg(msgid = 1623, msgtype = msgerror, anmode = aninfo,
197 . i1 = ipm(1, ixtg(1, 1 + nft)), i2 = ipm(1, mat(1)))
199 error_thrown = .true.
201 CALL m5in2t(pm, mat, ipm(1, ixtg(1,1+nft)), detonators, lbuf%TB, xgrid, ixtg, nixtg)
210 lbuf => elbuf_str%BUFLY(ilay)%LBUF(1,1,1)
212 gbuf%RHO(ii) = gbuf%RHO(ii) + lbuf%RHO(ii) * mat_param( ixtg(1,ii+nft) )%MULTIMAT%VFRAC(ilay)
217 gbuf%TEMP(1:nel)=zero
219 lbuf => elbuf_str%BUFLY(ilay)%LBUF(1,1,1)
221 gbuf%TEMP(ii) = gbuf%TEMP(ii) + lbuf%TEMP(ii) *
222 . 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, mat_param)
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)