/[MITgcm]/MITgcm/pkg/thsice/thsice_main.F
ViewVC logotype

Diff of /MITgcm/pkg/thsice/thsice_main.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.9 by mlosch, Tue May 30 22:49:00 2006 UTC revision 1.17 by jmc, Thu Aug 30 15:02:51 2007 UTC
# Line 36  C     === Global variables === Line 36  C     === Global variables ===
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     myTime    :: Current time in simulation (s)
40  C     myTime :: time counter for this thread  C     myIter    :: Current iteration number
41  C     myThid :: thread number for this instance of the routine.  C     myThid    :: My Thread Id. number
42        _RL  myTime        _RL     myTime
43        INTEGER myIter        INTEGER myIter
44        INTEGER myThid        INTEGER myThid
45  CEOP  CEOP
# Line 67  C-     needs new Ice Fraction in halo re Line 67  C-     needs new Ice Fraction in halo re
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 .AND. .NOT.useSEAICE ) 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
72  C      to be valid at the boundaries ( d/dx 1:sNx+1 ; d/dy 1:sNy+1 )  C      to be valid at the boundaries ( d/dx 1:sNx+1 ; d/dy 1:sNy+1 )
73         iMin = 0         iMin = 0
# Line 98  C      to be valid at the boundaries ( d Line 98  C      to be valid at the boundaries ( d
98       &                         + act4*max1*max2*max3       &                         + act4*max1*max2*max3
99  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
100    
101    #ifdef ALLOW_AUTODIFF_TAMC
102    CADJ STORE ocefwfx(:,:,bi,bj) = comlev1_bibj, key=iicekey, byte=isbyte
103    CADJ STORE oceqnet(:,:,bi,bj) = comlev1_bibj, key=iicekey, byte=isbyte
104    CADJ STORE ocesflx(:,:,bi,bj) = comlev1_bibj, key=iicekey, byte=isbyte
105    # ifdef ALLOW_EXF
106    CADJ STORE qsw(:,:,bi,bj) = comlev1_bibj, key=iicekey, byte=isbyte
107    # endif
108    #endif
109    
110  C--     Mixed layer thickness: take the 1rst layer  C--     Mixed layer thickness: take the 1rst layer
111  #ifdef NONLIN_FRSURF  #ifdef NONLIN_FRSURF
112          IF ( staggerTimeStep .AND. nonlinFreeSurf.GT.0 ) THEN          IF ( staggerTimeStep .AND. nonlinFreeSurf.GT.0 ) THEN
# Line 114  C--     Mixed layer thickness: take the Line 123  C--     Mixed layer thickness: take the
123              IF ( ksurfC(i,j,bi,bj).EQ.1 ) THEN              IF ( ksurfC(i,j,bi,bj).EQ.1 ) THEN
124               hOceMxL(i,j,bi,bj) = drF(1)*hFac_surfC(i,j,bi,bj)               hOceMxL(i,j,bi,bj) = drF(1)*hFac_surfC(i,j,bi,bj)
125              ELSE              ELSE
126               hOceMxL(i,j,bi,bj) = drF(1)*hfacC(i,j,1,bi,bj)               hOceMxL(i,j,bi,bj) = drF(1)*hFacC(i,j,1,bi,bj)
127              ENDIF              ENDIF
128             ENDDO             ENDDO
129            ENDDO            ENDDO
# Line 125  C--     Mixed layer thickness: take the Line 134  C--     Mixed layer thickness: take the
134  #endif /* NONLIN_FRSURF */  #endif /* NONLIN_FRSURF */
135            DO j = jMin, jMax            DO j = jMin, jMax
136             DO i = iMin, iMax             DO i = iMin, iMax
137               hOceMxL(i,j,bi,bj) = drF(1)*hfacC(i,j,1,bi,bj)               hOceMxL(i,j,bi,bj) = drF(1)*hFacC(i,j,1,bi,bj)
138             ENDDO             ENDDO
139            ENDDO            ENDDO
140          ENDIF          ENDIF
# Line 135  CADJ STORE uvel (:,:,1,bi,bj) = comlev1_ Line 144  CADJ STORE uvel (:,:,1,bi,bj) = comlev1_
144  CADJ STORE vvel (:,:,1,bi,bj) = comlev1_bibj, key=iicekey, byte=isbyte  CADJ STORE vvel (:,:,1,bi,bj) = comlev1_bibj, key=iicekey, byte=isbyte
145  #endif  #endif
146    
147           DO j = jMin, jMax          DO j = jMin, jMax
148            DO i = iMin, iMax           DO i = iMin, iMax
149             tOceMxL(i,j,bi,bj) = theta(i,j,1,bi,bj)            tOceMxL(i,j,bi,bj) = theta(i,j,1,bi,bj)
150             sOceMxL(i,j,bi,bj) = salt (i,j,1,bi,bj)            sOceMxL(i,j,bi,bj) = salt (i,j,1,bi,bj)
151             v2ocMxL(i,j,bi,bj) =            v2ocMxL(i,j,bi,bj) =
152       &              ( uvel(i,j,1,bi,bj)*uvel(i,j,1,bi,bj)       &              ( uvel(i,j,1,bi,bj)*uvel(i,j,1,bi,bj)
153       &              + 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)
154       &              + 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)
155       &              + vvel(i,j,1,bi,bj)*vvel(i,j,1,bi,bj)       &              + vvel(i,j,1,bi,bj)*vvel(i,j,1,bi,bj)
156       &              )*0.5 _d 0       &              )*0.5 _d 0
157             prcAtm(i,j) = 0.            prcAtm(i,j) = 0.
158             icFrwAtm(i,j,bi,bj) = 0. _d 0            icFrwAtm(i,j,bi,bj) = 0. _d 0
159             icFlxAtm(i,j,bi,bj) = 0. _d 0            icFlxAtm(i,j,bi,bj) = 0. _d 0
160             icFlxSW (i,j,bi,bj) = 0. _d 0            icFlxSW (i,j,bi,bj) = 0. _d 0
161             snowPrc(i,j,bi,bj) = 0. _d 0            snowPrc(i,j,bi,bj) = 0. _d 0
162             siceAlb(i,j,bi,bj) = 0. _d 0            siceAlb(i,j,bi,bj) = 0. _d 0
           ENDDO  
