/[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.4 by jmc, Mon Apr 9 15:51:22 2007 UTC revision 1.5 by heimbach, Mon Apr 16 22:38:24 2007 UTC
# Line 42  C   oceQnet   :: heat flux to the ocean Line 42  C   oceQnet   :: heat flux to the ocean
42  #ifdef ALLOW_GENERIC_ADVDIFF  #ifdef ALLOW_GENERIC_ADVDIFF
43  # include "GAD.h"  # include "GAD.h"
44  #endif  #endif
45    #ifdef ALLOW_AUTODIFF_TAMC
46    # include "tamc.h"
47    # include "tamc_keys.h"
48    #endif
49    
50  C !INPUT PARAMETERS: ===================================================  C !INPUT PARAMETERS: ===================================================
51  C     === Routine arguments ===  C     === Routine arguments ===
# Line 101  C     msgBuf    :: Informational/error m Line 105  C     msgBuf    :: Informational/error m
105  CEOP  CEOP
106    
107  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
108    
109    #ifdef ALLOW_AUTODIFF_TAMC
110              act1 = bi - myBxLo(myThid)
111              max1 = myBxHi(myThid) - myBxLo(myThid) + 1
112              act2 = bj - myByLo(myThid)
113              max2 = myByHi(myThid) - myByLo(myThid) + 1
114              act3 = myThid - 1
115              max3 = nTx*nTy
116              act4 = ikey_dynamics - 1
117              iicekey = (act1 + 1) + act2*max1
118         &                         + act3*max1*max2
119         &                         + act4*max1*max2*max3
120    #endif /* ALLOW_AUTODIFF_TAMC */
121    
122  C     areaEpsil, vol_Epsil are 2 small numbers for ice area & ice volume:  C     areaEpsil, vol_Epsil are 2 small numbers for ice area & ice volume:
123  C     if ice area (=ice fraction * grid-cell area) or ice volume (= effective  C     if ice area (=ice fraction * grid-cell area) or ice volume (= effective
124  C     thickness * grid-cell area) are too small (i.e.: < areaEpsil,vol_Epsil)  C     thickness * grid-cell area) are too small (i.e.: < areaEpsil,vol_Epsil)
# Line 146  C--   Initialisation (+ build oceanic ma Line 164  C--   Initialisation (+ build oceanic ma
164         ENDDO         ENDDO
165        ENDDO        ENDDO
166    
167    #ifdef ALLOW_AUTODIFF_TAMC
168    CADJ STORE iceHeight(i,j,bi,bj)  
169    CADJ &     = comlev1_bibj, key=iicekey, byte=isbyte
170    CADJ STORE snowHeight(i,j,bi,bj)
171    CADJ &     = comlev1_bibj, key=iicekey, byte=isbyte
172    #endif
173        IF ( thSIce_diffK .GT. 0. ) THEN        IF ( thSIce_diffK .GT. 0. ) THEN
174          CALL THSICE_DIFFUSION(          CALL THSICE_DIFFUSION(
175       I              maskOce,       I              maskOce,
# Line 175  C--   Fractional area Line 199  C--   Fractional area
199            iceFrc(i,j) = iceMask(i,j,bi,bj)            iceFrc(i,j) = iceMask(i,j,bi,bj)
200           ENDDO           ENDDO
201          ENDDO          ENDDO
202    #ifdef ALLOW_AUTODIFF_TAMC
203    CADJ STORE icevol(i,j) = comlev1_bibj, key=iicekey, byte=isbyte
204    CADJ STORE utrice(i,j) = comlev1_bibj, key=iicekey, byte=isbyte
205    CADJ STORE vtrice(i,j) = comlev1_bibj, key=iicekey, byte=isbyte
206    #endif
207          CALL THSICE_ADVECTION(          CALL THSICE_ADVECTION(
208       I       GAD_SI_FRAC,  thSIceAdvScheme, .TRUE.,       I       GAD_SI_FRAC,  thSIceAdvScheme, .TRUE.,
209       I       uTrIce, vTrIce, maskOce, thSIce_deltaT, areaEpsil,       I       uTrIce, vTrIce, maskOce, thSIce_deltaT, areaEpsil,
# Line 195  C--   Snow thickness Line 224  C--   Snow thickness
224       O       afx, afy,       O       afx, afy,
225       I       bi, bj, myTime, myIter, myThid )       I       bi, bj, myTime, myIter, myThid )
226    
227    #ifdef ALLOW_AUTODIFF_TAMC
228    CADJ STORE iceHeight(i,j,bi,bj) = comlev1_bibj, key=iicekey, byte=isbyte
229    CADJ STORE iceMask(i,j,bi,bj)   = comlev1_bibj, key=iicekey, byte=isbyte
230    #endif
231  C--   sea-ice Thickness  C--   sea-ice Thickness
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
# Line 208  C--   sea-ice Thickness Line 241  C--   sea-ice Thickness
241       U       iceVol, iceHeight(1-Olx,1-Oly,bi,bj),       U       iceVol, iceHeight(1-Olx,1-Oly,bi,bj),
242       O       uTrIce, vTrIce,       O       uTrIce, vTrIce,
243       I       bi, bj, myTime, myIter, myThid )       I       bi, bj, myTime, myIter, myThid )
244    
245    #ifdef ALLOW_AUTODIFF_TAMC
246    CADJ STORE qice2(i,j,bi,bj) = comlev1_bibj, key=iicekey, byte=isbyte
247    CADJ STORE utrice(i,j)      = comlev1_bibj, key=iicekey, byte=isbyte
248    CADJ STORE vtrice(i,j)      = comlev1_bibj, key=iicekey, byte=isbyte
249    #endif
250    
251  #ifdef ALLOW_DBUG_THSICE  #ifdef ALLOW_DBUG_THSICE
252          IF ( dBugFlag ) THEN          IF ( dBugFlag ) THEN
253           sumVar1 = 0.           sumVar1 = 0.
# Line 362  c           WRITE(6,'(A,1P4E14.6)') 'ICE Line 402  c           WRITE(6,'(A,1P4E14.6)') 'ICE
402          ENDIF          ENDIF
403  #endif  #endif
404    
405    #ifdef ALLOW_AUTODIFF_TAMC
406    CADJ STORE iceHeight(:,:,bi,bj) =
407    CADJ &     comlev1_bibj, key=iicekey, byte=isbyte
408    CADJ STORE snowHeight(:,:,bi,bj) =
409    CADJ &     comlev1_bibj, key=iicekey, byte=isbyte
410    CADJ STORE iceFrc(:,:) =
411    CADJ &     comlev1_bibj, key=iicekey, byte=isbyte
412    #endif
413    
414  C--   Update Ice Fraction: ensure that fraction is > iceMaskMin & < 1  C--   Update Ice Fraction: ensure that fraction is > iceMaskMin & < 1
415  C      and adjust Ice thickness and snow thickness accordingly  C      and adjust Ice thickness and snow thickness accordingly
416          DO j=1,sNy          DO j=1,sNy

Legend:
Removed from v.1.4  
changed lines
  Added in v.1.5

  ViewVC Help
Powered by ViewVC 1.1.22