/[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.37 - (show annotations) (download)
Tue Mar 16 00:08:27 2010 UTC (14 years, 1 month ago) by jmc
Branch: MAIN
CVS Tags: checkpoint62v, checkpoint62u, checkpoint62t, checkpoint62s, checkpoint62r, checkpoint62q, checkpoint62p, checkpoint62g, checkpoint62f, checkpoint62e, checkpoint62k, checkpoint62j, checkpoint62i, checkpoint62h, checkpoint62o, checkpoint62n, checkpoint62m, checkpoint62l, checkpoint62w, checkpoint62z, checkpoint62y, checkpoint62x, checkpoint63g, checkpoint64, checkpoint63, checkpoint63p, checkpoint63q, checkpoint63r, checkpoint63s, checkpoint63l, checkpoint63m, checkpoint63n, checkpoint63o, checkpoint63h, checkpoint63i, checkpoint63j, checkpoint63k, checkpoint63d, checkpoint63e, checkpoint63f, checkpoint63a, checkpoint63b, checkpoint63c, checkpoint64q, checkpoint64p, checkpoint64i, checkpoint64h, checkpoint64k, checkpoint64j, checkpoint64m, checkpoint64l, checkpoint64o, checkpoint64n, checkpoint64a, checkpoint64c, checkpoint64b, checkpoint64e, checkpoint64d, checkpoint64g, checkpoint64f, checkpoint62d
Changes since 1.36: +3 -3 lines
avoid unbalanced quote (single or double) in commented line

1 C $Header: /u/gcmpack/MITgcm/model/src/calc_diffusivity.F,v 1.36 2008/02/13 02:43:24 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