OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
multifluid_init3t.F File Reference
#include "implicit_f.inc"
#include "mvsiz_p.inc"
#include "param_c.inc"
#include "vect01_c.inc"
#include "scry_c.inc"
#include "scr17_c.inc"
#include "com04_c.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine multifluid_init3t (elbuf_str, nel, nsigs, nsigi, ixs, igeo, ipm, iparg, ale_connectivity, iparts, ptsol, npf, ipart, iloadp, xrefs, geo, pm, facload, tf, skew, sigi, bufmat, x, wma, partsav, mas, v, mss, mssf, mssa, msnf, mcps, error_thrown, detonators, defaults, mat_param, nintemp)

Function/Subroutine Documentation

◆ multifluid_init3t()

subroutine multifluid_init3t ( type(elbuf_struct_), intent(in), target elbuf_str,
integer, intent(in) nel,
integer, intent(in) nsigs,
integer, intent(in) nsigi,
integer, dimension(nixs,*), intent(inout) ixs,
integer, dimension(npropgi, *), intent(in) igeo,
integer, dimension(npropmi, *), intent(in) ipm,
integer, dimension(*), intent(inout) iparg,
type(t_ale_connectivity), intent(inout) ale_connectivity,
integer, dimension(*), intent(in) iparts,
integer, dimension(*), intent(in) ptsol,
integer, dimension(*), intent(in) npf,
integer, dimension(lipart1, *), intent(in) ipart,
integer, dimension(sizloadp, *), intent(in) iloadp,
dimension(8, 3, *), intent(inout) xrefs,
dimension(npropg, *), intent(in) geo,
dimension(npropm, *), intent(inout) pm,
dimension(lfacload, *), intent(in) facload,
dimension(*), intent(in) tf,
dimension(lskew, *), intent(in) skew,
dimension(nsigi, *), intent(in) sigi,
dimension(*), intent(in) bufmat,
dimension(3, *), intent(in) x,
dimension(*), intent(inout) wma,
dimension(20, *), intent(inout) partsav,
dimension(*), intent(inout) mas,
dimension(*), intent(inout) v,
dimension(8, *), intent(inout) mss,
dimension(8, *), intent(inout) mssf,
dimension(*), intent(inout) mssa,
dimension(*), intent(inout) msnf,
dimension(8, *), intent(inout) mcps,
logical error_thrown,
type(detonators_struct_) detonators,
type(defaults_), intent(in) defaults,
type(matparam_struct_), dimension(nummat), intent(in) mat_param,
integer, intent(in) nintemp )

Definition at line 39 of file multifluid_init3t.F.

