39 SUBROUTINE nodald(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, , 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(*)
85 REAL,
INTENT(INOUT) :: WA4(SWA4),WA4_FVM(AIRBAGS_TOTAL_FVM_IN_H3D)
86 TYPE (ELBUF_STRUCT_),
INTENT(IN),
DIMENSION(NGROUP),
TARGET :: ELBUF_TAB
88INTENT(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)
95 INTEGER IADI, IADR, I, ITYP, NINOUT, NNO, NEL, II1, II2,
96 . IR1, IR2, J, JJ, NNO_L, NNI_L, II3, II4, JJJ, NNI,
97 . IALEL,NNOD,IPOS,IV,NGv,IDLOCv,J1,J2,IBV
98 INTEGER , NG, KCVT, II, NBF, NBL, IB, ICELL, NIN, MCELL
100 TYPE(G_BUFEL_) ,
POINTER :: GBUF,GBUFv
101 my_real,
ALLOCATABLE,
DIMENSION(:) :: COUNT_VOL
121 ALLOCATE(count_vol(numnod))
128 IF(ityp/=1 .AND. ityp/=2)cycle
130 gbuf => elbuf_tab(ng)%GBUF
131 g_vol = elbuf_tab(ng)%GBUF%G_VOL
135 d = elbuf_tab(ng)%GBUF%RHO(i)
136 v = elbuf_tab(ng)%GBUF%VOL(i)
144 count_vol(jj) = count_vol(jj) + v
145 is_written_node(jj)=1
151 IF(count_vol(i)/=zero)
THEN
152 wa4(i)=wa4(i)/count_vol(i)
155 DEALLOCATE(count_vol)
161 ALLOCATE(count_vol(numnod))
174 ialel =iparg(7,ng)+iparg(11,ng)
175 IF(ityp/=1 .AND. ityp/=2)cycle
177 gbuf => elbuf_tab(ng)%GBUF
180 ib = nint(gbuf%TAG22(i))
192 wa4(jj)=wa4(jj)+ d*v !cumulated mass
193 count_vol(jj) = count_vol(jj) + v
194 is_written_node(jj)=1
208 ib = nint(gbuf%TAG22(i))
212 is_written_node(jj)=1
214 IF(icell == mcell)
THEN
218 ipos =
brick_list(nin,ib)%POLY(icell)%WhereIsMain(1)
220 iv =
brick_list(nin,ib)%Adjacent_Brick(ipos,1)
221 ngv =
brick_list(nin,ib)%Adjacent_Brick(ipos,2)
222 idlocv =
brick_list(nin,ib)%Adjacent_Brick(ipos,3)
226 ibv =
brick_list(nin,ib )%Adjacent_Brick(j1,4)
228 ngv =
brick_list(nin,ibv)%Adjacent_Brick(j2,2)
231 gbufv => elbuf_tab(ngv)%GBUF
232 d = gbufv%RHO(idlocv)
233 v = gbufv%VOL(idlocv)
243 IF(count_vol(i)/=zero)
THEN
244 wa4(i)=wa4(i)/count_vol(i)
247 DEALLOCATE(count_vol)
255 IF(nfvbag > 0 .AND. ispmd == 0 .AND. airbags_total_fvm_in_h3d > 0)
THEN
257 . nfvbag, smonvol, svolmon, airbags_total_fvm_in_h3d, is_written_node_fvm ,
258 . airbags_node_id_shift)
subroutine nodald(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)