37
38
39
43 USE multi_fvm_mod
47
48
49
50#include "implicit_f.inc"
51
52
53
54#include "com01_c.inc"
55#include "com04_c.inc"
56#include "scr16_c.inc"
57#include "scr17_c.inc"
58#include "tabsiz_c.inc"
59#include "com_xfem1.inc"
60
61
62
63 INTEGER, INTENT(IN) :: NOM_OPT(LNOPT1,SNOM_OPT1), INOM_OPT(SINOM_OPT)
64 INTEGER, INTENT(IN) :: ITAB(NUMNOD)
65 TYPE (FVM_INIVEL_STRUCT), DIMENSION(NINVEL), INTENT(IN) :: FVM_INIVEL
66 TYPE(INIMAP1D_STRUCT), DIMENSION(NINIMAP1D), INTENT(IN) :: INIMAP1D
67 TYPE(INIMAP2D_STRUCT), DIMENSION(NINIMAP2D), INTENT(IN) :: INIMAP2D
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
118 . v(3,numnod), vr(svr),
119 . w(sw)
121 . temp(numnod)
122 TYPE (INICRACK_) , DIMENSION(NINICRACK) :: INICRACK
123
124
125
126 INTEGER I,II,JJ,MY_ID,MY_NODE,POSI(NINIGRAV+1),IDS(NINIGRAV),IDX(),
127 . IDS2(NINICRACK),IDX2(NINICRACK)
128 CHARACTER(LEN=NCHARTITLE) :: TITR
129 CHARACTER (LEN=255) :: VARNAME
130 DOUBLE PRECISION TEMP_DOUBLE
131 LOGICAL :: DO_QA
132
133
134
136 IF (do_qa) THEN
137 DO my_node=1,numnod
138
139 my_id = itab(my_node)
140
141 DO i=1,3
142 IF(v(i,my_node)/=zero)THEN
143
144
145 WRITE(varname,'(A,I0,A,I0)') 'V_',my_id,'_',i
146 temp_double = v(i,my_node)
147 CALL qaprint(varname(1:len_trim(varname)),0,temp_double)
148 END IF
149 END DO
150
151 IF(svr/=0)THEN
152 DO i=1,3
153 IF(vr(3*(my_node-1)+i)/=zero)THEN
154
155
156 WRITE(varname,'(A,I0,A,I0)') 'VR_',my_id,'_',i
157 temp_double = vr(3*(my_node-
158 CALL qaprint(varname(1:len_trim(varname)),0,temp_double)
159 END IF
160 END DO
161 END IF
162
163 END DO
164 DO ii = 1, ninvel
165 IF (fvm_inivel(ii)%FLAG) THEN
166 WRITE(varname, '(A, I0)') "FVM_INIVEL_", ii
167 CALL qaprint(varname(1:len_trim(varname)),0,0.0_8)
168 WRITE(varname,'(A)') 'VX_'
169 temp_double = fvm_inivel(ii)%VX
170 CALL qaprint(varname(1:len_trim(varname)),0,temp_double)
171 WRITE(varname,'(A)') 'VY_'
172 temp_double = fvm_inivel(ii)%VY
173 CALL qaprint(varname(1:len_trim(varname)),0,temp_double)
174 WRITE(varname,'(A)') 'VZ_'
175 temp_double = fvm_inivel(ii)%VZ
176 CALL qaprint(varname(1:len_trim(varname)),0,temp_double)
177 WRITE(varname,'(A)') 'GRBRIC_'
178 CALL qaprint(varname(1:len_trim(varname)),fvm_inivel(ii)%GRBRICID,0.0_8)
179 WRITE(varname,'(A)') 'GRQUAD_'
180 CALL qaprint(varname(1:len_trim(varname)),fvm_inivel(ii)%GRQUADID,0.0_8)
181 WRITE(varname,'(A)') 'GRTRIA_'
182 CALL qaprint(varname(1:len_trim(varname)),fvm_inivel(ii)%GRSH3NID,0.0_8)
183 ENDIF
184 ENDDO
185 END IF
186
187 IF (sw /= 0 .AND.
myqakey(
'GRID_VELOCITIES'))
THEN
188 DO my_node=1,numnod
189
190 my_id = itab(my_node)
191
192 DO i=1,3
193 IF(w(3*(my_node-1)+i)/=zeroTHEN
194
195
196 WRITE(varname,'(a,i0,a,i0)') 'w_',MY_ID,'_',I ! Specific format for THIS option !
197 TEMP_DOUBLE = W(3*(MY_NODE-1)+I)
198 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)),0,TEMP_DOUBLE)
199 END IF
200 END DO
201
202 END DO ! MY_NODE=1,NUMNOD
203 END IF
204
205
206
207 IF (MYQAKEY('/initemp')) THEN
208 DO MY_NODE=1,NUMNOD
209
210 MY_ID = ITAB(MY_NODE)
211
212 IF(TEMP(MY_NODE)/=ZERO)THEN
213
214
215 WRITE(VARNAME,'(a,i0)') 'temp_',MY_ID ! Specific format for THIS option !
216 TEMP_DOUBLE = TEMP(MY_NODE)
217 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)),0,TEMP_DOUBLE)
218 END IF
219
220 END DO ! MY_NODE=1,NUMNOD
221 END IF
222
223
224
226
227 IF (NINIGRAV > 0) THEN
228
229! Sort by ID to ensure internal order independent output
230 DO I = 1, NINIGRAV
231 IDS(I) = INIGRV(4,I)
232 IDX(I) = I
233 ENDDO
234 CALL QUICKSORT_I2(IDS, IDX, 1, NINIGRAV)
235
236! Loop over INIGRAVs
237 DO II = 1, NINIGRAV
238
239 MY_ID = IDX(II)
240 CALL QAPRINT('a_inigrav_fake_name',II,0.0_8)
241
242 ! INIGRV table
243 DO I = 1,4
244 WRITE(VARNAME,'(a,i0)') 'inigrv_',I
245 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)),INIGRV(I,MY_ID),0.0_8)
246 ENDDO
247
248 ! LINIGRAV table
249 DO I = 1,11
250 WRITE(VARNAME,'(a,i0)') 'LINIGRAV_',i
251 temp_double = linigrav(i,my_id)
252 CALL qaprint(varname(1:len_trim(varname)),0,temp_double)
253 ENDDO
254 ENDDO
255 ENDIF
256 END IF
257
258
259
261
262
263 CALL qaprint(
'INISTA_FILE_NAME',0,0.0_8)
264 CALL qaprint(s0file(1:len_trim(s0file)),0,0.0_8)
265
266
267 WRITE(varname,'(A)') 'ISIGI_'
268 CALL qaprint(varname(1:len_trim(varname)),isigi,0.0_8)
269
270
271 WRITE(varname,'(A)') 'IOUTP_FMT_'
272 CALL qaprint(varname(1:len_trim(varname)),ioutp_fmt,0.0_8)
273
274
275 WRITE(varname,'(A)') 'IROOTYY_R_'
276 CALL qaprint(varname(1:len_trim(varname)),irootyy_r,0.0_8)
277
278 END IF
279
280
281
283
284 IF (ninicrack > 0) THEN
285
286
287 DO i = 1, ninicrack
288 ids2(i) = inicrack(i)%ID
289 idx2(i) = i
290 ENDDO
292
293
294 DO ii = 1, ninicrack
295
296 my_id = idx2(ii)
297 titr = inicrack(my_id)%TITLE
298 IF (len_trim(titr) /= 0) THEN
299 CALL qaprint(titr(1:len_trim(titr)),ii,0.0_8)
300 ELSE
301 CALL qaprint(
'A_INICRACK_FAKE_NAME',ii,0.0_8)
302 END IF
303
304 WRITE(varname,'(A,I0,A)') 'INICRACK_',ii,'_ID_'
305 CALL qaprint(varname(1:len_trim(varname)),inicrack(my_id)%ID,0.0_8)
306
307 DO i = 1,inicrack(my_id)%NSEG
308
309 WRITE(varname,'(A,I0,A,I0,A)') 'INICRACK_',ii,'_SEG_',i,'_NODE1_'
310 CALL qaprint(varname(1:len_trim(varname)),inicrack(my_id)%SEG(i)%NODES(1),0.0_8)
311
312 WRITE(varname,'(A,I0,A,I0,A)') 'INICRACK_',ii,'_SEG_',i,'_NODE2_'
313 CALL qaprint(varname(1:len_trim(varname)),inicrack(my_id)%SEG(i)%NODES(2),0.0_8)
314
315 WRITE(varname,'(A,I0,A,I0,A)') 'INICRACK_',ii,'_SEG_',i,'_RATIO_'
316 temp_double = inicrack(my_id)%SEG(i)%RATIO
317 CALL qaprint(varname(1:len_trim(varname)),0,temp_double)
318
319 ENDDO
320 ENDDO
321
322 ENDIF
323
324 END IF
325
326
328 IF (do_qa) THEN
329 IF (ninimap1d > 0) THEN
330 DO ii = 1, ninimap1d
331 WRITE(varname, '(a)') INIMAP1D(II)%TITLE(1:255)
332 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)), INIMAP1D(II)%ID, 0.0_8)
333 WRITE(VARNAME, '(a)') 'formulation '
334 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)), INIMAP1D(II)%FORMULATION, 0.0_8)
335 WRITE(VARNAME, '(a)') 'projection TYPE '
336 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)), INIMAP1D(II)%PROJ, 0.0_8)
337 WRITE(VARNAME, '(a)') 'grbric '
338 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)), INIMAP1D(II)%GRBRICID, 0.0_8)
339 WRITE(VARNAME, '(a)') 'grquad '
340 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)), INIMAP1D(II)%GRQUADID, 0.0_8)
341 WRITE(VARNAME, '(a)') 'grtria '
342 CALL qaprint(varname(1:len_trim(varname)), inimap1d(ii)%GRSH3NID, 0.0_8)
343 WRITE(varname, '(A)') 'NDOE1 '
344 CALL qaprint(varname(1:len_trim(varname)), inimap1d(ii)%NODEID1, 0.0_8)
345 WRITE(varname, '(A)') 'NDOE2 '
346 CALL qaprint(varname(1:len_trim(varname
347 WRITE(varname, '(A)') 'FUNC_VEL '
348 CALL qaprint(varname(1:len_trim(varname)), inimap1d(ii)%FUNC_VEL, 0.0_8)
349 temp_double = inimap1d(ii)%FAC_VEL
350 WRITE(varname, '(a)') 'fac_vel '
351 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)), 0, TEMP_DOUBLE)
352 DO JJ = 1, INIMAP1D(II)%NBMAT
353 WRITE(VARNAME, '(a)') 'func_alpha '
354 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)), INIMAP1D(II)%FUNC_ALPHA(JJ), 0.0_8)
355 WRITE(VARNAME, '(a)') 'func_rho '
356 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)), INIMAP1D(II)%FUNC_RHO(JJ), 0.0_8)
357 WRITE(VARNAME, '(a)') 'func_pres '
358 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)), INIMAP1D(II)%FUNC_PRES(JJ), 0.0_8)
359 WRITE(VARNAME, '(a)') 'func_ener '
360 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)), INIMAP1D(II)%FUNC_ENER(JJ), 0.0_8)
361 TEMP_DOUBLE = INIMAP1D(II)%FAC_RHO(JJ)
362 WRITE(VARNAME, '(a)') 'fac_rho '
363 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)), 0, TEMP_DOUBLE)
364 TEMP_DOUBLE = INIMAP1D(II)%FAC_PRES_ENER(JJ)
365 WRITE(VARNAME, '(a)') 'fac_pres_ener '
366 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)), 0, TEMP_DOUBLE)
367 ENDDO
368 ENDDO
369 ENDIF
370 IF (NINIMAP2D > 0) THEN
371 DO II = 1, NINIMAP2D
372 WRITE(VARNAME, '(a)') INIMAP2D(II)%TITLE(1:255)
373 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)), INIMAP2D(II)%ID, 0.0_8)
374 WRITE(VARNAME, '(a)') 'formulation '
375 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)), INIMAP2D(II)%FORMULATION, 0.0_8)
376 WRITE(VARNAME, '(a)') 'grbric '
377 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)), INIMAP2D(II)%GRBRICID, 0.0_8)
378 WRITE(VARNAME, '(a)') 'grquad '
379 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)), INIMAP2D(II)%GRQUADID, 0.0_8)
380 WRITE(VARNAME, '(a)') 'grtria '
381 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)), INIMAP2D(II)%GRSH3NID, 0.0_8)
382 WRITE(VARNAME, '(a)') 'ndoe1 '
383 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)), INIMAP2D(II)%NODEID1, 0.0_8)
384 WRITE(VARNAME, '(a)') 'ndoe2 '
385 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)), INIMAP2D(II)%NODEID2, 0.0_8)
386 WRITE(VARNAME, '(a)') 'ndoe3 '
387 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)), INIMAP2D(II)%NODEID3, 0.0_8)
388 WRITE(VARNAME, '(a)') 'func_vel '
389 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)), INIMAP2D(II)%FUNC_VEL, 0.0_8)
390 TEMP_DOUBLE = INIMAP2D(II)%FAC_VEL
391 WRITE(VARNAME, '(a)') 'fac_vel '
392 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)), 0, TEMP_DOUBLE)
393 DO JJ = 1, INIMAP2D(II)%NBMAT
394 WRITE(VARNAME, '(a)') 'func_alpha '
395 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)), INIMAP2D(II)%FUNC_ALPHA(JJ), 0.0_8)
396 WRITE(VARNAME, '(a)') 'FUNC_RHO '
397 CALL qaprint(varname(1:len_trim(varname)), inimap2d(ii)%FUNC_RHO(jj), 0.0_8)
398 WRITE(varname, '(A)') 'FUNC_PRES '
399 CALL qaprint(varname(1:len_trim(varname)), inimap2d(ii)%FUNC_PRES(jj), 0.0_8)
400 WRITE(varname, '(A)') 'FUNC_ENER '
401 CALL qaprint(varname(1:len_trim(varname)), inimap2d(ii)%FUNC_ENER(jj), 0.0_8)
402 temp_double = inimap2d(ii)%FAC_RHO(jj)
403 WRITE(varname, '(A)') 'FAC_RHO '
404 CALL qaprint(varname(1:len_trim(varname)), 0, temp_double)
405 temp_double = inimap2d(ii)%FAC_PRES_ENER(jj)
406 WRITE(varname, '(A)') 'FAC_PRES_ENER '
407 CALL qaprint(varname(1:len_trim(varname)), 0, temp_double)
408 ENDDO
409 ENDDO
410 ENDIF
411 ENDIF
412
413
414
415 RETURN
integer, parameter nchartitle
logical function myqakey(value)
@purpose Check if a given value is part of the values set by env variable Useful to make a condition ...
subroutine qaprint(name, idin, value)
@purpose print one entry to QA extract file example of call for real print CALL QAPRINT('MY_LABEL',...
recursive subroutine quicksort_i2(a, idx, first, last)