44C-----------------------------------------------
45C M o d u l e s
46C-----------------------------------------------
47 USE elbufdef_mod
48 USE message_mod
51 USE defaults_mod
52 USE matparam_def_mod, ONLY : matparam_struct_
53C-----------------------------------------------
54C I m p l i c i t T y p e s
55C-----------------------------------------------
56#include "implicit_f.inc"
57C-----------------------------------------------
58C G l o b a l P a r a m e t e r s
59C-----------------------------------------------
60#include "mvsiz_p.inc"
61C-----------------------------------------------
62C C o m m o n B l o c k s
63C-----------------------------------------------
64! NIXS, LVEUL
65#include "param_c.inc"
66! NFT
67#include "vect01_c.inc"
68! NUMSOL
69#include "scry_c.inc"
70! LIPART1
71#include "scr17_c.inc"
72! SIZLOADP
73#include "com04_c.inc"
74C-----------------------------------------------
75C D u m m y A r g u m e n t s
76C-----------------------------------------------
77 TYPE(ELBUF_STRUCT_), INTENT(IN), TARGET :: ELBUF_STR
78 INTEGER, INTENT(IN) :: NEL, NSIGS, NSIGI, IGEO(NPROPGI, *), IPM(NPROPMI, *),
79 . IPARTS(*), PTSOL(*), NPF(*), IPART(LIPART1, *), ILOADP(SIZLOADP, *)
80 INTEGER, INTENT(INOUT) :: IPARG(*), IXS(NIXS,*)
81 INTEGER, INTENT(IN) :: NINTEMP
82 my_real, INTENT(IN) :: x(3, *), geo(npropg, *),
83 . facload(lfacload, *), tf(*), skew(lskew, *), sigi(nsigi, *), bufmat(*)
84 my_real, INTENT(INOUT) :: xrefs(8, 3, *)
85 my_real,INTENT(INOUT) :: pm(npropm, *)
86 my_real, INTENT(INOUT) :: wma(*), partsav(20, *), mas(*), v(*),
87 . msnf(*), mcps(8, *), mssf(8, *), mss(8, *), mssa(*)
88 LOGICAL :: ERROR_THROWN
89 TYPE(DETONATORS_STRUCT_) DETONATORS
90 TYPE(t_ale_connectivity), INTENT(INOUT) :: ALE_CONNECTIVITY
91 TYPE(DEFAULTS_), INTENT(IN) :: DEFAULTS
92 TYPE(MATPARAM_STRUCT_) ,DIMENSION(NUMMAT) ,INTENT(IN) :: MAT_PARAM
93C-----------------------------------------------
94C L o c a l V a r i a b l e s
95C-----------------------------------------------
96 TYPE(L_BUFEL_) ,POINTER :: LBUF
97 TYPE(G_BUFEL_) ,POINTER :: GBUF
98 TYPE(BUF_MAT_) ,POINTER :: MBUF
99 INTEGER :: ILAY, NLAY, PID(MVSIZ), NGL(MVSIZ), MAT(MVSIZ),
100 . IX1(MVSIZ), IX2(MVSIZ), IX3(MVSIZ), IX4(MVSIZ)
101 my_real :: x1(mvsiz), y1(mvsiz), z1(mvsiz),
102 . x2(mvsiz), y2(mvsiz), z2(mvsiz),
103 . x3(mvsiz), y3(mvsiz), z3(mvsiz),
104 . x4(mvsiz), y4(mvsiz), z4(mvsiz),
105 . rx(mvsiz),ry(mvsiz),rz(mvsiz),
106 . sx(mvsiz),sy(mvsiz),sz(mvsiz),
107 . tx(mvsiz),ty(mvsiz),tz(mvsiz),
108 . px1(mvsiz),px2(mvsiz),px3(mvsiz),px4(mvsiz),
109 . py1(mvsiz),py2(mvsiz),py3(mvsiz),py4(mvsiz),
110 . pz1(mvsiz),pz2(mvsiz),pz3(mvsiz),pz4(mvsiz),
111 . volu(mvsiz), bid(mvsiz), dummy, pres,vfrac
112 my_real :: tempel(nel)
113 INTEGER :: II, IP, IBID, MATLAW,IMAS_DS
114 DOUBLE PRECISION
115 . VOLDP(MVSIZ)
116C-----------------------------------------------
117C S o u r c e L i n e s
118C-----------------------------------------------
119 gbuf => elbuf_str%GBUF
120C Number of layers ( = number of material in law 151)
121 nlay = elbuf_str%NLAY
122 imas_ds = defaults%SOLID%IMAS
123C Gather coordinates
124 CALL s4coor3(x, xrefs(1, 1, nft + 1), ixs(1, nft + 1), ngl,
125 . mat, pid, ix1, ix2, ix3, ix4,
126 . x1, x2, x3, x4,
127 . y1, y2, y3, y4,
128 . z1, z2, z3, z4)
129C Volume
130 CALL s4deri3(gbuf%VOL, dummy, geo, igeo,
131 . rx, ry, rz, sx, sy, sz, tx, ty, tz,
132 . x1, x2, x3, x4,
133 . y1, y2, y3, y4,
134 . z1, z2, z3, z4,
135 . px1, px2, px3, px4,
136 . py1, py2, py3, py4,
137 . pz1, pz2, pz3, pz4, gbuf%JAC_I,
138 . gbuf%DELTAX, volu, ngl, pid, mat,
139 . pm ,voldp)
140
141 tempel(:) = zero
142 pm(104,ixs(1, 1 + nft)) = zero !global pressure
143
144C Loop over the materials
145 DO ilay = 1, nlay
146C Layer buffer
147 lbuf => elbuf_str%BUFLY(ilay)%LBUF(1,1,1)
148 mbuf => elbuf_str%BUFLY(ilay)%MAT(1,1,1)
149 DO ii = 1, nel
150C Material
151 mat(ii) = mat_param( ixs(1,ii+nft) )%MULTIMAT%MID(ilay)
152C Partial volumes
153 lbuf%VOL(ii) = mat_param( ixs(1,ii+nft) )%MULTIMAT%VFRAC(ilay) * gbuf%VOL(ii)
154 lbuf%VOL0DP(ii) = mat_param( ixs(1,ii+nft) )%MULTIMAT%VFRAC(ilay) * voldp(ii)
155 ENDDO
156C Material initialization
157 ip = 1
158 ibid = 0
159 CALL matini(pm, ixs, nixs, x,
160 . geo, ale_connectivity, detonators, iparg,
161 . sigi, nel, skew, igeo,
162 . ipart,iparts,
163 . mat, ipm, nsigs, numsol, ptsol,
164 . ip, ngl,npf, tf, bufmat,
165 . gbuf, lbuf, mbuf, elbuf_str, iloadp,
166 . facload, gbuf%DELTAX,tempel)
167
168 vfrac = mat_param( ixs(1,1+nft) )%MULTIMAT%VFRAC(ilay)
169 pres = pm(104, mat_param( ixs(1,1+nft) )%MULTIMAT%MID(ilay))
170 pm(104,ixs(1, 1 + nft)) = pm(104,ixs(1, 1 + nft)) + vfrac * pres !global pressure
171
172 matlaw = ipm(2, mat(1))
173 IF (matlaw == 5) THEN
174! JWL MAT
175 IF (.NOT. error_thrown) THEN
176 IF (pm(44, mat(1)) == zero) THEN
177 CALL ancmsg(msgid = 1623, msgtype = msgerror, anmode = aninfo,
178 . i1 = ipm(1, ixs(1, 1 + nft)), i2 = ipm(1, mat(1)))
179 ENDIF
180 error_thrown = .true.
181 ENDIF
182 CALL m5in3(pm, mat, ipm(1, ixs(1,1+nft)), detonators, lbuf%TB, iparg, x, ixs, nixs)
183 ENDIF
184 ENDDO
185
186 IF (nlay > 1) THEN
187
188C Mass globalization
189
190 DO ii = 1, nel
191 gbuf%RHO(ii) = zero
192 ENDDO
193 DO ilay = 1, nlay
194 lbuf => elbuf_str%BUFLY(ilay)%LBUF(1,1,1)
195 DO ii = 1, nel
196 gbuf%RHO(ii) = gbuf%RHO(ii) + lbuf%RHO(ii) * mat_param( ixs(1,ii+nft) )%MULTIMAT%VFRAC(ilay)
197 ENDDO
198 ENDDO
199
200C Temperature globalization. We must solve later T such as e+p/rho=integral(Cp_global(T),dT)
201 gbuf%TEMP(1:nel)=zero
202 DO ilay = 1, nlay
203 lbuf => elbuf_str%BUFLY(ilay)%LBUF(1,1,1)
204 DO ii = 1, nel
205 gbuf%TEMP(ii) = gbuf%TEMP(ii) + lbuf%TEMP(ii) *
206 . mat_param( ixs(1,ii+nft) )%MULTIMAT%VFRAC(ilay) *lbuf%RHO(ii)/gbuf%RHO(ii) !volfrac*densfrac=massfrac
207 ENDDO
208 ENDDO
209
210 ENDIF
211 CALL s4mass3(
212 1 gbuf%RHO ,mas ,partsav,x ,v,
213 2 iparts(nft + 1),mss(1,nft + 1),msnf ,mssf(1,nft + 1),wma,
214 3 bid ,bid ,mcps(1,nft + 1),bid,bid ,
215 4 mssa ,ix1 ,ix2 ,ix3 ,ix4 ,
216 5 gbuf%FILL, gbuf%VOL ,imas_ds, nintemp)
#define my_real
Definition cppsort.cpp:32
subroutine m5in3(pm, mat, m151_id, detonators, tb, iparg, x, ix, nix)
Definition m5in3.F:39
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)
Definition matini.F:81
subroutine s4mass3(rho, ms, partsav, x, v, ipart, mss, msnf, mssf, wma, rhocp, mcp, mcps, temp0, temp, mssa, ix1, ix2, ix3, ix4, fill, volu, imas_ds, nintemp)
Definition s4mass3.F:41
subroutine s4coor3(x, xrefs, ixs, ngl, mxt, ngeo, ix1, ix2, ix3, ix4, x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4)
Definition s4coor3.F:40
subroutine s4deri3(vol, veul, geo, igeo, rx, ry, rz, sx, sy, sz, tx, ty, tz, x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4, px1, px2, px3, px4, py1, py2, py3, py4, pz1, pz2, pz3, pz4, jac_i, deltax, det, ngl, ngeo, mxt, pm, voldp)
Definition s4deri3.F:47
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)
Definition message.F:889