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

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

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

revision 1.12 by jmc, Tue Jun 7 22:26:37 2011 UTC revision 1.13 by jmc, Mon Jan 21 22:54:54 2013 UTC
# Line 74  C     afy       :: horizontal advective Line 74  C     afy       :: horizontal advective
74  C     iceFrc    :: (new) sea-ice fraction  C     iceFrc    :: (new) sea-ice fraction
75  C     iceVol    :: temporary array used in advection S/R  C     iceVol    :: temporary array used in advection S/R
76  C     oldVol    :: (old) sea-ice volume  C     oldVol    :: (old) sea-ice volume
77  C     msgBuf    :: Informational/error meesage buffer  C     msgBuf    :: Informational/error message buffer
78        INTEGER i, j        INTEGER i, j
79        LOGICAL thSIce_multiDimAdv        LOGICAL thSIce_multiDimAdv
80        CHARACTER*(MAX_LEN_MBUF) msgBuf        CHARACTER*(MAX_LEN_MBUF) msgBuf
# Line 87  C     msgBuf    :: Informational/error m Line 87  C     msgBuf    :: Informational/error m
87        _RL afy       (1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL afy       (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
88        _RS maskOce   (1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RS maskOce   (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
89        _RL iceFrc    (1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL iceFrc    (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
90        _RL iceVol    (1-Olx:sNx+Olx,1-Oly:sNy+Oly)        _RL iceVol    (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
91        _RL oldVol    (1-Olx:sNx+Olx,1-Oly:sNy+Oly)        _RL oldVol    (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
92        _RL r_minArea        _RL r_minArea
93        _RL meanCellArea, areaEpsil, vol_Epsil        _RL meanCellArea, areaEpsil, vol_Epsil
94  #ifdef ALLOW_DIAGNOSTICS  #ifdef ALLOW_DIAGNOSTICS
# Line 150  C     but what matter here is just to ha Line 150  C     but what matter here is just to ha
150        ENDIF        ENDIF
151  #endif /* ALLOW_GENERIC_ADVDIFF */  #endif /* ALLOW_GENERIC_ADVDIFF */
152    
153    #ifndef OLD_THSICE_CALL_SEQUENCE
154    #ifdef ALLOW_DIAGNOSTICS
155          IF ( useDiagnostics ) THEN
156            CALL DIAGNOSTICS_FILL(iceMask,'SI_AdvFr',0,1,1,bi,bj,myThid)
157    C-     Ice-fraction weighted quantities:
158            tmpFac = 1. _d 0
159            CALL DIAGNOSTICS_FRACT_FILL(
160         I                   iceHeight, iceMask,tmpFac,1,'SI_AdvHi',
161         I                   0,1,1,bi,bj,myThid)
162            CALL DIAGNOSTICS_FRACT_FILL(
163         I                   snowHeight,iceMask,tmpFac,1,'SI_AdvHs',
164         I                   0,1,1,bi,bj,myThid)
165    C-     Ice-Volume weighted quantities:
166            IF ( DIAGNOSTICS_IS_ON('SI_AdvQ1',myThid) .OR.
167         &       DIAGNOSTICS_IS_ON('SI_AdvQ2',myThid) ) THEN
168             DO j=1,sNy
169              DO i=1,sNx
170               iceVol(i,j) = iceMask(i,j,bi,bj)*iceHeight(i,j,bi,bj)
171              ENDDO
172             ENDDO
173             CALL DIAGNOSTICS_FRACT_FILL(
174         I                   Qice1(1-OLx,1-OLy,bi,bj),
175         I                   iceVol,tmpFac,1,'SI_AdvQ1',
176         I                   0,1,2,bi,bj,myThid)
177             CALL DIAGNOSTICS_FRACT_FILL(
178         I                   Qice2(1-OLx,1-OLy,bi,bj),
179         I                   iceVol,tmpFac,1,'SI_AdvQ2',
180         I                   0,1,2,bi,bj,myThid)
181            ENDIF
182          ENDIF
183    #endif /* ALLOW_DIAGNOSTICS */
184    #endif /* ndef OLD_THSICE_CALL_SEQUENCE */
185    
186  C--   Initialisation (+ build oceanic mask)  C--   Initialisation (+ build oceanic mask)
187        DO j=1-OLy,sNy+OLy        DO j=1-OLy,sNy+OLy
188         DO i=1-OLx,sNx+OLx         DO i=1-OLx,sNx+OLx
# Line 182  CADJ &     = comlev1_bibj, key=ticekey, Line 215  CADJ &     = comlev1_bibj, key=ticekey,
215        IF ( thSIce_multiDimAdv ) THEN        IF ( thSIce_multiDimAdv ) THEN
216    
217  C-    Calculate ice transports through tracer cell faces.  C-    Calculate ice transports through tracer cell faces.
218          DO j=1-Oly,sNy+Oly          DO j=1-OLy,sNy+OLy
219           DO i=1-Olx+1,sNx+Olx           DO i=1-OLx+1,sNx+OLx
220            uTrIce(i,j) = uIce(i,j)*_dyG(i,j,bi,bj)            uTrIce(i,j) = uIce(i,j)*_dyG(i,j,bi,bj)
221       &                *maskOce(i-1,j)*maskOce(i,j)       &                *maskOce(i-1,j)*maskOce(i,j)
222           ENDDO           ENDDO
223          ENDDO          ENDDO
224          DO j=1-Oly+1,sNy+Oly          DO j=1-OLy+1,sNy+OLy
225           DO i=1-Olx,sNx+Olx           DO i=1-OLx,sNx+OLx
226            vTrIce(i,j) = vIce(i,j)*_dxG(i,j,bi,bj)            vTrIce(i,j) = vIce(i,j)*_dxG(i,j,bi,bj)
227       &                *maskOce(i,j-1)*maskOce(i,j)       &                *maskOce(i,j-1)*maskOce(i,j)
228           ENDDO           ENDDO
229          ENDDO          ENDDO
230    
231  C--   Fractional area  C--   Fractional area
232          DO j=1-Oly,sNy+Oly          DO j=1-OLy,sNy+OLy
233           DO i=1-Olx,sNx+Olx           DO i=1-OLx,sNx+OLx
234            iceFrc(i,j) = iceMask(i,j,bi,bj)            iceFrc(i,j) = iceMask(i,j,bi,bj)
235           ENDDO           ENDDO
236          ENDDO          ENDDO
# Line 214  CADJ STORE vtrice(:,:) = comlev1_bibj, k Line 247  CADJ STORE vtrice(:,:) = comlev1_bibj, k
247       I       bi, bj, myTime, myIter, myThid )       I       bi, bj, myTime, myIter, myThid )
248    
249  C--   Snow thickness  C--   Snow thickness
250          DO j=1-Oly,sNy+Oly          DO j=1-OLy,sNy+OLy
251           DO i=1-Olx,sNx+Olx           DO i=1-OLx,sNx+OLx
252            iceVol(i,j) = iceMask(i,j,bi,bj)*rA(i,j,bi,bj)            iceVol(i,j) = iceMask(i,j,bi,bj)*rA(i,j,bi,bj)
253           ENDDO           ENDDO
254          ENDDO          ENDDO
255          CALL THSICE_ADVECTION(          CALL THSICE_ADVECTION(
256       I       GAD_SI_HSNOW, thSIceAdvScheme, .FALSE.,       I       GAD_SI_HSNOW, thSIceAdvScheme, .FALSE.,
257       I       uTrans, vTrans, maskOce, thSIce_deltaT, areaEpsil,       I       uTrans, vTrans, maskOce, thSIce_deltaT, areaEpsil,
258       U       iceVol, snowHeight(1-Olx,1-Oly,bi,bj),       U       iceVol, snowHeight(1-OLx,1-OLy,bi,bj),
259       O       afx, afy,       O       afx, afy,
260       I       bi, bj, myTime, myIter, myThid )       I       bi, bj, myTime, myIter, myThid )
261    
# Line 231  CADJ STORE iceHeight(:,:,bi,bj) = comlev Line 264  CADJ STORE iceHeight(:,:,bi,bj) = comlev
264  CADJ STORE iceMask(:,:,bi,bj)   = comlev1_bibj, key=ticekey, byte=isbyte  CADJ STORE iceMask(:,:,bi,bj)   = comlev1_bibj, key=ticekey, byte=isbyte
265  #endif  #endif
266  C--   sea-ice Thickness  C--   sea-ice Thickness
267          DO j=1-Oly,sNy+Oly          DO j=1-OLy,sNy+OLy
268           DO i=1-Olx,sNx+Olx           DO i=1-OLx,sNx+OLx
269            iceVol(i,j) = iceMask(i,j,bi,bj)*rA(i,j,bi,bj)            iceVol(i,j) = iceMask(i,j,bi,bj)*rA(i,j,bi,bj)
270            oldVol(i,j) = iceVol(i,j)*iceHeight(i,j,bi,bj)            oldVol(i,j) = iceVol(i,j)*iceHeight(i,j,bi,bj)
271           ENDDO           ENDDO
# Line 240  C--   sea-ice Thickness Line 273  C--   sea-ice Thickness
273          CALL THSICE_ADVECTION(          CALL THSICE_ADVECTION(
274       I       GAD_SI_HICE,  thSIceAdvScheme, .FALSE.,       I       GAD_SI_HICE,  thSIceAdvScheme, .FALSE.,
275       I       uTrans, vTrans, maskOce, thSIce_deltaT, areaEpsil,       I       uTrans, vTrans, maskOce, thSIce_deltaT, areaEpsil,
276       U       iceVol, iceHeight(1-Olx,1-Oly,bi,bj),       U       iceVol, iceHeight(1-OLx,1-OLy,bi,bj),
277       O       uTrIce, vTrIce,       O       uTrIce, vTrIce,
278       I       bi, bj, myTime, myIter, myThid )       I       bi, bj, myTime, myIter, myThid )
279    
# Line 312  C--     Diagnosse advective fluxes (ice- Line 345  C--     Diagnosse advective fluxes (ice-
345  #endif  #endif
346    
347  C--   Enthalpy in layer 1  C--   Enthalpy in layer 1
348          DO j=1-Oly,sNy+Oly          DO j=1-OLy,sNy+OLy
349           DO i=1-Olx,sNx+Olx           DO i=1-OLx,sNx+OLx
350            iceVol(i,j) = oldVol(i,j)            iceVol(i,j) = oldVol(i,j)
351           ENDDO           ENDDO
352          ENDDO          ENDDO
353          CALL THSICE_ADVECTION(          CALL THSICE_ADVECTION(
354       I       GAD_SI_QICE1, thSIceAdvScheme, .FALSE.,       I       GAD_SI_QICE1, thSIceAdvScheme, .FALSE.,
355       I       uTrIce, vTrIce, maskOce, thSIce_deltaT, vol_Epsil,       I       uTrIce, vTrIce, maskOce, thSIce_deltaT, vol_Epsil,
356       U       iceVol, Qice1(1-Olx,1-Oly,bi,bj),       U       iceVol, Qice1(1-OLx,1-OLy,bi,bj),
357       O       afx, afy,       O       afx, afy,
358       I       bi, bj, myTime, myIter, myThid )       I       bi, bj, myTime, myIter, myThid )
359  #ifdef ALLOW_DBUG_THSICE  #ifdef ALLOW_DBUG_THSICE
# Line 349  c           WRITE(6,'(A,1P4E14.6)') 'ICE Line 382  c           WRITE(6,'(A,1P4E14.6)') 'ICE
382  #endif  #endif
383    
384  C--   Enthalpy in layer 2  C--   Enthalpy in layer 2
385          DO j=1-Oly,sNy+Oly          DO j=1-OLy,sNy+OLy
386           DO i=1-Olx,sNx+Olx           DO i=1-OLx,sNx+OLx
387            iceVol(i,j) = oldVol(i,j)            iceVol(i,j) = oldVol(i,j)
388           ENDDO           ENDDO
389          ENDDO          ENDDO
390          CALL THSICE_ADVECTION(          CALL THSICE_ADVECTION(
391       I       GAD_SI_QICE2, thSIceAdvScheme, .FALSE.,       I       GAD_SI_QICE2, thSIceAdvScheme, .FALSE.,
392       I       uTrIce, vTrIce, maskOce, thSIce_deltaT, vol_Epsil,       I       uTrIce, vTrIce, maskOce, thSIce_deltaT, vol_Epsil,
393       U       iceVol, Qice2(1-Olx,1-Oly,bi,bj),       U       iceVol, Qice2(1-OLx,1-OLy,bi,bj),
394       O       afx, afy,       O       afx, afy,
395       I       bi, bj, myTime, myIter, myThid )       I       bi, bj, myTime, myIter, myThid )
396  #ifdef ALLOW_DBUG_THSICE  #ifdef ALLOW_DBUG_THSICE
# Line 506  C---  if not multiDimAdvection Line 539  C---  if not multiDimAdvection
539  C---  end if multiDimAdvection  C---  end if multiDimAdvection
540        ENDIF        ENDIF
541    
542    #ifdef OLD_THSICE_CALL_SEQUENCE
543  #ifdef ALLOW_DIAGNOSTICS  #ifdef ALLOW_DIAGNOSTICS
544        IF ( useDiagnostics ) THEN        IF ( useDiagnostics ) THEN
545          CALL DIAGNOSTICS_FILL(iceMask,'SI_AdvFr',0,1,1,bi,bj,myThid)          CALL DIAGNOSTICS_FILL(iceMask,'SI_AdvFr',0,1,1,bi,bj,myThid)
# Line 536  C-     Ice-Volume weighted quantities: Line 570  C-     Ice-Volume weighted quantities:
570          ENDIF          ENDIF
571        ENDIF        ENDIF
572  #endif /* ALLOW_DIAGNOSTICS */  #endif /* ALLOW_DIAGNOSTICS */
573    #endif /* OLD_THSICE_CALL_SEQUENCE */
574    
575  #endif /* ALLOW_THSICE */  #endif /* ALLOW_THSICE */
576    

Legend:
Removed from v.1.12  
changed lines
  Added in v.1.13

  ViewVC Help
Powered by ViewVC 1.1.22