OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
airbag2.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!|| airbagb ../engine/source/airbag/airbag2.F
25!||--- called by ------------------------------------------------------
26!|| monvol0 ../engine/source/airbag/monvol0.F
27!||--- calls -----------------------------------------------------
28!|| get_u_func ../engine/source/user_interface/ufunc.F
29!|| spmd_exch_fr6 ../engine/source/mpi/kinematic_conditions/spmd_exch_fr6.F
30!|| sum_6_float ../engine/source/system/parit.f
31!||--- uses -----------------------------------------------------
32!|| groupdef_mod ../common_source/modules/groupdef_mod.F
33!||====================================================================
34 SUBROUTINE airbagb(
35 1 IVOLU ,ICBAG ,NJET ,IBAGJET ,NVENT ,
36 2 IBAGHOL ,RVOLU ,RVOLUV ,RCBAG ,RBAGJET ,
37 3 RBAGHOL ,FSAV ,NORMAL ,NN ,
38 4 IGRSURF ,PORO ,IVOLUV ,RBAGVJET,
39 4 FR_MV )
40C-----------------------------------------------
41C M o d u l e s
42C-----------------------------------------------
43 USE groupdef_mod
44C-----------------------------------------------
45C STRUCTURES AIRBAG, INPUT STARTER 4.4
46C-----------------------------------------------
47C I m p l i c i t T y p e s
48C-----------------------------------------------
49#include "implicit_f.inc"
50C-----------------------------------------------
51C C o m m o n B l o c k s
52C-----------------------------------------------
53#include "param_c.inc"
54#include "units_c.inc"
55#include "com01_c.inc"
56#include "com04_c.inc"
57#include "com08_c.inc"
58#include "task_c.inc"
59C-----------------------------------------------
60C D u m m y A r g u m e n t s
61C-----------------------------------------------
62 INTEGER IVOLU(*),ICBAG(NICBAG,*),NJET,IBAGJET(NIBJET,*),
63 . NVENT,IBAGHOL(NIBHOL,*),
64 . NN,IVOLUV(NIMV,*),FR_MV(*)
65C REAL
66 my_real
67 . rvolu(*), rvoluv(nrvolu,*),rcbag(nrcbag,*),poro(*),
68 . rbagjet(nrbjet,*),rbaghol(nrbhol,*),fsav(*),normal(3,*),rbagvjet(*)
69 TYPE (SURF_) , DIMENSION(NSURF) :: IGRSURF
70C-----------------------------------------------
71C L o c a l V a r i a b l e s
72C-----------------------------------------------
73 INTEGER I,II, NAV, K, IDEF, KK, IPVENT, NNC, IAD,
74 . iport,iporp,ipora,iport1,iporp1,ipora1,ivdp,
75 . ij ,iv, radvois,pmain,
76 . in1,in2,in3,in4,ittf,idtpdef
77C REAL
78 my_real
79 . gama, cv, cp, pext, pdef, dtpdefi, dtpdefc, tvent, tstope,
80 . apvent, avent, bvent,
81 . amtot, p, ro, vol, hspec,
82 . gmtot, cpa, cpb, cpc, gmi, cpai, cpbi, cpci, tbag,
83 . u, deout, dmout, area, pcrit, pvois, tvois, aa, veps,
84 . aout, aout1, aoutot, flout, de, vvois,
85 . dgeout, dgmout, rnm, rmwi, rnmi, rmwg, rnmg,
86 . deri, temp(4),aisent,achemk,fchemk,vmax,
87 . fport,fporp,fpora,fport1,fporp1,fpora1,scalt,scalp,scals,
88 . fvdp, roex, uisent,tt1,
89 . f1(nn), f2(nn),ttf
90 my_real get_u_func
91 EXTERNAL get_u_func
92 DOUBLE PRECISION
93 . FRMV6(2,6), FRMV6B(6)
94C-----------------------------------------------
95 pmain = fr_mv(nspmd+2)
96 nav = ivolu(3)
97 ittf = ivolu(17)
98 ttf =rvolu(60)
99 gama =rvolu(1)
100 pext =rvolu(3)
101 vol =rvolu(16)
102 veps =rvolu(17)
103 tbag =rvolu(13)
104 amtot =rvolu(20)
105 p =rvolu(12)
106 area =rvolu(18)
107 scalt =rvolu(26)
108 scalp =rvolu(27)
109 scals =rvolu(28)
110C
111 ro = amtot/vol
112 pcrit = p*(two/(gama+one))**(gama/(gama-one))
113C
114C contribution du gaz a l'initial.
115 cpai=rvolu(7)
116 cpbi=rvolu(8)
117 cpci=rvolu(9)
118 gmi =rvolu(11)
119 hspec=gmi*tbag*(cpai+half*cpbi*tbag+third*cpci*tbag*tbag)
120C
121 DO ij=1,njet
122 cpa = rbagjet(2,ij)
123 cpb = rbagjet(3,ij)
124 cpc = rbagjet(4,ij)
125 gmtot= rbagjet(8,ij)
126 hspec=hspec+gmtot*tbag*(cpa+half*cpb*tbag+ third*cpc*tbag*tbag)
127 ENDDO
128 hspec=hspec/max(em20,amtot)
129C--------------------------------
130C outgoing flux through the holes
131C--------------------------------
132 aisent=zero
133 achemk=zero
134 fchemk=zero
135 DO iv=1,nvent
136 idef = ibaghol(1,iv)
137 ipvent = ibaghol(2,iv)
138 idtpdef =ibaghol(11,iv)
139C
140 pdef = rbaghol(1,iv)
141 dtpdefi= rbaghol(4,iv)
142 dtpdefc= rbaghol(5,iv)
143 avent = rbaghol(2,iv)
144 tvent = rbaghol(3,iv)
145 bvent = rbaghol(6,iv)
146 tstope = rbaghol(14,iv)
147 rbaghol(16,iv)=zero
148 rbaghol(17,iv)=zero
149 rbaghol(18,iv)=zero
150 rbaghol(21,iv)=zero
151 rbaghol(22,iv)=zero
152C
153 IF(ittf==11.OR.ittf==12.OR.ittf==13) THEN
154 IF(idef==0.AND.p>pdef+pext.
155 . and.dtpdefc>dtpdefi.
156 . and.vol>em3*area**three_half.
157 . and.tt<tstope+ttf
158 . .AND.idtpdef==0) THEN
159 idef=1
160 IF(ispmd+1==pmain) THEN
161 WRITE(iout,*)' *** AIRBAG VENT HOLES MEMBRANE IS DEFLATED ***'
162 WRITE(iout,*)' *** MONITORED VOLUME ',ivolu(1),
163 . ' VENT HOLES MEMBRANE NUMBER ',iv,' ***'
164 WRITE(istdo,*)' *** VENT HOLES MEMBRANE IS DEFLATED ***'
165 ENDIF
166 ENDIF
167 IF(idef==0.AND.dtpdefc>dtpdefi.
168 . and.tt<tstope+ttf
169 . .AND.idtpdef==1) THEN
170 idef=1
171 WRITE(iout,*)' *** AIRBAG VENT HOLES MEMBRANE IS DEFLATED ***'
172 WRITE(iout,*)' *** MONITORED VOLUME ',ivolu(1),
173 . ' VENT HOLES MEMBRANE NUMBER ',iv,' ***'
174 WRITE(istdo,*)' *** VENT HOLES MEMBRANE IS DEFLATED ***'
175 ENDIF
176 IF(idef==0 .AND. tt>tvent+ttf
177 . .AND. tt<tstope+ttf) THEN
178 idef=1
179 IF(ispmd+1==pmain) THEN
180 WRITE(iout,*) ' *** AIRBAG VENTING STARTS ***'
181 WRITE(iout,*) ' *** MONITORED VOLUME ',ivolu(1),
182 . ' VENT HOLES MEMBRANE NUMBER ',iv,' ***'
183 WRITE(istdo,*)' *** VENTING STARTS ***'
184 ENDIF
185 ENDIF
186 IF(idef==1 .AND. tt>=tstope+ttf) THEN
187 idef=0
188 IF(ispmd+1==pmain) THEN
189 WRITE(iout,*) ' *** AIRBAG VENTING STOPS ***'
190 WRITE(iout,*) ' *** MONITORED VOLUME ',ivolu(1),
191 . ' VENT HOLES MEMBRANE NUMBER ',iv,' ***'
192 WRITE(istdo,*)' *** VENTING STOPS ***'
193 END IF
194 END IF
195 ELSE IF(ittf==0) THEN
196 IF(idef==0.AND.p>pdef+pext.
197 . and.dtpdefc>dtpdefi.
198 . and.vol>em3*area**three_half.
199 . and.tt<tstope
200 . .AND.idtpdef==0) THEN
201 idef=1
202 IF(ispmd+1==pmain) THEN
203 WRITE(iout,*)' *** AIRBAG VENT HOLES MEMBRANE IS DEFLATED ***'
204 WRITE(iout,*)' *** MONITORED VOLUME ',ivolu(1),
205 . ' VENT HOLES MEMBRANE NUMBER ',iv,' ***'
206 WRITE(istdo,*)' *** vent holes membrane is deflated ***'
207 ENDIF
208 ENDIF
209.AND. IF(IDEF==0DTPDEFC>DTPDEFI.
210 . AND.TT<TSTOPE
211.AND. . IDTPDEF==1) THEN
212 IDEF=1
213 WRITE(IOUT,*)' *** airbag vent holes membrane is deflated ***'
214 WRITE(IOUT,*)' *** monitored volume ',IVOLU(1),
215 . ' vent holes membrane number ',IV,' ***'
216 WRITE(ISTDO,*)' *** vent holes membrane is deflated ***'
217 ENDIF
218.AND. IF(IDEF==0 TT>TVENT
219.AND. . TT<TSTOPE) THEN
220 IDEF=1
221 IF(ISPMD+1==PMAIN) THEN
222 WRITE(IOUT,*) ' *** airbag venting starts ***'
223 WRITE(IOUT,*) ' *** monitored volume ',IVOLU(1),
224 . ' vent holes membrane number ',IV,' ***'
225 WRITE(ISTDO,*)' *** venting starts ***'
226 ENDIF
227 ENDIF
228.AND. IF(IDEF==1 TT>=TSTOPE) THEN
229 IDEF=0
230 IF(ISPMD+1==PMAIN) THEN
231 WRITE(IOUT,*) ' *** airbag venting stops ***'
232 WRITE(IOUT,*) ' *** monitored volume ',IVOLU(1),
233 . ' vent holes membrane number ',IV,' ***'
234 WRITE(ISTDO,*)' *** venting stops ***'
235 END IF
236 END IF
237 END IF
238C
239 IF(IPVENT/=0)THEN
240 IF(INTBAG==0)THEN
241 NNC=IGRSURF(IPVENT)%NSEG
242 DO KK=1,NNC
243 IF(IGRSURF(IPVENT)%ELTYP(KK)==3)THEN
244 K=IGRSURF(IPVENT)%ELEM(KK)
245 ELSEIF(IGRSURF(IPVENT)%ELTYP(KK)==7)THEN
246 K=IGRSURF(IPVENT)%ELEM(KK) + NUMELC
247 ELSE
248 K=IGRSURF(IPVENT)%ELEM(KK) + NUMELC + NUMELTG
249 ENDIF
250 F1(KK) = SQRT( NORMAL(1,K)**2+NORMAL(2,K)**2+NORMAL(3,K)**2 )
251 F2(KK) = ZERO
252 ENDDO
253 ELSE
254 NNC=IGRSURF(IPVENT)%NSEG
255 DO KK=1,NNC
256 IF(IGRSURF(IPVENT)%ELTYP(KK)==3)THEN
257 K=IGRSURF(IPVENT)%ELEM(KK)
258 ELSEIF(IGRSURF(IPVENT)%ELTYP(KK)==7)THEN
259 K=IGRSURF(IPVENT)%ELEM(KK) + NUMELC
260 ELSE
261 K=IGRSURF(IPVENT)%ELEM(KK) + NUMELC + NUMELTG
262 ENDIF
263 AA = SQRT( NORMAL(1,K)**2+NORMAL(2,K)**2+NORMAL(3,K)**2 )
264 F1(KK) = (ONE - PORO(K))*AA
265 F2(KK) = PORO(K)*AA
266 ENDDO
267 ENDIF
268C
269C somme parith/on
270C
271 DO K = 1, 6
272 FRMV6(1,K) = ZERO
273 FRMV6(2,K) = ZERO
274 END DO
275 CALL SUM_6_FLOAT(1, NNC, F1, FRMV6(1,1),2)
276 CALL SUM_6_FLOAT(1, NNC, F2, FRMV6(2,1),2)
277C comm si necessaire
278 IF(NSPMD > 1) THEN
279 CALL SPMD_EXCH_FR6(FR_MV,FRMV6,2*6)
280 ENDIF
281C
282 AOUT = FRMV6(1,1)+FRMV6(1,2)+FRMV6(1,3)+
283 . FRMV6(1,4)+FRMV6(1,5)+FRMV6(1,6)
284 AOUT1 = FRMV6(2,1)+FRMV6(2,2)+FRMV6(2,3)+
285 . FRMV6(2,4)+FRMV6(2,5)+FRMV6(2,6)
286 ELSE
287 AOUT =AVENT
288 AVENT=ONE
289 AOUT1=ZERO
290 ENDIF
291C
292.AND. IF(IDEF==1 P>PEXT.
293 . AND.VOL>EM3*AREA**THREE_HALF)THEN
294 IPORT =IBAGHOL(3,IV)
295 IPORP =IBAGHOL(4,IV)
296 IPORA =IBAGHOL(5,IV)
297 IPORT1=IBAGHOL(6,IV)
298 IPORP1=IBAGHOL(7,IV)
299 IPORA1=IBAGHOL(8,IV)
300 FPORT = RBAGHOL(7,IV)
301 FPORP = RBAGHOL(8,IV)
302 FPORA = RBAGHOL(9,IV)
303 FPORT1= RBAGHOL(10,IV)
304 FPORP1= RBAGHOL(11,IV)
305 FPORA1= RBAGHOL(12,IV)
306.AND. IF(IPORA/=0IPVENT/=0)THEN
307 AOUT=FPORA*AVENT*GET_U_FUNC(IPORA,AOUT*SCALS,DERI)
308 ELSE
309 AOUT=AVENT*AOUT
310 ENDIF
311 TT1=TT
312 IF (ITTF==12) TT1=TT-TTF
313 IF (ITTF==13) TT1=TT-TTF-TVENT
314 IF(IPORT/=0)AOUT=FPORT*AOUT*
315 . GET_U_FUNC(IPORT,TT1*SCALT,DERI)
316 IF(IPORP/=0)AOUT=FPORP*AOUT*
317 . GET_U_FUNC(IPORP,(P-PEXT)*SCALP,DERI)
318.AND. IF(IPORA1/=0IPVENT/=0)THEN
319 AOUT1=FPORA*BVENT*GET_U_FUNC(IPORA1,AOUT1*SCALS,DERI)
320 ELSE
321 AOUT1=BVENT*AOUT1
322 ENDIF
323 IF(IPORT1/=0)AOUT1=FPORT*AOUT1*
324 . GET_U_FUNC(IPORT1,TT1*SCALT,DERI)
325 IF(IPORP1/=0)AOUT1=FPORP*AOUT1*
326 . GET_U_FUNC(IPORP1,(P-PEXT)*SCALP,DERI)
327 IF(ISPMD+1==PMAIN) THEN
328 RBAGHOL(16,IV)=AOUT
329 RBAGHOL(17,IV)=AOUT1
330 END IF
331 IVDP=IBAGHOL(9,IV)
332 IF(IVDP==0)THEN
333 AISENT=AISENT+AOUT+AOUT1
334 ELSE
335 ACHEMK=ACHEMK+AOUT+AOUT1
336 FVDP=RBAGHOL(13,IV)
337 U=FVDP*GET_U_FUNC(IVDP,(P-PEXT)*SCALP,DERI)
338 FCHEMK= FCHEMK+(AOUT+AOUT1)*U
339 IF(ISPMD+1==PMAIN) RBAGHOL(18,IV)=U
340 ENDIF
341 ENDIF
342 IBAGHOL(1,IV)=IDEF
343 ENDDO
344C-------
345 AOUTOT=AISENT+ACHEMK
346 UISENT=ZERO
347 FLOUT =ZERO
348 DMOUT =ZERO
349 IF(AOUTOT>ZERO)THEN
350 ROEX =RO*(PEXT/P)**(ONE/GAMA)
351 VMAX =HALF*(P-PEXT)*VOL/(GAMA-ONE)
352 . /MAX(EM20,HSPEC*(ROEX*AISENT+RO*ACHEMK)*DT1)
353 VMAX =MIN(VMAX,HALF*VOL/MAX(EM20,AOUTOT*DT1))
354C
355 IF(AISENT>ZERO)THEN
356 PEXT = MAX(PEXT,PCRIT)
357 ROEX =RO*(PEXT/P)**(ONE/GAMA)
358 UISENT=TWO*GAMA/(GAMA-ONE)*P/RO*(ONE-(PEXT/P)**((GAMA-ONE)/GAMA))
359 UISENT=MAX(UISENT,ZERO)
360 UISENT=SQRT(UISENT)
361 UISENT=MIN(UISENT,VMAX)
362 FLOUT=AISENT*UISENT
363 DMOUT=FLOUT*ROEX
364 ENDIF
365C
366 IF(ACHEMK>ZERO)THEN
367 FCHEMK=MIN(FCHEMK,VMAX*ACHEMK)
368 FLOUT =FLOUT +FCHEMK
369 DMOUT =DMOUT +RO*FCHEMK
370 ENDIF
371 IF(ISPMD+1==PMAIN)THEN
372 DO IV=1,NVENT
373 IDEF=IBAGHOL(1,IV)
374 IVDP=IBAGHOL(9,IV)
375 IF(IDEF==1)THEN
376 IF(IVDP==0)THEN
377 RBAGHOL(18,IV)=UISENT
378 RBAGHOL(21,IV)= ROEX*UISENT
379 . *(RBAGHOL(16,IV)+RBAGHOL(17,IV))
380 RBAGHOL(22,IV)=RBAGHOL(21,IV)*HSPEC
381 ELSE
382 RBAGHOL(18,IV)=MIN(RBAGHOL(18,IV),VMAX)
383 RBAGHOL(21,IV)= RO*RBAGHOL(18,IV)
384 . *(RBAGHOL(16,IV)+RBAGHOL(17,IV))
385 RBAGHOL(22,IV)=RBAGHOL(21,IV)*HSPEC
386 END IF
387 END IF
388 END DO
389 END IF
390 ENDIF
391C---------------------------------------------
392 RNM =RVOLU(14)
393 CV =RNM/AMTOT/(GAMA-ONE)
394 CP =GAMA*CV
395 IF(ISPMD+1==PMAIN) THEN
396 FSAV(1) =AMTOT
397 FSAV(2) =VOL
398 FSAV(3) =P
399 FSAV(4) =AREA
400 FSAV(5) =TBAG
401 FSAV(6) =AOUTOT
402 FSAV(7) =FLOUT/MAX(EM20,AOUTOT)
403 FSAV(8)=ZERO
404 FSAV(9)=ZERO
405 FSAV(10)=CP
406 FSAV(11)=CV
407 FSAV(12)=GAMA
408 FSAV(15)=ZERO
409 DO IJ=1,NJET
410 FSAV(15)=FSAV(15)+RBAGJET(7,IJ)
411 ENDDO
412 ENDIF
413C---------------------------------------------
414C mass and work by gas
415C---------------------------------------------
416 RMWI=RVOLU(10)
417 RNMI=GMI*RMWI
418C VOLG/VOL=fraction molaire=RNMG/RNM
419 DGMOUT=RNMI/MAX(EM20,RNM)*DMOUT
420 DGEOUT=DGMOUT*TBAG*(CPAI+HALF*CPBI*TBAG+THIRD*CPCI*TBAG*TBAG)
421 RVOLU(22)=RVOLU(22) + DGEOUT
422 RVOLU(24)=RVOLU(24) + DGMOUT
423C------
424 DO IJ=1,NJET
425 CPA = RBAGJET(2,IJ)
426 CPB = RBAGJET(3,IJ)
427 CPC = RBAGJET(4,IJ)
428 GMTOT =RBAGJET(8,IJ)
429 RMWG =RBAGJET(1,IJ)
430 RNMG =GMTOT*RMWG
431 DGMOUT=RNMG/MAX(EM20,RNM)*DMOUT
432 DGEOUT=DGMOUT*TBAG*(CPA+HALF*CPB*TBAG+THIRD*CPC*TBAG*TBAG)
433 RBAGJET( 9,IJ)=RBAGJET( 9,IJ)+DGMOUT
434 RBAGJET(10,IJ)=RBAGJET(10,IJ)+DGEOUT
435 ENDDO
436C---------------------------------------------
437C AIRBAG COMMUNIQUANTS
438C---------------------------------------------
439 DO I=1,NAV
440 II = ICBAG(1,I)
441 IPVENT = ICBAG(2,I)
442 IDEF = ICBAG(3,I)
443 IPORT = ICBAG(4,I)
444 IPORP = ICBAG(5,I)
445 PDEF = RCBAG(1,I)
446 AVENT = RCBAG(2,I)
447 TVENT = RCBAG(3,I)
448 DTPDEFI= RCBAG(4,I)
449 DTPDEFC= RCBAG(5,I)
450 FPORT = RCBAG(6,I)
451 FPORP = RCBAG(7,I)
452 PVOIS=RVOLUV(12,II)
453 VVOIS=RVOLUV(16,II)
454.OR..OR..OR. IF(ITTF==0ITTF==11ITTF==12ITTF==13)THEN
455.AND. IF(IDEF==0P>PDEF+PVOIS
456.AND. . DTPDEFC>DTPDEFI
457.AND. . VOL>EM3*AREA**THREE_HALF)THEN
458 IDEF=1
459 IF(ISPMD+1==PMAIN) THEN
460 WRITE(IOUT,*)
461 . ' *** chamber vent holes membrane is deflated ***'
462 WRITE(IOUT,*)
463 . ' *** monitored volume ',IVOLU(1),' ***'
464 WRITE(ISTDO,*)
465 . ' *** chamber vent holes membrane is deflated ***'
466 ENDIF
467 ENDIF
468.AND. IF(IDEF==0 TT>TVENT+TTF) THEN
469 IDEF=1
470 IF(ISPMD+1==PMAIN) THEN
471 WRITE(IOUT,*) ' *** chamber communication starts ***'
472 WRITE(IOUT,*) ' *** monitored volume ',IVOLU(1),' ***'
473 WRITE(ISTDO,*)' *** communication starts ***'
474 ENDIF
475 ENDIF
476 ENDIF
477C
478 IF(IPVENT/=0)THEN
479 NNC=IGRSURF(IPVENT)%NSEG
480 DO KK=1,NNC
481 IF(IGRSURF(IPVENT)%ELTYP(KK)==3)THEN
482 K=IGRSURF(IPVENT)%ELEM(KK)
483 ELSEIF(IGRSURF(IPVENT)%ELTYP(KK)==7)THEN
484 K=IGRSURF(IPVENT)%ELEM(KK) + NUMELC
485 ELSE
486 K=IGRSURF(IPVENT)%ELEM(KK) + NUMELC + NUMELTG
487 ENDIF
488 F1(KK) = SQRT( NORMAL(1,K)**2+NORMAL(2,K)**2+NORMAL(3,K)**2 )
489 ENDDO
490C
491C Sommation p/on
492C
493 DO K = 1, 6
494 FRMV6B(K) = ZERO
495 END DO
496 CALL SUM_6_FLOAT(1, NNC, F1, FRMV6B, 1)
497C comm si necessaire
498 IF(NSPMD > 1) THEN
499 CALL SPMD_EXCH_FR6(FR_MV,FRMV6B,6)
500 ENDIF
501 APVENT = FRMV6B(1)+FRMV6B(2)+FRMV6B(3)+
502 . FRMV6B(4)+FRMV6B(5)+FRMV6B(6)
503 ELSE
504 APVENT = ONE
505 ENDIF
506C
507 AOUT=AVENT*APVENT
508C
509.AND. IF(IDEF==1 P>PVOIS.
510 . AND.VOL>EM3*AREA**THREE_HALF)THEN
511 PVOIS = MAX(PVOIS,PCRIT)
512 U=TWO*GAMA/(GAMA-ONE)*P/RO*(ONE-(PVOIS/P)**((GAMA-ONE)/GAMA))
513 U=SQRT(U)
514 U=MIN(U,HALF*VOL/MAX(EM20,AOUT*DT1))
515 DE=RO*(PVOIS/P)**(ONE/GAMA)*HSPEC
516 U=MIN(U,(P-PVOIS)*HALF*MIN(VOL,VVOIS)
517 . /(GAMA-ONE)/DE/MAX(EM20,AOUT*DT1))
518 FLOUT=AOUT*U
519 DMOUT=FLOUT*RO*(PVOIS/P)**(ONE/GAMA)
520 ELSE
521 DMOUT=ZERO
522 FLOUT=ZERO
523 ENDIF
524 ICBAG(3,I) = IDEF
525C---------------------------------------------
526C mass and work by gas
527C---------------------------------------------
528C VOLG/VOL=fraction molaire=RNMG/RNM
529 DGMOUT=RNMI/MAX(EM20,RNM)*DMOUT
530 DGEOUT=DGMOUT*TBAG*(CPAI+HALF*CPBI*TBAG+THIRD*CPCI*TBAG*TBAG)
531C OUT
532 RVOLU(22)=RVOLU(22) + DGEOUT
533 RVOLU(24)=RVOLU(24) + DGMOUT
534C IN
535 RVOLUV(22,II)=RVOLUV(22,II) - DGEOUT
536 RVOLUV(24,II)=RVOLUV(24,II) - DGMOUT
537C------
538 RADVOIS= IVOLUV(10,II)
539 DO IJ=1,NJET
540 GMTOT =RBAGJET(8,IJ)
541 RMWG =RBAGJET(1,IJ)
542 RNMG =GMTOT*RMWG
543 DGMOUT=RNMG/MAX(EM20,RNM)*DMOUT
544 CPA = RBAGJET(2,IJ)
545 CPB = RBAGJET(3,IJ)
546 CPC = RBAGJET(4,IJ)
547 DGEOUT=DGMOUT*TBAG*(CPA+HALF*CPB*TBAG+THIRD*CPC*TBAG*TBAG)
548C OUT
549 RBAGJET(9,IJ)=
550 . RBAGJET(9,IJ)+DGMOUT
551 RBAGJET(10,IJ)=
552 . RBAGJET(10,IJ)+DGEOUT
553C IN
554 RBAGVJET(RADVOIS+NRBJET*(IJ-1)+9)=
555 . RBAGVJET(RADVOIS+NRBJET*(IJ-1)+9)-DGMOUT
556 RBAGVJET(RADVOIS+NRBJET*(IJ-1)+10)=
557 . RBAGVJET(RADVOIS+NRBJET*(IJ-1)+10)-DGEOUT
558C
559 ENDDO
560 IF(ISPMD+1==PMAIN) THEN
561 FSAV(8)=FSAV(8)+AOUT
562 FSAV(9)=FSAV(9)+FLOUT
563 ENDIF
564 ENDDO
565 IF(ISPMD+1==PMAIN) THEN
566 FSAV(9)=FSAV(9)/MAX(EM20,FSAV(8))
567 ENDIF
568C---------------------------------------------
569 RETURN
570 END
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 area(d1, x, x2, y, y2, eint, stif0)
#define max(a, b)
Definition macros.h:21
subroutine sum_6_float(jft, jlt, f, f6, n)
Definition parit.F:65
subroutine poro(geo, nodpor, ms, x, v, w, af, am, skew, weight, nporgeo)
Definition poro.F:40