44
45
46
47
48
49
50
51
52
53
54
55
56
57
59 USE elbufdef_mod
65
66
67
68#include "implicit_f.inc"
69
70
71
72#include "com01_c.inc"
73#include "com04_c.inc"
74#include "vect01_c.inc"
75#include "param_c.inc"
76#include "inter22.inc"
77#include "tabsiz_c.inc"
78
79
80
81 INTEGER,INTENT(IN) :: NUMEL, IFUNC, NIX, NV46,ITAB(NUMNOD), ISPMD, SWA4, AIRBAGS_NODE_ID_SHIFT
82INTEGERINTENT(IN)
83INTENT(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)
91
92
93
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
102 INTEGER G_VOL
103 INTEGER G_TEMP
104
105
106
107
108 nnod = nix-3
109
110 IF(int22==0)THEN
111
112
113
114
115 ALLOCATE(count_vol(numnod))
116 count_vol(:) = 0
117 DO ng = 1, ngroup
118 nel =iparg(2,ng)
119 nft =iparg(3,ng)
120 ityp =iparg(5,ng)
121 ialel =iparg(7,ng)+iparg(11,ng)
122 IF(ityp/=1 .AND. ityp/=2)cycle
123
124 gbuf => elbuf_tab(ng)%GBUF
125 g_vol=elbuf_tab(ng)%GBUF%G_VOL
126 g_temp = elbuf_tab(ng)%GBUF%G_TEMP
127 DO i=1,nel
128 IF (g_vol > 0 .AND. g_temp > 0)THEN
129 t = gbuf%TEMP(i)
130 v = gbuf%VOL(i)
131 ELSE
132 t=zero
133 v=zero
134 ENDIF
135 DO j=2,nnod+1
136 jj=ix(j,nft+i)
137 wa4(jj)=wa4(jj)+v*t
138 count_vol(jj) = count_vol(jj) + v
139 is_written_node(jj)=1
140 ENDDO
141 ENDDO
142 ENDDO
143
144 DO i=1,numnod
145 IF(count_vol(i)/=zero)THEN
146 wa4(i)=wa4(i)/count_vol(i)
147 ENDIF
148 ENDDO
149 DEALLOCATE(count_vol)
150
151
152
153
154 ELSEIF(int22>0)THEN
155
156
157
158
159
160
161
162
163 ALLOCATE(count_vol(numnod))
164 count_vol = 0
165 nbf = 1
167 nin = 1
168
169 DO ng = 1, ngroup
170 nel =iparg(2,ng)
171 nft =iparg(3,ng)
172 ityp =iparg(5,ng)
173 ialel =iparg(7,ng)+iparg(11,ng)
174 IF(ityp/=1 .AND. ityp/=2)cycle
175 IF(ialel==0)cycle
176 gbuf => elbuf_tab(ng)%GBUF
177 DO i=1,nel
178 ib = nint(gbuf%TAG22(i))
179
180
181
182 IF(ib>0)THEN
184 ENDIF
185 IF(ib==0)THEN
186 t = gbuf%TEMP(i)
187 v = gbuf%VOL(i)
188 DO j=2,nnod+1
189 jj=ix(j,nft+i)
190 wa4
191 count_vol(jj) = count_vol(jj) + v
192 is_written_node(jj)=1
193 ENDDO
194
195
196
197 ELSE
198 nin = 1
199 ib = nint(gbuf%TAG22(i))
201 nel = iparg(2,ng)
202 DO j=2,nnod+1
203 jj=ix(j,nft+i)
204 is_written_node(jj)=1
206 IF(icell == mcell)THEN
207 t = gbuf%TEMP(i)
208 v = gbuf%VOL(i)
209 ELSE
210 padjbrick =>
brick_list(nin,ib)%Adjacent_Brick(1:6,1:5)
212 IF(ipos<=nv46)THEN
213 iv
214 ngv =
brick_list(nin,ib)%Adjacent_Brick(ipos,2)
215 idlocv =
brick_list(nin,ib)%Adjacent_Brick(ipos,3)
216 nelv = iparg(2,ngv)
217 ELSE
218 j1 = ipos/10
219 j2 = mod(ipos,10)
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)
224 nelv = iparg(2,ngv)
225 ENDIF
226 gbufv => elbuf_tab(ngv)%GBUF
227 t = gbufv%TEMP(idlocv)
228 v = gbufv%VOL(idlocv)
229 ENDIF
230 wa4(jj)=wa4(jj)+t*v
231 count_vol(jj) = count_vol(jj) + v
232 ENDDO
233 ENDIF
234 ENDDO
235 ENDDO
236
237 DO i=1,numnod
238 IF(count_vol(i)/=zero)THEN
239 wa4(i)=wa4(i)/count_vol(i)
240 ENDIF
241 ENDDO
242 DEALLOCATE(count_vol)
243 ENDIF
244
245
246
247
248
252 . airbags_node_id_shift)
253
254 ENDIF
255
256
257 RETURN
subroutine anim_nodal_contour_fvmbags(key, wa4, monvol, volmon, fvdata_p, nfvbag, smonvol, svolmon, airbags_total_fvm, is_written_node_fvm, airbags_node_id_shift)
integer airbags_total_fvm_in_h3d
type(brick_entity), dimension(:,:), allocatable, target brick_list