58 |
|
|
59 |
C !LOCAL VARIABLES: |
C !LOCAL VARIABLES: |
60 |
C === Local variables === |
C === Local variables === |
61 |
|
#ifdef SEAICE_DEBUG |
62 |
c ToM<<< debug seaice_growth |
c ToM<<< debug seaice_growth |
63 |
C msgBuf :: Informational/error message buffer |
C msgBuf :: Informational/error message buffer |
64 |
CHARACTER*(MAX_LEN_MBUF) msgBuf |
CHARACTER*(MAX_LEN_MBUF) msgBuf |
65 |
c ToM>>> |
c ToM>>> |
66 |
|
#endif |
67 |
C |
C |
68 |
C unit/sign convention: |
C unit/sign convention: |
69 |
C Within the thermodynamic computation all stocks, except HSNOW, |
C Within the thermodynamic computation all stocks, except HSNOW, |
666 |
CALL SEAICE_ITD_REDIST(bi, bj, myTime, myIter, myThid) |
CALL SEAICE_ITD_REDIST(bi, bj, myTime, myIter, myThid) |
667 |
CALL SEAICE_ITD_SUM(bi, bj, myTime, myIter, myThid) |
CALL SEAICE_ITD_SUM(bi, bj, myTime, myIter, myThid) |
668 |
|
|
669 |
|
#ifdef SEAICE_DEBUG |
670 |
c ToM<<< debug seaice_growth |
c ToM<<< debug seaice_growth |
671 |
WRITE(msgBuf,'(A,7F8.4)') |
WRITE(msgBuf,'(A,7F8.4)') |
672 |
& ' SEAICE_GROWTH: Heff increments 0, HEFFITD = ', |
& ' SEAICE_GROWTH: Heff increments 0, HEFFITD = ', |
678 |
& AREAITD(1,1,:,bi,bj) |
& AREAITD(1,1,:,bi,bj) |
679 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
680 |
& SQUEEZE_RIGHT , myThid) |
& SQUEEZE_RIGHT , myThid) |
681 |
|
#endif |
682 |
#else |
#else |
683 |
|
#ifdef SEAICE_DEBUG |
684 |
WRITE(msgBuf,'(A,7F8.4)') |
WRITE(msgBuf,'(A,7F8.4)') |
685 |
& ' SEAICE_GROWTH: Heff increments 0, HEFF = ', |
& ' SEAICE_GROWTH: Heff increments 0, HEFF = ', |
686 |
& HEFF(1,1,bi,bj) |
& HEFF(1,1,bi,bj) |
692 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
693 |
& SQUEEZE_RIGHT , myThid) |
& SQUEEZE_RIGHT , myThid) |
694 |
c ToM>>> |
c ToM>>> |
695 |
|
#endif |
696 |
#endif /* SEAICE_ITD */ |
#endif /* SEAICE_ITD */ |
697 |
#if (defined ALLOW_AUTODIFF_TAMC && defined SEAICE_MODIFY_GROWTH_ADJ) |
#if (defined ALLOW_AUTODIFF_TAMC && defined SEAICE_MODIFY_GROWTH_ADJ) |
698 |
C end SEAICEadjMODE.EQ.0 statement: |
C end SEAICEadjMODE.EQ.0 statement: |
977 |
I TmixLoc, |
I TmixLoc, |
978 |
O a_QbyATM_open, a_QSWbyATM_open, |
O a_QbyATM_open, a_QSWbyATM_open, |
979 |
I bi, bj, myTime, myIter, myThid ) |
I bi, bj, myTime, myIter, myThid ) |
|
c ToM<<< debugging |
|
|
print*,' ' |
|
|
print*,'UG = ',UG(1,1) |
|
|
print*,'Tsurf = ',TmixLoc(1,1) |
|
|
print*,'a_QbyATM_open = ',a_QbyATM_open(1,1) |
|
|
print*,' ' |
|
|
c ToM>>> |
|
980 |
|
|
981 |
C determine available heat due to the atmosphere -- for ice covered water |
C determine available heat due to the atmosphere -- for ice covered water |
982 |
C ======================================================================= |
C ======================================================================= |
1129 |
ENDDO |
ENDDO |
1130 |
ENDDO |
ENDDO |
1131 |
ENDDO |
ENDDO |
|
c ToM<<< debugging |
|
|
print*,' ' |
|
|
print*,'after SOLVE4TEMP: ' |
|
|
print*,'TICE = ',TICE(1,1,bi,bj) |
|
|
print*,'TICES = ',TICES(1,1,:,bi,bj) |
|
|
print*,'a_QSWbyATM_cover = ',a_QSWbyATM_cover(1,1) |
|
|
print*,'a_QSWbyATMmult_cover = ',a_QSWbyATMmult_cover(1,1,:) |
|
|
print*,' ' |
|
|
c ToM>>> |
|
1132 |
|
|
1133 |
#ifdef SEAICE_CAP_SUBLIM |
#ifdef SEAICE_CAP_SUBLIM |
1134 |
# ifdef ALLOW_DIAGNOSTICS |
# ifdef ALLOW_DIAGNOSTICS |
1294 |
a_QbyOCN(i,j) = |
a_QbyOCN(i,j) = |
1295 |
& tmpscal1 * tmpscal2 * MixedLayerTurbulenceFactor |
& tmpscal1 * tmpscal2 * MixedLayerTurbulenceFactor |
1296 |
r_QbyOCN(i,j) = a_QbyOCN(i,j) |
r_QbyOCN(i,j) = a_QbyOCN(i,j) |
|
c ToM<<< debugging |
|
|
if (i.eq.1 .and. j.eq.1) then |
|
|
print *, 'salt [psu] = ',salt(i,j,kSurface,bi,bj) |
|
|
print *, 'theta [degC] = ',theta(i,j,kSurface,bi,bj) |
|
|
print *, 'tempFrz [degC] = ',tempFrz |
|
|
print *, 'max turb flx [m] = ',tmpscal2 |
|
|
print *, 'avail trub flx [m] = ',a_QbyOCN(i,j) |
|
|
endif |
|
|
c ToM>>> |
|
1297 |
ENDDO |
ENDDO |
1298 |
ENDDO |
ENDDO |
1299 |
|
|
1379 |
C end IT loop |
C end IT loop |
1380 |
ENDDO |
ENDDO |
1381 |
#endif |
#endif |
1382 |
|
#ifdef SEAICE_DEBUG |
1383 |
c ToM<<< debug seaice_growth |
c ToM<<< debug seaice_growth |
1384 |
WRITE(msgBuf,'(A,7F8.4)') |
WRITE(msgBuf,'(A,7F8.4)') |
1385 |
#ifdef SEAICE_ITD |
#ifdef SEAICE_ITD |
1397 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
1398 |
& SQUEEZE_RIGHT , myThid) |
& SQUEEZE_RIGHT , myThid) |
1399 |
c ToM>>> |
c ToM>>> |
1400 |
|
#endif |
1401 |
|
|
1402 |
C compute ice thickness tendency due to ice-ocean interaction |
C compute ice thickness tendency due to ice-ocean interaction |
1403 |
C =========================================================== |
C =========================================================== |
1442 |
ENDDO |
ENDDO |
1443 |
ENDDO |
ENDDO |
1444 |
#endif /* SEAICE_ITD */ |
#endif /* SEAICE_ITD */ |
1445 |
|
#ifdef SEAICE_DEBUG |
1446 |
c ToM<<< debug seaice_growth |
c ToM<<< debug seaice_growth |
1447 |
WRITE(msgBuf,'(A,7F8.4)') |
WRITE(msgBuf,'(A,7F8.4)') |
1448 |
#ifdef SEAICE_ITD |
#ifdef SEAICE_ITD |
1460 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
1461 |
& SQUEEZE_RIGHT , myThid) |
& SQUEEZE_RIGHT , myThid) |
1462 |
c ToM>>> |
c ToM>>> |
1463 |
|
#endif |
1464 |
|
|
1465 |
C compute snow melt tendency due to snow-atmosphere interaction |
C compute snow melt tendency due to snow-atmosphere interaction |
1466 |
C ================================================================== |
C ================================================================== |
1509 |
ENDDO |
ENDDO |
1510 |
ENDDO |
ENDDO |
1511 |
#endif /* SEAICE_ITD */ |
#endif /* SEAICE_ITD */ |
1512 |
|
#ifdef SEAICE_DEBUG |
1513 |
c ToM<<< debug seaice_growth |
c ToM<<< debug seaice_growth |
1514 |
WRITE(msgBuf,'(A,7F8.4)') |
WRITE(msgBuf,'(A,7F8.4)') |
1515 |
#ifdef SEAICE_ITD |
#ifdef SEAICE_ITD |
1527 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
1528 |
& SQUEEZE_RIGHT , myThid) |
& SQUEEZE_RIGHT , myThid) |
1529 |
c ToM>>> |
c ToM>>> |
1530 |
|
#endif |
1531 |
|
|
1532 |
C compute ice thickness tendency due to the atmosphere |
C compute ice thickness tendency due to the atmosphere |
1533 |
C ==================================================== |
C ==================================================== |
1593 |
ENDDO |
ENDDO |
1594 |
ENDDO |
ENDDO |
1595 |
#endif /* SEAICE_ITD */ |
#endif /* SEAICE_ITD */ |
1596 |
|
#ifdef SEAICE_DEBUG |
1597 |
c ToM<<< debug seaice_growth |
c ToM<<< debug seaice_growth |
1598 |
WRITE(msgBuf,'(A,7F8.4)') |
WRITE(msgBuf,'(A,7F8.4)') |
1599 |
#ifdef SEAICE_ITD |
#ifdef SEAICE_ITD |
1611 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
1612 |
& SQUEEZE_RIGHT , myThid) |
& SQUEEZE_RIGHT , myThid) |
1613 |
c ToM>>> |
c ToM>>> |
1614 |
|
#endif |
1615 |
|
|
1616 |
C attribute precip to fresh water or snow stock, |
C attribute precip to fresh water or snow stock, |
1617 |
C depending on atmospheric conditions. |
C depending on atmospheric conditions. |
1660 |
Cgf since the implied air heat gain to turn |
Cgf since the implied air heat gain to turn |
1661 |
Cgf rain to snow is not a surface process. |
Cgf rain to snow is not a surface process. |
1662 |
#endif /* ALLOW_ATM_TEMP */ |
#endif /* ALLOW_ATM_TEMP */ |
1663 |
|
#ifdef SEAICE_DEBUG |
1664 |
c ToM<<< debug seaice_growth |
c ToM<<< debug seaice_growth |
1665 |
WRITE(msgBuf,'(A,7F8.4)') |
WRITE(msgBuf,'(A,7F8.4)') |
1666 |
#ifdef SEAICE_ITD |
#ifdef SEAICE_ITD |
1678 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
1679 |
& SQUEEZE_RIGHT , myThid) |
& SQUEEZE_RIGHT , myThid) |
1680 |
c ToM>>> |
c ToM>>> |
1681 |
|
#endif |
1682 |
|
|
1683 |
C compute snow melt due to heat available from ocean. |
C compute snow melt due to heat available from ocean. |
1684 |
C ================================================================= |
C ================================================================= |
1726 |
#endif /* SEAICE_ITD */ |
#endif /* SEAICE_ITD */ |
1727 |
#endif /* SEAICE_EXCLUDE_FOR_EXACT_AD_TESTING */ |
#endif /* SEAICE_EXCLUDE_FOR_EXACT_AD_TESTING */ |
1728 |
Cph) |
Cph) |
1729 |
|
#ifdef SEAICE_DEBUG |
1730 |
c ToM<<< debug seaice_growth |
c ToM<<< debug seaice_growth |
1731 |
WRITE(msgBuf,'(A,7F8.4)') |
WRITE(msgBuf,'(A,7F8.4)') |
1732 |
#ifdef SEAICE_ITD |
#ifdef SEAICE_ITD |
1744 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
1745 |
& SQUEEZE_RIGHT , myThid) |
& SQUEEZE_RIGHT , myThid) |
1746 |
c ToM>>> |
c ToM>>> |
1747 |
|
#endif |
1748 |
|
|
1749 |
C gain of new ice over open water |
C gain of new ice over open water |
1750 |
C =============================== |
C =============================== |
1769 |
C or 0. otherwise (no melting if not SEAICE_doOpenWaterMelt) |
C or 0. otherwise (no melting if not SEAICE_doOpenWaterMelt) |
1770 |
tmpscal3=facOpenGrow*MAX(tmpscal1-tmpscal2, |
tmpscal3=facOpenGrow*MAX(tmpscal1-tmpscal2, |
1771 |
& -HEFF(I,J,bi,bj)*facOpenMelt)*HEFFM(I,J,bi,bj) |
& -HEFF(I,J,bi,bj)*facOpenMelt)*HEFFM(I,J,bi,bj) |
|
c ToM<<< debugging |
|
|
if (I.eq.1 .and. J.eq.1) then |
|
|
print*,'r_QbyATM_open(I,J) = ', r_QbyATM_open(I,J) |
|
|
print*,'r_QbyOCN(i,j) = ', r_QbyOCN(i,j) |
|
|
print*,'1 - AREApreTH = ', (1.0 _d 0 - AREApreTH(I,J)) |
|
|
print*,'tmpscal1 = ', tmpscal1 |
|
|
print*,' ' |
|
|
print*,'SWFracB = ', SWFracB |
|
|
print*,'a_QSWbyATM_open(I,J) = ', a_QSWbyATM_open(I,J) |
|
|
print*,'tmpscal2 = ', tmpscal2 |
|
|
print*,' ' |
|
|
print*,'facOpenGrow = ', facOpenGrow |
|
|
print*,'HEFF(I,J,bi,bj) = ', HEFF(I,J,bi,bj) |
|
|
print*,'facOpenMelt = ', facOpenMelt |
|
|
print*,'MAX = ', MAX(tmpscal1-tmpscal2, |
|
|
& -HEFF(I,J,bi,bj)*facOpenMelt) |
|
|
print*,'HEFFM(I,J,bi,bj) = ', HEFFM(I,J,bi,bj) |
|
|
print*,'tmpscal3 = ', tmpscal3 |
|
|
print*,' ' |
|
|
endif |
|
|
c ToM>>> |
|
1772 |
d_HEFFbyATMonOCN_open(I,J)=tmpscal3 |
d_HEFFbyATMonOCN_open(I,J)=tmpscal3 |
1773 |
d_HEFFbyATMonOCN(I,J)=d_HEFFbyATMonOCN(I,J)+tmpscal3 |
d_HEFFbyATMonOCN(I,J)=d_HEFFbyATMonOCN(I,J)+tmpscal3 |
1774 |
r_QbyATM_open(I,J)=r_QbyATM_open(I,J)-tmpscal3 |
r_QbyATM_open(I,J)=r_QbyATM_open(I,J)-tmpscal3 |
1775 |
#ifdef SEAICE_ITD |
#ifdef SEAICE_ITD |
1776 |
cC open water area fraction |
C open water area fraction |
1777 |
c tmpscal0 = ONE-AREApreTH(I,J) |
tmpscal0 = ONE-AREApreTH(I,J) |
1778 |
cC determine thickness of new ice |
C determine thickness of new ice |
1779 |
cctomC considering the entire open water area to refreeze |
ctomC considering the entire open water area to refreeze |
1780 |
cctom tmpscal1 = tmpscal3/tmpscal0 |
ctom tmpscal1 = tmpscal3/tmpscal0 |
1781 |
cC considering a minimum lead ice thickness of 10 cm |
C considering a minimum lead ice thickness of 10 cm |
1782 |
cC WATCH that leadIceThickMin is smaller that Hlimit(1)! |
C WATCH that leadIceThickMin is smaller that Hlimit(1)! |
1783 |
c leadIceThickMin = 0.1 |
leadIceThickMin = 0.1 |
1784 |
c tmpscal1 = MAX(leadIceThickMin,tmpscal3/tmpscal0) |
tmpscal1 = MAX(leadIceThickMin,tmpscal3/tmpscal0) |
1785 |
cC adjust ice area fraction covered by new ice |
C adjust ice area fraction covered by new ice |
1786 |
c tmpscal0 = tmpscal3/tmpscal1 |
tmpscal0 = tmpscal3/tmpscal1 |
1787 |
cC then add new ice volume to appropriate thickness category |
C then add new ice volume to appropriate thickness category |
1788 |
c DO IT=1,nITD |
DO IT=1,nITD |
1789 |
c IF (tmpscal1.LT.Hlimit(IT)) THEN |
IF (tmpscal1.LT.Hlimit(IT)) THEN |
1790 |
c HEFFITD(I,J,IT,bi,bj) = HEFFITD(I,J,IT,bi,bj) + tmpscal3 |
HEFFITD(I,J,IT,bi,bj) = HEFFITD(I,J,IT,bi,bj) + tmpscal3 |
1791 |
c tmpscal3=ZERO |
tmpscal3=ZERO |
1792 |
cC not sure if AREAITD should be changed here since AREA is incremented |
C not sure if AREAITD should be changed here since AREA is incremented |
1793 |
cC in PART 4 below in non-itd code |
C in PART 4 below in non-itd code |
1794 |
cC in this scenario all open water is covered by new ice instantaneously, |
C in this scenario all open water is covered by new ice instantaneously, |
1795 |
cC i.e. no delayed lead closing is concidered such as is associated with |
C i.e. no delayed lead closing is concidered such as is associated with |
1796 |
cC Hibler's h_0 parameter |
C Hibler's h_0 parameter |
1797 |
c AREAITD(I,J,IT,bi,bj) = AREAITD(I,J,IT,bi,bj) |
AREAITD(I,J,IT,bi,bj) = AREAITD(I,J,IT,bi,bj) |
1798 |
c & + tmpscal0 |
& + tmpscal0 |
1799 |
c tmpscal0=ZERO |
tmpscal0=ZERO |
1800 |
c ENDIF |
ENDIF |
1801 |
c ENDDO |
ENDDO |
|
ctom debugging: 1 category only |
|
|
HEFFITD(I,J,1,bi,bj) = HEFFITD(I,J,1,bi,bj) + tmpscal3 |
|
1802 |
#else |
#else |
1803 |
HEFF(I,J,bi,bj) = HEFF(I,J,bi,bj) + tmpscal3 |
HEFF(I,J,bi,bj) = HEFF(I,J,bi,bj) + tmpscal3 |
1804 |
#endif |
#endif |
1825 |
ENDDO |
ENDDO |
1826 |
#endif |
#endif |
1827 |
#endif /* ALLOW_SITRACER */ |
#endif /* ALLOW_SITRACER */ |
1828 |
|
#ifdef SEAICE_DEBUG |
1829 |
c ToM<<< debug seaice_growth |
c ToM<<< debug seaice_growth |
1830 |
WRITE(msgBuf,'(A,7F8.4)') |
WRITE(msgBuf,'(A,7F8.4)') |
1831 |
#ifdef SEAICE_ITD |
#ifdef SEAICE_ITD |
1848 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
1849 |
& SQUEEZE_RIGHT , myThid) |
& SQUEEZE_RIGHT , myThid) |
1850 |
c ToM>>> |
c ToM>>> |
1851 |
|
#endif |
1852 |
|
|
1853 |
C convert snow to ice if submerged. |
C convert snow to ice if submerged. |
1854 |
C ================================= |
C ================================= |
1890 |
#endif |
#endif |
1891 |
ENDIF |
ENDIF |
1892 |
#endif /* SEAICE_GROWTH_LEGACY */ |
#endif /* SEAICE_GROWTH_LEGACY */ |
1893 |
|
#ifdef SEAICE_DEBUG |
1894 |
c ToM<<< debug seaice_growth |
c ToM<<< debug seaice_growth |
1895 |
WRITE(msgBuf,'(A,7F8.4)') |
WRITE(msgBuf,'(A,7F8.4)') |
1896 |
#ifdef SEAICE_ITD |
#ifdef SEAICE_ITD |
1913 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
1914 |
& SQUEEZE_RIGHT , myThid) |
& SQUEEZE_RIGHT , myThid) |
1915 |
c ToM>>> |
c ToM>>> |
1916 |
|
#endif |
1917 |
|
|
1918 |
C =================================================================== |
C =================================================================== |
1919 |
C ==========PART 4: determine ice cover fraction increments=========- |
C ==========PART 4: determine ice cover fraction increments=========- |
1939 |
CADJ STORE AREA(:,:,bi,bj) = comlev1_bibj,key=iicekey,byte=isbyte |
CADJ STORE AREA(:,:,bi,bj) = comlev1_bibj,key=iicekey,byte=isbyte |
1940 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
1941 |
|
|
1942 |
c#ifdef SEAICE_ITD |
#ifdef SEAICE_ITD |
1943 |
cC replaces Hibler '79 scheme and lead closing parameter |
C replaces Hibler '79 scheme and lead closing parameter |
1944 |
cC because ITD accounts explicitly for lead openings and |
C because ITD accounts explicitly for lead openings and |
1945 |
cC different melt rates due to varying ice thickness |
C different melt rates due to varying ice thickness |
1946 |
cC |
C |
1947 |
cC only consider ice area loss due to total ice thickness loss; |
C only consider ice area loss due to total ice thickness loss; |
1948 |
cC ice area gain due to freezing of open water is handled above |
C ice area gain due to freezing of open water is handled above |
1949 |
cC under "gain of new ice over open water" |
C under "gain of new ice over open water" |
1950 |
cC |
C |
1951 |
cC does not account for lateral melt of ice floes |
C does not account for lateral melt of ice floes |
1952 |
cC |
C |
1953 |
cC AREAITD is incremented in section "gain of new ice over open water" above |
C AREAITD is incremented in section "gain of new ice over open water" above |
1954 |
cC |
C |
1955 |
c DO IT=1,nITD |
DO IT=1,nITD |
1956 |
c DO J=1,sNy |
DO J=1,sNy |
1957 |
c DO I=1,sNx |
DO I=1,sNx |
1958 |
c IF (HEFFITD(I,J,IT,bi,bj).LE.ZERO) THEN |
IF (HEFFITD(I,J,IT,bi,bj).LE.ZERO) THEN |
1959 |
c AREAITD(I,J,IT,bi,bj)=ZERO |
AREAITD(I,J,IT,bi,bj)=ZERO |
1960 |
c ENDIF |
ENDIF |
1961 |
c#ifdef ALLOW_SITRACER |
#ifdef ALLOW_SITRACER |
1962 |
c SItrAREA(I,J,bi,bj,3) = SItrAREA(I,J,bi,bj,3) |
SItrAREA(I,J,bi,bj,3) = SItrAREA(I,J,bi,bj,3) |
1963 |
c & + AREAITD(I,J,IT,bi,bj) |
& + AREAITD(I,J,IT,bi,bj) |
1964 |
c#endif /* ALLOW_SITRACER */ |
#endif /* ALLOW_SITRACER */ |
1965 |
c ENDDO |
ENDDO |
1966 |
c ENDDO |
ENDDO |
1967 |
c ENDDO |
ENDDO |
1968 |
c#else /* SEAICE_ITD */ |
#else /* SEAICE_ITD */ |
1969 |
DO J=1,sNy |
DO J=1,sNy |
1970 |
DO I=1,sNx |
DO I=1,sNx |
1971 |
|
|
|
ctom<<< debugging |
|
|
#ifdef SEAICE_ITD |
|
|
HEFF(I,J,bi,bj)=HEFFITD(I,J,1,bi,bj) |
|
|
AREA(I,J,bi,bj)=AREAITD(I,J,1,bi,bj) |
|
|
HSNOW(I,J,bi,bj)=HSNOWITD(I,J,1,bi,bj) |
|
|
HEFFpreTH(I,J)=HEFFITDpreTH(I,J,1) |
|
|
AREApreTH(I,J)=AREAITDpreTH(I,J,1) |
|
|
recip_heffActual(I,J)=recip_heffActualMult(I,J,1) |
|
|
#endif |
|
|
ctom>>> debugging |
|
|
|
|
1972 |
IF ( YC(I,J,bi,bj) .LT. ZERO ) THEN |
IF ( YC(I,J,bi,bj) .LT. ZERO ) THEN |
1973 |
recip_HO=1. _d 0 / HO_south |
recip_HO=1. _d 0 / HO_south |
1974 |
ELSE |
ELSE |
2033 |
d_AREAbyOCN(I,J)= |
d_AREAbyOCN(I,J)= |
2034 |
& HALF*recip_HH*MIN( 0. _d 0,d_HEFFbyOCNonICE(I,J) ) |
& HALF*recip_HH*MIN( 0. _d 0,d_HEFFbyOCNonICE(I,J) ) |
2035 |
#endif /* ALLOW_DIAGNOSTICS */ |
#endif /* ALLOW_DIAGNOSTICS */ |
|
ctom<<< debugging |
|
|
#ifdef SEAICE_ITD |
|
|
HEFFITD(I,J,1,bi,bj)=HEFF(I,J,bi,bj) |
|
|
AREAITD(I,J,1,bi,bj)=AREA(I,J,bi,bj) |
|
|
HSNOWITD(I,J,1,bi,bj)=HSNOW(I,J,bi,bj) |
|
|
#endif |
|
|
ctom>>> debugging |
|
2036 |
ENDDO |
ENDDO |
2037 |
ENDDO |
ENDDO |
2038 |
c#endif /* SEAICE_ITD */ |
#endif /* SEAICE_ITD */ |
2039 |
|
|
2040 |
#if (defined ALLOW_AUTODIFF_TAMC && defined SEAICE_MODIFY_GROWTH_ADJ) |
#if (defined ALLOW_AUTODIFF_TAMC && defined SEAICE_MODIFY_GROWTH_ADJ) |
2041 |
Cgf 'bulk' linearization of area=f(HEFF) |
Cgf 'bulk' linearization of area=f(HEFF) |
2067 |
CALL SEAICE_ITD_SUM(bi, bj, myTime,myIter,myThid) |
CALL SEAICE_ITD_SUM(bi, bj, myTime,myIter,myThid) |
2068 |
#endif |
#endif |
2069 |
|
|
|
c ToM<<< debugging |
|
|
DO J=1,sNy |
|
|
DO I=1,sNx |
|
|
if (I.eq.1 .and. J.eq.1) then |
|
|
print *, 'd_HEFFbyNEG(I,J) = ', d_HEFFbyNEG(I,J) |
|
|
print *, 'd_HEFFbyOCNonICE(I,J) = ', d_HEFFbyOCNonICE(I,J) |
|
|
print *, 'd_HEFFbyATMonOCN(I,J) = ', d_HEFFbyATMonOCN(I,J) |
|
|
print *, 'd_HEFFbyATMonOCN_cover(I,J) = ', |
|
|
& d_HEFFbyATMonOCN_cover(I,J) |
|
|
print *, 'd_HEFFbyATMonOCN_open(I,J) = ', |
|
|
& d_HEFFbyATMonOCN_open(I,J) |
|
|
print *, 'd_HEFFbyFLOODING(I,J) = ', d_HEFFbyFLOODING(I,J) |
|
|
print *, 'd_HEFFbySublim(I,J) = ', d_HEFFbySublim(I,J) |
|
|
endif |
|
|
ENDDO |
|
|
ENDDO |
|
|
c ToM>>> |
|
2070 |
C =================================================================== |
C =================================================================== |
2071 |
C =============PART 5: determine ice salinity increments============= |
C =============PART 5: determine ice salinity increments============= |
2072 |
C =================================================================== |
C =================================================================== |
2340 |
QSW(I,J,bi,bj) = a_QSWbyATM_cover(I,J) + a_QSWbyATM_open(I,J) |
QSW(I,J,bi,bj) = a_QSWbyATM_cover(I,J) + a_QSWbyATM_open(I,J) |
2341 |
ENDDO |
ENDDO |
2342 |
ENDDO |
ENDDO |
|
cToM<<< debugging |
|
|
print*,'------------------' |
|
|
print*,'OcnModFrc: QNET = ',QNET(1,1,bi,bj) |
|
|
print*,'OcnModFrc: QSW = ',QSW(1,1,bi,bj) |
|
|
print*,' ' |
|
|
print*,'r_QbyATM_cover = ', r_QbyATM_cover(1,1) |
|
|
print*,'r_QbyATM_open = ', r_QbyATM_open(1,1) |
|
|
print*,'a_QSWbyATM_cover = ', a_QSWbyATM_cover(1,1) |
|
|
print*,'d_HEFFbyOCNonICE = ', d_HEFFbyOCNonICE(1,1) |
|
|
print*,'d_HSNWbyOCNonSNW = ', d_HSNWbyOCNonSNW(1,1) |
|
|
print*,'d_HEFFbyNEG = ', d_HEFFbyNEG(1,1) |
|
|
print*,'d_HSNWbyNEG = ', d_HSNWbyNEG(1,1) |
|
|
print*,'SNOW2ICE = ',SNOW2ICE |
|
|
print*,'maskC = ', maskC(1,1,kSurface,bi,bj) |
|
|
print*,'------------------' |
|
|
cToM>>> |
|
2343 |
|
|
2344 |
C switch heat fluxes from 'effective' ice meters to W/m2 |
C switch heat fluxes from 'effective' ice meters to W/m2 |
2345 |
C ====================================================== |
C ====================================================== |