163           ENDDO           ENDDO
164            ENDDO
165    
166  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
167  CADJ STORE iceMask = comlev1, key = iicekey  CADJ STORE iceMask = comlev1, key = iicekey
# Line 162  CADJ STORE Tsrf    = comlev1, key = iice Line 171  CADJ STORE Tsrf    = comlev1, key = iice
171  CADJ STORE Qice1   = comlev1, key = iicekey  CADJ STORE Qice1   = comlev1, key = iicekey
172  CADJ STORE Qice2   = comlev1, key = iicekey  CADJ STORE Qice2   = comlev1, key = iicekey
173  CADJ STORE snowAge = comlev1, key = iicekey  CADJ STORE snowAge = comlev1, key = iicekey
   
 CADJ STORE sHeating = comlev1, key = iicekey  
 CADJ STORE flxCndBt = comlev1, key = iicekey  
174  CADJ STORE snowPrc  = comlev1, key = iicekey  CADJ STORE snowPrc  = comlev1, key = iicekey
175    
176  CADJ STORE hOceMxL = comlev1, key = iicekey  CADJ STORE hOceMxL = comlev1, key = iicekey
# Line 176  CADJ STORE empmr   = comlev1, key = iice Line 182  CADJ STORE empmr   = comlev1, key = iice
182  CADJ STORE qnet    = comlev1, key = iicekey  CADJ STORE qnet    = comlev1, key = iicekey
183  #endif  #endif
184    
185    C-      do sea-ice advection before getting surface fluxes
186    C Note: will inline this S/R once thSIce in Atmos. set-up is settled
187            IF ( thSIceAdvScheme.GT.0 )
188         &   CALL THSICE_DO_ADVECT(
189         I                   bi,bj, myTime, myIter, myThid )
190    
191  #ifdef ALLOW_BULK_FORCE  #ifdef ALLOW_BULK_FORCE
192           IF ( useBulkforce ) THEN          IF ( useBulkforce ) THEN
193             CALL THSICE_GET_PRECIP(           CALL THSICE_GET_PRECIP(
194       I                  iceMask,       I                  iceMask,
195       O                  prcAtm, snowPrc(1-OLx,1-OLy,bi,bj),       O                  prcAtm, snowPrc(1-OLx,1-OLy,bi,bj),
196       O                  icFlxSW(1-OLx,1-OLy,bi,bj),       O                  icFlxSW(1-OLx,1-OLy,bi,bj),
197       I                  iMin,iMax,jMin,jMax, bi,bj, myThid )       I                  iMin,iMax,jMin,jMax, bi,bj, myThid )
198           ENDIF          ENDIF
199  #endif  #endif
200  #ifdef ALLOW_EXF  #ifdef ALLOW_EXF
201           IF ( useEXF ) THEN          IF ( useEXF ) THEN
202             CALL THSICE_MAP_EXF(           CALL THSICE_MAP_EXF(
203       I                  iceMask,       I                  iceMask,
204       O                  prcAtm, snowPrc(1-OLx,1-OLy,bi,bj),       O                  prcAtm, snowPrc(1-OLx,1-OLy,bi,bj),
205       O                  icFlxSW(1-OLx,1-OLy,bi,bj),       O                  icFlxSW(1-OLx,1-OLy,bi,bj),
206       I                  iMin,iMax,jMin,jMax, bi,bj, myThid )       I                  iMin,iMax,jMin,jMax, bi,bj, myThid )
207           ENDIF          ENDIF
208  #endif  #endif
209    
210            CALL THSICE_STEP_TEMP(
          CALL THSICE_STEP_TEMP(  
211       I                     bi, bj, iMin, iMax, jMin, jMax,       I                     bi, bj, iMin, iMax, jMin, jMax,
212       I                     myTime, myIter, myThid )       I                     myTime, myIter, myThid )
213    
214           CALL THSICE_STEP_FWD(  #ifdef ALLOW_AUTODIFF_TAMC
215    CADJ STORE empmr, qnet = comlev1, key = iicekey
216    CADJ STORE iceMask = comlev1, key = iicekey
217    CADJ STORE iceHeight  = comlev1, key = iicekey
218    CADJ STORE snowHeight = comlev1, key = iicekey
219    CADJ STORE Tsrf    = comlev1, key = iicekey
220    CADJ STORE Qice1   = comlev1, key = iicekey
221    CADJ STORE Qice2   = comlev1, key = iicekey
222    CADJ STORE snowAge = comlev1, key = iicekey
223    #endif
224    
225            CALL THSICE_STEP_FWD(
226       I                     bi, bj, iMin, iMax, jMin, jMax,       I                     bi, bj, iMin, iMax, jMin, jMax,
227       I                     prcAtm,       I                     prcAtm,
228       I                     myTime, myIter, myThid )       I                     myTime, myIter, myThid )
229    
230           CALL THSICE_AVE(          CALL THSICE_AVE(
231       I                     bi,bj, myTime, myIter, myThid )       I                     bi,bj, myTime, myIter, myThid )
232    
233  c      ENDDO  c      ENDDO
234  c     ENDDO  c     ENDDO
235    
236  c       IF ( .FALSE. ) THEN  C--   note: If useSEAICE=.true., the stress is computed in seaice_model,
237    C--   and stressReduction is always set to zero
238  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
239  CADJ STORE fu(:,:,bi,bj) = comlev1_bibj, key=iicekey, byte=isbyte  CADJ STORE fu(:,:,bi,bj) = comlev1_bibj, key=iicekey, byte=isbyte
240  CADJ STORE fv(:,:,bi,bj) = comlev1_bibj, key=iicekey, byte=isbyte  CADJ STORE fv(:,:,bi,bj) = comlev1_bibj, key=iicekey, byte=isbyte
241  #endif  #endif
242          IF ( stressReduction.GT. 0. _d 0 ) THEN          IF ( stressReduction.GT. 0. _d 0 ) THEN
243           DO j = jMin, jMax            DO j = jMin, jMax
244            DO i = iMin+1,iMax             DO i = iMin+1,iMax
245              tauFac = stressReduction              tauFac = stressReduction
246       &             *(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
247              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)
248               ENDDO
249            ENDDO            ENDDO
250           ENDDO            DO j = jMin+1, jMax
251           DO j = jMin+1, jMax             DO i = iMin, iMax
           DO i = iMin, iMax  
