OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
m51init.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!|| m51init ../starter/source/materials/mat/mat051/m51init.F
25!||--- called by ------------------------------------------------------
26!|| matini ../starter/source/materials/mat_share/matini.F
27!||--- calls -----------------------------------------------------
28!|| m5in2 ../starter/source/initial_conditions/detonation/m5in2.F
29!|| m5in3 ../starter/source/initial_conditions/detonation/m5in3.f
30!|| nrf51ini ../starter/source/materials/mat/mat051/nrf51ini.F
31!||--- uses -----------------------------------------------------
32!|| detonators_mod ../starter/share/modules1/detonators_mod.F
33!||====================================================================
34 SUBROUTINE m51init(
35 . IPM ,DETONATORS ,PM ,TB ,
36 . NUVAR ,UVAR ,UPARAM ,X ,
37 . MAT ,IPARG ,IFORM ,IX ,NIX ,
38 . ALE_CONNECTIVITY ,BUFMAT ,RHO0 ,
39 . GBUF ,NEL ,SIG )
40C-----------------------------------------------
41C M o d u l e s
42C-----------------------------------------------
43 USE elbufdef_mod
46 USE multimat_param_mod , ONLY : m51_n0phas, m51_nvphas
47C-----------------------------------------------
48C I m p l i c i t T y p e s
49C-----------------------------------------------
50#include "implicit_f.inc"
51C-----------------------------------------------
52C C o m m o n B l o c k s
53C-----------------------------------------------
54#include "com01_c.inc"
55#include "com04_c.inc"
56#include "param_c.inc"
57C-----------------------------------------------
58C D u m m y A r g u m e n t s
59C-----------------------------------------------
60 INTEGER IPM(NPROPMI,NUMMAT),MAT(NEL), IPARG(NPARG),IFORM,NIX,IX(NIX,*)
61 my_real PM(NPROPM,NUMMAT),UVAR(NEL,NUVAR),UPARAM(*), X(3,NUMNOD), BUFMAT(*), RHO0
62 INTEGER,INTENT(IN) :: NEL
63 my_real,INTENT(INOUT) :: SIG(NEL,6)
64 TYPE(G_BUFEL_), INTENT(INOUT),TARGET :: GBUF
65 TYPE(detonators_struct_) :: DETONATORS
66 TYPE(t_ale_connectivity), INTENT(INOUT) :: ALE_CONNECTIVITY
67C-----------------------------------------------
68C L o c a l V a r i a b l e s
69C-----------------------------------------------
70 INTEGER I,NUVAR, ISFLUID
71 INTEGER NPH,IFLG,NV46
72 INTEGER IMAT
73 INTEGER KK,NUMEL
74 my_real :: GG1, GG2, GG3
75 my_real vold,t0_(4),c0_(4),c1_(4),c2_(4),c3_(4),c4_(4),c5_(4),e0_(4),rho0_(4),vf(4),p0(4),pext,pres_0
76 my_real,intent(inout) :: tb(nel)
77 LOGICAL IS_IFORM12
78C-----------------------------------------------
79
80 iflg = nint(uparam(55))
81 iform = nint(uparam(31))
82
83 !need to initialize element buffer with initial density for this specific case.
84 is_iform12 = .false.
85 IF(iform == 12)THEN
86 uparam(31) = 1
87 uparam(55) = 1
88 iform = 1
89 iflg = 1
90 is_iform12 = .true.
91 ENDIF
92
93 !---------------------------------!
94 ! Test if only fluids are defined !
95 !---------------------------------!
96 gg1 = uparam(101)
97 gg2 = uparam(151)
98 gg3 = uparam(201)
99 isfluid = 0
100 IF (gg1 == zero .AND. gg2 == zero .AND. gg3 == zero) isfluid=1
101 IF (isfluid==1) THEN
102 iparg(15) = 1 ! FLAG REZONE SIG => KEPT TO 1 FOR BACKWARD COMPATIBILITY
103 iparg(16) = 1 ! FLAG REZONE EPS PLAST. => KEPT TO 1 FOR BACKWARD COMPATIBILITY
104 iparg(63) = 1 ! FLAG FOR FLUID MATERIAL
105 iparg(64) = 0 ! FLAG FOR SILENT BOUNDARY FORMULATION
106 ENDIF
107
108 !---------------------------------!
109 ! Test if NRF formulation !
110 !---------------------------------!
111 IF(iform == 2 .OR. iform == 3 .OR. iform == 4 .OR. iform==5 .OR. iform == 6) THEN
112 iparg(15) = 0 ! FLAG REZONE SIG
113 iparg(16) = 0 ! FLAG REZONE EPS PLAST.
114 iparg(63) = 1 ! FLAG FOR FLUID MATERIAL
115 iparg(64) = 1 ! FLAG FOR SILENT BOUNDARY FORMULATION
116 ENDIF
117
118 !---------------------------------!
119 ! Compute Burning Time !
120 !---------------------------------!
121 IF(iflg == 1 .AND. iparg(64) == 0)THEN !unplug for NRF
122 nph = 1
123 IF(n2d==0)THEN
124 CALL m5in3 (pm,mat,0,detonators,tb,iparg,x,ix,nix)
125 ELSE
126 CALL m5in2 (pm,mat,0,detonators,tb,x,ix,nix)
127 ENDIF
128 ENDIF
129
130 !C==========================================
131 !C USER VARIABLES INITIALIZATION T=0
132 !C==========================================
133 c0_(1:4) = (/uparam(35:37),uparam(49)/)
134 c1_(1:4) = (/uparam(12:14),uparam(50)/)
135 c2_(1:4) = (/uparam(15:17),zero/)
136 c3_(1:4) = (/uparam(18),uparam(20:21),zero/)
137 c4_(1:4) = (/uparam(22:24),zero/)
138 c5_(1:4) = (/uparam(25:27),zero/)
139 e0_(1:4) = (/uparam(32:34),uparam(48)/)
140 t0_(1:4) = (/uparam(113),uparam(163),uparam(213),uparam(263)/)
141 rho0_(1:4)= (/uparam(09:11),uparam(47)/)
142 vf(1:4) = (/uparam(04:06),uparam(46)/)
143 pext = uparam(8)
144 p0(1) = c0_(1)+c4_(1)*e0_(1)
145 p0(2) = c0_(2)+c4_(2)*e0_(2)
146 p0(3) = c0_(3)+c4_(3)*e0_(3)
147 p0(4) = c0_(4)
148
149 !===========================!
150 ! material IMAT : TIME=0 !
151 ! default : !
152 ! if no /INIGRAV option !
153 !===========================!
154 DO imat=1,4
155 DO i=1,nel
156 vold = gbuf%VOL(i)*vf(imat)
157 kk = m51_n0phas + (imat-1)*m51_nvphas
158 uvar(i,1+kk) = vf(imat)
159 uvar(i,2+kk) = zero
160 uvar(i,3+kk) = zero
161 uvar(i,4+kk) = zero
162 uvar(i,5+kk) = zero
163 uvar(i,6+kk) = zero
164 uvar(i,7+kk) = zero
165 uvar(i,8+kk) = e0_(imat) ! rho.e pour ACONVE
166 uvar(i,9+kk) = rho0_(imat) ! rho pour ACONVE
167 uvar(i,10+kk) = zero
168 uvar(i,11+kk) = vold
169 uvar(i,12+kk) = rho0_(imat) ! rho_old IN rho OUT
170 uvar(i,15+kk) = zero ! Eps plastique
171 uvar(i,16+kk) = t0_(imat) ! temperature
172 uvar(i,17+kk) = zero ! chaleur diffusee
173 uvar(i,18+kk) = c0_(imat)+c4_(imat)*e0_(imat)
174 uvar(i,19+kk) = zero
175 uvar(i,20+kk) = rho0_(imat) !rho0 initial state is element dependent and can be updated by /INIGRAV
176 uvar(i,21+kk) = e0_(imat) !E0
177 uvar(i,22+kk) = zero !SSP0 to introduce if needed
178 uvar(i,23+kk) = vf(imat) !alpha0
179 ENDDO
180 ENDDO
181 !particular case of submaterial 4 (burning time to initialize)
182 imat = 4
183 kk = m51_n0phas+(imat-1)*m51_nvphas
184 uvar(1:nel,15+kk) = uvar(1:nel,1) ! Tdet
185 !
186 DO i=1,nel
187 p0(1) = c0_(1)+c4_(1)*e0_(1)
188 p0(2) = c0_(2)+c4_(2)*e0_(2)
189 p0(3) = c0_(3)+c4_(3)*e0_(3)
190 p0(4) = c0_(4)
191 pres_0 = vf(1)*p0(1)+vf(2)*p0(2)+vf(3)*p0(3)+vf(4)*p0(4)
192 uvar(i,4) = pres_0
193 pm(31,mat(i)) = pres_0
194 pm(104,mat(i)) = pres_0
195 sig(i,1) = -pres_0
196 sig(i,2) = -pres_0
197 sig(i,3) = -pres_0
198 ENDDO
199
200 IF(is_iform12)THEN
201 DO i=1,nel
202 gbuf%RHO(i) = vf(1)*rho0_(1)+vf(2)*rho0_(2)+vf(3)*rho0_(3)+vf(4)*rho0_(4)
203 ENDDO
204 ENDIF
205
206 !---------------------------------!
207 ! IFORM 6 !
208 ! Initialize initial def param !
209 !---------------------------------!
210 IF(iform == 6) THEN
211 nv46 = 4
212 numel=numelq+numeltg
213 IF(n2d==0)THEN
214 nv46 = 6
215 numel=numels
216 ENDIF
217 CALL nrf51ini (
218 . ipm , pm , x , nix , ix,
219 . ale_connectivity , bufmat, uparam, rho0 ,
220 . uvar , nuvar , nel , gbuf%RHO, numel
221 . )
222 ENDIF
223C---
224 RETURN
225 END SUBROUTINE m51init
subroutine m51init(ipm, detonators, pm, tb, nuvar, uvar, uparam, x, mat, iparg, iform, ix, nix, ale_connectivity, bufmat, rho0, gbuf, nel, sig)
Definition m51init.F:40
subroutine m5in2(pm, mat, m151_id, detonators, tb, x, ix, nix)
Definition m5in2.F:40
subroutine m5in3(pm, mat, m151_id, detonators, tb, iparg, x, ix, nix)
Definition m5in3.F:39
subroutine nrf51ini(ipm, pm, x, nix, ix, ale_connectivity, bufmat, uparam, rho0, uvar, nuvar, nel, rho, numel)
Definition nrf51ini.F:36
program starter
Definition starter.F:39