221
222
223
229 USE glob_therm_mod
230 use output_mod
231
232
233
234#include "implicit_f.inc"
235
236
237
238#include "mvsiz_p.inc"
239
240
241
242#include "com01_c.inc"
243#include "com04_c.inc"
244#include "com_xfem1.inc"
245#include "param_c.inc"
246#include "units_c.inc"
247#include "scr03_c.inc"
248#include "scr06_c.inc"
249#include "scr07_c.inc"
250#include "scr14_c.inc"
251#include "scr16_c.inc"
252#include "parit_c.inc"
253#include "task_c.inc"
254#include "scrnoi_c.inc"
255#include "scrfs_c.inc"
256#include "scrcut_c.inc"
257#include "scr_fac_c.inc"
258#include "sphcom.inc"
259#include "spmd_c.inc"
260#include "tabsiz_c.inc"
261#include "scr17_c.inc"
262#include "sms_c.inc"
263
264
265
266 TYPE(OUTPUT_) :: OUTPUT
267 TYPE(H3D_DATABASE) :: H3D_DATA
268 TYPE(PINCH) :: PINCH_DATA
269 type (glob_therm_) ,intent(inout) :: GLOB_THERM
270
271
272
273 INTEGER I,NVAR,M16STAK,NPE,NIPMAX,NPSAV_OLD
275
276
277 pinch_data%SAPINCH = 0
278
279 IF(iparit==-1)iparit=ipari0
280
281 IF(icrack3d > 0)THEN
282 IF(iparit /= 1) iparit = ipari0
283 ENDIF
284
285 IF(ipari0==0.AND.iparit==1) THEN
286 IF(ispmd==0)THEN
287 WRITE(istdo,*)' **WARNING PARALLEL ARITHMETIC DISABLED'
288 WRITE(iout,*)' **WARNING PREVIOUS RUN WITHOUT PARITH/ON'
289 WRITE(iout,*)' **PARALLEL ARITHMETIC IS NO MORE ACTIVABLE'
290 ENDIF
291 iparit=0
292 ENDIF
293
294 nisky0 = 8*numels + 4*numelq + 4*numelc + 2*numelt +
295 . 2*numelp + 3*numelr + 3*numeltg +
296 . 6*numels10 + 12*numels20 + 8*numels16 + 3*numeltg6
297 lcnel = nisky0
298
299 nisky0 = nisky0 + 4*nskymv0
300
301 nisky0 = nisky0 + 4*nconld
302
303 nisky0 = nisky0 + 4*glob_therm%NUMCONV + 4*glob_therm%NUMRADIA + 4*glob_therm%NFXFLUX
304 nisky0 = nisky0 + slloadp
305
306 IF(iparit>=1) iparit=1
307 IF( lwamp /= 0 .AND. lwanmp/=0)THEN
308 lwamp =
max(lwamp,2*mvsiz*100)
309 lenwa =
max( nthread * lwamp,lwanmp)
310 ENDIF
311 swa = lenwa
312 sfv = nfunct
313 sicodt=numnod+2*numnod*
max(iale,ieuler,ialelag)
314 sicodr=numnod*iroddl
315
316
317
318
319
320
321
322 npsav_old = npsav
323 IF(npsav==0)npsav_old = 23
324 npsav = 29
325 IF(iparit==3)THEN
326 sa = 3*numnod+9*numnod*nthread
327 sar = 3*numnod+9*numnod*nthread
328 sstifn = numnod+3*numnod*nthread
329 sviscn = numnod+3*numnod*nthread
330 sstifr = numnod*iroddl+3*numnod*nthread*iroddl
331 sdmsph = 0
332 spartsav = npsav*(npart+nthpart)*nthread
333 sfsky = 0
334 sfskym = 0
335 sfskyd = 0
336 sisky = 0
337 probint=0.5
338 lskyi_sms =
max(nint(5*
max(4*numnod,imaximp)*probint)+4*(numsph+nskyi18)+lcni2,isumnx)
339 sadsky = 0
340 sprocne = 0
341 saddcni2 = 0
342 sprocni2 = 0
343 siadsdp = 0
344 siadrcp = 0
345 siads = 0
346 siadwal = 0
347 siadrbk = 0
348 siadi2 = 0
349 siadmv2 = 0
350 siadmv3 = 0
351 siadll = 0
352 siadrbm = 0
353 siadi18 = 0
354 siadrbmk = 0
355 saddcncnd = 0
356 sprocncnd = 0
357 siadcnd = 0
358 ELSEIF(iparit/=0)THEN
359 sa = 3*numnod
360 sar = 3*numnod
361 sstifn = numnod
362 sviscn = numnod
363 sstifr = numnod
364 IF(sol2sph_flag/=0) THEN
365 sdmsph = numnod
366 ELSE
367 sdmsph = 0
368 END IF
369 spartsav = npsav*(npart+nthpart)*nthread
370
371 lsky = lcne0
372 sfsky = 8*lcne0
373
374 lskypxfem = lcnepxfem
375
376 lskycrkxfem = lcnecrkxfem
377
378 IF(iale+ieuler+glob_therm%ITHERM+ialelag/=0) THEN
379 sfskym = lcne0
380 ELSE
381 sfskym = 0
382 ENDIF
383
384 IF(sol2sph_flag/=0) THEN
385 sfskyd = lcne0
386 ELSE
387 sfskyd = 0
388 ENDIF
389
390 probint=0.5
391
392 lskyi =
max(nint(5*
max(4*numnod,imaximp)*probint)
393 + +4*(numsph+nskyi18),isumnx)
394 sfskyi = nfskyi*lskyi
395 sisky = lskyi
396
397 lskyi_sms = lskyi+lcni2
398
399 sadsky = numnod + 1
400
401 sadsky = sadsky + numnod
402 sprocne = lcne0
403 sprocne_pxfe = lcnepxfem
404 sprocne_crkxfe = lcnecrkxfem
405
406 IF (i2nsnt>0) THEN
407 saddcni2 = numnod+1
408
409 IF(ivector==1) saddcni2 = saddcni2 + numnod
410 ELSE
411 saddcni2 = 0
412 ENDIF
413
414 sprocni2 = lcni2
415 siadsdp = nspmd+1
416 siadrcp = nspmd+1
417
418
419
420
421
422
423
424
425
426 siads = nisky0
427 siadwal = nskyrw0
428 siadrbk = nskyrbk0
429 siadi2 = niskyi2
430 siadmv2 = nskymv0
431 siadmv3 = nskymvc0
432 siadll = nskyll0
433 siadrbm = nskyrbm0
434 siadi18 = nskyi18
435 siadrbmk = nskyrbmk0
436 ELSE
437 sa = 3*numnod*nthread
438 sar = 3*numnod*nthread
439 sstifn = numnod*nthread
440
442 pinch_data%SAPINCH = nthread*numnod
443 ELSE
444 pinch_data%SAPINCH = 0
445 ENDIF
446
447 IF(sol2sph_flag/=0) THEN
448 sdmsph = numnod*nthread
449 ELSE
450 sdmsph = 0
451 END IF
452 sviscn = numnod*nthread
453 sstifr = numnod*iroddl*nthread
454 spartsav = npsav*(npart+nthpart)*nthread
455 sfsky = 0
456 sfskym = 0
457 sfskyd = 0
458 sisky = 0
459
460 probint=0.5
461 lskyi_sms =
max(nint(5*
max(4*numnod,imaximp)*probint)
462 + +4*(numsph+nskyi18)+lcni2,isumnx)
463
464 sadsky = 0
465 sprocne = 0
466 saddcni2 = 0
467 sprocni2 = 0
468 siadsdp = 0
469 siadrcp = 0
470 siads = 0
471 siadwal = 0
472 siadrbk = 0
473 siadi2 = 0
474 siadmv2 = 0
475 siadmv3 = 0
476 siadll = 0
477 siadrbm = 0
478 siadi18 = 0
479 sprocne_pxfe = 0
480 sprocne_crkxfe = 0
481 ENDIF
482
483 IF (ns10e >0 .AND. ipari0 /= 0) THEN
484 saddcncnd = numnod + 1
485 sprocncnd = lcncnd
486 siadcnd = 2*ns10e
487 ELSE
488 saddcncnd = 0
489 sprocncnd = 0
490 siadcnd = 0
491 END IF
492
493 IF(
ale%GLOBAL%INCOMP==0)
THEN
494 sval2=
max(iale,glob_therm%ITHERM,ieuler,ialelag)*(numels+numelq+numeltg+nsvois+nqvois+ntgvois)*
max(1,nmult)
495
496 sphi =
max(iale,glob_therm%ITHERM,ieuler,ialelag)*( numels + numelq + numeltg + nsvois + nqvois + ntgvois + nsegflu )
497 ELSE
498 sval2 = 0
499 sphi = 0
500 ENDIF
501 sr = 0
502 sestif = 0
503
504
505
506
507 silink=4*nrlink
508 sfr_rl = (nspmd+2)*nrlink
509
510
511 sllink=lllink
512 siadrl = lllink
513
514
515
516
517 scrflsw = 9*nsflsw
518 sflsw = 6*nsflsw
519 sneflsw = 1*nsflsw
520 snnflsw = 8*ntflsw
521
522
523
524
525
526
527
528
529
530
531
532
533 output%DATA%S_FOPT = (nsect + nrbody + nrwall)
534 allocate(output%DATA%FOPT(6,nsect + nrbody + nrwall+1))
535
536 output%DATA%S_VECT_CONT =(
min(1,anim_v(4)+outp_v(4)+h3d_data%N_VECT_CONT))
537 output%DATA%S_VECT_FINT = (
min(1,anim_v(5)+outp_v(5)+h3d_data%N_VECT_FINT))
538 output%DATA%S_VECT_FEXT = (
min(1,anim_v(6)+outp_v(6)+h3d_data%N_VECT_FEXT))
539 output%DATA%S_VECT_PCONT = (
min(1,anim_v(12)+outp_v(12)+h3d_data%N_VECT_PCONT))
540 output%DATA%S_VECT_PCONT_2 =(
min(1,anim_v(12)+outp_v(12)+h3d_data%N_VECT_PCONT))
541
542 output%DATA%S_VECT_CONT2 = (
min(1,anim_v(13)+h3d_data%N_VECT_CONT2))
543 output%DATA%S_VECT_PCONT2 =(
min(1,anim_v(27)+h3d_data%N_VECT_PCONT2))
544 output%DATA%S_VECT_PCONT2_2 =(
min(1,anim_v(27)+h3d_data%N_VECT_PCONT2))
545
546
547 sxcut = 7*ncuts
548
549
550
551
552
553
554 output%DATA%S_SCAL_DT = (
min(1,anim_n(1)+outp_n(1)+h3d_data%N_SCAL_DT))
555 output%DATA%S_SCAL_DMAS = (
min(1,anim_n(2)+outp_n(2)+h3d_data%N_SCAL_DMAS))
556 output%DATA%S_SCAL_DINER = (
min(1,anim_n(12)+outp_n(3)+h3d_data%N_SCAL_DINER))
557 output%DATA%S_SCAL_DAMA2 = 2*(
min(1,anim_n(15)*anim_n(16)+h3d_data%N_SCAL_DAMA2))
558 output%DATA%S_SCAL_SPRING =
max(1,numelr)*(anim_fe(11)+anim_fe(12)+anim_fe(13))
559 sanin =
max(1,numelr*(anim_fe(11)+anim_fe(12)+anim_fe(13)))
560 CALl allocate_output_data(output,numnod)
561 stani = 6*(numelc+numeltg)*iepsdot + 15*(numelt+numelp+numelr)*(
max(anim_ft(1),h3d_data%UND_FORC))
562
563
564
565 ssecfcum = 7*numnod*nsect*isecut
566
567 swasph = lwasph
568
569
570 output%data%fani_cell%is_vort_x_requested = .false.
571 output%data%fani_cell%is_vort_y_requested = .false.
572 output%data%fani_cell%is_vort_z_requested = .false.
573 IF(anim_se(10) == 1 .OR. h3d_data%SOL_SCAL_VORTX == 1)
574 . output%data%fani_cell%is_vort_x_requested=.true.
575 IF(anim_se(4960) == 1 .OR. h3d_data%SOL_SCAL_VORTY == 1)
576 . output%data%fani_cell%is_vort_y_requested=.true.
577 IF(anim_se(4961) == 1 .OR. h3d_data%SOL_SCAL_VORTZ == 1)
578 . output%data%fani_cell%is_vort_z_requested=.true.
579
580
581
582 output%data%fani_cell%is_f18_fvm_requested = .false.
583 IF(h3d_data%N_VECT_CONT == 1)
584 . output%data%fani_cell%is_f18_fvm_requested = .true.
585
586 m16stak = 0
587 IF(numels16/=0)THEN
588 npe = 16
589 nipmax = 81
590 m16stak = (11*nipmax+15*npe+3*nipmax*npe)*mvsiz
591 ENDIF
592 IF(numels20/=0)THEN
593 npe = 20
594 nipmax = 81
595 m16stak =
max(m16stak,(10*nipmax+15*npe+3*nipmax*npe)*mvsiz)
596 ENDIF
597 npsav = npsav_old
598
599 IF(numels8a>0)THEN
600 nipmax = 729
601 m16stak =
max(m16stak,12*nipmax*mvsiz)
602 ENDIF
603 sw16 = m16stak * nthread
604 sicut= 44*ncuts
605
606
607
608
609
610
611 sdretrio = 5*ninter
612 slbvrs = 21*nibvel
613
614
615
616 IF(nnoise==0)THEN
617 nnoise=nnoiser*rnoi
619 ELSE
620 IF((noisev+noisea+noisep)==0) noisev = 1
621 nvar=3*noisev+3*noisea+noisep
622 ENDIF
623 if01=1
624 mf01=1
625 ifif=if01
626 mfif=mf01
627 sinoise = 0
628 sfnoise = 0
629 IF(nnoise>0)THEN
630 ifif = (2*nnoise+10)
631 mfif = (6*
nvar*nnoise+1)
632 sinoise = 2*nnoise+10
633 sfnoise = 6*
nvar*nnoise+1
634 ENDIF
635 nnoise_sav = nnoise
636
637
638
639 RETURN
integer function nvar(text)