/[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.4 by torge, Wed Mar 27 18:59:52 2013 UTC revision 1.5 by torge, Fri May 3 18:58:30 2013 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
 CToM<<<  
56  #ifdef SEAICE_ITD  #ifdef SEAICE_ITD
57  C     k         :: Loop counter for ice thickness categories  C     it        :: Loop counter for ice thickness categories
58  #endif  #endif
 C>>>ToM  
59  C     ks        :: surface level index  C     ks        :: surface level index
60  C     uc/vc     :: current ice velocity on C-grid  C     uc/vc     :: current ice velocity on C-grid
61  C     uTrans    :: volume transport, x direction  C     uTrans    :: volume transport, x direction
# Line 67  C     afy       :: horizontal advective Line 65  C     afy       :: horizontal advective
65  C     gFld      :: tendency of seaice field  C     gFld      :: tendency of seaice field
66  C     xA,yA     :: "areas" of X and Y face of tracer cells  C     xA,yA     :: "areas" of X and Y face of tracer cells
67        INTEGER i, j, bi, bj        INTEGER i, j, bi, bj
 CToM<<<  
68  #ifdef SEAICE_ITD  #ifdef SEAICE_ITD
69        INTEGER k        INTEGER it
70  #endif  #endif
 C>>>ToM  
71        INTEGER ks        INTEGER ks
72        LOGICAL SEAICEmultiDimAdvection        LOGICAL SEAICEmultiDimAdvection
73  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
# Line 218  C-    Calculate "volume transports" thro Line 214  C-    Calculate "volume transports" thro
214    
215  C--   Effective Thickness (Volume)  C--   Effective Thickness (Volume)
216          IF ( SEAICEadvHeff ) THEN          IF ( SEAICEadvHeff ) THEN
 CToM<<<  
217  #ifdef SEAICE_ITD  #ifdef SEAICE_ITD
218          DO k=1,nITD          DO it=1,nITD
219           DO j=1-OLy,sNy+OLy           DO j=1-OLy,sNy+OLy
220            DO i=1-OLx,sNx+OLx            DO i=1-OLx,sNx+OLx
221             HEFF(i,j,bi,bj)=HEFFITD(i,j,k,bi,bj)             HEFF(i,j,bi,bj)=HEFFITD(i,j,it,bi,bj)
222            ENDDO            ENDDO
223           ENDDO           ENDDO
224  #endif  #endif
 C>>>ToM  
225            CALL SEAICE_ADVECTION(            CALL SEAICE_ADVECTION(
226       I         GAD_HEFF, SEAICEadvSchHeff,       I         GAD_HEFF, SEAICEadvSchHeff,
227       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 251  C     now do the "explicit" time step Line 245  C     now do the "explicit" time step
245       &          )       &          )
246            ENDDO            ENDDO
247           ENDDO           ENDDO
 CToM<<<  
248  #ifdef SEAICE_ITD  #ifdef SEAICE_ITD
249           DO j=1-OLy,sNy+OLy           DO j=1-OLy,sNy+OLy
250            DO i=1-OLx,sNx+OLx            DO i=1-OLx,sNx+OLx
251             HEFFITD(i,j,k,bi,bj)=HEFF(i,j,bi,bj)             HEFFITD(i,j,it,bi,bj)=HEFF(i,j,bi,bj)
252            ENDDO            ENDDO
253           ENDDO           ENDDO
254          ENDDO          ENDDO
255  #endif  #endif
 C>>>ToM  
256          ENDIF          ENDIF
257    
258  C--   Fractional area  C--   Fractional area
259          IF ( SEAICEadvArea ) THEN          IF ( SEAICEadvArea ) THEN
 CToM<<<  
260  #ifdef SEAICE_ITD  #ifdef SEAICE_ITD
261          DO k=1,nITD          DO it=1,nITD
262           DO j=1-OLy,sNy+OLy           DO j=1-OLy,sNy+OLy
263            DO i=1-OLx,sNx+OLx            DO i=1-OLx,sNx+OLx
264             AREA(i,j,bi,bj)=AREAITD(i,j,k,bi,bj)             AREA(i,j,bi,bj)=AREAITD(i,j,it,bi,bj)
265            ENDDO            ENDDO
266           ENDDO           ENDDO
267  #endif  #endif
 C>>>ToM  
268            CALL SEAICE_ADVECTION(            CALL SEAICE_ADVECTION(
269       I         GAD_AREA, SEAICEadvSchArea,       I         GAD_AREA, SEAICEadvSchArea,
270       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 298  C     now do the "explicit" time step Line 288  C     now do the "explicit" time step
288       &          )       &          )
289            ENDDO            ENDDO
290           ENDDO           ENDDO
 CToM<<<  
291  #ifdef SEAICE_ITD  #ifdef SEAICE_ITD
292           DO j=1-OLy,sNy+OLy           DO j=1-OLy,sNy+OLy
293            DO i=1-OLx,sNx+OLx            DO i=1-OLx,sNx+OLx
294             AREAITD(i,j,k,bi,bj)=AREA(i,j,bi,bj)             AREAITD(i,j,it,bi,bj)=AREA(i,j,bi,bj)
295            ENDDO            ENDDO
296           ENDDO           ENDDO
297          ENDDO          ENDDO
298  #endif  #endif
 C>>>ToM  
299          ENDIF          ENDIF
300    
301  C--   Effective Snow Thickness (Volume)  C--   Effective Snow Thickness (Volume)
302          IF ( SEAICEadvSnow ) THEN          IF ( SEAICEadvSnow ) THEN
 CToM<<<  
303  #ifdef SEAICE_ITD  #ifdef SEAICE_ITD
304          DO k=1,nITD          DO it=1,nITD
305           DO j=1-OLy,sNy+OLy           DO j=1-OLy,sNy+OLy
306            DO i=1-OLx,sNx+OLx            DO i=1-OLx,sNx+OLx
307             HSNOW(i,j,bi,bj)=HSNOWITD(i,j,k,bi,bj)             HSNOW(i,j,bi,bj)=HSNOWITD(i,j,it,bi,bj)
308            ENDDO            ENDDO
309           ENDDO           ENDDO
310  #endif  #endif
 C>>>ToM  
311            CALL SEAICE_ADVECTION(            CALL SEAICE_ADVECTION(
312       I         GAD_SNOW, SEAICEadvSchSnow,       I         GAD_SNOW, SEAICEadvSchSnow,
313       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 345  C     now do the "explicit" time step Line 331  C     now do the "explicit" time step
331       &          )       &          )
332            ENDDO            ENDDO
333           ENDDO           ENDDO
 CToM<<<  
334  #ifdef SEAICE_ITD  #ifdef SEAICE_ITD
335           DO j=1-OLy,sNy+OLy           DO j=1-OLy,sNy+OLy
336            DO i=1-OLx,sNx+OLx            DO i=1-OLx,sNx+OLx
337             HSNOWITD(i,j,k,bi,bj)=HSNOW(i,j,bi,bj)             HSNOWITD(i,j,it,bi,bj)=HSNOW(i,j,bi,bj)
338            ENDDO            ENDDO
339           ENDDO           ENDDO
340          ENDDO          ENDDO
341  #endif  #endif
 C>>>ToM  
342          ENDIF          ENDIF
343    
344  #ifdef SEAICE_VARIABLE_SALINITY  #ifdef SEAICE_VARIABLE_SALINITY
# Line 539  C--   if not multiDimAdvection Line 523  C--   if not multiDimAdvection
523  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
524  CADJ STORE heff = comlev1, key = ikey_dynamics, kind=isbyte  CADJ STORE heff = comlev1, key = ikey_dynamics, kind=isbyte
525  #endif  #endif
 CToM<<<  
526  #ifdef SEAICE_ITD  #ifdef SEAICE_ITD
527          DO k=1,nITD          DO it=1,nITD
528           DO bj=myByLo(myThid),myByHi(myThid)           DO bj=myByLo(myThid),myByHi(myThid)
529            DO bi=myBxLo(myThid),myBxHi(myThid)            DO bi=myBxLo(myThid),myBxHi(myThid)
530             DO j=1-OLy,sNy+OLy             DO j=1-OLy,sNy+OLy
531              DO i=1-OLx,sNx+OLx              DO i=1-OLx,sNx+OLx
532               HEFF(i,j,bi,bj)=HEFFITD(i,j,k,bi,bj)               HEFF(i,j,bi,bj)=HEFFITD(i,j,it,bi,bj)
533              ENDDO              ENDDO
534             ENDDO             ENDDO
535            ENDDO            ENDDO
536           ENDDO           ENDDO
537  #endif  #endif
 C>>>ToM          
538          CALL ADVECT( uc, vc, hEff, fldNm1, HEFFM, myThid )          CALL ADVECT( uc, vc, hEff, fldNm1, HEFFM, myThid )
539          IF ( SEAICEdiffKhHeff .GT. 0. _d 0 ) THEN          IF ( SEAICEdiffKhHeff .GT. 0. _d 0 ) THEN
540  C-    Add tendency due to diffusion  C-    Add tendency due to diffusion
# Line 567  C-    Add tendency due to diffusion Line 549  C-    Add tendency due to diffusion
549            ENDDO            ENDDO
550           ENDDO           ENDDO
551          ENDIF          ENDIF
 CToM<<<        
552  #ifdef SEAICE_ITD  #ifdef SEAICE_ITD
553           DO bj=myByLo(myThid),myByHi(myThid)           DO bj=myByLo(myThid),myByHi(myThid)
554            DO bi=myBxLo(myThid),myBxHi(myThid)            DO bi=myBxLo(myThid),myBxHi(myThid)
555             DO j=1-OLy,sNy+OLy             DO j=1-OLy,sNy+OLy
556              DO i=1-OLx,sNx+OLx              DO i=1-OLx,sNx+OLx
557               HEFFITD(i,j,k,bi,bj)=HEFF(i,j,bi,bj)               HEFFITD(i,j,it,bi,bj)=HEFF(i,j,bi,bj)
558              ENDDO              ENDDO
559             ENDDO             ENDDO
560            ENDDO            ENDDO
561           ENDDO           ENDDO
562          ENDDO          ENDDO
563  #endif  #endif
 C>>>ToM  
564         ENDIF         ENDIF
565         IF ( SEAICEadvArea ) THEN         IF ( SEAICEadvArea ) THEN
566  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
567  CADJ STORE area = comlev1, key = ikey_dynamics, kind=isbyte  CADJ STORE area = comlev1, key = ikey_dynamics, kind=isbyte
568  #endif  #endif
 CToM<<<  
569  #ifdef SEAICE_ITD  #ifdef SEAICE_ITD
570          DO k=1,nITD          DO it=1,nITD
571           DO bj=myByLo(myThid),myByHi(myThid)           DO bj=myByLo(myThid),myByHi(myThid)
572            DO bi=myBxLo(myThid),myBxHi(myThid)            DO bi=myBxLo(myThid),myBxHi(myThid)
573             DO j=1-OLy,sNy+OLy             DO j=1-OLy,sNy+OLy
574              DO i=1-OLx,sNx+OLx              DO i=1-OLx,sNx+OLx
575               AREA(i,j,bi,bj)=AREAITD(i,j,k,bi,bj)               AREA(i,j,bi,bj)=AREAITD(i,j,it,bi,bj)
576              ENDDO              ENDDO
577             ENDDO             ENDDO
578            ENDDO            ENDDO
579           ENDDO           ENDDO
580  #endif  #endif
 C>>>ToM          
581          CALL ADVECT( uc, vc, area, fldNm1, HEFFM, myThid )          CALL ADVECT( uc, vc, area, fldNm1, HEFFM, myThid )
582          IF ( SEAICEdiffKhArea .GT. 0. _d 0 ) THEN          IF ( SEAICEdiffKhArea .GT. 0. _d 0 ) THEN
583  C-    Add tendency due to diffusion  C-    Add tendency due to diffusion
# Line 614  C-    Add tendency due to diffusion Line 592  C-    Add tendency due to diffusion
592            ENDDO            ENDDO
593           ENDDO           ENDDO
594          ENDIF          ENDIF
 CToM<<<        
595  #ifdef SEAICE_ITD  #ifdef SEAICE_ITD
596           DO bj=myByLo(myThid),myByHi(myThid)           DO bj=myByLo(myThid),myByHi(myThid)
597            DO bi=myBxLo(myThid),myBxHi(myThid)            DO bi=myBxLo(myThid),myBxHi(myThid)
598             DO j=1-OLy,sNy+OLy             DO j=1-OLy,sNy+OLy
599              DO i=1-OLx,sNx+OLx              DO i=1-OLx,sNx+OLx
600               AREAITD(i,j,k,bi,bj)=AREA(i,j,bi,bj)               AREAITD(i,j,it,bi,bj)=AREA(i,j,bi,bj)
601              ENDDO              ENDDO
602             ENDDO             ENDDO
603            ENDDO            ENDDO
604           ENDDO           ENDDO
605          ENDDO          ENDDO
606  #endif  #endif
 C>>>ToM  
607         ENDIF         ENDIF
608         IF ( SEAICEadvSnow ) THEN         IF ( SEAICEadvSnow ) THEN
609  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
610  CADJ STORE hsnow = comlev1, key = ikey_dynamics, kind=isbyte  CADJ STORE hsnow = comlev1, key = ikey_dynamics, kind=isbyte
611  #endif  #endif
 CToM<<<  
612  #ifdef SEAICE_ITD  #ifdef SEAICE_ITD
613          DO k=1,nITD          DO it=1,nITD
614           DO bj=myByLo(myThid),myByHi(myThid)           DO bj=myByLo(myThid),myByHi(myThid)
615            DO bi=myBxLo(myThid),myBxHi(myThid)            DO bi=myBxLo(myThid),myBxHi(myThid)
616             DO j=1-OLy,sNy+OLy             DO j=1-OLy,sNy+OLy
617              DO i=1-OLx,sNx+OLx              DO i=1-OLx,sNx+OLx
618               HSNOW(i,j,bi,bj)=HSNOWITD(i,j,k,bi,bj)               HSNOW(i,j,bi,bj)=HSNOWITD(i,j,it,bi,bj)
619              ENDDO              ENDDO
620             ENDDO             ENDDO
621            ENDDO            ENDDO
622           ENDDO           ENDDO
623  #endif  #endif
 C>>>ToM          
624          CALL ADVECT( uc, vc, HSNOW, fldNm1, HEFFM, myThid )          CALL ADVECT( uc, vc, HSNOW, fldNm1, HEFFM, myThid )
625          IF ( SEAICEdiffKhSnow .GT. 0. _d 0 ) THEN          IF ( SEAICEdiffKhSnow .GT. 0. _d 0 ) THEN
626  C-    Add tendency due to diffusion  C-    Add tendency due to diffusion
# Line 661  C-    Add tendency due to diffusion Line 635  C-    Add tendency due to diffusion
635            ENDDO            ENDDO
636           ENDDO           ENDDO
637          ENDIF          ENDIF
 CToM<<<        
638  #ifdef SEAICE_ITD  #ifdef SEAICE_ITD
639           DO bj=myByLo(myThid),myByHi(myThid)           DO bj=myByLo(myThid),myByHi(myThid)
640            DO bi=myBxLo(myThid),myBxHi(myThid)            DO bi=myBxLo(myThid),myBxHi(myThid)
641             DO j=1-OLy,sNy+OLy             DO j=1-OLy,sNy+OLy
642              DO i=1-OLx,sNx+OLx              DO i=1-OLx,sNx+OLx
643               HSNOWITD(i,j,k,bi,bj)=HSNOW(i,j,bi,bj)               HSNOWITD(i,j,it,bi,bj)=HSNOW(i,j,bi,bj)
644              ENDDO              ENDDO
645             ENDDO             ENDDO
646            ENDDO            ENDDO
647           ENDDO           ENDDO
648          ENDDO          ENDDO
649  #endif  #endif
 C>>>ToM  
650         ENDIF         ENDIF
651    
652  #ifdef SEAICE_VARIABLE_SALINITY  #ifdef SEAICE_VARIABLE_SALINITY

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

  ViewVC Help
Powered by ViewVC 1.1.22