/[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.23 - (show annotations) (download)
Thu Sep 16 09:35:11 2004 UTC (19 years, 8 months ago) by mlosch
Branch: MAIN
CVS Tags: checkpoint55, checkpoint54f_post, checkpoint55c_post, checkpoint55g_post, checkpoint55d_post, checkpoint55d_pre, checkpoint55b_post, checkpoint55f_post, checkpoint55a_post, checkpoint55e_post
Changes since 1.22: +9 -1 lines
o prepare addition of new packages GGL90 and OPPS
  - new parameters useGGL90 and useOPPS
  - include call to the new routines at the (hopefully) right places

1 C $Header: /u/gcmpack/MITgcm/model/src/calc_diffusivity.F,v 1.22 2004/09/06 06:42:19 mlosch 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
35 C !INPUT/OUTPUT PARAMETERS:
36 C == Routine arguments ==
37 C bi, bj, :: Range of points for which calculation
38 C iMin, is performed.
39 C iMax,
40 C jMin,
41 C jMax
42 C maskUp :: land/water mask for Wvel points (above tracer level)
43 C myThid :: Instance number for this innvocation of CALC_DIFFUSIVITY
44 C KappaRT :: Net diffusivity for temperature
45 C KappaRS :: Net diffusivity for salinity
46 INTEGER bi,bj,iMin,iMax,jMin,jMax,K
47 _RS maskUp(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
48 _RL KappaRT(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
49 _RL KappaRS(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
50 INTEGER myThid
51
52 C !LOCAL VARIABLES:
53 C == Local variables ==
54 C I, J :: Loop counters
55 INTEGER i,j
56 _RL KbryanLewis79
57 CEOP
58
59 KbryanLewis79=diffKrBL79surf+(diffKrBL79deep-diffKrBL79surf)
60 & *( atan( -( rF(k)-diffKrBL79Ho )/diffKrBL79scl )/PI+0.5 _d 0)
61
62 DO j = 1-Oly, sNy+Oly
63 DO i = 1-Olx, sNx+Olx
64 KappaRT(i,j,k) = maskUp(i,j)*
65 & (
66 & IVDConvCount(i,j,k,bi,bj)*ivdc_kappa
67 #if (defined (ALLOW_AUTODIFF_TAMC) && defined (ALLOW_DIFFKR_CONTROL))
68 & + diffKr(i,j,k,bi,bj)
69 #else
70 & + diffKrT
71 #endif
72 & + KbryanLewis79
73 & )
74 ENDDO
75 ENDDO
76
77 DO j = 1-Oly, sNy+Oly
78 DO i = 1-Olx, sNx+Olx
79 KappaRS(i,j,k) = maskUp(i,j)*
80 & (
81 & IVDConvCount(i,j,k,bi,bj)*ivdc_kappa
82 #if (defined (ALLOW_AUTODIFF_TAMC) && defined (ALLOW_DIFFKR_CONTROL))
83 & + diffKr(i,j,k,bi,bj)
84 #else
85 & + diffKrS
86 #endif
87 & + KbryanLewis79
88 & )
89 ENDDO
90 ENDDO
91
92 #ifdef ALLOW_GMREDI
93 IF (useGMRedi) CALL GMREDI_CALC_DIFF(
94 I bi,bj,iMin,iMax,jMin,jMax,K,
95 I maskUp,
96 O KappaRT,KappaRS,
97 I myThid)
98 #endif
99
100 #ifdef ALLOW_KPP
101 IF (useKPP) CALL KPP_CALC_DIFF(
102 I bi,bj,iMin+1,iMax,jMin+1,jMax,K,
103 I maskUp,
104 O KappaRT,KappaRS,
105 I myThid)
106 #endif
107
108 #ifdef ALLOW_PP81
109 IF (usePP81) CALL PP81_CALC_DIFF(
110 I bi,bj,iMin+1,iMax,jMin+1,jMax,K,
111 I maskUp,
112 O KappaRT,KappaRS,
113 I myThid)
114 #endif
115
116 #ifdef ALLOW_MY82
117 IF (useMY82) CALL MY82_CALC_DIFF(
118 I bi,bj,iMin+1,iMax,jMin+1,jMax,K,
119 I maskUp,
120 O KappaRT,KappaRS,
121 I myThid)
122 #endif
123
124 #ifdef ALLOW_GGL90
125 IF (useGGL90) CALL GGL90_CALC_DIFF(
126 I bi,bj,iMin+1,iMax,jMin+1,jMax,K,
127 I maskUp,
128 O KappaRT,KappaRS,
129 I myThid)
130 #endif
131
132 RETURN
133 END

  ViewVC Help
Powered by ViewVC 1.1.22