@@ -409,176 +409,176 @@ SUBROUTINE OUTBLOCK (KIJS, KIJL, MIJ, &
409
409
ENDIF
410
410
411
411
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 ))
414
414
ENDIF
415
415
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 )
418
418
ENDIF
419
419
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)
422
422
ENDIF
423
423
ENDDO
424
424
425
- IF (IPFGTBL(45 ) /= 0 ) THEN
425
+ IF (IPFGTBL(42 + 3 * NTRAIN ) /= 0 ) THEN
426
426
IF (LWNEMOCOUSTRN) THEN
427
- BOUT(KIJS:KIJL,ITOBOUT(45 ))= STRNMS(KIJS:KIJL)
427
+ BOUT(KIJS:KIJL,ITOBOUT(42 + 3 * NTRAIN ))= STRNMS(KIJS:KIJL)
428
428
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 )))
430
430
ENDIF
431
431
ENDIF
432
432
433
- IF (IPFGTBL(46 ) /= 0 ) THEN
433
+ IF (IPFGTBL(43 + 3 * NTRAIN ) /= 0 ) THEN
434
434
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 ))
436
436
ENDIF
437
437
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)
440
440
ENDIF
441
441
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)
444
444
ENDIF
445
445
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)
448
448
ENDIF
449
449
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)
452
452
ENDIF
453
453
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)
456
456
ENDIF
457
457
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)
460
460
ENDIF
461
461
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)
464
464
ENDIF
465
465
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)
468
468
ENDIF
469
469
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)
472
472
ENDIF
473
473
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)
476
476
ENDIF
477
477
478
- IF (IPFGTBL(57 ) /= 0 .OR. IPFGTBL(58 ) /= 0 ) THEN
478
+ IF (IPFGTBL(54 + 3 * NTRAIN ) /= 0 .OR. IPFGTBL(55 + 3 * NTRAIN ) /= 0 ) THEN
479
479
CALL WEFLUX (KIJS, KIJL, FL1, CGROUP, &
480
480
& NFRE, NANG, DFIM, DELTH, &
481
481
& COSTH, SINTH, &
482
482
& FLD1, FLD2)
483
483
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)
486
486
ENDIF
487
487
488
- IF (IPFGTBL(58 ) /= 0 ) THEN
488
+ IF (IPFGTBL(55 + 3 * NTRAIN ) /= 0 ) THEN
489
489
! 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 )
491
491
ENDIF
492
492
493
493
DO IH= 1 ,NTEWH
494
- IF (IPFGTBL(59 ) /= 0 ) THEN
494
+ IF (IPFGTBL(55 + 3 * NTRAIN + IH ) /= 0 ) THEN
495
495
! $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 )))
497
497
! 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 ))
499
499
ENDIF
500
500
ENDDO
501
501
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)
504
504
ENDIF
505
505
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)
508
508
ENDIF
509
509
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)
512
512
ENDIF
513
513
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)
516
516
ENDIF
517
517
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)
520
520
ENDIF
521
521
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)
524
524
ENDIF
525
525
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)
528
528
ENDIF
529
529
530
- IF (IPFGTBL(67 ) /= 0 ) THEN
530
+ IF (IPFGTBL(63 + 3 * NTRAIN + NTEWH ) /= 0 ) THEN
531
531
! !!! 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 )
533
533
ENDIF
534
534
535
535
! ! 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
538
538
CALL W_MAXH (KIJS, KIJL, FL1, DEPTH, WAVNUM, &
539
539
& CMAX_F, HMAX_N, CMAX_ST, HMAX_ST, PHIST)
540
540
ENDIF
541
541
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)
544
544
ENDIF
545
545
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)
548
548
ENDIF
549
549
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)
552
552
ENDIF
553
553
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)
556
556
ENDIF
557
557
! !
558
558
559
559
560
560
! COMPUTE OUTPUT EXTRA FIELDS
561
561
! add necessary code to compute the extra output fields
562
562
! !!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 )))
565
565
ENDIF
566
566
567
- IF (IPFGTBL(73 ) /= 0 ) THEN
567
+ IF (IPFGTBL(69 + 3 * NTRAIN + NTEWH ) /= 0 ) THEN
568
568
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 )))
570
570
ENDIF
571
571
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
574
574
ENDIF
575
575
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
578
578
ENDIF
579
579
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
582
582
ENDIF
583
583
584
584
0 commit comments