OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
monvol0.F File Reference
#include "implicit_f.inc"
#include "param_c.inc"
#include "com01_c.inc"
#include "com04_c.inc"
#include "parit_c.inc"
#include "task_c.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine monvol0 (monvol, volmon, x, a, npc, tf, v, normal, fsav, nsensor, sensor_tab, igrsurf, fr_mv, iadmv, sicontact, sporo, fsky, icontact, poro, iparg, elbuf_tab, geo, igeo, pm, ipm, ipart, ipartc, iparttg, igroupc, igrouptg, fext, flag, h3d_data, t_monvol, frontier_global_mv, output, python)

Function/Subroutine Documentation

◆ monvol0()

subroutine monvol0 ( integer, dimension(*) monvol,
volmon,
x,
a,
integer, dimension(*) npc,
tf,
v,
normal,
fsav,
integer, intent(in) nsensor,
type (sensor_str_), dimension(nsensor), intent(in) sensor_tab,
type (surf_), dimension(nsurf) igrsurf,
integer, dimension(nspmd+2,nvolu) fr_mv,
integer, dimension(4,*) iadmv,
integer, intent(in) sicontact,
integer, intent(in) sporo,
fsky,
integer, dimension(sicontact) icontact,
poro,
integer, dimension(nparg,*) iparg,
type(elbuf_struct_), dimension(ngroup) elbuf_tab,
geo,
integer, dimension(npropgi,*) igeo,
pm,
integer, dimension(npropmi,*) ipm,
integer, dimension(*) ipart,
integer, dimension(*) ipartc,
integer, dimension(*) iparttg,
integer, dimension(*) igroupc,
integer, dimension(*) igrouptg,
fext,
integer flag,
type(h3d_database) h3d_data,
type(monvol_struct_), dimension(nvolu), intent(inout) t_monvol,
integer, dimension(nspmd+2), intent(in) frontier_global_mv,
type(output_), intent(inout) output,
type(python_), intent(in) python )
Parameters
[in]sicontactdimension if icontact
[in]sporodimension if poro
[in]frontier_global_mvglobal mpi frontier

Definition at line 51 of file monvol0.F.