252              tauFac = stressReduction              tauFac = stressReduction
253       &             *(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
254              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)
255               ENDDO
256            ENDDO            ENDDO
          ENDDO  
257          ENDIF          ENDIF
258    
259  C--  end bi,bj loop  C--  end bi,bj loop
260         ENDDO         ENDDO
261        ENDDO        ENDDO
262    
263          IF ( useSEAICE .OR. thSIceAdvScheme.GT.0 ) THEN
264    C--   Exchange fields that are advected by seaice dynamics
265            _EXCH_XY_R8( iceMask, myThid )
266            _EXCH_XY_R8( iceHeight, myThid )
267            _EXCH_XY_R8( snowHeight, myThid )
268            _EXCH_XY_R8( Qice1, myThid )
269            _EXCH_XY_R8( Qice2, myThid )
270  #ifdef ATMOSPHERIC_LOADING  #ifdef ATMOSPHERIC_LOADING
271  c     IF (useRealFreshWaterFlux) _EXCH_XY_RS(sIceLoad, myThid)          IF (useRealFreshWaterFlux)
272         &  _EXCH_XY_RS( sIceLoad, myThid )
273  #endif  #endif
274          ENDIF
275    
276  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
277  #endif  /*ALLOW_THSICE*/  #endif  /*ALLOW_THSICE*/

Legend:
Removed from v.1.9  
changed lines
  Added in v.1.17

  ViewVC Help
Powered by ViewVC 1.1.22