/[MITgcm]/MITgcm/model/src/calc_diffusivity.F
ViewVC logotype

Contents of /MITgcm/model/src/calc_diffusivity.F

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


Revision 1.38 - (show annotations) (download)
Tue Nov 19 17:05:40 2013 UTC (10 years, 5 months ago) by jmc
Branch: MAIN
CVS Tags: HEAD
Changes since 1.37: +1 -1 lines
FILE REMOVED
remove routine which are no longer used (after removing k-loop from
 thermodynamics.F) and update ad_diff list

1 C $Header: /u/gcmpack/MITgcm/model/src/calc_diffusivity.F,v 1.37 2010/03/16 00:08:27 jmc Exp $
2 C $Name: $
3
4 #include "PACKAGES_CONFIG.h"
5 #include "CPP_OPTIONS.h"
6
7 CBOP
8 C !ROUTINE: CALC_DIFFUSIVITY
9 C !INTERFACE:
10 SUBROUTINE CALC_DIFFUSIVITY(
11 I bi,bj,iMin,iMax,jMin,jMax,k,
12 I maskUp,
13 O KappaRT,KappaRS,
14 I myThid)
15
16 C !DESCRIPTION: \bv
17 C *==========================================================*
18 C | SUBROUTINE CALC_DIFFUSIVITY
19 C | o Calculate net vertical diffusivity
20 C *==========================================================*
21 C | Combines spatially varying diffusion coefficients from
22 C | KPP and/or GM and/or convective stability test.
23 C *==========================================================*
24 C \ev
25
26 C !USES:
27 IMPLICIT NONE
28 C == GLobal variables ==
29 #include "SIZE.h"
30 #include "EEPARAMS.h"
31 #include "PARAMS.h"
32 #include "DYNVARS.h"
33 #include "GRID.h"
34 #ifdef ALLOW_GENERIC_ADVDIFF
35 #include "GAD.h"
36 #endif
37
38 C !INPUT/OUTPUT PARAMETERS:
39 C == Routine arguments ==
40 C bi, bj, :: tile indices
41 C iMin, :: Range of points for which calculation is performed.
42 C iMax,
43 C jMin,
44 C jMax
45 C maskUp :: land/water mask for Wvel points (above tracer level)
46 C myThid :: Instance number for this innvocation of CALC_DIFFUSIVITY
47 C KappaRT :: Net diffusivity for temperature
48 C KappaRS :: Net diffusivity for salinity
49 INTEGER bi,bj,iMin,iMax,jMin,jMax,K
50 _RS maskUp(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
51 _RL KappaRT(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
52 _RL KappaRS(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
53 INTEGER myThid
54
55 C !LOCAL VARIABLES:
56 C == Local variables ==
57 C I, J :: Loop counters
58 INTEGER i,j
59 _RL KbryanLewis79
60 #ifdef ALLOW_BL79_LAT_VARY
61 _RL KbryanLewisEQ
62 #endif
63 CEOP
64
65 IF ( .NOT. UseKPP ) THEN
66 KbryanLewis79=diffKrBL79surf+(diffKrBL79deep-diffKrBL79surf)
67 & *(atan(-(rF(k)-diffKrBL79Ho)/diffKrBL79scl)/PI+0.5 _d 0)
68 #ifdef ALLOW_BL79_LAT_VARY
69 KbryanLewisEQ=diffKrBLEQsurf+(diffKrBLEQdeep-diffKrBLEQsurf)
70 & *(atan(-(rF(k)-diffKrBLEQHo)/diffKrBLEQscl)/PI+0.5 _d 0)
71 #endif
72
73 DO j = 1-Oly, sNy+Oly
74 DO i = 1-Olx, sNx+Olx
75 KappaRT(i,j) =
76 & IVDConvCount(i,j,k,bi,bj)*ivdc_kappa
77 #if (defined ALLOW_3D_DIFFKR || \
78 (defined (ALLOW_AUTODIFF_TAMC) && defined (ALLOW_DIFFKR_CONTROL)))
79 & + diffKr(i,j,k,bi,bj)
80 #else
81 & + diffKrNrT(k)
82 #endif
83 & + KbryanLewis79
84 #ifdef ALLOW_BL79_LAT_VARY
85 & + (KbryanLewisEQ-KbryanLewis79)*BL79LatArray(i,j,bi,bj)
86 #endif
87 ENDDO
88 ENDDO
89
90 DO j = 1-Oly, sNy+Oly
91 DO i = 1-Olx, sNx+Olx
92 KappaRS(i,j) =
93 & IVDConvCount(i,j,k,bi,bj)*ivdc_kappa
94 #if (defined ALLOW_3D_DIFFKR || \
95 (defined (ALLOW_AUTODIFF_TAMC) && defined (ALLOW_DIFFKR_CONTROL)))
96 & + diffKr(i,j,k,bi,bj)
97 #else
98 & + diffKrNrS(k)
99 #endif
100 & + KbryanLewis79
101 #ifdef ALLOW_BL79_LAT_VARY
102 & + (KbryanLewisEQ-KbryanLewis79)*BL79LatArray(i,j,bi,bj)
103 #endif
104 ENDDO
105 ENDDO
106 ENDIF
107
108 #ifdef ALLOW_KPP
109 IF (useKPP) THEN
110 C-- Set vertical diffusivity contribution from KPP
111 CALL KPP_CALC_DIFF_T(
112 I bi,bj,iMin+1,iMax,jMin+1,jMax,k,1,
113 O KappaRT,
114 I myThid)
115 CALL KPP_CALC_DIFF_S(
116 I bi,bj,iMin+1,iMax,jMin+1,jMax,k,1,
117 O KappaRS,
118 I myThid)
119 ENDIF
120 #endif
121
122 #ifdef ALLOW_GENERIC_ADVDIFF
123 #ifdef ALLOW_GMREDI
124 IF (useGMRedi) THEN
125 CALL GMREDI_CALC_DIFF(
126 I bi,bj,iMin,iMax,jMin,jMax,k,1,
127 U KappaRT,
128 I GAD_TEMPERATURE,myThid)
129 CALL GMREDI_CALC_DIFF(
130 I bi,bj,iMin,iMax,jMin,jMax,k,1,
131 U KappaRS,
132 I GAD_SALINITY,myThid)
133 ENDIF
134 #endif /* ALLOW_GMREDI */
135 #endif /* ALLOW_GENERIC_ADVDIFF */
136
137 #ifdef ALLOW_PP81
138 IF (usePP81) THEN
139 CALL PP81_CALC_DIFF(
140 I bi,bj,iMin+1,iMax,jMin+1,jMax,k,1,
141 U KappaRT,
142 I myThid)
143 CALL PP81_CALC_DIFF(
144 I bi,bj,iMin+1,iMax,jMin+1,jMax,k,1,
145 U KappaRS,
146 I myThid)
147 ENDIF
148 #endif
149
150 #ifdef ALLOW_MY82
151 IF (useMY82) THEN
152 CALL MY82_CALC_DIFF(
153 I bi,bj,iMin+1,iMax,jMin+1,jMax,k,1,
154 U KappaRT,
155 I myThid)
156 CALL MY82_CALC_DIFF(
157 I bi,bj,iMin+1,iMax,jMin+1,jMax,k,1,
158 U KappaRS,
159 I myThid)
160 ENDIF
161 #endif
162
163 #ifdef ALLOW_GGL90
164 IF (useGGL90) THEN
165 CALL GGL90_CALC_DIFF(
166 I bi,bj,iMin+1,iMax,jMin+1,jMax,k,1,
167 O KappaRT,
168 I myThid)
169 CALL GGL90_CALC_DIFF(
170 I bi,bj,iMin+1,iMax,jMin+1,jMax,k,1,
171 O KappaRS,
172 I myThid)
173 ENDIF
174 #endif
175
176 C- Apply mask to vertical diffusivity
177 C jmc: do not have the impression that masking is needed
178 C but could be removed later if it is the case.
179 DO j = 1-Oly, sNy+Oly
180 DO i = 1-Olx, sNx+Olx
181 KappaRT(i,j) = maskUp(i,j)*KappaRT(i,j)
182 KappaRS(i,j) = maskUp(i,j)*KappaRS(i,j)
183 ENDDO
184 ENDDO
185
186 RETURN
187 END

  ViewVC Help
Powered by ViewVC 1.1.22