61C-----------------------------------------------
62C M o d u l e s
63C-----------------------------------------------
64 USE python_funct_mod, only : python_
65 USE elbufdef_mod
66 USE h3d_mod
67 USE groupdef_mod
69 USE sensor_mod
70 use get_volume_area_mod , only : get_volume_area
71 use output_mod , only : output_
72C-----------------------------------------------
73C I m p l i c i t T y p e s
74C-----------------------------------------------
75#include "implicit_f.inc"
76C-----------------------------------------------
77C C o m m o n B l o c k s
78C-----------------------------------------------
79#include "param_c.inc"
80#include "com01_c.inc"
81#include "com04_c.inc"
82#include "parit_c.inc"
83#include "task_c.inc"
84C-----------------------------------------------
85C D u m m y A r g u m e n t s
86C-----------------------------------------------
87 INTEGER ,INTENT(IN) :: NSENSOR
88 INTEGER, INTENT(in) :: SICONTACT !< dimension if icontact
89 INTEGER, INTENT(in) :: SPORO !< dimension if poro
90 INTEGER NPC(*),MONVOL(*),FR_MV(NSPMD+2,NVOLU),IADMV(4,*),ICONTACT(SICONTACT),IPARG(NPARG,*),
91 . IGEO(NPROPGI,*),IPART(*),IPARTC(*), IPARTTG(*),IPM(NPROPMI,*),IGROUPC(*), IGROUPTG(*)
92 INTEGER FLAG ! 1 => Monvol, 2 => FVMBAG type 6 8
93 INTEGER, DIMENSION(NSPMD+2), INTENT(in) :: FRONTIER_GLOBAL_MV !< global mpi frontier
94 my_real x(3,*), a(3,*), tf(*), v(3,*), normal(3,*), poro(*),
95 . volmon(*),fsav(nthvki,*),fsky(*),geo(npropg,*),pm(npropm,*),fext(*)
96 TYPE(ELBUF_STRUCT_), DIMENSION(NGROUP) :: ELBUF_TAB
97 TYPE(H3D_DATABASE) :: H3D_DATA
98 TYPE (SURF_) , DIMENSION(NSURF) :: IGRSURF
99 TYPE(MONVOL_STRUCT_), DIMENSION(NVOLU), INTENT(INOUT) :: T_MONVOL
100 TYPE (SENSOR_STR_) ,DIMENSION(NSENSOR), INTENT(IN) :: SENSOR_TAB
101 TYPE(OUTPUT_),INTENT(INOUT) :: OUTPUT
102 TYPE(PYTHON_), INTENT(IN) :: PYTHON
103C-----------------------------------------------
104C N(3,*) NORMALE STOCKEE DANS WA
105C PORO(*) STOCKE DANS WA
106C-----------------------------------------------
107C L o c a l V a r i a b l e s
108C-----------------------------------------------
109 INTEGER I,ITYP,NCA,NN,IS,K1,K2,K6,KK1,KK2,PMAIN,KIBJET,KRBJET,KIBHOL,KRBHOL,NJET,IADJET,RADJET,NVENT,IADHOL,RADHOL
110 my_real, dimension(nvolu) :: vol
111 integer :: uid
112
113C
114 k1 = 1
115 kk1= 1
116 DO i=1,nvolu
117 ityp=monvol(k1+1)
118 IF(ityp==4.OR.ityp==5.OR.ityp==7.OR.ityp==9)THEN
119 volmon(kk1+31-1)=volmon(kk1+12-1)
120 ENDIF
121 k1 = k1 + nimv
122 kk1 = kk1 + nrvolu
123 ENDDO
124 ! ----------
125 ! compute the airbag's volume & area
126 if(flag==1) then
127 call get_volume_area(ispmd,nspmd,numelc,numeltg,
128 . nvolu,nsurf,intbag,sporo,
129 . numnod,sicontact,nimv,nrvolu,
130 . monvol,volmon,vol,x,
131 . normal,icontact,poro,fr_mv,
132 . frontier_global_mv, t_monvol,igrsurf )
133 endif
134 ! ----------
135
136 k1 = 1
137 k6 = 1
138 kk1 = 1
139 k2 = 1 + nimv*nvolu
140 kk2 = 1 + nrvolu * nvolu
141 kibjet = k2 + licbag
142 kibhol = kibjet + libagjet
143 krbjet = kk2 + lrcbag
144 krbhol = krbjet + lrbagjet
145
146 DO i=1,nvolu
147 uid = monvol(k1)
148 ityp = monvol(k1+1)
149 nca = monvol(k1+2)
150 is = monvol(k1+3)
151 nn = igrsurf(is)%NSEG
152
153 njet = monvol(k1 + 7)
154 iadjet= kibjet+monvol(k1+ 8)
155 radjet= krbjet+monvol(k1+ 9)
156 nvent = monvol(k1 +10)
157 iadhol= kibhol+monvol(k1+11)
158 radhol= krbhol+monvol(k1+12)
159 IF(fr_mv(ispmd+1,i)/=0 .OR. fr_mv(nspmd+2,i)==ispmd+1) THEN
160 pmain = fr_mv(nspmd+2,i)
161 ELSE
162C saut partie airbag si proc non concerne
163 GO TO 100
164 ENDIF
165 IF(ityp == 6 .OR. ityp == 8) GO TO 100
166C
167
168 IF(flag == 1 .AND. (ityp == 6 .OR. ityp == 8)) GOTO 100
169 IF(flag == 2 .AND. .NOT.(ityp == 6 .OR. ityp == 8)) GOTO 100
170
171 IF(ityp==1)THEN
172C=======================================================================
173C VOLUME OUTPUT
174C=======================================================================
175 CALL volout(volmon(kk1),vol(i),fsav(1,i),pmain)
176 ELSEIF(ityp==2)THEN
177C=======================================================================
178C VOLUME P=F(V)
179C=======================================================================
180 CALL volpfv(monvol(k1),volmon(kk1),vol(i),fsav(1,i),npc,
181 2 tf ,pmain , output%TH%WFEXT, python, nfunct)
182 ELSEIF(ityp==3)THEN
183C=======================================================================
184C GAS PARFAIT
185C=======================================================================
186 CALL volpvga(monvol(k1),volmon(kk1),vol(i),fsav(1,i),nvent ,
187 2 monvol(iadhol) ,volmon(radhol),pmain, output%TH%WFEXT )
188 ELSEIF(ityp==4.OR.ityp==5)THEN
189C=======================================================================
190C AIRBAGS
191C=======================================================================
192 CALL airbaga(monvol(k1),njet ,monvol(iadjet),nvent ,monvol(iadhol),
193 2 monvol(k2),volmon(kk1),volmon(radjet),volmon(radhol),volmon(kk2),
194 3 volmon ,npc ,tf ,nsensor ,sensor_tab ,
195 4 vol(i) ,pmain ,output%TH%WFEXT, python)
196 ELSEIF(ityp==7.OR.ityp==9)THEN
197C=======================================================================
198C AIRBAGS1 (NOUVEAUX INJECTEURS)
199C=======================================================================
200 CALL airbaga1(monvol(k1),njet ,monvol(iadjet),nvent ,monvol(iadhol),
201 2 monvol(k2),volmon(kk1),volmon(radjet),volmon(radhol),volmon(kk2),
202 3 volmon ,npc ,tf ,nsensor ,sensor_tab ,
203 4 vol(i) ,pmain ,geo ,igeo ,pm, output%TH%WFEXT,python)
204 ELSEIF(ityp==10)THEN
205C=======================================================================
206C LINEAIRE FLUIDE
207C=======================================================================
208 CALL volp_lfluid(monvol(k1),volmon(kk1),vol(i),fsav(1,i),npc,
209 2 tf ,pmain, output ,python,nfunct)
210 ENDIF
211C=======================================================================
212 IF(ityp/=1)THEN
213 IF (iparit==0) THEN
214 CALL volpre(monvol(k1),volmon(kk1),njet ,monvol(iadjet),volmon(radjet),
215 2 nsensor ,sensor_tab ,x ,v ,a ,
216 3 t_monvol(i)%normal ,npc ,tf ,nn ,igrsurf(is)%NODES,
217 4 fext ,h3d_data,igrsurf(is)%ELTYP,igrsurf(is)%ELEM, output%TH%WFEXT,python)
218 ELSE
219 CALL volprep(monvol(k1),volmon(kk1),njet ,monvol(iadjet),volmon(radjet),
220 2 nsensor ,sensor_tab ,x ,v ,a ,
221 3 t_monvol(i)%normal ,npc ,tf ,nn ,igrsurf(is)%NODES,
222 4 iadmv(1,k6),fsky ,fsky ,fext, h3d_data ,
223 5 igrsurf(is)%ELTYP,igrsurf(is)%ELEM,
224 5 t_monvol(i)%OMP_OUTPUT%NODE_NUMBER,t_monvol(i)%OMP_OUTPUT%TOTAL_CONTRIBUTION_NUMBER,
225 6 t_monvol(i)%OMP_OUTPUT%CONTRIBUTION_INDEX,t_monvol(i)%OMP_OUTPUT%CONTRIBUTION_NUMBER,
226 7 t_monvol(i)%OMP_OUTPUT%NODE_ID,t_monvol(i)%OMP_OUTPUT%CONTRIBUTION,output%TH%WFEXT,python)
227 ENDIF
228 ENDIF
229 t_monvol(i)%UID = uid ! store the uid of the monitored volume
230 t_monvol(i)%volume = vol(i)
231 t_monvol(i)%pressure = volmon(kk1+12-1)
232 t_monvol(i)%temperature = volmon(kk1+13-1)
233 t_monvol(i)%area = volmon(kk1+18-1)
234
235 100 CONTINUE
236c CALL SPMD_BARRIER()
237 k1 = k1 + nimv
238 kk1= kk1 + nrvolu
239 k2 = k2 + nicbag*nca
240 kk2= kk2 + nrcbag*nca
241 k6 = k6 + nn
242
243 ENDDO
244C
245C=======================================================================
246 k1 = 1
247 k2 = 1 + nimv * nvolu
248 kk1 = 1
249 kk2 = 1 + nrvolu * nvolu
250 DO i=1,nvolu
251 ityp = monvol(k1+1)
252 is = monvol(k1+3)
253 nca = monvol(k1+2)
254 nn = igrsurf(is)%NSEG
255 njet = monvol(k1+7)
256 iadjet=kibjet+monvol(k1+ 8)
257 radjet=krbjet+monvol(k1+ 9)
258 nvent =monvol(k1 +10)
259 iadhol=kibhol+monvol(k1+11)
260 radhol=krbhol+monvol(k1+12)
261 IF(fr_mv(ispmd+1,i)==0.AND.nca==0) THEN
262 GO TO 200
263 ENDIF
264 IF(flag == 1 .AND. (ityp == 6 .OR. ityp == 8)) GOTO 200
265 IF(flag == 2 .AND. .NOT.(ityp == 6 .OR. ityp == 8)) GOTO 200
266
267C=======================================================================
268C PERFECT GAS
269C=======================================================================
270 IF(ityp==3)THEN
271 CALL volpvgb(
272 1 monvol(k1) ,volmon(kk1) ,vol(i) ,fsav(1,i) ,nvent ,
273 2 monvol(iadhol),volmon(radhol),normal,nn ,igrsurf,
274 3 iparg ,elbuf_tab,fr_mv(1,i), igroupc, igrouptg)
275C=======================================================================
276C AIRBAGS
277C=======================================================================
278 ELSEIF(ityp==4.OR.ityp==5.OR.ityp==7.OR.ityp==9)THEN
279 IF(nca>0.AND.nspmd>1) THEN
280 CALL spmd_mv_ca(
281 1 fr_mv ,i ,nca,volmon(kk1),volmon,
282 2 monvol(k2),njet ,monvol ,volmon(krbjet),1,ityp,100 )
283 IF(fr_mv(ispmd+1,i)==0) GOTO 150
284 END IF
285C=======================================================================
286C AIRBAGS /AIRBAG1 /COMMU1
287C=======================================================================
288 IF (ityp==7.OR.ityp==9) THEN
289 CALL airbagb1(monvol(k1),monvol(k2),njet ,monvol(iadjet),nvent,
290 2 monvol(iadhol),volmon(kk1),volmon ,volmon(kk2),volmon(radjet),
291 3 volmon(radhol),fsav(1,i) ,normal ,nn ,
292 4 igrsurf ,poro ,monvol ,volmon(krbjet),
293 5 fr_mv(1,i) ,iparg ,ipart ,ipartc ,iparttg,
294 6 ipm ,pm ,elbuf_tab,igroupc ,igrouptg,
295 7 igeo ,geo )
296 ELSE
297C=======================================================================
298C AIRBAGS /AIRBAG /COMMU
299C=======================================================================
300 CALL airbagb(monvol(k1),monvol(k2),njet ,monvol(iadjet),nvent,
301 2 monvol(iadhol),volmon(kk1),volmon ,volmon(kk2),volmon(radjet),
302 3 volmon(radhol),fsav(1,i) ,normal ,nn ,
303 4 igrsurf ,poro ,monvol ,volmon(krbjet),
304 5 fr_mv(1,i))
305 END IF
306C
307 150 CONTINUE
308 IF(nca>0.AND.nspmd>1) THEN
309 CALL spmd_mv_ca(
310 1 fr_mv ,i ,nca,volmon(kk1),volmon,
311 2 monvol(k2),njet ,monvol ,volmon(krbjet),2,ityp,100)
312 END IF
313 ENDIF
314 200 CONTINUE
315 k1 = k1 + nimv
316 k2 = k2 + nicbag * nca
317 kk1 = kk1 + nrvolu
318 kk2 = kk2 + nrcbag * nca
319 ENDDO
320 RETURN
subroutine airbaga(ivolu, njet, ibagjet, nvent, ibaghol, icbag, rvolu, rbagjet, rbaghol, rcbag, rvoluv, npc, tf, nsensor, sensor_tab, vol, pmain, wfext, python)
Definition airbag1.F:36
subroutine airbagb(ivolu, icbag, njet, ibagjet, nvent, ibaghol, rvolu, rvoluv, rcbag, rbagjet, rbaghol, fsav, normal, nn, igrsurf, poro, ivoluv, rbagvjet, fr_mv)
Definition airbag2.F:40
subroutine airbaga1(ivolu, njet, ibagjet, nvent, ibaghol, icbag, rvolu, rbagjet, rbaghol, rcbag, rvoluv, npc, tf, nsensor, sensor_tab, vol, pmain, geo, igeo, pm, wfext, python)
Definition airbaga1.F:37
subroutine airbagb1(ivolu, icbag, njet, ibagjet, nvent, ibaghol, rvolu, rvoluv, rcbag, rbagjet, rbaghol, fsav, normal, nn, igrsurf, poro, ivoluv, rbagvjet, fr_mv, iparg, ipart, ipartc, iparttg, ipm, pm, elbuf_tab, igroupc, igrouptg, igeo, geo)
Definition airbagb1.F:46
#define my_real
Definition cppsort.cpp:32
subroutine poro(geo, nodpor, ms, x, v, w, af, am, skew, weight, nporgeo)
Definition poro.F:40
subroutine spmd_mv_ca(fr_mv, iv, nav, rvolu, rvoluv, icbag, njet, ivoluv, rbagvjet, iflag, ityp, ngases)
Definition spmd_mv_ca.F:35
subroutine volout(rvolu, vol, fsav, pmain)
Definition volout.F:29
subroutine volp_lfluid(ivolu, rvolu, vol, fsav, npc, tf, pmain, output, python, nfunct)
Definition volp_lfluid.F:33
subroutine volpfv(ivolu, rvolu, vol, fsav, npc, tf, pmain, wfext, python, nfunct)
Definition volpfv.F:33
subroutine volpre(ivolu, rvolu, njet, ibagjet, rbagjet, nsensor, sensor_tab, x, v, a, normal, npc, tf, nn, surf_nodes, fext, h3d_data, surf_eltyp, surf_elem, wfext, python)
Definition volpres.F:37
subroutine volprep(ivolu, rvolu, njet, ibagjet, rbagjet, nsensor, sensor_tab, x, v, a, normal, npc, tf, nn, surf_nodes, iadmv, fsky, fskyv, fext, h3d_data, surf_eltyp, surf_elem, node_number, total_contribution_number, contribution_index, contribution_number, node_id, contribution, wfext, python)
Definition volpresp.F:40
subroutine volpvga(ivolu, rvolu, vol, fsav, nvent, ibaghol, rbaghol, pmain, wfext)
Definition volpvg.F:31
subroutine volpvgb(ivolu, rvolu, vol, fsav, nvent, ibaghol, rbaghol, normal, nn, igrsurf, iparg, elbuf_tab, fr_mv, igroupc, igrouptg)
Definition volpvg.F:208