135 |
CADJ STORE vvel (:,:,1,bi,bj) = comlev1_bibj, key=iicekey, byte=isbyte |
CADJ STORE vvel (:,:,1,bi,bj) = comlev1_bibj, key=iicekey, byte=isbyte |
136 |
#endif |
#endif |
137 |
|
|
138 |
DO j = jMin, jMax |
DO j = jMin, jMax |
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 |
icFrwAtm(i,j,bi,bj) = 0. _d 0 |
icFrwAtm(i,j,bi,bj) = 0. _d 0 |
150 |
icFlxAtm(i,j,bi,bj) = 0. _d 0 |
icFlxAtm(i,j,bi,bj) = 0. _d 0 |
151 |
icFlxSW (i,j,bi,bj) = 0. _d 0 |
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 |
|
ENDDO |
|
154 |
ENDDO |
ENDDO |
155 |
|
ENDDO |
156 |
|
|
157 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
158 |
CADJ STORE iceMask = comlev1, key = iicekey |
CADJ STORE iceMask = comlev1, key = iicekey |
177 |
#endif |
#endif |
178 |
|
|
179 |
#ifdef ALLOW_BULK_FORCE |
#ifdef ALLOW_BULK_FORCE |
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), |
O prcAtm, snowPrc(1-OLx,1-OLy,bi,bj), |
184 |
O icFlxSW(1-OLx,1-OLy,bi,bj), |
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 |
#ifdef ALLOW_EXF |
#ifdef ALLOW_EXF |
189 |
IF ( useEXF ) THEN |
IF ( useEXF ) THEN |
190 |
CALL THSICE_MAP_EXF( |
CALL THSICE_MAP_EXF( |
191 |
I iceMask, |
I iceMask, |
192 |
O prcAtm, snowPrc(1-OLx,1-OLy,bi,bj), |
O prcAtm, snowPrc(1-OLx,1-OLy,bi,bj), |
193 |
O icFlxSW(1-OLx,1-OLy,bi,bj), |
O icFlxSW(1-OLx,1-OLy,bi,bj), |
194 |
I iMin,iMax,jMin,jMax, bi,bj, myThid ) |
I iMin,iMax,jMin,jMax, bi,bj, myThid ) |
195 |
ENDIF |
ENDIF |
196 |
#endif |
#endif |
197 |
|
|
198 |
|
|
199 |
CALL THSICE_STEP_TEMP( |
CALL THSICE_STEP_TEMP( |
200 |
I bi, bj, iMin, iMax, jMin, jMax, |
I bi, bj, iMin, iMax, jMin, jMax, |
201 |
I myTime, myIter, myThid ) |
I myTime, myIter, myThid ) |
202 |
|
|
203 |
CALL THSICE_STEP_FWD( |
CALL THSICE_STEP_FWD( |
204 |
I bi, bj, iMin, iMax, jMin, jMax, |
I bi, bj, iMin, iMax, jMin, jMax, |
205 |
I prcAtm, |
I prcAtm, |
206 |
I myTime, myIter, myThid ) |
I myTime, myIter, myThid ) |
207 |
|
|
208 |
CALL THSICE_AVE( |
CALL THSICE_AVE( |
209 |
I bi,bj, myTime, myIter, myThid ) |
I bi,bj, myTime, myIter, myThid ) |
210 |
|
|
211 |
c ENDDO |
c ENDDO |
212 |
c ENDDO |
c ENDDO |
213 |
|
|
214 |
c IF ( .FALSE. ) THEN |
#ifdef ALLOW_SEAICE |
215 |
|
C-- If useSEAICE=.true., the stress is computed in seaice_model, |
216 |
|
C-- so that it does not need any further reduction |
217 |
|
IF ( .NOT. useSEAICE ) THEN |
218 |
|
#endif /* ALLOW_SEAICE */ |
219 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
220 |
CADJ STORE fu(:,:,bi,bj) = comlev1_bibj, key=iicekey, byte=isbyte |
CADJ STORE fu(:,:,bi,bj) = comlev1_bibj, key=iicekey, byte=isbyte |
221 |
CADJ STORE fv(:,:,bi,bj) = comlev1_bibj, key=iicekey, byte=isbyte |
CADJ STORE fv(:,:,bi,bj) = comlev1_bibj, key=iicekey, byte=isbyte |
222 |
#endif |
#endif |
223 |
IF ( stressReduction.GT. 0. _d 0 ) THEN |
IF ( stressReduction.GT. 0. _d 0 ) THEN |
224 |
DO j = jMin, jMax |
DO j = jMin, jMax |
225 |
DO i = iMin+1,iMax |
DO i = iMin+1,iMax |
226 |
tauFac = stressReduction |
tauFac = stressReduction |
227 |
& *(iceMask(i-1,j,bi,bj)+iceMask(i,j,bi,bj))*0.5 _d 0 |
& *(iceMask(i-1,j,bi,bj)+iceMask(i,j,bi,bj))*0.5 _d 0 |
228 |
fu(i,j,bi,bj) = (1. _d 0 - tauFac)*fu(i,j,bi,bj) |
fu(i,j,bi,bj) = (1. _d 0 - tauFac)*fu(i,j,bi,bj) |
229 |
|
ENDDO |
230 |
ENDDO |
ENDDO |
231 |
ENDDO |
DO j = jMin+1, jMax |
232 |
DO j = jMin+1, jMax |
DO i = iMin, iMax |
|
DO i = iMin, iMax |
|
233 |
tauFac = stressReduction |
tauFac = stressReduction |
234 |
& *(iceMask(i,j-1,bi,bj)+iceMask(i,j,bi,bj))*0.5 _d 0 |
& *(iceMask(i,j-1,bi,bj)+iceMask(i,j,bi,bj))*0.5 _d 0 |
235 |
fv(i,j,bi,bj) = (1. _d 0 - tauFac)*fv(i,j,bi,bj) |
fv(i,j,bi,bj) = (1. _d 0 - tauFac)*fv(i,j,bi,bj) |
236 |
|
ENDDO |
237 |
ENDDO |
ENDDO |
238 |
ENDDO |
ENDIF |
239 |
|
#ifdef ALLOW_SEAICE |
240 |
|
C not useSEAICE |
241 |
ENDIF |
ENDIF |
242 |
|
#endif /* ALLOW_SEAICE */ |
243 |
|
|
244 |
C-- end bi,bj loop |
C-- end bi,bj loop |
245 |
ENDDO |
ENDDO |
249 |
c IF (useRealFreshWaterFlux) _EXCH_XY_RS(sIceLoad, myThid) |
c IF (useRealFreshWaterFlux) _EXCH_XY_RS(sIceLoad, myThid) |
250 |
#endif |
#endif |
251 |
|
|
252 |
|
#ifdef ALLOW_SEAICE |
253 |
|
IF ( useSEAICE ) THEN |
254 |
|
C-- Exchange fields that are advected by seaice dynamics |
255 |
|
_EXCH_XY_R8( iceMask, myThid ) |
256 |
|
_EXCH_XY_R8( iceHeight, myThid ) |
257 |
|
_EXCH_XY_R8( snowHeight, myThid ) |
258 |
|
_EXCH_XY_R8( Qice1, myThid ) |
259 |
|
_EXCH_XY_R8( Qice2, myThid ) |
260 |
|
ENDIF |
261 |
|
#endif /* ALLOW_SEAICE */ |
262 |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
263 |
#endif /*ALLOW_THSICE*/ |
#endif /*ALLOW_THSICE*/ |
264 |
|
|