/[MITgcm]/MITgcm/pkg/ptracers/ptracers_calc_diff.F
ViewVC logotype

Diff of /MITgcm/pkg/ptracers/ptracers_calc_diff.F

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

revision 1.4 by dimitri, Thu Sep 27 14:42:59 2007 UTC revision 1.10 by jmc, Thu Mar 8 17:13:31 2012 UTC
# Line 5  C $Name$ Line 5  C $Name$
5    
6  CBOP  CBOP
7  C     !ROUTINE: PTRACERS_CALC_DIFF  C     !ROUTINE: PTRACERS_CALC_DIFF
8  C     !INTERFACE:  C     !INTERFACE:
9        SUBROUTINE PTRACERS_CALC_DIFF(        SUBROUTINE PTRACERS_CALC_DIFF(
10       I        bi,bj,iMin,iMax,jMin,jMax,k,       I        bi,bj,iMin,iMax,jMin,jMax,k,
11       I        maskUp,       I        maskUp,
12       O        KappaRtr,       O        KappaRtr,
# Line 30  C     == GLobal variables == Line 30  C     == GLobal variables ==
30  #include "PARAMS.h"  #include "PARAMS.h"
31  #include "GRID.h"  #include "GRID.h"
32  #include "DYNVARS.h"  #include "DYNVARS.h"
33    #ifdef ALLOW_LONGSTEP
34    #include "LONGSTEP.h"
35    #endif
36  #include "PTRACERS_SIZE.h"  #include "PTRACERS_SIZE.h"
37  #include "PTRACERS.h"  #include "PTRACERS_PARAMS.h"
38  c #include "GAD.h"  #include "PTRACERS_START.h"
39    #include "GAD.h"
40    
41  C     !INPUT/OUTPUT PARAMETERS:  C     !INPUT/OUTPUT PARAMETERS:
42  C     == Routine arguments ==  C     == Routine arguments ==
# Line 44  C     myThid    :: Instance number for t Line 48  C     myThid    :: Instance number for t
48  C     KappaRtr  :: Net diffusivity for temperature  C     KappaRtr  :: Net diffusivity for temperature
49  C     KappaRS   :: Net diffusivity for salinity  C     KappaRS   :: Net diffusivity for salinity
50        INTEGER bi,bj,iMin,iMax,jMin,jMax,k        INTEGER bi,bj,iMin,iMax,jMin,jMax,k
51        _RS maskUp(1-Olx:sNx+Olx,1-Oly:sNy+Oly)        _RS maskUp(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
52        _RL KappaRtr(1-Olx:sNx+Olx,1-Oly:sNy+Oly,PTRACERS_num)        _RL KappaRtr(1-OLx:sNx+OLx,1-OLy:sNy+OLy,PTRACERS_num)
53        INTEGER myThid        INTEGER myThid
54    
55  C     !LOCAL VARIABLES:  C     !LOCAL VARIABLES:
56  C     == Local variables ==  C     == Local variables ==
57  C     I, J :: Loop counters  C     I, J :: Loop counters
58        INTEGER i,j,iTr        INTEGER i,j,iTr,trIdentity
59        _RL KbryanLewis79, KbryanLewisEQ        _RL KbryanLewis79
60    #ifdef ALLOW_BL79_LAT_VARY
61          _RL KbryanLewisEQ
62    #endif
63  CEOP  CEOP
64    
65        KbryanLewis79=diffKrBL79surf+(diffKrBL79deep-diffKrBL79surf)        KbryanLewis79=diffKrBL79surf+(diffKrBL79deep-diffKrBL79surf)
# Line 64  CEOP Line 71  CEOP
71    
72  C Loop over tracers  C Loop over tracers
73        DO iTr=1,PTRACERS_numInUse        DO iTr=1,PTRACERS_numInUse
74           IF ( PTRACERS_StepFwd(iTr) ) THEN
75    
76           trIdentity = iTr + GAD_TR1 - 1
77    
78         IF ( .NOT. PTRACERS_useKPP(iTr) ) THEN         IF ( .NOT. PTRACERS_useKPP(iTr) ) THEN
79          DO j = 1-Oly, sNy+Oly          DO j = 1-OLy, sNy+OLy
80           DO i = 1-Olx, sNx+Olx           DO i = 1-OLx, sNx+OLx
81            KappaRtr(i,j,iTr) =            KappaRtr(i,j,iTr) =
82    #ifdef ALLOW_LONGSTEP
83         &         LS_IVDConvCount(i,j,k,bi,bj)*ivdc_kappa
84    #else
85       &         IVDConvCount(i,j,k,bi,bj)*ivdc_kappa       &         IVDConvCount(i,j,k,bi,bj)*ivdc_kappa
86  #if (defined ALLOW_3D_DIFFKR || \  #endif
87       (defined (ALLOW_AUTODIFF_TAMC) && defined (ALLOW_DIFFKR_CONTROL)))  #ifdef ALLOW_3D_DIFFKR
88       &       + diffKr(i,j,k,bi,bj)       &       + diffKr(i,j,k,bi,bj)
89  #else  #else
90       &       + PTRACERS_diffKrNr(k,iTr)       &       + PTRACERS_diffKrNr(k,iTr)
# Line 87  C Loop over tracers Line 100  C Loop over tracers
100  #ifdef ALLOW_KPP  #ifdef ALLOW_KPP
101          IF ( PTRACERS_useKPP(iTr) ) THEN          IF ( PTRACERS_useKPP(iTr) ) THEN
102  C--   Set vertical diffusivity contribution from KPP  C--   Set vertical diffusivity contribution from KPP
103           CALL KPP_CALC_DIFF_S(           CALL KPP_CALC_DIFF_PTR(
104       I        bi,bj,iMin+1,iMax,jMin+1,jMax,k,1,       I        bi,bj,iMin+1,iMax,jMin+1,jMax,k,1,
105       O        KappaRtr(1-Olx,1-Oly,iTr),       O        KappaRtr(1-OLx,1-OLy,iTr),
106       I        myThid)       I        iTr, myThid )
107          ENDIF          ENDIF
108  #endif  #endif
109    
110  #ifdef ALLOW_GMREDI  #ifdef ALLOW_GMREDI
111          IF ( PTRACERS_useGMRedi(iTr) ) THEN          IF ( PTRACERS_useGMRedi(iTr) ) THEN
112           CALL GMREDI_CALC_DIFF(           CALL GMREDI_CALC_DIFF(
113       I        bi,bj,iMin,iMax,jMin,jMax,k,1,       I        bi,bj,iMin,iMax,jMin,jMax,k,1,
114       U        KappaRtr(1-Olx,1-Oly,iTr),       U        KappaRtr(1-OLx,1-OLy,iTr),
115       I        myThid)       I        trIdentity,myThid)
116          ENDIF          ENDIF
117  #endif  #endif
118    
# Line 107  C--   Set vertical diffusivity contribut Line 120  C--   Set vertical diffusivity contribut
120          IF (usePP81) THEN          IF (usePP81) THEN
121           CALL PP81_CALC_DIFF(           CALL PP81_CALC_DIFF(
122       I        bi,bj,iMin+1,iMax,jMin+1,jMax,k,1,       I        bi,bj,iMin+1,iMax,jMin+1,jMax,k,1,
123       U        KappaRtr(1-Olx,1-Oly,iTr),       U        KappaRtr(1-OLx,1-OLy,iTr),
124       I        myThid)       I        myThid)
125          ENDIF          ENDIF
126  #endif  #endif
# Line 116  C--   Set vertical diffusivity contribut Line 129  C--   Set vertical diffusivity contribut
129          IF (useMY82) THEN          IF (useMY82) THEN
130           CALL MY82_CALC_DIFF(           CALL MY82_CALC_DIFF(
131       I        bi,bj,iMin+1,iMax,jMin+1,jMax,k,1,       I        bi,bj,iMin+1,iMax,jMin+1,jMax,k,1,
132       U        KappaRtr(1-Olx,1-Oly,iTr),       U        KappaRtr(1-OLx,1-OLy,iTr),
133       I        myThid)       I        myThid)
134          ENDIF          ENDIF
135  #endif  #endif
136          
137  #ifdef ALLOW_GGL90  #ifdef ALLOW_GGL90
138          IF (useGGL90) THEN          IF (useGGL90) THEN
139           CALL GGL90_CALC_DIFF(           CALL GGL90_CALC_DIFF(
140       I        bi,bj,iMin+1,iMax,jMin+1,jMax,k,1,       I        bi,bj,iMin+1,iMax,jMin+1,jMax,k,1,
141       U        KappaRtr(1-Olx,1-Oly,iTr),       U        KappaRtr(1-OLx,1-OLy,iTr),
142       I        myThid)       I        myThid)
143          ENDIF          ENDIF
144  #endif  #endif
145          
146  C-    Apply mask to vertical diffusivity  C-    Apply mask to vertical diffusivity
147  C jmc: don't have the impression that masking is needed  C jmc: do not have the impression that masking is needed
148  C      but could be removed later if it's the case.  C      but could be removed later if it is the case.
149          DO j = 1-Oly, sNy+Oly          DO j = 1-OLy, sNy+OLy
150           DO i = 1-Olx, sNx+Olx           DO i = 1-OLx, sNx+OLx
151            KappaRtr(i,j,iTr) = maskUp(i,j)*KappaRtr(i,j,iTr)            KappaRtr(i,j,iTr) = maskUp(i,j)*KappaRtr(i,j,iTr)
152           ENDDO           ENDDO
153          ENDDO          ENDDO
154    
155  C end of tracer loop  C end of tracer loop
156           ENDIF
157        ENDDO        ENDDO
158    
159        RETURN        RETURN

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

  ViewVC Help
Powered by ViewVC 1.1.22