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