OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
multifluid_init3t.F
Go to the documentation of this file.
1Copyright> OpenRadioss
2Copyright> Copyright (C) 1986-2025 Altair Engineering Inc.
3Copyright>
4Copyright> This program is free software: you can redistribute it and/or modify
5Copyright> it under the terms of the GNU Affero General Public License as published by
6Copyright> the Free Software Foundation, either version 3 of the License, or
7Copyright> (at your option) any later version.
8Copyright>
9Copyright> This program is distributed in the hope that it will be useful,
10Copyright> but WITHOUT ANY WARRANTY; without even the implied warranty of
11Copyright> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12Copyright> GNU Affero General Public License for more details.
13Copyright>
14Copyright> You should have received a copy of the GNU Affero General Public License
15Copyright> along with this program. If not, see <https://www.gnu.org/licenses/>.
16Copyright>
17Copyright>
18Copyright> Commercial Alternative: Altair Radioss Software
19Copyright>
20Copyright> As an alternative to this open-source version, Altair also offers Altair Radioss
21Copyright> software under a commercial license. Contact Altair to discuss further if the
22Copyright> commercial version may interest you: https://www.altair.com/radioss/.
23!||====================================================================
24!|| multifluid_init3t ../starter/source/multifluid/multifluid_init3t.F
25!||--- called by ------------------------------------------------------
26!|| initia ../starter/source/elements/initia/initia.F
27!||--- calls -----------------------------------------------------
28!|| ancmsg ../starter/source/output/message/message.F
29!|| m5in3 ../starter/source/initial_conditions/detonation/m5in3.F
30!|| matini ../starter/source/materials/mat_share/matini.F
31!|| s4coor3 ../starter/source/elements/solid/solide4/s4coor3.F
32!|| s4deri3 ../starter/source/elements/solid/solide4/s4deri3.F
33!|| s4mass3 ../starter/source/elements/solid/solide4/s4mass3.F
34!||--- uses -----------------------------------------------------
35!|| defaults_mod ../starter/source/modules/defaults_mod.F90
36!|| detonators_mod ../starter/share/modules1/detonators_mod.F
37!|| message_mod ../starter/share/message_module/message_mod.f
38!||====================================================================
39 SUBROUTINE multifluid_init3t(ELBUF_STR,
40 . NEL, NSIGS, NSIGI, IXS, IGEO, IPM, IPARG, ALE_CONNECTIVITY, IPARTS, PTSOL, NPF, IPART, ILOADP,
41 . XREFS, GEO, PM, FACLOAD, TF, SKEW, SIGI, BUFMAT, X,
42 . WMA, PARTSAV, MAS, V, MSS, MSSF, MSSA, MSNF, MCPS, ERROR_THROWN, DETONATORS,DEFAULTS,
43 . MAT_PARAM,NINTEMP)
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)
217 END SUBROUTINE multifluid_init3t
#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 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)
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
program starter
Definition starter.F:39