5 |
#ifdef ALLOW_ATM2D |
#ifdef ALLOW_ATM2D |
6 |
# include "ctrparam.h" |
# include "ctrparam.h" |
7 |
#endif |
#endif |
8 |
|
#define THSICE_OLD_STEP_FWD |
9 |
|
|
10 |
CBOP |
CBOP |
11 |
C !ROUTINE: THSICE_STEP_FWD |
C !ROUTINE: THSICE_STEP_FWD |
125 |
C- Initialise |
C- Initialise |
126 |
dBugFlag = debugLevel.GE.debLevC |
dBugFlag = debugLevel.GE.debLevC |
127 |
DO j = 1-OLy, sNy+OLy |
DO j = 1-OLy, sNy+OLy |
128 |
DO i = 1-OLx, sNx+OLx |
DO i = 1-OLx, sNx+OLx |
129 |
isIceFree(i,j) = .FALSE. |
isIceFree(i,j) = .FALSE. |
130 |
#ifdef ALLOW_ATM2D |
#ifdef ALLOW_ATM2D |
131 |
sFluxFromIce(i,j) = 0. _d 0 |
sFluxFromIce(i,j) = 0. _d 0 |
134 |
#endif |
#endif |
135 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
136 |
iceFrac(i,j) = 0. |
iceFrac(i,j) = 0. |
137 |
|
flx2oc(i,j) = 0. _d 0 |
138 |
|
frw2oc(i,j) = 0. _d 0 |
139 |
|
fsalt (i,j) = 0. _d 0 |
140 |
#endif |
#endif |
141 |
ENDDO |
ENDDO |
142 |
ENDDO |
ENDDO |
143 |
|
|
144 |
ageFac = 1. _d 0 - thSIce_deltaT/snowAgTime |
ageFac = 1. _d 0 - thSIce_deltaT/snowAgTime |
161 |
IF ( snowPrc(i,j,bi,bj).GT.0. _d 0 ) |
IF ( snowPrc(i,j,bi,bj).GT.0. _d 0 ) |
162 |
& snowAge(i,j,bi,bj) = snowAge(i,j,bi,bj) |
& snowAge(i,j,bi,bj) = snowAge(i,j,bi,bj) |
163 |
& * EXP( - snowFac*snowPrc(i,j,bi,bj) ) |
& * EXP( - snowFac*snowPrc(i,j,bi,bj) ) |
|
c & * EXP( -(thSIce_deltaT*snowPrc(i,j,bi,bj)/rhos) |
|
|
c & /hNewSnowAge ) |
|
164 |
C------- |
C------- |
165 |
C note: Any flux of mass (here fresh water) that enter or leave the system |
C note: Any flux of mass (here fresh water) that enter or leave the system |
166 |
C with a non zero energy HAS TO be counted: add snow precip. |
C with a non zero energy HAS TO be counted: add snow precip. |
307 |
#ifdef ALLOW_SALT_PLUME |
#ifdef ALLOW_SALT_PLUME |
308 |
IF ( useSALT_PLUME ) THEN |
IF ( useSALT_PLUME ) THEN |
309 |
CALL THSICE_SALT_PLUME( |
CALL THSICE_SALT_PLUME( |
310 |
I iceMask(1-Olx,1-Oly,bi,bj), |
I iceMask(1-OLx,1-OLy,bi,bj), |
311 |
I sOceMxL(1-Olx,1-Oly,bi,bj), |
I sOceMxL(1-OLx,1-OLy,bi,bj), |
312 |
I frw2oc, |
I frw2oc, |
313 |
I iMin,iMax, jMin,jMax, bi, bj, |
I iMin,iMax, jMin,jMax, bi, bj, |
314 |
I 0, myTime, myIter, myThid ) |
I 0, myTime, myIter, myThid ) |
315 |
ENDIF |
ENDIF |
316 |
#endif /* ALLOW_SALT_PLUME */ |
#endif /* ALLOW_SALT_PLUME */ |
319 |
C part.3 : freezing of sea-water |
C part.3 : freezing of sea-water |
320 |
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 |
321 |
C------- |
C------- |
322 |
|
DO j = 1-OLy, sNy+OLy |
323 |
|
DO i = 1-OLx, sNx+OLx |
324 |
|
flx2oc(i,j) = 0. _d 0 |
325 |
|
frw2oc(i,j) = 0. _d 0 |
326 |
|
fsalt (i,j) = 0. _d 0 |
327 |
|
ENDDO |
328 |
|
ENDDO |
329 |
CALL THSICE_EXTEND( |
CALL THSICE_EXTEND( |
330 |
I bi, bj, |
I bi, bj, |
331 |
I iMin,iMax, jMin,jMax, dBugFlag, |
I iMin,iMax, jMin,jMax, dBugFlag, |
344 |
#endif |
#endif |
345 |
DO j = jMin, jMax |
DO j = jMin, jMax |
346 |
DO i = iMin, iMax |
DO i = iMin, iMax |
347 |
|
#ifdef THSICE_OLD_STEP_FWD |
348 |
IF (frzmltMxL(i,j).GT.0. _d 0) THEN |
IF (frzmltMxL(i,j).GT.0. _d 0) THEN |
349 |
|
#endif |
350 |
C-- Net fluxes : |
C-- Net fluxes : |
351 |
#ifdef ALLOW_ATM2D |
#ifdef ALLOW_ATM2D |
352 |
pass_qnet(i,j) = pass_qnet(i,j) - flx2oc(i,j) |
pass_qnet(i,j) = pass_qnet(i,j) - flx2oc(i,j) |
364 |
& iceFrac(i,j), iceHeight(i,j,bi,bj), |
& iceFrac(i,j), iceHeight(i,j,bi,bj), |
365 |
& snowHeight(i,j,bi,bj), Qnet(i,j,bi,bj) |
& snowHeight(i,j,bi,bj), Qnet(i,j,bi,bj) |
366 |
#endif |
#endif |
367 |
|
#ifdef THSICE_OLD_STEP_FWD |
368 |
ENDIF |
ENDIF |
369 |
|
#endif |
370 |
|
|
371 |
IF ( hOceMxL(i,j,bi,bj).GT.0. _d 0 ) |
IF ( hOceMxL(i,j,bi,bj).GT.0. _d 0 ) |
372 |
& isIceFree(i,j) = iceMask(i,j,bi,bj).LE.0. _d 0 |
& isIceFree(i,j) = iceMask(i,j,bi,bj).LE.0. _d 0 |
392 |
#ifdef ALLOW_SALT_PLUME |
#ifdef ALLOW_SALT_PLUME |
393 |
IF ( useSALT_PLUME ) THEN |
IF ( useSALT_PLUME ) THEN |
394 |
CALL THSICE_SALT_PLUME( |
CALL THSICE_SALT_PLUME( |
395 |
I frzmltMxL, |
I frzmltMxL, |
396 |
I sOceMxL(1-Olx,1-Oly,bi,bj), |
I sOceMxL(1-OLx,1-OLy,bi,bj), |
397 |
I frw2oc, |
I frw2oc, |
398 |
I iMin,iMax, jMin,jMax, bi, bj, |
I iMin,iMax, jMin,jMax, bi, bj, |
399 |
I 1, myTime, myIter, myThid ) |
I 1, myTime, myIter, myThid ) |
400 |
ENDIF |
ENDIF |
401 |
#endif /* ALLOW_SALT_PLUME */ |
#endif /* ALLOW_SALT_PLUME */ |