Skip to content

Commit 2fad889

Browse files
committed
OUTBLOCK: test GPU ready version for all 87 output parameters
1 parent 8ef50b1 commit 2fad889

File tree

1 file changed

+75
-75
lines changed

1 file changed

+75
-75
lines changed

src/ecwam/outblock.F90

+75-75
Original file line numberDiff line numberDiff line change
@@ -409,176 +409,176 @@ SUBROUTINE OUTBLOCK (KIJS, KIJL, MIJ, &
409409
ENDIF
410410

411411
DO ITR=1,NTRAIN
412-
IF (IPFGTBL(42) /= 0) THEN
413-
BOUT(KIJS:KIJL,ITOBOUT(42))=4._JWRB*SQRT(MAX(EMTRAIN(KIJS:KIJL,ITR),0._JWRB))
412+
IF (IPFGTBL(42 + (ITR-1)*3) /= 0) THEN
413+
BOUT(KIJS:KIJL,ITOBOUT(42 + (ITR-1)*3))=4._JWRB*SQRT(MAX(EMTRAIN(KIJS:KIJL,ITR),0._JWRB))
414414
ENDIF
415415

416-
IF (IPFGTBL(43) /= 0) THEN
417-
BOUT(KIJS:KIJL,ITOBOUT(43))=MOD(DEG*THTRAIN(KIJS:KIJL,ITR)+180._JWRB,360._JWRB)
416+
IF (IPFGTBL(43 + (ITR-1)*3) /= 0) THEN
417+
BOUT(KIJS:KIJL,ITOBOUT(43 + (ITR-1)*3))=MOD(DEG*THTRAIN(KIJS:KIJL,ITR)+180._JWRB,360._JWRB)
418418
ENDIF
419419

420-
IF (IPFGTBL(44) /= 0) THEN
421-
BOUT(KIJS:KIJL,ITOBOUT(44))=PMTRAIN(KIJS:KIJL,ITR)
420+
IF (IPFGTBL(44 + (ITR-1)*3) /= 0) THEN
421+
BOUT(KIJS:KIJL,ITOBOUT(44 + (ITR-1)*3))=PMTRAIN(KIJS:KIJL,ITR)
422422
ENDIF
423423
ENDDO
424424

425-
IF (IPFGTBL(45) /= 0) THEN
425+
IF (IPFGTBL(42 + 3*NTRAIN) /= 0) THEN
426426
IF (LWNEMOCOUSTRN) THEN
427-
BOUT(KIJS:KIJL,ITOBOUT(45))=STRNMS(KIJS:KIJL)
427+
BOUT(KIJS:KIJL,ITOBOUT(42 + 3*NTRAIN))=STRNMS(KIJS:KIJL)
428428
ELSE
429-
CALL CIMSSTRN (KIJS, KIJL, FL1, WAVNUM, DEPTH, CITHICK, BOUT(:,ITOBOUT(45)))
429+
CALL CIMSSTRN (KIJS, KIJL, FL1, WAVNUM, DEPTH, CITHICK, BOUT(:,ITOBOUT(42 + 3*NTRAIN)))
430430
ENDIF
431431
ENDIF
432432

433-
IF (IPFGTBL(46) /= 0) THEN
433+
IF (IPFGTBL(43 + 3*NTRAIN) /= 0) THEN
434434
CALL SE10MEAN (KIJS, KIJL, FL2ND, FLD1)
435-
BOUT(KIJS:KIJL,ITOBOUT(46))=4._JWRB*SQRT(MAX(FLD1(KIJS:KIJL),0._JWRB))
435+
BOUT(KIJS:KIJL,ITOBOUT(43 + 3*NTRAIN))=4._JWRB*SQRT(MAX(FLD1(KIJS:KIJL),0._JWRB))
436436
ENDIF
437437

438-
IF (IPFGTBL(47) /= 0) THEN
439-
BOUT(KIJS:KIJL,ITOBOUT(47))=AIRD(KIJS:KIJL)
438+
IF (IPFGTBL(44 + 3*NTRAIN) /= 0) THEN
439+
BOUT(KIJS:KIJL,ITOBOUT(44 + 3*NTRAIN))=AIRD(KIJS:KIJL)
440440
ENDIF
441441

442-
IF (IPFGTBL(48) /= 0) THEN
443-
BOUT(KIJS:KIJL,ITOBOUT(48))=WSTAR(KIJS:KIJL)
442+
IF (IPFGTBL(45 + 3*NTRAIN) /= 0) THEN
443+
BOUT(KIJS:KIJL,ITOBOUT(45 + 3*NTRAIN))=WSTAR(KIJS:KIJL)
444444
ENDIF
445445

446-
IF (IPFGTBL(49) /= 0) THEN
447-
BOUT(KIJS:KIJL,ITOBOUT(49))=CICOVER(KIJS:KIJL)
446+
IF (IPFGTBL(46 + 3*NTRAIN) /= 0) THEN
447+
BOUT(KIJS:KIJL,ITOBOUT(46 + 3*NTRAIN))=CICOVER(KIJS:KIJL)
448448
ENDIF
449449

450-
IF (IPFGTBL(50) /= 0) THEN
451-
BOUT(KIJS:KIJL,ITOBOUT(50))=CITHICK(KIJS:KIJL)
450+
IF (IPFGTBL(47 + 3*NTRAIN) /= 0) THEN
451+
BOUT(KIJS:KIJL,ITOBOUT(47 + 3*NTRAIN))=CITHICK(KIJS:KIJL)
452452
ENDIF
453453

454-
IF (IPFGTBL(51) /= 0) THEN
455-
BOUT(KIJS:KIJL,ITOBOUT(51))=C3(KIJS:KIJL)
454+
IF (IPFGTBL(48 + 3*NTRAIN) /= 0) THEN
455+
BOUT(KIJS:KIJL,ITOBOUT(48 + 3*NTRAIN))=C3(KIJS:KIJL)
456456
ENDIF
457457

458-
IF (IPFGTBL(52) /= 0) THEN
459-
BOUT(KIJS:KIJL,ITOBOUT(52))=NEMOSST(KIJS:KIJL)
458+
IF (IPFGTBL(49 + 3*NTRAIN) /= 0) THEN
459+
BOUT(KIJS:KIJL,ITOBOUT(49 + 3*NTRAIN))=NEMOSST(KIJS:KIJL)
460460
ENDIF
461461

462-
IF (IPFGTBL(53) /= 0) THEN
463-
BOUT(KIJS:KIJL,ITOBOUT(53))=NEMOCICOVER(KIJS:KIJL)
462+
IF (IPFGTBL(50 + 3*NTRAIN) /= 0) THEN
463+
BOUT(KIJS:KIJL,ITOBOUT(50 + 3*NTRAIN))=NEMOCICOVER(KIJS:KIJL)
464464
ENDIF
465465

466-
IF (IPFGTBL(54) /= 0) THEN
467-
BOUT(KIJS:KIJL,ITOBOUT(54))=NEMOCITHICK(KIJS:KIJL)
466+
IF (IPFGTBL(51 + 3*NTRAIN) /= 0) THEN
467+
BOUT(KIJS:KIJL,ITOBOUT(51 + 3*NTRAIN))=NEMOCITHICK(KIJS:KIJL)
468468
ENDIF
469469

470-
IF (IPFGTBL(55) /= 0) THEN
471-
BOUT(KIJS:KIJL,ITOBOUT(55))=NEMOUCUR(KIJS:KIJL)
470+
IF (IPFGTBL(52 + 3*NTRAIN) /= 0) THEN
471+
BOUT(KIJS:KIJL,ITOBOUT(52 + 3*NTRAIN))=NEMOUCUR(KIJS:KIJL)
472472
ENDIF
473473

474-
IF (IPFGTBL(56) /= 0) THEN
475-
BOUT(KIJS:KIJL,ITOBOUT(56))=NEMOVCUR(KIJS:KIJL)
474+
IF (IPFGTBL(53 + 3*NTRAIN) /= 0) THEN
475+
BOUT(KIJS:KIJL,ITOBOUT(53 + 3*NTRAIN))=NEMOVCUR(KIJS:KIJL)
476476
ENDIF
477477

478-
IF (IPFGTBL(57) /= 0 .OR. IPFGTBL(58) /= 0) THEN
478+
IF (IPFGTBL(54 + 3*NTRAIN) /= 0 .OR. IPFGTBL(55 + 3*NTRAIN) /= 0) THEN
479479
CALL WEFLUX (KIJS, KIJL, FL1, CGROUP, &
480480
& NFRE, NANG, DFIM, DELTH, &
481481
& COSTH, SINTH, &
482482
& FLD1, FLD2)
483483
ENDIF
484-
IF (IPFGTBL(57) /= 0) THEN
485-
BOUT(KIJS:KIJL,ITOBOUT(57))=FLD1(KIJS:KIJL)
484+
IF (IPFGTBL(54 + 3*NTRAIN) /= 0) THEN
485+
BOUT(KIJS:KIJL,ITOBOUT(54 + 3*NTRAIN))=FLD1(KIJS:KIJL)
486486
ENDIF
487487

488-
IF (IPFGTBL(58) /= 0) THEN
488+
IF (IPFGTBL(55 + 3*NTRAIN) /= 0) THEN
489489
! CONVERT DIRECTIONS TO DEGREES AND METEOROLOGICAL CONVENTION
490-
BOUT(KIJS:KIJL,ITOBOUT(58))=MOD(DEG*FLD2(KIJS:KIJL)+180._JWRB,360._JWRB)
490+
BOUT(KIJS:KIJL,ITOBOUT(55 + 3*NTRAIN))=MOD(DEG*FLD2(KIJS:KIJL)+180._JWRB,360._JWRB)
491491
ENDIF
492492

493493
DO IH=1,NTEWH
494-
IF (IPFGTBL(59) /= 0) THEN
494+
IF (IPFGTBL(55 + 3*NTRAIN + IH) /= 0) THEN
495495
!$loki inline
496-
CALL SEBTMEAN (KIJS, KIJL, FL2ND, TEWH(IH-1), TEWH(IH), BOUT(:,ITOBOUT(59)))
496+
CALL SEBTMEAN (KIJS, KIJL, FL2ND, TEWH(IH-1), TEWH(IH), BOUT(:,ITOBOUT(55 + 3*NTRAIN + IH)))
497497
! SIGNIFICANT WAVE HEIGHT CONVERSION
498-
BOUT(KIJS:KIJL,ITOBOUT(59))=4._JWRB*SQRT(MAX(BOUT(KIJS:KIJL,ITOBOUT(59)),0._JWRB))
498+
BOUT(KIJS:KIJL,ITOBOUT(55 + 3*NTRAIN + IH))=4._JWRB*SQRT(MAX(BOUT(KIJS:KIJL,ITOBOUT(55 + 3*NTRAIN + IH)),0._JWRB))
499499
ENDIF
500500
ENDDO
501501

502-
IF (IPFGTBL(60) /= 0) THEN
503-
BOUT(KIJS:KIJL,ITOBOUT(60))=ETA_M(KIJS:KIJL)
502+
IF (IPFGTBL(56 + 3*NTRAIN + NTEWH) /= 0) THEN
503+
BOUT(KIJS:KIJL,ITOBOUT(56 + 3*NTRAIN + NTEWH))=ETA_M(KIJS:KIJL)
504504
ENDIF
505505

506-
IF (IPFGTBL(61) /= 0) THEN
507-
BOUT(KIJS:KIJL,ITOBOUT(61))=R(KIJS:KIJL)
506+
IF (IPFGTBL(57 + 3*NTRAIN + NTEWH) /= 0) THEN
507+
BOUT(KIJS:KIJL,ITOBOUT(57 + 3*NTRAIN + NTEWH))=R(KIJS:KIJL)
508508
ENDIF
509509

510-
IF (IPFGTBL(62) /= 0) THEN
511-
BOUT(KIJS:KIJL,ITOBOUT(62))=XNSLC(KIJS:KIJL)
510+
IF (IPFGTBL(58 + 3*NTRAIN + NTEWH) /= 0) THEN
511+
BOUT(KIJS:KIJL,ITOBOUT(58 + 3*NTRAIN + NTEWH))=XNSLC(KIJS:KIJL)
512512
ENDIF
513513

514-
IF (IPFGTBL(63) /= 0) THEN
515-
BOUT(KIJS:KIJL,ITOBOUT(63))=TAUXD(KIJS:KIJL)
514+
IF (IPFGTBL(59 + 3*NTRAIN + NTEWH) /= 0) THEN
515+
BOUT(KIJS:KIJL,ITOBOUT(59 + 3*NTRAIN + NTEWH))=TAUXD(KIJS:KIJL)
516516
ENDIF
517517

518-
IF (IPFGTBL(64) /= 0) THEN
519-
BOUT(KIJS:KIJL,ITOBOUT(64))=TAUYD(KIJS:KIJL)
518+
IF (IPFGTBL(60 + 3*NTRAIN + NTEWH) /= 0) THEN
519+
BOUT(KIJS:KIJL,ITOBOUT(60 + 3*NTRAIN + NTEWH))=TAUYD(KIJS:KIJL)
520520
ENDIF
521521

522-
IF (IPFGTBL(65) /= 0) THEN
523-
BOUT(KIJS:KIJL,ITOBOUT(65))=TAUOCXD(KIJS:KIJL)
522+
IF (IPFGTBL(61 + 3*NTRAIN + NTEWH) /= 0) THEN
523+
BOUT(KIJS:KIJL,ITOBOUT(61 + 3*NTRAIN + NTEWH))=TAUOCXD(KIJS:KIJL)
524524
ENDIF
525525

526-
IF (IPFGTBL(66) /= 0) THEN
527-
BOUT(KIJS:KIJL,ITOBOUT(66))=TAUOCYD(KIJS:KIJL)
526+
IF (IPFGTBL(62 + 3*NTRAIN + NTEWH) /= 0) THEN
527+
BOUT(KIJS:KIJL,ITOBOUT(62 + 3*NTRAIN + NTEWH))=TAUOCYD(KIJS:KIJL)
528528
ENDIF
529529

530-
IF (IPFGTBL(67) /= 0) THEN
530+
IF (IPFGTBL(63 + 3*NTRAIN + NTEWH) /= 0) THEN
531531
! !!! make the energy flux positive
532-
BOUT(KIJS:KIJL,ITOBOUT(67))=MAX(-PHIOCD(KIJS:KIJL),0.0_JWRB)
532+
BOUT(KIJS:KIJL,ITOBOUT(63 + 3*NTRAIN + NTEWH))=MAX(-PHIOCD(KIJS:KIJL),0.0_JWRB)
533533
ENDIF
534534

535535
!! alternative ways to determine wave height extremes
536-
IF (IPFGTBL(67) /= 0 .OR. IPFGTBL(68) /= 0 .OR. &
537-
& IPFGTBL(69) /= 0 .OR. IPFGTBL(70) /= 0 ) THEN
536+
IF (IPFGTBL(63 + 3*NTRAIN + NTEWH) /= 0 .OR. IPFGTBL(64 + 3*NTRAIN + NTEWH) /= 0 .OR. &
537+
& IPFGTBL(65 + 3*NTRAIN + NTEWH) /= 0 .OR. IPFGTBL(66 + 3*NTRAIN + NTEWH) /= 0 ) THEN
538538
CALL W_MAXH (KIJS, KIJL, FL1, DEPTH, WAVNUM, &
539539
& CMAX_F, HMAX_N, CMAX_ST, HMAX_ST, PHIST)
540540
ENDIF
541541

542-
IF (IPFGTBL(68) /= 0) THEN
543-
BOUT(KIJS:KIJL,ITOBOUT(68))=CMAX_F(KIJS:KIJL)
542+
IF (IPFGTBL(64 + 3*NTRAIN + NTEWH) /= 0) THEN
543+
BOUT(KIJS:KIJL,ITOBOUT(64 + 3*NTRAIN + NTEWH))=CMAX_F(KIJS:KIJL)
544544
ENDIF
545545

546-
IF (IPFGTBL(69) /= 0) THEN
547-
BOUT(KIJS:KIJL,ITOBOUT(69))=HMAX_N(KIJS:KIJL)
546+
IF (IPFGTBL(65 + 3*NTRAIN + NTEWH) /= 0) THEN
547+
BOUT(KIJS:KIJL,ITOBOUT(65 + 3*NTRAIN + NTEWH))=HMAX_N(KIJS:KIJL)
548548
ENDIF
549549

550-
IF (IPFGTBL(70) /= 0) THEN
551-
BOUT(KIJS:KIJL,ITOBOUT(70))=CMAX_ST(KIJS:KIJL)
550+
IF (IPFGTBL(66 + 3*NTRAIN + NTEWH) /= 0) THEN
551+
BOUT(KIJS:KIJL,ITOBOUT(66 + 3*NTRAIN + NTEWH))=CMAX_ST(KIJS:KIJL)
552552
ENDIF
553553

554-
IF (IPFGTBL(71) /= 0) THEN
555-
BOUT(KIJS:KIJL,ITOBOUT(71))=HMAX_ST(KIJS:KIJL)
554+
IF (IPFGTBL(67 + 3*NTRAIN + NTEWH) /= 0) THEN
555+
BOUT(KIJS:KIJL,ITOBOUT(67 + 3*NTRAIN + NTEWH))=HMAX_ST(KIJS:KIJL)
556556
ENDIF
557557
!!
558558

559559

560560
! COMPUTE OUTPUT EXTRA FIELDS
561561
! add necessary code to compute the extra output fields
562562
!!!for testing
563-
IF (IPFGTBL(72) /= 0) THEN
564-
CALL CTCOR (KIJS, KIJL, FL1, BOUT(:,ITOBOUT(72)))
563+
IF (IPFGTBL(68 + 3*NTRAIN + NTEWH) /= 0) THEN
564+
CALL CTCOR (KIJS, KIJL, FL1, BOUT(:,ITOBOUT(68 + 3*NTRAIN + NTEWH)))
565565
ENDIF
566566

567-
IF (IPFGTBL(73) /= 0) THEN
567+
IF (IPFGTBL(69 + 3*NTRAIN + NTEWH) /= 0) THEN
568568
XMODEL_CUTOFF=(ZPI*FR(NFRE))**2/G
569-
CALL MEANSQS (XMODEL_CUTOFF, KIJS, KIJL, FL1, WAVNUM, UFRIC, COSWDIF, BOUT(:,ITOBOUT(73)))
569+
CALL MEANSQS (XMODEL_CUTOFF, KIJS, KIJL, FL1, WAVNUM, UFRIC, COSWDIF, BOUT(:,ITOBOUT(69 + 3*NTRAIN + NTEWH)))
570570
ENDIF
571571

572-
IF (IPFGTBL(74) /= 0) THEN
573-
BOUT(KIJS:KIJL,ITOBOUT(74))=0._JWRB
572+
IF (IPFGTBL(70 + 3*NTRAIN + NTEWH) /= 0) THEN
573+
BOUT(KIJS:KIJL,ITOBOUT(70 + 3*NTRAIN + NTEWH))=0._JWRB
574574
ENDIF
575575

576-
IF (IPFGTBL(75) /= 0) THEN
577-
BOUT(KIJS:KIJL,ITOBOUT(75))=0._JWRB
576+
IF (IPFGTBL(71 + 3*NTRAIN + NTEWH) /= 0) THEN
577+
BOUT(KIJS:KIJL,ITOBOUT(71 + 3*NTRAIN + NTEWH))=0._JWRB
578578
ENDIF
579579

580-
IF (IPFGTBL(76) /= 0) THEN
581-
BOUT(KIJS:KIJL,ITOBOUT(76))=0._JWRB
580+
IF (IPFGTBL(72 + 3*NTRAIN + NTEWH) /= 0) THEN
581+
BOUT(KIJS:KIJL,ITOBOUT(72 + 3*NTRAIN + NTEWH))=0._JWRB
582582
ENDIF
583583

584584

0 commit comments

Comments
 (0)