36
37
38
39 USE multi_fvm_mod
42
43
44
45#include "implicit_f.inc"
46
47
48
49
50#include "com01_c.inc"
51#include "com04_c.inc"
52#include "spmd_c.inc"
53
54
55
56 TYPE(MULTI_FVM_STRUCT) :: MULTI_FVM
57 TYPE (H3D_DATABASE) :: H3D_DATA
58
59
60
61 INTEGER :: IERR, LEN, NBMAT
62
63
64
65
66 IF (multi_fvm%IS_USED) THEN
67
68 nbmat = multi_fvm%NBMAT
69 IF (n2d == 0) THEN
70 len = numels + nsvois
71 ELSE
72 len = numelq + nqvois + numeltg + ntgvois
73 ENDIF
74 multi_fvm%NELEM = len
75
76 ALLOCATE(multi_fvm%FACE_DATA%SURF(6, len), stat = ierr)
77 IF (ierr /= 0) THEN
78 CALL ancmsg(msgid=20,anmode=aninfo)
80 ENDIF
81 ALLOCATE(multi_fvm%FACE_DATA%NORMAL(3, 6, len), stat = ierr)
82 IF (ierr /= 0) THEN
83 CALL ancmsg(msgid=20,anmode=aninfo)
85 ENDIF
86 ALLOCATE(multi_fvm%FACE_DATA%WFAC(3, 6, len), stat = ierr)
87 IF (ierr /= 0) THEN
88 CALL ancmsg(msgid=20,anmode=aninfo)
90 ENDIF
91
92 ALLOCATE(multi_fvm%FLUXES(6, 6, len), stat = ierr)
93 IF (ierr /= 0) THEN
94 CALL ancmsg(msgid=20,anmode=aninfo)
96 ENDIF
97
98
99 IF (nbmat > 1) THEN
100 ALLOCATE(multi_fvm%SUBVOL_FLUXES(nbmat, 6, len), stat = ierr)
101 IF (ierr /= 0) THEN
102 CALL ancmsg(msgid=20,anmode=aninfo)
104 ENDIF
105 ALLOCATE(multi_fvm%SUBMASS_FLUXES(nbmat, 6, len), stat = ierr)
106 IF (ierr /= 0) THEN
107 CALL ancmsg(msgid=20,anmode=aninfo)
109 ENDIF
110 ALLOCATE(multi_fvm%SUBENER_FLUXES(nbmat, 6, len), stat = ierr)
111 IF (ierr /= 0) THEN
112 CALL ancmsg(msgid=20,anmode=aninfo)
114 ENDIF
115
116 ALLOCATE(multi_fvm%PHASE_ALPHA(nbmat, len), stat = ierr)
117 IF (ierr /= 0) THEN
118 CALL ancmsg(msgid=20,anmode=aninfo)
120 ENDIF
121 ALLOCATE(multi_fvm%PHASE_PRES(nbmat, len), stat = ierr)
122 IF (ierr /= 0) THEN
123 CALL ancmsg(msgid=20,anmode=aninfo)
125 ENDIF
126 ALLOCATE(multi_fvm%PHASE_RHO(nbmat, len), stat = ierr)
127 IF (ierr /= 0) THEN
128 CALL ancmsg(msgid=20,anmode=aninfo)
130 ENDIF
131 ALLOCATE(multi_fvm%PHASE_EINT(nbmat, len), stat = ierr)
132 IF (ierr /= 0) THEN
133 CALL ancmsg(msgid=20,anmode=aninfo)
135 ENDIF
136 ENDIF
137
138 ALLOCATE(multi_fvm%VEL(3, len), stat = ierr)
139 IF (ierr /= 0) THEN
140 CALL ancmsg(msgid=20,anmode=aninfo)
142 ENDIF
143 multi_fvm%VEL(:, :) = zero
144
145 IF(h3d_data%N_VECT_ACC == 1)THEN
146 ALLOCATE(multi_fvm%ACC(3, len), stat = ierr)
147 IF (ierr /= 0) THEN
148 CALL ancmsg(msgid=20,anmode=aninfo)
150 ENDIF
151 multi_fvm%ACC(:, :) = zero
152 ENDIF
153
154 ALLOCATE(multi_fvm%SOUND_SPEED(len), stat = ierr)
155 IF (ierr /= 0) THEN
156 CALL ancmsg(msgid=20,anmode=aninfo)
158 ENDIF
159 multi_fvm%SOUND_SPEED(:) = zero
160
161 ALLOCATE(multi_fvm%TBURN(len), stat = ierr)
162 IF (ierr /= 0) THEN
163 CALL ancmsg(msgid=20,anmode=aninfo)
165 ENDIF
166 multi_fvm%TBURN(:) = zero
167
168 ALLOCATE(multi_fvm%BFRAC(nbmat, len), stat = ierr)
169 IF (ierr /= 0) THEN
170 CALL ancmsg(msgid=20,anmode=aninfo)
172 ENDIF
173 multi_fvm%BFRAC(:, :) = zero
174
175 ALLOCATE(multi_fvm%RHO(len), stat = ierr)
176 IF (ierr /= 0) THEN
177 CALL ancmsg(msgid=20,anmode=aninfo)
179 ENDIF
180 multi_fvm%RHO(:) = zero
181
182 ALLOCATE(multi_fvm%EINT(len), stat = ierr)
183 IF (ierr /= 0) THEN
184 CALL ancmsg(msgid=20,anmode=aninfo)
186 ENDIF
187 multi_fvm%EINT(:) = zero
188
189 ALLOCATE(multi_fvm%PRES(len), stat = ierr)
190 IF (ierr /= 0) THEN
191 CALL ancmsg(msgid=20,anmode=aninfo)
193 ENDIF
194 multi_fvm%PRES(:) = zero
195
196 IF (multi_fvm%MUSCL == 1) THEN
197 ALLOCATE(multi_fvm%GRAD_RHO(3, len), stat = ierr
198 IF (ierr /= 0) THEN
199 CALL ancmsg(msgid=20,anmode=aninfo)
201 ENDIF
202 ALLOCATE(multi_fvm%GRAD_U(3, len), stat = ierr)
203 IF (ierr /= 0) THEN
204 CALL ancmsg(msgid=20,anmode=aninfo)
206 ENDIF
207 ALLOCATE(multi_fvm%GRAD_V(3, len), stat = ierr)
208 IF (ierr /= 0) THEN
209 CALL ancmsg(msgid=20,anmode=aninfo)
211 ENDIF
212 ALLOCATE(multi_fvm%GRAD_W(3, len), stat = ierr)
213 IF (ierr /= 0) THEN
214 CALL ancmsg(msgid=20,anmode=aninfo)
216 ENDIF
217 ALLOCATE(multi_fvm%GRAD_PRES(3, len), stat = ierr)
218 IF (ierr /= 0) THEN
219 CALL ancmsg(msgid=20,anmode=aninfo)
221 ENDIF
222 IF (nbmat > 1) THEN
223 ALLOCATE(multi_fvm%PHASE_GRAD_RHO(3, nbmat, len), stat = ierr)
224 IF (ierr /= 0) THEN
225 CALL ancmsg(msgid=20,anmode=aninfo)
227 ENDIF
228 ALLOCATE(multi_fvm%PHASE_GRAD_ALPHA(3, nbmat, len), stat = ierr)
229 IF (ierr /= 0) THEN
230 CALL ancmsg(msgid=20,anmode=aninfo)
232 ENDIF
233 ALLOCATE(multi_fvm%PHASE_GRAD_PRES(3, nbmat, len), stat = ierr)
234 IF (ierr /= 0) THEN
235 CALL ancmsg(msgid=20,anmode=aninfo)
237 ENDIF
238 ENDIF
239 ENDIF
240
241 IF (multi_fvm%MUSCL == 2) THEN
242
243 IF (nbmat > 1) THEN
244 ALLOCATE(multi_fvm%PHASE_GRAD_ALPHA(3, nbmat, len), stat = ierr)
245 IF (ierr /= 0) THEN
246 CALL ancmsg(msgid=20,anmode=aninfo)
248 ENDIF
249 ENDIF
250 ENDIF
251 IF (multi_fvm%MUSCL > 0) THEN
252 ALLOCATE(multi_fvm%FACE_DATA%CENTROID(3, 6, len), stat = ierr)
253 IF (ierr /= 0) THEN
254 CALL ancmsg(msgid=20,anmode=aninfo)
256 ENDIF
257 ALLOCATE(multi_fvm%ELEM_DATA%CENTROID(3, len), stat = ierr)
258 IF (ierr /= 0) THEN
259 CALL ancmsg(msgid=20,anmode=aninfo)
261 ENDIF
262 ENDIF
263 ENDIF
264
265
266
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)