228 |
|
|
229 |
#ifdef ALLOW_DIAGNOSTICS |
#ifdef ALLOW_DIAGNOSTICS |
230 |
c Helper variables for diagnostics |
c Helper variables for diagnostics |
|
_RL DIAGarray (1:sNx,1:sNy) |
|
231 |
_RL DIAGarrayA (1:sNx,1:sNy) |
_RL DIAGarrayA (1:sNx,1:sNy) |
232 |
_RL DIAGarrayB (1:sNx,1:sNy) |
_RL DIAGarrayB (1:sNx,1:sNy) |
233 |
_RL DIAGarrayC (1:sNx,1:sNy) |
_RL DIAGarrayC (1:sNx,1:sNy) |
366 |
AREApreTH(I,J)=AREANM1(I,J,bi,bj) |
AREApreTH(I,J)=AREANM1(I,J,bi,bj) |
367 |
d_HEFFbyNEG(I,J)=0. _d 0 |
d_HEFFbyNEG(I,J)=0. _d 0 |
368 |
d_HSNWbyNEG(I,J)=0. _d 0 |
d_HSNWbyNEG(I,J)=0. _d 0 |
369 |
|
#ifdef ALLOW_DIAGNOSTICS |
370 |
|
DIAGarrayA(I,J) = AREANM1(I,J,bi,bj) |
371 |
|
DIAGarrayB(I,J) = AREANM1(I,J,bi,bj) |
372 |
|
DIAGarrayC(I,J) = HEFFNM1(I,J,bi,bj) |
373 |
|
DIAGarrayD(I,J) = HSNOW(I,J,bi,bj) |
374 |
|
#endif |
375 |
ENDDO |
ENDDO |
376 |
ENDDO |
ENDDO |
377 |
|
|
468 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
469 |
DO J=1,sNy |
DO J=1,sNy |
470 |
DO I=1,sNx |
DO I=1,sNx |
471 |
|
#ifdef ALLOW_DIAGNOSTICS |
472 |
|
DIAGarrayA(I,J) = AREA(I,J,bi,bj) |
473 |
|
#endif |
474 |
#ifdef ALLOW_SITRACER |
#ifdef ALLOW_SITRACER |
475 |
SItrAREA(I,J,bi,bj,1)=AREA(I,J,bi,bj) |
SItrAREA(I,J,bi,bj,1)=AREA(I,J,bi,bj) |
476 |
#endif |
#endif |
497 |
HEFFpreTH(I,J)=HEFF(I,J,bi,bj) |
HEFFpreTH(I,J)=HEFF(I,J,bi,bj) |
498 |
HSNWpreTH(I,J)=HSNOW(I,J,bi,bj) |
HSNWpreTH(I,J)=HSNOW(I,J,bi,bj) |
499 |
AREApreTH(I,J)=AREA(I,J,bi,bj) |
AREApreTH(I,J)=AREA(I,J,bi,bj) |
500 |
|
#ifdef ALLOW_DIAGNOSTICS |
501 |
|
DIAGarrayB(I,J) = AREA(I,J,bi,bj) |
502 |
|
DIAGarrayC(I,J) = HEFF(I,J,bi,bj) |
503 |
|
DIAGarrayD(I,J) = HSNOW(I,J,bi,bj) |
504 |
|
#endif |
505 |
#ifdef ALLOW_SITRACER |
#ifdef ALLOW_SITRACER |
506 |
SItrHEFF(I,J,bi,bj,1)=HEFF(I,J,bi,bj) |
SItrHEFF(I,J,bi,bj,1)=HEFF(I,J,bi,bj) |
507 |
SItrAREA(I,J,bi,bj,2)=AREA(I,J,bi,bj) |
SItrAREA(I,J,bi,bj,2)=AREA(I,J,bi,bj) |
554 |
|
|
555 |
#endif /* SEAICE_GROWTH_LEGACY */ |
#endif /* SEAICE_GROWTH_LEGACY */ |
556 |
|
|
557 |
|
#ifdef ALLOW_DIAGNOSTICS |
558 |
|
IF ( useDiagnostics ) THEN |
559 |
|
CALL DIAGNOSTICS_FILL(DIAGarrayA,'SIarPrRi',0,1,3,bi,bj,myThid) |
560 |
|
CALL DIAGNOSTICS_FILL(DIAGarrayB,'SIarPrTh',0,1,3,bi,bj,myThid) |
561 |
|
CALL DIAGNOSTICS_FILL(DIAGarrayC,'SIhePrTh',0,1,3,bi,bj,myThid) |
562 |
|
CALL DIAGNOSTICS_FILL(DIAGarrayD,'SIhsPrTh',0,1,3,bi,bj,myThid) |
563 |
|
ENDIF |
564 |
|
#endif |
565 |
|
|
566 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
567 |
#ifdef SEAICE_MODIFY_GROWTH_ADJ |
#ifdef SEAICE_MODIFY_GROWTH_ADJ |
568 |
Cgf no additional dependency of air-sea fluxes to ice |
Cgf no additional dependency of air-sea fluxes to ice |
867 |
|
|
868 |
#endif /* MCPHEE_OCEAN_ICE_HEAT_FLUX */ |
#endif /* MCPHEE_OCEAN_ICE_HEAT_FLUX */ |
869 |
|
|
|
#ifdef ALLOW_DIAGNOSTICS |
|
|
DIAGarrayA (I,J) = a_QbyOCN(I,J) |
|
|
#endif |
|
870 |
r_QbyOCN(i,j) = a_QbyOCN(i,j) |
r_QbyOCN(i,j) = a_QbyOCN(i,j) |
871 |
|
|
872 |
ENDDO |
ENDDO |
896 |
d_HEFFbyOCNonICE(I,J)=MAX(r_QbyOCN(i,j), -HEFF(I,J,bi,bj)) |
d_HEFFbyOCNonICE(I,J)=MAX(r_QbyOCN(i,j), -HEFF(I,J,bi,bj)) |
897 |
r_QbyOCN(I,J)=r_QbyOCN(I,J)-d_HEFFbyOCNonICE(I,J) |
r_QbyOCN(I,J)=r_QbyOCN(I,J)-d_HEFFbyOCNonICE(I,J) |
898 |
HEFF(I,J,bi,bj)=HEFF(I,J,bi,bj) + d_HEFFbyOCNonICE(I,J) |
HEFF(I,J,bi,bj)=HEFF(I,J,bi,bj) + d_HEFFbyOCNonICE(I,J) |
|
#ifdef ALLOW_DIAGNOSTICS |
|
|
DIAGarrayA(I,J) = d_HEFFbyOCNonICE(i,j) |
|
|
#endif |
|
899 |
#ifdef ALLOW_SITRACER |
#ifdef ALLOW_SITRACER |
900 |
SItrHEFF(I,J,bi,bj,2)=HEFF(I,J,bi,bj) |
SItrHEFF(I,J,bi,bj,2)=HEFF(I,J,bi,bj) |
901 |
#endif |
#endif |
986 |
r_QbyATM_cover(I,J)=r_QbyATM_cover(I,J)-tmpscal2 |
r_QbyATM_cover(I,J)=r_QbyATM_cover(I,J)-tmpscal2 |
987 |
HEFF(I,J,bi,bj) = HEFF(I,J,bi,bj) + tmpscal2 |
HEFF(I,J,bi,bj) = HEFF(I,J,bi,bj) + tmpscal2 |
988 |
|
|
|
#ifdef ALLOW_DIAGNOSTICS |
|
|
DIAGarrayA(I,J) = d_HEFFbyATMonOCN_cover(I,J) |
|
|
#endif |
|
989 |
#ifdef ALLOW_SITRACER |
#ifdef ALLOW_SITRACER |
990 |
SItrHEFF(I,J,bi,bj,3)=HEFF(I,J,bi,bj) |
SItrHEFF(I,J,bi,bj,3)=HEFF(I,J,bi,bj) |
991 |
#endif |
#endif |
1064 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
1065 |
DO J=1,sNy |
DO J=1,sNy |
1066 |
DO I=1,sNx |
DO I=1,sNx |
|
#ifdef ALLOW_DIAGNOSTICS |
|
|
DIAGarrayA(I,J) = ZERO |
|
|
#endif |
|
|
|
|
1067 |
#ifdef SEAICE_DO_OPEN_WATER_GROWTH |
#ifdef SEAICE_DO_OPEN_WATER_GROWTH |
|
|
|
1068 |
c Initial ice growth is triggered by open water |
c Initial ice growth is triggered by open water |
1069 |
c heat flux overcoming potential melt by ocean |
c heat flux overcoming potential melt by ocean |
1070 |
tmpscal1=r_QbyATM_open(I,J)+r_QbyOCN(i,j) * |
tmpscal1=r_QbyATM_open(I,J)+r_QbyOCN(i,j) * |
1081 |
d_HEFFbyATMonOCN_open(I,J)=tmpscal3 |
d_HEFFbyATMonOCN_open(I,J)=tmpscal3 |
1082 |
d_HEFFbyATMonOCN(I,J)=d_HEFFbyATMonOCN(I,J)+tmpscal3 |
d_HEFFbyATMonOCN(I,J)=d_HEFFbyATMonOCN(I,J)+tmpscal3 |
1083 |
r_QbyATM_open(I,J)=r_QbyATM_open(I,J)-tmpscal3 |
r_QbyATM_open(I,J)=r_QbyATM_open(I,J)-tmpscal3 |
1084 |
HEFF(I,J,bi,bj) = HEFF(I,J,bi,bj) + tmpscal3 |
HEFF(I,J,bi,bj) = HEFF(I,J,bi,bj) + tmpscal3 |
|
|
|
1085 |
#endif /* SEAICE_DO_OPEN_WATER_GROWTH */ |
#endif /* SEAICE_DO_OPEN_WATER_GROWTH */ |
|
|
|
|
#ifdef ALLOW_DIAGNOSTICS |
|
|
DIAGarrayA(I,J) = maskC(I,J,kSurface,bi,bj) |
|
|
& * d_HEFFbyATMonOCN_open(I,J) |
|
|
#endif |
|
1086 |
ENDDO |
ENDDO |
1087 |
ENDDO |
ENDDO |
|
|
|
1088 |
#endif /* SEAICE_GROWTH_LEGACY */ |
#endif /* SEAICE_GROWTH_LEGACY */ |
1089 |
|
|
1090 |
#ifdef ALLOW_SITRACER |
#ifdef ALLOW_SITRACER |
1159 |
C (cannot melt more than all the ice) |
C (cannot melt more than all the ice) |
1160 |
tmpscal2 = MAX(-tmpscal0,tmpscal1) |
tmpscal2 = MAX(-tmpscal0,tmpscal1) |
1161 |
tmpscal3 = MIN(ZERO,tmpscal2) |
tmpscal3 = MIN(ZERO,tmpscal2) |
|
#ifdef ALLOW_DIAGNOSTICS |
|
|
DIAGarray(I,J) = tmpscal2 |
|
|
#endif |
|
1162 |
C gain of new ice over open water |
C gain of new ice over open water |
1163 |
tmpscal4=MAX(ZERO,a_QbyATM_open(I,J)) |
tmpscal4=MAX(ZERO,a_QbyATM_open(I,J)) |
1164 |
C compute cover fraction tendency |
C compute cover fraction tendency |
1615 |
& 'SIdHbATC',0,1,3,bi,bj,myThid) |
& 'SIdHbATC',0,1,3,bi,bj,myThid) |
1616 |
CALL DIAGNOSTICS_FILL(d_HEFFbyATMonOCN_open, |
CALL DIAGNOSTICS_FILL(d_HEFFbyATMonOCN_open, |
1617 |
& 'SIdHbATO',0,1,3,bi,bj,myThid) |
& 'SIdHbATO',0,1,3,bi,bj,myThid) |
1618 |
|
CALL DIAGNOSTICS_FILL(d_HEFFbyFLOODING, |
1619 |
|
& 'SIdHbFLO',0,1,3,bi,bj,myThid) |
1620 |
|
CALL DIAGNOSTICS_FILL |
1621 |
|
& (d_HSNWbyOCNonSNW,'SIdSbOCN',0,1,3,bi,bj,myThid) |
1622 |
|
CALL DIAGNOSTICS_FILL(d_HSNWbyATMonSNW, |
1623 |
|
& 'SIdSbATC',0,1,3,bi,bj,myThid) |
1624 |
CALL DIAGNOSTICS_FILL |
CALL DIAGNOSTICS_FILL |
1625 |
& (d_AREAbyATM,'SIdAbATO',0,1,3,bi,bj,myThid) |
& (d_AREAbyATM,'SIdAbATO',0,1,3,bi,bj,myThid) |
1626 |
CALL DIAGNOSTICS_FILL |
CALL DIAGNOSTICS_FILL |
1636 |
DO I=1,sNx |
DO I=1,sNx |
1637 |
DIAGarrayA(I,J) = maskC(I,J,kSurface,bi,bj) |
DIAGarrayA(I,J) = maskC(I,J,kSurface,bi,bj) |
1638 |
& * d_HSNWbyRAIN(I,J)*SEAICE_rhoSnow/SEAICE_deltaTtherm |
& * d_HSNWbyRAIN(I,J)*SEAICE_rhoSnow/SEAICE_deltaTtherm |
1639 |
DIAGarrayB(I,J) = |
DIAGarrayB(I,J) = AREA(I,J,bi,bj)-AREApreTH(I,J) |
|
& d_AREAbyICE(I,J) + d_AREAbyATM(I,J) + d_AREAbyOCN(I,J) |
|
|
DIAGarrayC(I,J) = (HEFF(I,J,bi,bj)-HEFFpreTH(I,J) |
|
|
& -d_HEFFbyFLOODING(I,J))/SEAICE_deltaTtherm |
|
1640 |
ENDDO |
ENDDO |
1641 |
ENDDO |
ENDDO |
1642 |
CALL DIAGNOSTICS_FILL |
CALL DIAGNOSTICS_FILL |
1643 |
& (DIAGarrayA,'SIsnPrcp',0,1,3,bi,bj,myThid) |
& (DIAGarrayA,'SIsnPrcp',0,1,3,bi,bj,myThid) |
1644 |
CALL DIAGNOSTICS_FILL |
CALL DIAGNOSTICS_FILL |
1645 |
& (DIAGarrayB,'SIdA ',0,1,3,bi,bj,myThid) |
& (DIAGarrayB,'SIdA ',0,1,3,bi,bj,myThid) |
|
CALL DIAGNOSTICS_FILL |
|
|
& (DIAGarrayC,'SIthdgrh',0,1,3,bi,bj,myThid) |
|
|
tmpscal1=1. _d 0 / SEAICE_deltaTtherm |
|
|
CALL DIAGNOSTICS_SCALE_FILL(d_HEFFbyFLOODING,tmpscal1,1, |
|
|
& 'SIsnwice',0,1,3,bi,bj,myThid) |
|
|
CALL DIAGNOSTICS_FILL |
|
|
& (d_HEFFbyOCNonICE,'SIyneg ',0,1,1,bi,bj,myThid) |
|
|
CALL DIAGNOSTICS_FILL |
|
|
& (d_HEFFbyATMonOCN_cover,'SIfice ',0,1,1,bi,bj,myThid) |
|
1646 |
ENDIF |
ENDIF |
1647 |
#endif |
#endif |
1648 |
|
|