225 |
PARAMETER ( nDim = 1 ) |
PARAMETER ( nDim = 1 ) |
226 |
#endif /* SEAICE_MULTICATEGORY */ |
#endif /* SEAICE_MULTICATEGORY */ |
227 |
|
|
|
#ifdef MCPHEE_OCEAN_ICE_HEAT_FLUX |
|
228 |
C Factor by which we increase the upper ocean friction velocity (u*) when |
C Factor by which we increase the upper ocean friction velocity (u*) when |
229 |
C ice is absent in a grid cell (dimensionless) |
C ice is absent in a grid cell (dimensionless) |
230 |
_RL MixedLayerTurbulenceFactor |
_RL MixedLayerTurbulenceFactor |
231 |
|
|
|
c The Stanton number for the McPhee |
|
|
c ocean-ice heat flux parameterization (dimensionless) |
|
|
_RL STANTON_NUMBER |
|
|
|
|
|
c A typical friction velocity beneath sea ice for the |
|
|
c McPhee heat flux parameterization (m/s) |
|
|
_RL USTAR_BASE |
|
|
|
|
|
_RL surf_theta |
|
|
#endif |
|
|
|
|
232 |
#ifdef ALLOW_SITRACER |
#ifdef ALLOW_SITRACER |
233 |
INTEGER iTr |
INTEGER iTr |
234 |
CHARACTER*8 diagName |
CHARACTER*8 diagName |
241 |
_RL DIAGarrayD (1:sNx,1:sNy) |
_RL DIAGarrayD (1:sNx,1:sNy) |
242 |
#endif |
#endif |
243 |
|
|
244 |
|
|
245 |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
246 |
|
|
247 |
C =================================================================== |
C =================================================================== |
276 |
area_reg_sq = SEAICE_area_reg * SEAICE_area_reg |
area_reg_sq = SEAICE_area_reg * SEAICE_area_reg |
277 |
hice_reg_sq = SEAICE_hice_reg * SEAICE_hice_reg |
hice_reg_sq = SEAICE_hice_reg * SEAICE_hice_reg |
278 |
|
|
|
#ifdef MCPHEE_OCEAN_ICE_HEAT_FLUX |
|
|
STANTON_NUMBER = 0.0056 _d 0 |
|
|
USTAR_BASE = 0.0125 _d 0 |
|
|
#endif |
|
|
|
|
279 |
C conversion factors to go from Q (W/m2) to HEFF (ice meters) |
C conversion factors to go from Q (W/m2) to HEFF (ice meters) |
280 |
convertQ2HI=SEAICE_deltaTtherm/QI |
convertQ2HI=SEAICE_deltaTtherm/QI |
281 |
convertHI2Q=1/convertQ2HI |
convertHI2Q=1/convertQ2HI |
816 |
|
|
817 |
DO J=1,sNy |
DO J=1,sNy |
818 |
DO I=1,sNx |
DO I=1,sNx |
|
|
|
819 |
#ifdef SEAICE_VARIABLE_FREEZING_POINT |
#ifdef SEAICE_VARIABLE_FREEZING_POINT |
820 |
TBC = -0.0575 _d 0*salt(I,J,kSurface,bi,bj) + 0.0901 _d 0 |
TBC = -0.0575 _d 0*salt(I,J,kSurface,bi,bj) + 0.0901 _d 0 |
821 |
#endif /* SEAICE_VARIABLE_FREEZING_POINT */ |
#endif /* SEAICE_VARIABLE_FREEZING_POINT */ |
822 |
|
c efficiency of turbulent fluxes : dependency to sign of THETA-TBC |
|
#ifdef MCPHEE_OCEAN_ICE_HEAT_FLUX |
|
|
|
|
|
c Bound the ocean temperature to be at or above the freezing point. |
|
|
surf_theta = max(theta(I,J,kSurface,bi,bj), TBC) |
|
|
#ifdef GRADIENT_MIXED_LAYER_TURBULENCE_FACTOR |
|
|
MixedLayerTurbulenceFactor = 12.5 _d 0 - |
|
|
& 11.5 _d 0 *AREApreTH(I,J) |
|
|
#else |
|
|
c If ice is present, MixedLayerTurbulenceFactor = 1.0, else 12.50 |
|
|
IF (AREApreTH(I,J) .GT. 0. _d 0) THEN |
|
|
MixedLayerTurbulenceFactor = ONE |
|
|
ELSE |
|
|
MixedLayerTurbulenceFactor = 12.5 _d 0 |
|
|
ENDIF |
|
|
#endif /* GRADIENT_MIXED_LAYER_TURBULENCE_FACTOR */ |
|
|
|
|
|
c The turbulent ocean-ice heat flux |
|
|
a_QbyOCN(I,J) = -STANTON_NUMBER * USTAR_BASE * rhoConst * |
|
|
& HeatCapacity_Cp *(surf_theta - TBC)* |
|
|
& MixedLayerTurbulenceFactor*maskC(i,j,kSurface,bi,bj) |
|
|
|
|
|
c The turbulent ocean-ice heat flux converted to meters |
|
|
c of potential ice melt |
|
|
a_QbyOCN(I,J) = a_QbyOCN(I,J) * convertQ2HI |
|
|
|
|
|
c by design a_QbyOCN .LE. 0. so that initial ice growth cannot |
|
|
c be triggered by this term, which Ian says is better for adjoint |
|
|
#else |
|
|
|
|
823 |
IF ( theta(I,J,kSurface,bi,bj) .GE. TBC ) THEN |
IF ( theta(I,J,kSurface,bi,bj) .GE. TBC ) THEN |
824 |
tmpscal1 = SEAICE_availHeatFrac |
tmpscal1 = SEAICE_availHeatFrac |
825 |
ELSE |
ELSE |
826 |
tmpscal1 = SEAICE_availHeatFracFrz |
tmpscal1 = SEAICE_availHeatFracFrz |
827 |
ENDIF |
ENDIF |
828 |
tmpscal1 = tmpscal1 |
c efficiency of turbulent fluxes : dependency to AREA (McPhee cases) |
829 |
|
if ( (SEAICEturbFluxFormula.EQ.3).AND. |
830 |
|
& (AREApreTH(I,J) .GE. 0. _d 0) ) then |
831 |
|
MixedLayerTurbulenceFactor = ONE - AREApreTH(I,J) * |
832 |
|
& (MCPHEE_TAPER_FAC-1) / MCPHEE_TAPER_FAC |
833 |
|
elseif ( (SEAICEturbFluxFormula.EQ.4).AND. |
834 |
|
& (AREApreTH(I,J) .LE. 0. _d 0) ) then |
835 |
|
MixedLayerTurbulenceFactor = MCPHEE_TAPER_FAC |
836 |
|
else |
837 |
|
MixedLayerTurbulenceFactor = ONE |
838 |
|
endif |
839 |
|
c maximum turbulent flux, in ice meters |
840 |
|
tmpscal2= - (HeatCapacity_Cp*rhoConst/QI) |
841 |
|
& * (theta(I,J,kSurface,bi,bj)-TBC) |
842 |
& * dRf(kSurface) * maskC(i,j,kSurface,bi,bj) |
& * dRf(kSurface) * maskC(i,j,kSurface,bi,bj) |
843 |
|
c available turbulent flux |
844 |
a_QbyOCN(i,j) = -tmpscal1 * (HeatCapacity_Cp*rhoConst/QI) |
a_QbyOCN(i,j) = |
845 |
& * (theta(I,J,kSurface,bi,bj)-TBC) |
& tmpscal1 * tmpscal2 * MixedLayerTurbulenceFactor |
846 |
|
r_QbyOCN(i,j) = a_QbyOCN(i,j) |
|
#endif /* MCPHEE_OCEAN_ICE_HEAT_FLUX */ |
|
|
|
|
|
r_QbyOCN(i,j) = a_QbyOCN(i,j) |
|
|
|
|
847 |
ENDDO |
ENDDO |
848 |
ENDDO |
ENDDO |
849 |
|
|