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

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

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


Revision 1.1 - (show annotations) (download)
Fri Oct 22 16:02:00 2004 UTC (19 years, 7 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint57b_post, checkpoint57d_post, checkpoint57c_pre, checkpoint55j_post, checkpoint56b_post, checkpoint57e_post, checkpoint56c_post, checkpoint57a_post, checkpoint57a_pre, checkpoint55i_post, checkpoint57, checkpoint56, eckpoint57e_pre, checkpoint57c_post, checkpoint56a_post
compute vertical diffusivity for each tracer (but not yet called)

1 C $Header: /u/gcmpack/MITgcm/model/src/calc_diffusivity.F,v 1.25 2004/10/22 01:42:34 jmc Exp $
2 C $Name: $
3
4 #include "PTRACERS_OPTIONS.h"
5
6 CBOP
7 C !ROUTINE: PTRACERS_CALC_DIFF
8 C !INTERFACE:
9 SUBROUTINE PTRACERS_CALC_DIFF(
10 I bi,bj,iMin,iMax,jMin,jMax,k,
11 I maskUp,
12 O KappaRtr,
13 I myThid)
14
15 C !DESCRIPTION: \bv
16 C *==========================================================*
17 C | SUBROUTINE PTRACERS_CALC_DIFF
18 C | o Calculate net vertical diffusivity for passive tracers
19 C *==========================================================*
20 C | Combines spatially varying diffusion coefficients from
21 C | KPP and/or GM and/or convective stability test.
22 C *==========================================================*
23 C \ev
24
25 C !USES:
26 IMPLICIT NONE
27 C == GLobal variables ==
28 #include "SIZE.h"
29 #include "EEPARAMS.h"
30 #include "PARAMS.h"
31 #include "GRID.h"
32 #include "DYNVARS.h"
33 #include "PTRACERS_SIZE.h"
34 #include "PTRACERS.h"
35 c #include "GAD.h"
36
37 C !INPUT/OUTPUT PARAMETERS:
38 C == Routine arguments ==
39 C bi, bj :: tile indices
40 C iMin,iMax :: Range of points for which calculation is performed.
41 C jMin,jMax :: Range of points for which calculation is performed.
42 C maskUp :: land/water mask for Wvel points (above tracer level)
43 C myThid :: Instance number for this innvocation of PTRACERS_CALC_DIFF
44 C KappaRtr :: 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 KappaRtr(1-Olx:sNx+Olx,1-Oly:sNy+Oly,PTRACERS_num)
49 INTEGER myThid
50
51 C !LOCAL VARIABLES:
52 C == Local variables ==
53 C I, J :: Loop counters
54 INTEGER i,j,iTr
55 _RL KbryanLewis79
56 CEOP
57
58 KbryanLewis79=diffKrBL79surf+(diffKrBL79deep-diffKrBL79surf)
59 & *( atan( -( rF(k)-diffKrBL79Ho )/diffKrBL79scl )/PI+0.5 _d 0)
60
61 C Loop over tracers
62 DO iTr=1,PTRACERS_numInUse
63
64 DO j = 1-Oly, sNy+Oly
65 DO i = 1-Olx, sNx+Olx
66 KappaRtr(i,j,iTr) =
67 & IVDConvCount(i,j,k,bi,bj)*ivdc_kappa
68 #if (defined (ALLOW_AUTODIFF_TAMC) && defined (ALLOW_DIFFKR_CONTROL))
69 & + diffKr(i,j,k,bi,bj)
70 #else
71 & + PTRACERS_diffKrNr(k,iTr)
72 #endif
73 & + KbryanLewis79
74 ENDDO
75 ENDDO
76
77 #ifdef ALLOW_GMREDI
78 IF ( PTRACERS_useGMRedi(iTr) ) THEN
79 CALL GMREDI_CALC_DIFF(
80 I bi,bj,iMin,iMax,jMin,jMax,k,1,
81 U KappaRtr(1-Olx,1-Oly,iTr),
82 I myThid)
83 ENDIF
84 #endif
85
86 #ifdef ALLOW_KPP
87 IF ( PTRACERS_useKPP(iTr) ) THEN
88 CALL KPP_CALC_DIFF_S(
89 I bi,bj,iMin+1,iMax,jMin+1,jMax,k,1,
90 U KappaRtr(1-Olx,1-Oly,iTr),
91 U KappaRtr,
92 I myThid)
93 ENDIF
94 #endif
95
96 #ifdef ALLOW_PP81
97 IF (usePP81) THEN
98 CALL PP81_CALC_DIFF(
99 I bi,bj,iMin+1,iMax,jMin+1,jMax,k,1,
100 U KappaRtr(1-Olx,1-Oly,iTr),
101 I myThid)
102 ENDIF
103 #endif
104
105 #ifdef ALLOW_MY82
106 IF (useMY82) THEN
107 CALL MY82_CALC_DIFF(
108 I bi,bj,iMin+1,iMax,jMin+1,jMax,k,1,
109 U KappaRtr(1-Olx,1-Oly,iTr),
110 I myThid)
111 ENDIF
112 #endif
113
114 #ifdef ALLOW_GGL90
115 IF (useGGL90) THEN
116 CALL GGL90_CALC_DIFF(
117 I bi,bj,iMin+1,iMax,jMin+1,jMax,k,1,
118 U KappaRtr(1-Olx,1-Oly,iTr),
119 I myThid)
120 ENDIF
121 #endif
122
123 C- Apply mask to vertical diffusivity
124 C jmc: don't have the impression that masking is needed
125 C but could be removed later if it's the case.
126 DO j = 1-Oly, sNy+Oly
127 DO i = 1-Olx, sNx+Olx
128 KappaRtr(i,j,iTr) = maskUp(i,j)*KappaRtr(i,j,iTr)
129 ENDDO
130 ENDDO
131
132 C end of tracer loop
133 ENDDO
134
135 RETURN
136 END

  ViewVC Help
Powered by ViewVC 1.1.22