39 SUBROUTINE nodalt(IFUNC , WA4 , WA4_FVM, IFLOW , RFLOW,
40 . IPARG , ELBUF_TAB, IX , NIX , NUMEL,
41 . ITAB , NV46 , MONVOL , VOLMON , AIRBAGS_TOTAL_FVM_IN_H3D,
42 . IS_WRITTEN_NODE,IS_WRITTEN_NODE_FVM, ISPMD, FVDATA_P,
43 . SWA4 , AIRBAGS_NODE_ID_SHIFT)
68#include "implicit_f.inc"
74#include "vect01_c.inc"
77#include "tabsiz_c.inc"
81 INTEGER,
INTENT(IN) :: NUMEL, IFUNC, NIX, NV46,ITAB(NUMNOD), ISPMD, SWA4, AIRBAGS_NODE_ID_SHIFT
82 INTEGER,
INTENT(IN) :: IFLOW(*),IPARG(NPARG,NGROUP),IX(NIX,NUMEL)
83 my_real,
INTENT(IN) :: RFLOW(*)
84 INTEGER,
INTENT(IN) :: AIRBAGS_TOTAL_FVM_IN_H3D
85 REAL,
INTENT(INOUT) :: WA4(SWA4),WA4_FVM(AIRBAGS_TOTAL_FVM_IN_H3D)
86 TYPE (ELBUF_STRUCT_),
INTENT(IN),
DIMENSION(NGROUP),
TARGET :: ELBUF_TAB
87 INTEGER,
INTENT(IN) :: MONVOL(SMONVOL)
88 my_real,
INTENT(IN) :: volmon(svolmon)
89 INTEGER,
INTENT(INOUT) :: IS_WRITTEN_NODE_FVM(AIRBAGS_TOTAL_FVM_IN_H3D),IS_WRITTEN_NODE(NUMNOD)
90 TYPE(
fvbag_data),
INTENT(IN) :: FVDATA_P(NFVBAG)
94 INTEGER IADI, IADR, I, ITYP, NINOUT, NNO, NEL, NELv,II1, II2,
95 . IR1, IR2, J, JJ, NNO_L, NNI_L, II3, II4, JJJ, NNI,
96 . IALEL,NNOD,IPOS,IV,NGv,IDLOCv,J1,J2,IBV
97 INTEGER MLW, NG, KCVT, II(6), NBF, NBL, IB, ICELL, NIN, MCELL
98 TYPE(g_bufel_) ,
POINTER :: GBUF,GBUFv
99 my_real,
ALLOCATABLE,
DIMENSION(:) :: COUNT_VOL
101 INTEGER,
DIMENSION(:,:),
POINTER :: pAdjBRICK
115 ALLOCATE(count_vol(numnod))
121 ialel =iparg(7,ng)+iparg(11,ng)
122 IF(ityp/=1 .AND. ityp/=2)cycle
124 gbuf => elbuf_tab(ng)%GBUF
125 g_vol=elbuf_tab(ng)%GBUF%G_VOL
126 g_temp = elbuf_tab(ng)%GBUF%G_TEMP
128 IF (g_vol > 0 .AND. g_temp > 0)
THEN
138 count_vol(jj) = count_vol(jj) + v
139 is_written_node(jj)=1
145 IF(count_vol(i)/=zero)
THEN
146 wa4(i)=wa4(i)/count_vol(i)
163 ALLOCATE(count_vol(numnod))
173 ialel =iparg(7,ng)+iparg(11,ng)
174 IF(ityp/=1 .AND. ityp/=2)cycle
176 gbuf => elbuf_tab(ng)%GBUF
178 ib = nint(gbuf%TAG22(i))
191 count_vol(jj) = count_vol(jj) + v
192 is_written_node(jj)=1
199 ib = nint(gbuf%TAG22(i))
206 IF(icell == mcell)
THEN
210 padjbrick =>
brick_list(nin,ib)%Adjacent_Brick(1:6,1:5)
211 ipos =
brick_list(nin,ib)%POLY(icell)%WhereIsMain(1)
213 iv =
brick_list(nin,ib)%Adjacent_Brick(ipos,1)
214 ngv =
brick_list(nin,ib)%Adjacent_Brick(ipos,2)
215 idlocv =
brick_list(nin,ib)%Adjacent_Brick(ipos,3)
220 ibv =
brick_list(nin,ib )%Adjacent_Brick(j1,4)
222 ngv =
brick_list(nin,ibv)%Adjacent_Brick(j2,2)
223 idlocv =
brick_list(nin,ibv)%Adjacent_Brick(j2,3)
226 gbufv => elbuf_tab(ngv)%GBUF
227 t = gbufv%TEMP(idlocv)
228 v = gbufv%VOL(idlocv)
231 count_vol(jj) = count_vol(jj) + v
238 IF(count_vol(i)/=zero)
THEN
239 wa4(i)=wa4(i)/count_vol(i)
242 DEALLOCATE(count_vol)
249 IF(nfvbag > 0 .AND. ispmd == 0 .AND. airbags_total_fvm_in_h3d > 0)
THEN
251 . nfvbag, smonvol, svolmon, airbags_total_fvm_in_h3d, is_written_node_fvm,
252 . airbags_node_id_shift)
subroutine nodalt(ifunc, wa4, wa4_fvm, iflow, rflow, iparg, elbuf_tab, ix, nix, numel, itab, nv46, monvol, volmon, airbags_total_fvm_in_h3d, is_written_node, is_written_node_fvm, ispmd, fvdata_p, swa4, airbags_node_id_shift)