/[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.7 by jmc, Mon Aug 27 13:20:57 2007 UTC revision 1.10 by heimbach, Thu Oct 21 02:10:34 2010 UTC
# Line 38  C   oceQnet   :: heat flux to the ocean Line 38  C   oceQnet   :: heat flux to the ocean
38  #include "THSICE_SIZE.h"  #include "THSICE_SIZE.h"
39  #include "THSICE_PARAMS.h"  #include "THSICE_PARAMS.h"
40  #include "THSICE_VARS.h"  #include "THSICE_VARS.h"
 #include "THSICE_2DYN.h"  
41  #ifdef ALLOW_GENERIC_ADVDIFF  #ifdef ALLOW_GENERIC_ADVDIFF
42  # include "GAD.h"  # include "GAD.h"
43  #endif  #endif
# Line 168  C--   Initialisation (+ build oceanic ma Line 167  C--   Initialisation (+ build oceanic ma
167        ENDDO        ENDDO
168    
169  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
170  CADJ STORE iceHeight(i,j,bi,bj)    CADJ STORE iceHeight(:,:,bi,bj)
171  CADJ &     = comlev1_bibj, key=iicekey, byte=isbyte  CADJ &     = comlev1_bibj, key=iicekey, byte=isbyte
172  CADJ STORE snowHeight(i,j,bi,bj)  CADJ STORE snowHeight(:,:,bi,bj)
173  CADJ &     = comlev1_bibj, key=iicekey, byte=isbyte  CADJ &     = comlev1_bibj, key=iicekey, byte=isbyte
174  #endif  #endif
175        IF ( thSIce_diffK .GT. 0. ) THEN        IF ( thSIce_diffK .GT. 0. ) THEN
# Line 203  C--   Fractional area Line 202  C--   Fractional area
202           ENDDO           ENDDO
203          ENDDO          ENDDO
204  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
205  CADJ STORE icevol(i,j) = comlev1_bibj, key=iicekey, byte=isbyte  CADJ STORE icevol(:,:) = comlev1_bibj, key=iicekey, byte=isbyte
206  CADJ STORE utrice(i,j) = comlev1_bibj, key=iicekey, byte=isbyte  CADJ STORE utrice(:,:) = comlev1_bibj, key=iicekey, byte=isbyte
207  CADJ STORE vtrice(i,j) = comlev1_bibj, key=iicekey, byte=isbyte  CADJ STORE vtrice(:,:) = comlev1_bibj, key=iicekey, byte=isbyte
208  #endif  #endif
209          CALL THSICE_ADVECTION(          CALL THSICE_ADVECTION(
210       I       GAD_SI_FRAC,  thSIceAdvScheme, .TRUE.,       I       GAD_SI_FRAC,  thSIceAdvScheme, .TRUE.,
# Line 228  C--   Snow thickness Line 227  C--   Snow thickness
227       I       bi, bj, myTime, myIter, myThid )       I       bi, bj, myTime, myIter, myThid )
228    
229  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
230  CADJ STORE iceHeight(i,j,bi,bj) = comlev1_bibj, key=iicekey, byte=isbyte  CADJ STORE iceHeight(:,:,bi,bj) = comlev1_bibj, key=iicekey, byte=isbyte
231  CADJ STORE iceMask(i,j,bi,bj)   = comlev1_bibj, key=iicekey, byte=isbyte  CADJ STORE iceMask(:,:,bi,bj)   = comlev1_bibj, key=iicekey, byte=isbyte
232  #endif  #endif
233  C--   sea-ice Thickness  C--   sea-ice Thickness
234          DO j=1-Oly,sNy+Oly          DO j=1-Oly,sNy+Oly
# Line 246  C--   sea-ice Thickness Line 245  C--   sea-ice Thickness
245       I       bi, bj, myTime, myIter, myThid )       I       bi, bj, myTime, myIter, myThid )
246    
247  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
248  CADJ STORE qice2(i,j,bi,bj) = comlev1_bibj, key=iicekey, byte=isbyte  CADJ STORE qice2(:,:,bi,bj) = comlev1_bibj, key=iicekey, byte=isbyte
249  CADJ STORE utrice(i,j)      = comlev1_bibj, key=iicekey, byte=isbyte  CADJ STORE utrice(:,:)      = comlev1_bibj, key=iicekey, byte=isbyte
250  CADJ STORE vtrice(i,j)      = comlev1_bibj, key=iicekey, byte=isbyte  CADJ STORE vtrice(:,:)      = comlev1_bibj, key=iicekey, byte=isbyte
251  #endif  #endif
252    
253  #ifdef ALLOW_DBUG_THSICE  #ifdef ALLOW_DBUG_THSICE
# Line 407  c           WRITE(6,'(A,1P4E14.6)') 'ICE Line 406  c           WRITE(6,'(A,1P4E14.6)') 'ICE
406  #endif  #endif
407    
408  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
409  CADJ STORE iceHeight(:,:,bi,bj) =  CADJ STORE iceHeight(:,:,bi,bj) =
410  CADJ &     comlev1_bibj, key=iicekey, byte=isbyte  CADJ &     comlev1_bibj, key=iicekey, byte=isbyte
411  CADJ STORE snowHeight(:,:,bi,bj) =  CADJ STORE snowHeight(:,:,bi,bj) =
412  CADJ &     comlev1_bibj, key=iicekey, byte=isbyte  CADJ &     comlev1_bibj, key=iicekey, byte=isbyte
413  CADJ STORE iceFrc(:,:) =  CADJ STORE iceFrc(:,:) =
414  CADJ &     comlev1_bibj, key=iicekey, byte=isbyte  CADJ &     comlev1_bibj, key=iicekey, byte=isbyte
415  #endif  #endif
416    
# Line 436  c           IF ( dBug(i,j,bi,bj) ) Line 435  c           IF ( dBug(i,j,bi,bj) )
435            ENDIF            ENDIF
436           ENDDO           ENDDO
437          ENDDO          ENDDO
438  C-     adjust sea-ice state if not enough ice.  C-     adjust sea-ice state if ice is too thin.
439          DO j=1,sNy          DO j=1,sNy
440           DO i=1,sNx           DO i=1,sNx
441            IF ( iceHeight(i,j,bi,bj).LT.hIceMin ) THEN            IF ( iceHeight(i,j,bi,bj).LT.hIceMin ) THEN
442               iceVol(i,j) = iceMask(i,j,bi,bj)*iceHeight(i,j,bi,bj)
443    c          IF ( dBug(i,j,bi,bj) )
444               IF ( iceVol(i,j).GE.hIceMin*iceMaskMin ) THEN
445                iceMask(i,j,bi,bj)    = iceVol(i,j)/hIceMin
446                snowHeight(i,j,bi,bj) = snowHeight(i,j,bi,bj)
447         &                             *hIceMin/iceHeight(i,j,bi,bj)
448                iceHeight(i,j,bi,bj)  = hIceMin
449               ELSE
450  C-    Not enough ice, melt the tiny amount of snow & ice:  C-    Not enough ice, melt the tiny amount of snow & ice:
451  C     and return fresh-water, salt & energy to the ocean (flx > 0 = into ocean)  C     and return fresh-water, salt & energy to the ocean (flx > 0 = into ocean)
452  C- -  Note: using 1rst.Order Upwind, I can get the same results as when  C- -  Note: using 1rst.Order Upwind, I can get the same results as when
# Line 456  C- - Line 463  C- -
463       &                                  *( Qice1(i,j,bi,bj)       &                                  *( Qice1(i,j,bi,bj)
464       &                                    +Qice2(i,j,bi,bj) )*0.5 _d 0       &                                    +Qice2(i,j,bi,bj) )*0.5 _d 0
465       &                            )*iceMask(i,j,bi,bj)/thSIce_deltaT       &                            )*iceMask(i,j,bi,bj)/thSIce_deltaT
 c           IF ( dBug(i,j,bi,bj) )  
466  C- -  C- -
467  c           flx2oc (i,j) = flx2oc (i,j) +  c           flx2oc (i,j) = flx2oc (i,j) +
468  c           frw2oc (i,j) = frw2oc (i,j) +  c           frw2oc (i,j) = frw2oc (i,j) +
# Line 467  c           fsalt  (i,j) = fsalt  (i,j) Line 473  c           fsalt  (i,j) = fsalt  (i,j)
473              Qice1     (i,j,bi,bj) = 0. _d 0              Qice1     (i,j,bi,bj) = 0. _d 0
474              Qice2     (i,j,bi,bj) = 0. _d 0              Qice2     (i,j,bi,bj) = 0. _d 0
475              snowAge   (i,j,bi,bj) = 0. _d 0              snowAge   (i,j,bi,bj) = 0. _d 0
476               ENDIF
477            ENDIF            ENDIF
478           ENDDO           ENDDO
479          ENDDO          ENDDO

Legend:
Removed from v.1.7  
changed lines
  Added in v.1.10

  ViewVC Help
Powered by ViewVC 1.1.22