/[MITgcm]/MITgcm_contrib/torge/itd/code/seaice_advdiff.F
ViewVC logotype

Diff of /MITgcm_contrib/torge/itd/code/seaice_advdiff.F

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

revision 1.1 by dimitri, Fri Apr 27 22:22:17 2012 UTC revision 1.3 by torge, Mon Dec 10 22:19:49 2012 UTC
# Line 53  CEndOfInterface Line 53  CEndOfInterface
53  C !LOCAL VARIABLES: ====================================================  C !LOCAL VARIABLES: ====================================================
54  C     === Local variables ===  C     === Local variables ===
55  C     i,j,bi,bj :: Loop counters  C     i,j,bi,bj :: Loop counters
56    CToM<<<
57    #ifdef SEAICE_ITD
58    C     k         :: Loop counter for ice thickness categories
59    #endif
60    C>>>ToM
61  C     ks        :: surface level index  C     ks        :: surface level index
62  C     uc/vc     :: current ice velocity on C-grid  C     uc/vc     :: current ice velocity on C-grid
63  C     uTrans    :: volume transport, x direction  C     uTrans    :: volume transport, x direction
# Line 62  C     afy       :: horizontal advective Line 67  C     afy       :: horizontal advective
67  C     gFld      :: tendency of seaice field  C     gFld      :: tendency of seaice field
68  C     xA,yA     :: "areas" of X and Y face of tracer cells  C     xA,yA     :: "areas" of X and Y face of tracer cells
69        INTEGER i, j, bi, bj        INTEGER i, j, bi, bj
70    CToM<<<
71    #ifdef SEAICE_ITD
72          INTEGER k
73    #endif
74    C>>>ToM
75        INTEGER ks        INTEGER ks
76        LOGICAL SEAICEmultiDimAdvection        LOGICAL SEAICEmultiDimAdvection
77  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
# Line 184  CADJ STORE heffm(:,:,bi,bj)  = comlev1_b Line 194  CADJ STORE heffm(:,:,bi,bj)  = comlev1_b
194  CADJ &     key = itmpkey, kind=isbyte  CADJ &     key = itmpkey, kind=isbyte
195  CADJ STORE hsnow(:,:,bi,bj) = comlev1_bibj,  CADJ STORE hsnow(:,:,bi,bj) = comlev1_bibj,
196  CADJ &     key = itmpkey, kind=isbyte  CADJ &     key = itmpkey, kind=isbyte
197    # ifdef SEAICE_VARIABLE_SALINITY
198    CADJ STORE hsalt(:,:,bi,bj)  = comlev1_bibj,
199    CADJ &     key = itmpkey, kind=isbyte
200    # endif
201  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
202    
203          DO j=1-OLy,sNy+OLy          DO j=1-OLy,sNy+OLy
# Line 206  C-    Calculate "volume transports" thro Line 220  C-    Calculate "volume transports" thro
220    
221  C--   Effective Thickness (Volume)  C--   Effective Thickness (Volume)
222          IF ( SEAICEadvHeff ) THEN          IF ( SEAICEadvHeff ) THEN
223    CToM<<<
224    #ifdef SEAICE_ITD
225            DO k=1,nITD
226             DO j=1-OLy,sNy+OLy
227              DO i=1-OLx,sNx+OLx
228               HEFF(i,j,bi,bj)=HEFFITD(i,j,k,bi,bj)
229              ENDDO
230             ENDDO
231    #endif
232    C>>>ToM
233            CALL SEAICE_ADVECTION(            CALL SEAICE_ADVECTION(
234       I         GAD_HEFF, SEAICEadvSchHeff,       I         GAD_HEFF, SEAICEadvSchHeff,
235       I         uc(1-OLx,1-OLy,bi,bj), vc(1-OLx,1-OLy,bi,bj),       I         uc(1-OLx,1-OLy,bi,bj), vc(1-OLx,1-OLy,bi,bj),
# Line 229  C     now do the "explicit" time step Line 253  C     now do the "explicit" time step
253       &          )       &          )
254            ENDDO            ENDDO
255           ENDDO           ENDDO
256    CToM<<<
257    #ifdef SEAICE_ITD
258             DO j=1-OLy,sNy+OLy
259              DO i=1-OLx,sNx+OLx
260               HEFFITD(i,j,k,bi,bj)=HEFF(i,j,bi,bj)
261              ENDDO
262             ENDDO
263            ENDDO
264    #endif
265    C>>>ToM
266          ENDIF          ENDIF
267    
268  C--   Fractional area  C--   Fractional area
269          IF ( SEAICEadvArea ) THEN          IF ( SEAICEadvArea ) THEN
270    CToM<<<
271    #ifdef SEAICE_ITD
272            DO k=1,nITD
273             DO j=1-OLy,sNy+OLy
274              DO i=1-OLx,sNx+OLx
275               AREA(i,j,bi,bj)=AREAITD(i,j,k,bi,bj)
276              ENDDO
277             ENDDO
278    #endif
279    C>>>ToM
280            CALL SEAICE_ADVECTION(            CALL SEAICE_ADVECTION(
281       I         GAD_AREA, SEAICEadvSchArea,       I         GAD_AREA, SEAICEadvSchArea,
282       I         uc(1-OLx,1-OLy,bi,bj), vc(1-OLx,1-OLy,bi,bj),       I         uc(1-OLx,1-OLy,bi,bj), vc(1-OLx,1-OLy,bi,bj),
# Line 256  C     now do the "explicit" time step Line 300  C     now do the "explicit" time step
300       &          )       &          )
301            ENDDO            ENDDO
302           ENDDO           ENDDO
303    CToM<<<
304    #ifdef SEAICE_ITD
305             DO j=1-OLy,sNy+OLy
306              DO i=1-OLx,sNx+OLx
307               AREAITD(i,j,k,bi,bj)=AREA(i,j,bi,bj)
308              ENDDO
309             ENDDO
310            ENDDO
311    #endif
312    C>>>ToM
313          ENDIF          ENDIF
314    
315  C--   Effective Snow Thickness (Volume)  C--   Effective Snow Thickness (Volume)
316          IF ( SEAICEadvSnow ) THEN          IF ( SEAICEadvSnow ) THEN
317    CToM<<<
318    #ifdef SEAICE_ITD
319            DO k=1,nITD
320             DO j=1-OLy,sNy+OLy
321              DO i=1-OLx,sNx+OLx
322               HSNOW(i,j,bi,bj)=HSNOWITD(i,j,k,bi,bj)
323              ENDDO
324             ENDDO
325    #endif
326    C>>>ToM
327            CALL SEAICE_ADVECTION(            CALL SEAICE_ADVECTION(
328       I         GAD_SNOW, SEAICEadvSchSnow,       I         GAD_SNOW, SEAICEadvSchSnow,
329       I         uc(1-OLx,1-OLy,bi,bj), vc(1-OLx,1-OLy,bi,bj),       I         uc(1-OLx,1-OLy,bi,bj), vc(1-OLx,1-OLy,bi,bj),
# Line 283  C     now do the "explicit" time step Line 347  C     now do the "explicit" time step
347       &          )       &          )
348            ENDDO            ENDDO
349           ENDDO           ENDDO
350    CToM<<<
351    #ifdef SEAICE_ITD
352             DO j=1-OLy,sNy+OLy
353              DO i=1-OLx,sNx+OLx
354               HSNOWITD(i,j,k,bi,bj)=HSNOW(i,j,bi,bj)
355              ENDDO
356             ENDDO
357            ENDDO
358    #endif
359    C>>>ToM
360          ENDIF          ENDIF
361    
362  #ifdef SEAICE_VARIABLE_SALINITY  #ifdef SEAICE_VARIABLE_SALINITY
# Line 492  C     needed for SEAICE_GROWTH, Legacy b Line 566  C     needed for SEAICE_GROWTH, Legacy b
566  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
567  CADJ STORE heff = comlev1, key = ikey_dynamics, kind=isbyte  CADJ STORE heff = comlev1, key = ikey_dynamics, kind=isbyte
568  #endif  #endif
569    CToM<<<
570    #ifdef SEAICE_ITD
571            DO k=1,nITD
572             DO bj=myByLo(myThid),myByHi(myThid)
573              DO bi=myBxLo(myThid),myBxHi(myThid)
574               DO j=1-OLy,sNy+OLy
575                DO i=1-OLx,sNx+OLx
576                 HEFF(i,j,bi,bj)=HEFFITD(i,j,k,bi,bj)
577                ENDDO
578               ENDDO
579              ENDDO
580             ENDDO
581    #endif
582    C>>>ToM        
583          CALL ADVECT( uc, vc, hEff, fldNm1, HEFFM, myThid )          CALL ADVECT( uc, vc, hEff, fldNm1, HEFFM, myThid )
584          IF ( SEAICEdiffKhHeff .GT. 0. _d 0 ) THEN          IF ( SEAICEdiffKhHeff .GT. 0. _d 0 ) THEN
585  C-    Add tendency due to diffusion  C-    Add tendency due to diffusion
# Line 506  C-    Add tendency due to diffusion Line 594  C-    Add tendency due to diffusion
594            ENDDO            ENDDO
595           ENDDO           ENDDO
596          ENDIF          ENDIF
597    CToM<<<      
598    #ifdef SEAICE_ITD
599             DO bj=myByLo(myThid),myByHi(myThid)
600              DO bi=myBxLo(myThid),myBxHi(myThid)
601               DO j=1-OLy,sNy+OLy
602                DO i=1-OLx,sNx+OLx
603                 HEFFITD(i,j,k,bi,bj)=HEFF(i,j,bi,bj)
604                ENDDO
605               ENDDO
606              ENDDO
607             ENDDO
608            ENDDO
609    #endif
610    C>>>ToM
611         ENDIF         ENDIF
612         IF ( SEAICEadvArea ) THEN         IF ( SEAICEadvArea ) THEN
613  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
614  CADJ STORE area = comlev1, key = ikey_dynamics, kind=isbyte  CADJ STORE area = comlev1, key = ikey_dynamics, kind=isbyte
615  #endif  #endif
616    CToM<<<
617    #ifdef SEAICE_ITD
618            DO k=1,nITD
619             DO bj=myByLo(myThid),myByHi(myThid)
620              DO bi=myBxLo(myThid),myBxHi(myThid)
621               DO j=1-OLy,sNy+OLy
622                DO i=1-OLx,sNx+OLx
623                 AREA(i,j,bi,bj)=AREAITD(i,j,k,bi,bj)
624                ENDDO
625               ENDDO
626              ENDDO
627             ENDDO
628    #endif
629    C>>>ToM        
630          CALL ADVECT( uc, vc, area, fldNm1, HEFFM, myThid )          CALL ADVECT( uc, vc, area, fldNm1, HEFFM, myThid )
631          IF ( SEAICEdiffKhArea .GT. 0. _d 0 ) THEN          IF ( SEAICEdiffKhArea .GT. 0. _d 0 ) THEN
632  C-    Add tendency due to diffusion  C-    Add tendency due to diffusion
# Line 525  C-    Add tendency due to diffusion Line 641  C-    Add tendency due to diffusion
641            ENDDO            ENDDO
642           ENDDO           ENDDO
643          ENDIF          ENDIF
644    CToM<<<      
645    #ifdef SEAICE_ITD
646             DO bj=myByLo(myThid),myByHi(myThid)
647              DO bi=myBxLo(myThid),myBxHi(myThid)
648               DO j=1-OLy,sNy+OLy
649                DO i=1-OLx,sNx+OLx
650                 AREAITD(i,j,k,bi,bj)=AREA(i,j,bi,bj)
651                ENDDO
652               ENDDO
653              ENDDO
654             ENDDO
655            ENDDO
656    #endif
657    C>>>ToM
658         ENDIF         ENDIF
659         IF ( SEAICEadvSnow ) THEN         IF ( SEAICEadvSnow ) THEN
660  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
661  CADJ STORE hsnow = comlev1, key = ikey_dynamics, kind=isbyte  CADJ STORE hsnow = comlev1, key = ikey_dynamics, kind=isbyte
662  #endif  #endif
663    CToM<<<
664    #ifdef SEAICE_ITD
665            DO k=1,nITD
666             DO bj=myByLo(myThid),myByHi(myThid)
667              DO bi=myBxLo(myThid),myBxHi(myThid)
668               DO j=1-OLy,sNy+OLy
669                DO i=1-OLx,sNx+OLx
670                 HSNOW(i,j,bi,bj)=HSNOWITD(i,j,k,bi,bj)
671                ENDDO
672               ENDDO
673              ENDDO
674             ENDDO
675    #endif
676    C>>>ToM        
677          CALL ADVECT( uc, vc, HSNOW, fldNm1, HEFFM, myThid )          CALL ADVECT( uc, vc, HSNOW, fldNm1, HEFFM, myThid )
678          IF ( SEAICEdiffKhSnow .GT. 0. _d 0 ) THEN          IF ( SEAICEdiffKhSnow .GT. 0. _d 0 ) THEN
679  C-    Add tendency due to diffusion  C-    Add tendency due to diffusion
# Line 544  C-    Add tendency due to diffusion Line 688  C-    Add tendency due to diffusion
688            ENDDO            ENDDO
689           ENDDO           ENDDO
690          ENDIF          ENDIF
691    CToM<<<      
692    #ifdef SEAICE_ITD
693             DO bj=myByLo(myThid),myByHi(myThid)
694              DO bi=myBxLo(myThid),myBxHi(myThid)
695               DO j=1-OLy,sNy+OLy
696                DO i=1-OLx,sNx+OLx
697                 HSNOWITD(i,j,k,bi,bj)=HSNOW(i,j,bi,bj)
698                ENDDO
699               ENDDO
700              ENDDO
701             ENDDO
702            ENDDO
703    #endif
704    C>>>ToM
705         ENDIF         ENDIF
706    
707  #ifdef SEAICE_VARIABLE_SALINITY  #ifdef SEAICE_VARIABLE_SALINITY

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.3

  ViewVC Help
Powered by ViewVC 1.1.22