38
39
40
43 use glob_therm_mod
44 USE pblast_mod
45
46
47
48#include "implicit_f.inc"
49
50
51
52#include "com01_c.inc"
53#include "com04_c.inc"
54#include "param_c.inc"
55#include "scr03_c.inc"
56#include "scr17_c.inc"
57#include "tabsiz_c.inc"
58#include "boltpr_c.inc"
59#include "sphcom.inc"
60
61
62
63 INTEGER, INTENT(IN) :: NOM_OPT(LNOPT1,SNOM_OPT1), INOM_OPT(SINOM_OPT)
64
65
66
67
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 TYPE (glob_therm_) ,intent(in) :: glob_therm
114 TYPE (PBLAST_) ,intent(in) :: PBLAST
115 INTEGER, INTENT(IN) :: NUMLOADP, ILOADP(SIZLOADP,NLOADP), LLOADP(NUMLOADP)
116 INTEGER, INTENT(IN) :: (SIZFIELD,NLOADC), LCFIELD(SLCFIELD)
117 INTEGER, INTENT(IN) :: IBCL(NIBCLD,NCONLD-NPRELD), IPRES(NIBCLD,NPRELD)
118 INTEGER, INTENT(IN) :: IBCR(GLOB_THERM%NIRADIA,GLOB_THERM%NUMRADIA)
119 INTEGER, INTENT(IN) :: IBCV(GLOB_THERM%NICONV,GLOB_THERM%NUMCONV)
120 INTEGER, INTENT(IN) :: IGRV(NIGRV,NGRAV), LGRV(*)
121 INTEGER, INTENT(IN) :: IPRELOAD(3,*), IFLAG_BPRELOAD(NUMELS)
123 . loadp(lfacload,nloadp), cfield(lfacload,nloadc),
124 . forc(lfaccld,nconld-npreld), pres(lfaccld,npreld),
125 . agrv(lfacgrv,ngrav),preload(6,*)
126 my_real,
INTENT(IN) :: fradia(glob_therm%LFACTHER,glob_therm%NUMRADIA)
127 my_real,
INTENT(IN) :: fconv(glob_therm%LFACTHER,glob_therm%NUMCONV
128 INTEGER, INTENT(IN) :: LIFLOW, LRFLOW
129 INTEGER, DIMENSION(LIFLOW), INTENT(IN) :: IFLOW
130 my_real,
DIMENSION(LRFLOW),
INTENT(IN) :: rflow
131 INTEGER ISPHIO(NISPHIO,NSPHIO)
133 . vsphio(svsphio)
134
135
136
137 INTEGER I,IPRE, MY_ID, MY_LOAD,J,
138 . IDS(NSPHIO),IDX(NSPHIO),II,MY_SPHIO,LVAD(NSPHIO),
139 . FIRST,LAST
140 CHARACTER(LEN=NCHARTITLE) :: TITR
141 CHARACTER (LEN=255) :: VARNAME
142 DOUBLE PRECISION TEMP_DOUBLE
143 LOGICAL :: OK_QA
144 INTEGER :: COUNT,IOPT_FIRST,IOPT_LAST
145
146
147
148 IF (
myqakey(
'/LOAD/CENTRI'))
THEN
149 DO my_load=1,nloadc
150
151
153 IF(len_trim(titr)/=0)THEN
154 CALL qaprint(titr(1:len_trim(titr)),icfield(9,my_load),0.0_8)
155 ELSE
156 CALL qaprint(
'A_LOAD_CENTRI_FAKE_NAME',icfield(9,my_load),0.0_8)
157 END IF
158
159 DO i=1,sizfield
160 IF(icfield(i,my_load) /=0)THEN
161
162
163 WRITE(varname,'(A,I0)') 'ICFIELD_',i
164 CALL qaprint(varname(1:len_trim(varname)),icfield(i,my_load),0.0_8)
165 END IF
166 END DO
167
168 DO i=icfield(4,my_load),icfield(4,my_load)+icfield(1,my_load)-1
169
170
171 WRITE(varname,'(A,I0)') 'LCFIELD_',i
172 CALL qaprint(varname(1:len_trim(varname)),lcfield(i),0.0_8)
173 END DO
174
175 DO i=1,lfacload
176 IF(cfield(i,my_load)/=zero)THEN
177
178
179 WRITE(varname,'(A,I0)') 'CFIELD_',i
180 temp_double = cfield(i,my_load)
181 CALL qaprint(varname(1:len_trim(varname)),0,temp_double)
182 END IF
183 END DO
184
185 END DO
186 END IF
187
188
189
190 ok_qa =
myqakey(
'/LOAD/PFLUID''/LOAD/PBLAST') .OR.
myqakey(
'/LOAD/PRESSURE')
191
192 IF (ok_qa) THEN
193
194 iopt_first = 0
195 iopt_last = 0
196 IF(
myqakey(
'/LOAD/PFLUID'))
THEN
197
198 iopt_first = 1
199 iopt_last = nloadp_f
200 ELSEIF(
myqakey(
'/LOAD/PBLAST'))
THEN
201
202 iopt_first = 1+nloadp_f
203 iopt_last = nloadp_f+pblast%NLOADP_B
204 ELSEIF(
myqakey(
'/LOAD/PRESSURE'))
THEN
205
206 iopt_first = 1+nloadp_f+pblast%NLOADP_B
207 iopt_last = nloadp_f+pblast%NLOADP_B+nloadp_hyd
208 ENDIF
209
210
211 DO my_load=iopt_first,iopt_last
212
213
215 IF(len_trim(titr)/=0)THEN
216 CALL qaprint(titr(1:len_trim(titr)),iloadp(2,my_load),0.0_8)
217 ELSE
218 CALL qaprint(
'A_LOAD_PFLUID_FAKE_NAME',iloadp(2,my_load),0.0_8)
219 END IF
220
221 DO i=1,sizloadp
222 IF(iloadp(i,my_load) /=0)THEN
223
224
225 WRITE(varname,'(A,I0)') 'ILOADP_',i
226 CALL qaprint(varname(1:len_trim(varname)),iloadp(i,my_load),0.0_8)
227 END IF
228 END DO
229
230 DO i=1,lfacload
231 IF(loadp(i,my_load)/=zero)THEN
232
233
234 WRITE(varname,'(A,I0)') 'LOADP_',i
235 temp_double = loadp(i,my_load)
236 CALL qaprint(varname(1:len_trim(varname)),0,temp_double)
237 END IF
238 END DO
239
240 first=iloadp(4,my_load)
241 last=iloadp(4,my_load)+iloadp(1,my_load)-1
242
243 IF(last-first+1 <= 10 )THEN
244
245 DO i=first,last
246
247 WRITE(varname,'(A,I0)') 'LLOADP_',i
248 CALL qaprint(varname(1:len_trim(varname)),lloadp(i),0.0_8)
249 END DO
250 ELSE
251
252
253 first=iloadp(4,my_load)
254 last=first+5
255 DO i=first,last
256
257 WRITE(varname,'(A,I0)') 'LLOADP_',i
258 CALL qaprint(varname(1:len_trim(varname)),lloadp(i),0.0_8)
259 END DO
260
262
263 last=iloadp(4,my_load)+iloadp(1,my_load)-1
264 first=last-5
265 DO i=first,last
266
267 WRITE(varname,'(A,I0)') 'LLOADP_',i
268 CALL qaprint(varname(1:len_trim(varname)),lloadp(i),0.0_8)
269 END DO
270 ENDIF
271
272 END DO
273 END IF
274
275
276
277
279 DO my_load=1,nconld-npreld
280
281
282
284 IF(len_trim(titr)/=0)THEN
285 CALL qaprint(titr(1:len_trim(titr)),my_load,0.0_8)
286 ELSE
287 CALL qaprint(
'A_CLOAD_FAKE_NAME',my_load,0.0_8)
288 END IF
289
290 DO i=1,nibcld
291 IF(ibcl(i,my_load) /=0)THEN
292
293
294 WRITE(varname,'(A,I0)') 'ibcl_',I ! IBCL(11) => 'ibcl_11'
295 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)),IBCL(I,MY_LOAD),0.0_8)
296 END IF
297 END DO
298
299 DO I=1,LFACCLD
300 IF(FORC(I,MY_LOAD)/=ZERO)THEN
301
302
303 WRITE(VARNAME,'(a,i0)') 'forc_',I
304 TEMP_DOUBLE = FORC(I,MY_LOAD)
305 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)),0,TEMP_DOUBLE)
306 END IF
307 END DO
308
309 END DO ! MY_LOAD=1,NCONLD-NPRELD
310 END IF
311
312
313
314 IF (MYQAKEY('/pload')) THEN
315 DO MY_LOAD=1,NPRELD
316
317
318
319 TITR(1:nchartitle)=''
320 IF(LEN_TRIM(TITR)/=0)THEN
321 CALL QAPRINT(TITR(1:LEN_TRIM(TITR)),MY_LOAD,0.0_8)
322 ELSE
323 CALL QAPRINT('a_pload_fake_name',MY_LOAD,0.0_8)
324 END IF
325
326 DO I=1,NIBCLD
327 IF(IPRES(I,MY_LOAD) /=0)THEN
328
329
330 WRITE(VARNAME,'(a,i0)') 'ipres_',I ! IPRES(11) => 'ipres_11'
331 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)),IPRES(I,MY_LOAD),0.0_8)
332 END IF
333 END DO
334
335 DO I=1,LFACCLD
336 IF(PRES(I,MY_LOAD)/=ZERO)THEN
337
338
339 WRITE(VARNAME,'(a,i0)') 'pres_',I
340 TEMP_DOUBLE = PRES(I,MY_LOAD)
341 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)),0,TEMP_DOUBLE)
342 END IF
343 END DO
344
345 END DO ! MY_LOAD=1,NPRELD
346 END IF
347
348
349
351 DO MY_LOAD=1,GLOB_THERM%NUMRADIA
352
353
354
355 TITR(1:nchartitle)=''
356 IF(LEN_TRIM(TITR)/=0)THEN
357 CALL QAPRINT(TITR(1:LEN_TRIM(TITR)),MY_LOAD,0.0_8)
358 ELSE
359 CALL QAPRINT('a_radiation_fake_name',MY_LOAD,0.0_8)
360 END IF
361
362 DO I=1,GLOB_THERM%NIRADIA
363 IF(IBCR(I,MY_LOAD) /=0)THEN
364
365
366 WRITE(VARNAME,'(a,i0)') 'ibcr_',I ! IBCR(11) => 'ibcr_11'
367 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)),IBCR(I,MY_LOAD),0.0_8)
368 END IF
369 END DO
370
371 DO I=1,GLOB_THERM%LFACTHER
372 IF(FRADIA(I,MY_LOAD)/=ZERO)THEN
373
374
375 WRITE(VARNAME,'(a,i0)') 'fradia_',I
376 TEMP_DOUBLE = FRADIA(I,MY_LOAD)
377 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)),0,TEMP_DOUBLE)
378 END IF
379 END DO
380
381 END DO ! MY_LOAD=1,NUMRADIA
382 END IF
383
384
385
386 IF (MYQAKEY('/
convec')) THEN
387 DO MY_LOAD=1,GLOB_THERM%NUMCONV
388
389
390
391 TITR(1:nchartitle)=''
392 IF(LEN_TRIM(TITR)/=0)THEN
393 CALL QAPRINT(TITR(1:LEN_TRIM(TITR)),MY_LOAD,0.0_8)
394 ELSE
395 CALL QAPRINT('a_convec_fake_name',MY_LOAD,0.0_8)
396 END IF
397
398 DO I=1,GLOB_THERM%NICONV
399 IF(IBCV(I,MY_LOAD) /=0)THEN
400
401
402 WRITE(VARNAME,'(a,i0)') 'ibcv_',I ! IBCV(11) => 'ibcv_11'
403 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)),IBCV(I,MY_LOAD),0.0_8)
404 END IF
405 END DO
406
407 DO I=1,GLOB_THERM%LFACTHER
408 IF(FCONV(I,MY_LOAD)/=ZERO)THEN
409
410
411 WRITE(VARNAME,'(a,i0)') 'fconv_',I
412 TEMP_DOUBLE = FCONV(I,MY_LOAD)
413 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)),0,TEMP_DOUBLE)
414 END IF
415 END DO
416
417 END DO ! MY_LOAD=1,NUMCONV
418 END IF
419
420
421
422 IF (MYQAKEY('/grav')) THEN
423 DO MY_LOAD=1,NGRAV
424
425
426 TITR(1:nchartitle)=''
427 my_id=igrv(5,my_load)
428 IF(len_trim(titr)/=0)THEN
429 CALL qaprint(titr(1:len_trim(titr)),my_id,0.0_8)
430 ELSE
431 CALL qaprint(
'A_GRAVITY_FAKE_NAME',my_id,0.0_8)
432 END IF
433
434 DO i=1,nigrv
435 IF(igrv(i,my_load) /=0)THEN
436
437
438 WRITE(varname,'(A,I0)') 'IGRV_',i
439 CALL qaprint(varname(1:len_trim(varname)),igrv(i,my_load),0.0_8)
440 END IF
441 END DO
442
443 DO i=igrv(4,my_load),igrv(4,my_load)+igrv(1,my_load)-1
444
445
446 WRITE(varname,'(A,I0)') 'LGRV_',i
447 CALL qaprint(varname(1:len_trim(varname)),lgrv(i),0.0_8)
448 END DO
449
450 DO i=1,lfacgrv
451 IF(agrv(i,my_load)/=zero)THEN
452
453
454 WRITE(varname,'(A,I0)') 'AGRV_',i
455 temp_double = agrv(i,my_load)
456 CALL qaprint(varname(1:len_trim(varname)),0,temp_double
457 END IF
458 END DO
459
460 END DO
461 END IF
462
463
464
466
467
468 IF (npreload > 0) THEN
469
470 DO ipre = 1,numpreload
471
473 IF(len_trim(titr)/=0)THEN
474 CALL qaprint(titr(1:len_trim(titr)),ipre,0.0_8)
475 ELSE
476 CALL qaprint(
'PRELOAD_FAKE_NAME',ipre,0.0_8)
477 END IF
478
479 DO j = 1 , 3
480 IF(ipreload(j,ipre) /=0)THEN
481 WRITE(varname,'(A,I0,I0)') 'IPRELOAD_',j,ipre
482 CALL qaprint(varname(1:len_trim(varname)),ipreload(j,ipre),0.0_8)
483 END IF
484 ENDDO
485
486 IF(ipreload(1,ipre) /=0)THEN
487 j = ipreload(1,ipre)
488 IF(iflag_bpreload(j) /=0)THEN
489 WRITE(varname,'(A,I0)') 'IFLAG_BPRELOAD_',j
490 CALL qaprint(varname(1:len_trim(varname)),iflag_bpreload(j),0.0_8)
491 END IF
492 END IF
493
494 DO j = 1 , 6
495 IF(preload(j,ipre)/=zero)THEN
496 WRITE(varname,'(A,I0,I0)') 'PRELOAD_',j,ipre
497 temp_double = preload(j,ipre)
498 CALL qaprint(varname(1:len_trim(varname)),0,temp_double)
499 END IF
500 ENDDO
501
502 ENDDO
503 ENDIF
504 ENDIF
505
506
507 ok_qa =
myqakey(
'/BEM') .AND. nflow > 0
508 IF (ok_qa) THEN
509 WRITE(varname, '(A)') "LIFLOW_=_"
510 CALL qaprint(varname(1:len_trim(varname)),
511 WRITE(varname, '(A)') "LRFLOW_=_"
512 CALL qaprint(varname(1:len_trim(varname)), lrflow, 0.0_8)
513 count = 0
514 DO i = 1, liflow
515 WRITE(varname, '(A, I0)') "IFLOW ", i
516 IF (iflow(i) /= 0) THEN
517 count = count + 1
518 CALL qaprint(varname(1:len_trim(varname)), iflow(i), 0.0_8)
519 ENDIF
520 IF (count == 100) EXIT
521 ENDDO
522 count = 0
523 DO i = liflow, 1, -1
524 WRITE(varname, '(A, I0)') "IFLOW ", i
525 IF (iflow(i) /= 0) THEN
526 count = count + 1
527 CALL qaprint(varname(1:len_trim(varname)), iflow(i), 0.0_8)
528 ENDIF
529 IF (count == 100) EXIT
530 ENDDO
531 count = 0
532 DO i = 1, lrflow
533 WRITE(varname, '(A, I0)') "rflow ", I
534 TEMP_DOUBLE = RFLOW(I)
535 IF (TEMP_DOUBLE /= 0.0_8) THEN
536 COUNT = COUNT + 1
537 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)),0,TEMP_DOUBLE)
538 ENDIF
539 IF (COUNT == 100) EXIT
540 ENDDO
541 COUNT = 0
542 DO I = LRFLOW, 1, -1
543 WRITE(VARNAME, '(A, I0)') "rflow ", I
544 TEMP_DOUBLE = RFLOW(I)
545 IF (TEMP_DOUBLE /= 0.0_8) THEN
546 COUNT = COUNT + 1
547 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)),0,TEMP_DOUBLE)
548 ENDIF
549 IF (COUNT == 100) EXIT
550 ENDDO
551 ENDIF
552
553
554
555 IF (MYQAKEY('/SPH/INOUT')) THEN
556 IF (NSPHIO > 0) THEN
557
558! Sort by ID to ensure internal order independent output
559 DO I = 1, NSPHIO
560 IDS(I) = ISPHIO(NISPHIO,I)
561 IDX(I) = I
562 IF (I /= NSPHIO) THEN
563 LVAD(I) = ISPHIO(4,I+1) - ISPHIO(4,I)
564 ELSE
565 LVAD(I) = SVSPHIO - ISPHIO(4,I)
566 ENDIF
567 ENDDO
568 CALL QUICKSORT_I2(IDS, IDX, 1, NSPHIO)
569
570! Loop over /SPH/INOUT
571 DO II = 1,NSPHIO
572
573 MY_SPHIO = IDX(II)
574 TITR(1:nchartitle)=''
575 CALL FRETITL2(TITR,NOM_OPT(LNOPT1-LTITR+1,INOM_OPT(22) + MY_SPHIO),LTITR)
576 MY_ID = NOM_OPT(1,INOM_OPT(22)+MY_SPHIO)
577 IF (LEN_TRIM(TITR) /= 0) THEN
578 CALL QAPRINT(TITR(1:LEN_TRIM(TITR)),MY_ID,0.0_8)
579 ELSE
580 CALL QAPRINT('A_SPH_INOUT_FAKE_NAME',MY_ID,0.0_8)
581 END IF
582
583 DO I = 1,NISPHIO
584 IF (ISPHIO(I,MY_SPHIO) /= 0) THEN
585 WRITE(VARNAME,'(A,I0)') 'ISPHIO_',I
586 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)),ISPHIO(I,MY_SPHIO),0.0_8)
587 END IF
588 END DO
589
590 DO I = ISPHIO(4,MY_SPHIO),ISPHIO(4,MY_SPHIO)+LVAD(MY_SPHIO)-1
591 IF ( VSPHIO(I) /= ZERO) THEN
592 WRITE(VARNAME,'(A,I0)') 'VSPHIO_',I
593 TEMP_DOUBLE = VSPHIO(I)
594 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)),0,TEMP_DOUBLE)
595 END IF
596 ENDDO
597
598 END DO ! MY_LOAD=1,NGRAV
599 ENDIF
600 END IF
601
602
603
604
605
606 RETURN
subroutine convec(ibcv, fconv, npc, tf, x, temp, nsensor, sensor_tab, fthe, iad, fthesky, python, glob_therm)
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',...
subroutine radiation(ibcr, fradia, npc, tf, x, temp, nsensor, sensor_tab, fthe, iad, fthesky, python, glob_therm)