60 |
C- input: |
C- input: |
61 |
C icFlxSW :: net short-wave heat flux (+=down) below sea-ice, into ocean |
C icFlxSW :: net short-wave heat flux (+=down) below sea-ice, into ocean |
62 |
C icFlxAtm :: net Atmospheric surf. heat flux over sea-ice [W/m2], (+=down) |
C icFlxAtm :: net Atmospheric surf. heat flux over sea-ice [W/m2], (+=down) |
63 |
C icFrwAtm :: evaporation over sea-ice to the atmosphere [kg/m2/s] (+=up) |
C icFrwAtm :: evaporation over sea-ice to the atmosphere [kg/m2/s] (+=up) |
64 |
C- output |
C- output |
65 |
C icFlxAtm :: net Atmospheric surf. heat flux over ice+ocean [W/m2], (+=down) |
C icFlxAtm :: net Atmospheric surf. heat flux over ice+ocean [W/m2], (+=down) |
66 |
C icFrwAtm :: net fresh-water flux (E-P) from the atmosphere [m/s] (+=up) |
C icFrwAtm :: net fresh-water flux (E-P) from the atmosphere [kg/m2/s] (+=up) |
67 |
INTEGER bi,bj |
INTEGER bi,bj |
68 |
INTEGER iMin, iMax |
INTEGER iMin, iMax |
69 |
INTEGER jMin, jMax |
INTEGER jMin, jMax |
78 |
C === Local variables === |
C === Local variables === |
79 |
C iceFrac :: fraction of grid area covered in ice |
C iceFrac :: fraction of grid area covered in ice |
80 |
C flx2oc :: net heat flux from the ice to the ocean (+=down) [W/m2] |
C flx2oc :: net heat flux from the ice to the ocean (+=down) [W/m2] |
81 |
C frw2oc :: fresh-water flux from the ice to the ocean |
C frw2oc :: fresh-water flux from the ice to the ocean (+=down) |
82 |
C fsalt :: mass salt flux to the ocean |
C fsalt :: mass salt flux to the ocean (+=down) |
83 |
|
C frzSeaWat :: seawater freezing rate (expressed as mass flux) [kg/m^2/s] |
84 |
C frzmltMxL :: ocean mixed-layer freezing/melting potential [W/m2] |
C frzmltMxL :: ocean mixed-layer freezing/melting potential [W/m2] |
85 |
C tFrzOce :: sea-water freezing temperature [oC] (function of S) |
C tFrzOce :: sea-water freezing temperature [oC] (function of S) |
86 |
C isIceFree :: true for ice-free grid-cell that remains ice-free |
C isIceFree :: true for ice-free grid-cell that remains ice-free |
91 |
_RL flx2oc (1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
_RL flx2oc (1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
92 |
_RL frw2oc (1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
_RL frw2oc (1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
93 |
_RL fsalt (1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
_RL fsalt (1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
94 |
|
_RL frzSeaWat(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
95 |
_RL tFrzOce (1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
_RL tFrzOce (1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
96 |
_RL frzmltMxL(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
_RL frzmltMxL(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
97 |
_RL ageFac |
_RL ageFac |
134 |
#else |
#else |
135 |
saltFlux(i,j,bi,bj) = 0. _d 0 |
saltFlux(i,j,bi,bj) = 0. _d 0 |
136 |
#endif |
#endif |
137 |
|
frzSeaWat(i,j) = 0. _d 0 |
138 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
139 |
iceFrac(i,j) = 0. |
iceFrac(i,j) = 0. |
140 |
flx2oc(i,j) = 0. _d 0 |
flx2oc(i,j) = 0. _d 0 |
242 |
U snowHeight(siLo,sjLo,bi,bj), Tsrf(siLo,sjLo,bi,bj), |
U snowHeight(siLo,sjLo,bi,bj), Tsrf(siLo,sjLo,bi,bj), |
243 |
U Qice1(siLo,sjLo,bi,bj), Qice2(siLo,sjLo,bi,bj), |
U Qice1(siLo,sjLo,bi,bj), Qice2(siLo,sjLo,bi,bj), |
244 |
U icFrwAtm(siLo,sjLo,bi,bj), frzmltMxL, flx2oc, |
U icFrwAtm(siLo,sjLo,bi,bj), frzmltMxL, flx2oc, |
245 |
O frw2oc, fsalt, |
O frw2oc, fsalt, frzSeaWat, |
246 |
I myTime, myIter, myThid ) |
I myTime, myIter, myThid ) |
247 |
|
|
248 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
289 |
& + opFrac*EmPmR(i,j,bi,bj) |
& + opFrac*EmPmR(i,j,bi,bj) |
290 |
saltFlux(i,j,bi,bj) = -icFrac*fsalt(i,j) |
saltFlux(i,j,bi,bj) = -icFrac*fsalt(i,j) |
291 |
#endif |
#endif |
292 |
|
C- All seawater freezing (no reduction by surf. melting) from CALC_THICKN |
293 |
|
c frzSeaWat(i,j) = icFrac*frzSeaWat(i,j) |
294 |
|
C- Net seawater freezing (underestimated if there is surf. melting or rain) |
295 |
|
frzSeaWat(i,j) = MAX( -icFrac*frw2oc(i,j), 0. _d 0 ) |
296 |
|
|
297 |
#ifdef ALLOW_DBUG_THSICE |
#ifdef ALLOW_DBUG_THSICE |
298 |
IF (dBug(i,j,bi,bj)) WRITE(6,1010) |
IF (dBug(i,j,bi,bj)) WRITE(6,1010) |
311 |
ENDDO |
ENDDO |
312 |
ENDDO |
ENDDO |
313 |
|
|
|
#ifdef ALLOW_SALT_PLUME |
|
|
IF ( useSALT_PLUME ) THEN |
|
|
CALL THSICE_SALT_PLUME( |
|
|
I iceMask(1-OLx,1-OLy,bi,bj), |
|
|
I sOceMxL(1-OLx,1-OLy,bi,bj), |
|
|
I frw2oc, |
|
|
I iMin,iMax, jMin,jMax, bi, bj, |
|
|
I 0, myTime, myIter, myThid ) |
|
|
ENDIF |
|
|
#endif /* ALLOW_SALT_PLUME */ |
|
|
|
|
314 |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
315 |
C part.3 : freezing of sea-water |
C part.3 : freezing of sea-water |
316 |
C over ice-free fraction and what is left from ice-covered fraction |
C over ice-free fraction and what is left from ice-covered fraction |
353 |
EmPmR(i,j,bi,bj)= EmPmR(i,j,bi,bj)- frw2oc(i,j) |
EmPmR(i,j,bi,bj)= EmPmR(i,j,bi,bj)- frw2oc(i,j) |
354 |
saltFlux(i,j,bi,bj)=saltFlux(i,j,bi,bj) - fsalt(i,j) |
saltFlux(i,j,bi,bj)=saltFlux(i,j,bi,bj) - fsalt(i,j) |
355 |
#endif |
#endif |
356 |
|
frzSeaWat(i,j) = frzSeaWat(i,j) + MAX(-frw2oc(i,j), 0. _d 0 ) |
357 |
|
|
358 |
#ifdef ALLOW_DBUG_THSICE |
#ifdef ALLOW_DBUG_THSICE |
359 |
IF (dBug(i,j,bi,bj)) WRITE(6,1010) |
IF (dBug(i,j,bi,bj)) WRITE(6,1010) |
389 |
#ifdef ALLOW_SALT_PLUME |
#ifdef ALLOW_SALT_PLUME |
390 |
IF ( useSALT_PLUME ) THEN |
IF ( useSALT_PLUME ) THEN |
391 |
CALL THSICE_SALT_PLUME( |
CALL THSICE_SALT_PLUME( |
|
I frzmltMxL, |
|
392 |
I sOceMxL(1-OLx,1-OLy,bi,bj), |
I sOceMxL(1-OLx,1-OLy,bi,bj), |
393 |
I frw2oc, |
I frzSeaWat, |
394 |
I iMin,iMax, jMin,jMax, bi, bj, |
I iMin,iMax, jMin,jMax, bi, bj, |
395 |
I 1, myTime, myIter, myThid ) |
I myTime, myIter, myThid ) |
396 |
ENDIF |
ENDIF |
397 |
#endif /* ALLOW_SALT_PLUME */ |
#endif /* ALLOW_SALT_PLUME */ |
398 |
|
|