2 |
C $Name$ |
C $Name$ |
3 |
|
|
4 |
#include "THSICE_OPTIONS.h" |
#include "THSICE_OPTIONS.h" |
5 |
|
|
6 |
CBOP |
CBOP |
7 |
C !ROUTINE: THSICE_MAIN |
C !ROUTINE: THSICE_MAIN |
8 |
C !INTERFACE: |
C !INTERFACE: |
9 |
SUBROUTINE THSICE_MAIN( |
SUBROUTINE THSICE_MAIN( |
10 |
I myTime, myIter, myThid ) |
I myTime, myIter, myThid ) |
11 |
C !DESCRIPTION: \bv |
C !DESCRIPTION: \bv |
12 |
C *==========================================================* |
C *==========================================================* |
13 |
C | S/R THSICE_MAIN |
C | S/R THSICE_MAIN |
14 |
C | o Therm_SeaIce main routine. |
C | o Therm_SeaIce main routine. |
15 |
C | step forward Thermodynamic_SeaIce variables and modify |
C | step forward Thermodynamic_SeaIce variables and modify |
16 |
C | ocean surface forcing accordingly. |
C | ocean surface forcing accordingly. |
17 |
C *==========================================================* |
C *==========================================================* |
33 |
# include "tamc.h" |
# include "tamc.h" |
34 |
# include "tamc_keys.h" |
# include "tamc_keys.h" |
35 |
#endif |
#endif |
36 |
|
|
37 |
C !INPUT/OUTPUT PARAMETERS: |
C !INPUT/OUTPUT PARAMETERS: |
38 |
C === Routine arguments === |
C === Routine arguments === |
39 |
C myIter :: iteration counter for this thread |
C myIter :: iteration counter for this thread |
52 |
INTEGER iMin, iMax |
INTEGER iMin, iMax |
53 |
INTEGER jMin, jMax |
INTEGER jMin, jMax |
54 |
_RL prcAtm(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
_RL prcAtm(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
55 |
_RL evpAtm(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
c _RL evpAtm(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
56 |
_RL flxSW (1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
c _RL flxAtm(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
57 |
|
c _RL flxSW (1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
58 |
|
|
59 |
_RL tauFac |
_RL tauFac |
60 |
|
|
62 |
|
|
63 |
IF ( stressReduction.GT. 0. _d 0 ) THEN |
IF ( stressReduction.GT. 0. _d 0 ) THEN |
64 |
C- needs new Ice Fraction in halo region to apply wind-stress reduction |
C- needs new Ice Fraction in halo region to apply wind-stress reduction |
65 |
iMin = 1-Olx |
iMin = 1-OLx |
66 |
iMax = sNx+Olx-1 |
iMax = sNx+OLx-1 |
67 |
jMin = 1-Oly |
jMin = 1-OLy |
68 |
jMax = sNy+Oly-1 |
jMax = sNy+OLy-1 |
69 |
#ifdef ATMOSPHERIC_LOADING |
#ifdef ATMOSPHERIC_LOADING |
70 |
ELSEIF ( useRealFreshWaterFlux ) THEN |
ELSEIF ( useRealFreshWaterFlux ) THEN |
71 |
C- needs sea-ice loading in part of the halo regions for grad.Phi0surf |
C- needs sea-ice loading in part of the halo regions for grad.Phi0surf |
105 |
DO j = jMin, jMax |
DO j = jMin, jMax |
106 |
DO i = iMin, iMax |
DO i = iMin, iMax |
107 |
hOceMxL(i,j,bi,bj) = drF(1)*h0FacC(i,j,1,bi,bj) |
hOceMxL(i,j,bi,bj) = drF(1)*h0FacC(i,j,1,bi,bj) |
108 |
& *rStarFacC(i,j,bi,bj) |
& *rStarFacC(i,j,bi,bj) |
109 |
ENDDO |
ENDDO |
110 |
ENDDO |
ENDDO |
111 |
ELSE |
ELSE |
139 |
DO i = iMin, iMax |
DO i = iMin, iMax |
140 |
tOceMxL(i,j,bi,bj) = theta(i,j,1,bi,bj) |
tOceMxL(i,j,bi,bj) = theta(i,j,1,bi,bj) |
141 |
sOceMxL(i,j,bi,bj) = salt (i,j,1,bi,bj) |
sOceMxL(i,j,bi,bj) = salt (i,j,1,bi,bj) |
142 |
v2ocMxL(i,j,bi,bj) = |
v2ocMxL(i,j,bi,bj) = |
143 |
& ( uvel(i,j,1,bi,bj)*uvel(i,j,1,bi,bj) |
& ( uvel(i,j,1,bi,bj)*uvel(i,j,1,bi,bj) |
144 |
& + uvel(i+1,j,1,bi,bj)*uvel(i+1,j,1,bi,bj) |
& + uvel(i+1,j,1,bi,bj)*uvel(i+1,j,1,bi,bj) |
145 |
& + vvel(i,j+1,1,bi,bj)*vvel(i,j+1,1,bi,bj) |
& + vvel(i,j+1,1,bi,bj)*vvel(i,j+1,1,bi,bj) |
146 |
& + vvel(i,j,1,bi,bj)*vvel(i,j,1,bi,bj) |
& + vvel(i,j,1,bi,bj)*vvel(i,j,1,bi,bj) |
147 |
& )*0.5 _d 0 |
& )*0.5 _d 0 |
148 |
prcAtm(i,j) = 0. |
prcAtm(i,j) = 0. |
149 |
evpAtm(i,j) = 0. |
icFrwAtm(i,j,bi,bj) = 0. _d 0 |
150 |
flxSW (i,j) = 0. |
icFlxAtm(i,j,bi,bj) = 0. _d 0 |
151 |
|
icFlxSW (i,j,bi,bj) = 0. _d 0 |
152 |
snowPrc(i,j,bi,bj) = 0. _d 0 |
snowPrc(i,j,bi,bj) = 0. _d 0 |
153 |
siceAlb(i,j,bi,bj) = 0. _d 0 |
siceAlb(i,j,bi,bj) = 0. _d 0 |
154 |
ENDDO |
ENDDO |
180 |
IF ( useBulkforce ) THEN |
IF ( useBulkforce ) THEN |
181 |
CALL THSICE_GET_PRECIP( |
CALL THSICE_GET_PRECIP( |
182 |
I iceMask, |
I iceMask, |
183 |
O prcAtm, snowPrc(1-Olx,1-Oly,bi,bj), flxSW, |
O prcAtm, snowPrc(1-OLx,1-OLy,bi,bj), |
184 |
|
O icFlxSW(1-OLx,1-OLy,bi,bj), |
185 |
I iMin,iMax,jMin,jMax, bi,bj, myThid ) |
I iMin,iMax,jMin,jMax, bi,bj, myThid ) |
186 |
ENDIF |
ENDIF |
187 |
#endif |
#endif |
188 |
|
|
189 |
|
|
190 |
CALL THSICE_STEP_FWD( |
CALL THSICE_STEP_TEMP( |
191 |
I bi, bj, iMin, iMax, jMin, jMax, |
I bi, bj, iMin, iMax, jMin, jMax, |
192 |
I prcAtm, |
I myTime, myIter, myThid ) |
193 |
U evpAtm, flxSW, |
|
194 |
|
CALL THSICE_STEP_FWD( |
195 |
|
I bi, bj, iMin, iMax, jMin, jMax, |
196 |
|
I prcAtm, |
197 |
I myTime, myIter, myThid ) |
I myTime, myIter, myThid ) |
198 |
|
|
199 |
CALL THSICE_AVE( |
CALL THSICE_AVE( |
200 |
I evpAtm, flxSW, |
I bi,bj, myTime, myIter, myThid ) |
|
I bi,bj, myTime, myIter, myThid ) |
|
201 |
|
|
202 |
c ENDDO |
c ENDDO |
203 |
c ENDDO |
c ENDDO |