/[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.9 - (show annotations) (download)
Thu Aug 26 17:47:37 1999 UTC (24 years, 9 months ago) by adcroft
Branch: MAIN
CVS Tags: checkpoint28, checkpoint25, checkpoint27, checkpoint26
Changes since 1.8: +7 -5 lines
Added IVDC (Implicit Vertical Diffusion Convection).
Also facilitated a "convection counter" that is output through "diags".

1 C $Header: /u/gcmpack/models/MITgcmUV/model/src/calc_diffusivity.F,v 1.8 1999/05/18 18:01:12 adcroft Exp $
2
3 #include "CPP_OPTIONS.h"
4
5 CStartOfInterFace
6 SUBROUTINE CALC_DIFFUSIVITY(
7 I bi,bj,iMin,iMax,jMin,jMax,K,
8 I maskC,maskUp,KapGM,K33,
9 O KappaRT,KappaRS,KappaRU,KappaRV,
10 I myThid)
11
12 C /==========================================================\
13 C | SUBROUTINE CALC_DIFFUSIVITY |
14 C | o Calculate net diffusivity |
15 C \==========================================================/
16 IMPLICIT NONE
17
18 C == GLobal variables ==
19 #include "SIZE.h"
20 #include "EEPARAMS.h"
21 #include "PARAMS.h"
22 #include "DYNVARS.h"
23 #include "GRID.h"
24 #ifdef ALLOW_KPP
25 #include "KPPMIX.h"
26 #endif
27
28 C == Routine arguments ==
29 C bi, bj, iMin, iMax, jMin, jMax - Range of points for which calculation
30 C maskC - land/water mask for tracer points
31 C maskUp - land/water mask for Wvel points (above tracer level)
32 C myThid - Instance number for this innvocation of CALC_COMMON_FACTORS
33 C
34 INTEGER bi,bj,iMin,iMax,jMin,jMax,K
35 _RS maskC(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
36 _RS maskUp(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
37 _RL KapGM(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
38 _RL K33(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
39 _RL KappaRT(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
40 _RL KappaRS(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
41 _RL KappaRU(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
42 _RL KappaRV(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
43 INTEGER myThid
44 CEndOfInterface
45
46 C == Local variables ==
47 C I, J, K - Loop counters
48 INTEGER i,j
49
50 DO j=jMin,jMax
51 DO i=iMin,iMax
52 KappaRT(i,j,k) = maskC(i,j)*maskUp(i,j)*
53 & (
54 & KappaRT(i,j,k)
55 #ifdef ALLOW_KPP
56 & + KPPdiffKzT(i,j,k,bi,bj)
57 #else
58 & + diffKrT
59 #endif
60 & + KapGM(i,j)*K33(i,j,k)
61 & )
62 ENDDO
63 ENDDO
64
65 DO j=jMin,jMax
66 DO i=iMin,iMax
67 KappaRS(i,j,k) = maskC(i,j)*maskUp(i,j)*
68 & (
69 & KappaRS(i,j,k)
70 #ifdef ALLOW_KPP
71 & + KPPdiffKzS(i,j,k,bi,bj)
72 #else
73 & + diffKrS
74 #endif
75 & + KapGM(i,j)*K33(i,j,k)
76 & )
77 ENDDO
78 ENDDO
79
80 DO j=jMin,jMax
81 DO i=iMin,iMax
82 #ifdef ALLOW_KPP
83 Ckpp interpolate KPPviscAz from "t-grid" to "u-grid"
84 KappaRU(i,j,k) =
85 & _maskW(i,j,k,bi,bj)*maskUp(i,j)*maskUp(i-1,j)*
86 & ( KPPviscAz(i,j,k,bi,bj) + KPPviscAz(i-1,j,k,bi,bj) )*0.5
87 #else
88 KappaRU(i,j,k) = viscAr
89 #endif
90 ENDDO
91 ENDDO
92
93 DO j=jMin,jMax
94 DO i=iMin,iMax
95 #ifdef ALLOW_KPP
96 Ckpp interpolate KPPviscAz from "t-grid" to "v-grid"
97 KappaRV(i,j,k) =
98 & _maskS(i,j,k,bi,bj)*maskUp(i,j)*maskUp(i,j-1)*
99 & ( KPPviscAz(i,j,k,bi,bj)+KPPviscAz(i,j-1,k,bi,bj) )*0.5
100 #else
101 KappaRV(i,j,k) = viscAr
102 #endif
103 ENDDO
104 ENDDO
105
106 RETURN
107 END

  ViewVC Help
Powered by ViewVC 1.1.22