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

Annotation of /MITgcm/model/src/calc_viscosity.F

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


Revision 1.11 - (hide annotations) (download)
Wed Dec 24 19:09:33 2014 UTC (9 years, 5 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint65z, checkpoint65x, checkpoint65y, checkpoint65r, checkpoint65s, checkpoint65p, checkpoint65q, checkpoint65v, checkpoint65w, checkpoint65t, checkpoint65u, checkpoint65j, checkpoint65k, checkpoint65i, checkpoint65n, checkpoint65l, checkpoint65m, checkpoint66g, checkpoint66f, checkpoint66e, checkpoint66d, checkpoint66c, checkpoint66b, checkpoint66a, checkpoint66l, checkpoint66k, checkpoint66j, checkpoint66i, checkpoint66h, checkpoint65o
Changes since 1.10: +42 -19 lines
- add one more level to vertical viscosity local arrays (Nr+1, previously Nr)
  since no-slip bottom BC uses viscosity @ k+1 to update velocity @ level k
- for now and until vertical mixing scheme are updated to fill up Nr+1 level,
  just copy Nr value to Nr+1

1 jmc 1.11 C $Header: /u/gcmpack/MITgcm/model/src/calc_viscosity.F,v 1.10 2014/07/30 03:31:35 jmc Exp $
2 heimbach 1.4 C $Name: $
3 heimbach 1.1
4 edhill 1.5 #include "PACKAGES_CONFIG.h"
5 heimbach 1.1 #include "CPP_OPTIONS.h"
6    
7 cnh 1.3 CBOP
8     C !ROUTINE: CALC_VISCOSITY
9     C !INTERFACE:
10 jmc 1.8 SUBROUTINE CALC_VISCOSITY(
11     I bi,bj, iMin,iMax,jMin,jMax,
12 jmc 1.11 O kappaRU, kappaRV,
13 jmc 1.8 I myThid )
14 heimbach 1.1
15 cnh 1.3 C !DESCRIPTION: \bv
16     C *==========================================================*
17 jmc 1.8 C | SUBROUTINE CALC_VISCOSITY
18     C | o Calculate net vertical viscosity
19 cnh 1.3 C *==========================================================*
20     C \ev
21    
22     C !USES:
23 heimbach 1.1 IMPLICIT NONE
24     C == GLobal variables ==
25     #include "SIZE.h"
26     #include "EEPARAMS.h"
27     #include "PARAMS.h"
28     #include "DYNVARS.h"
29     #include "GRID.h"
30    
31 cnh 1.3 C !INPUT/OUTPUT PARAMETERS:
32 heimbach 1.1 C == Routine arguments ==
33 jmc 1.8 C iMin,iMax,jMin,jMax :: Range of points for which calculation
34     C bi,bj :: current tile indices
35 jmc 1.11 C kappaRU :: Total vertical viscosity for zonal flow.
36     C kappaRV :: Total vertical viscosity for meridional flow.
37 jmc 1.8 C myThid :: my Thread Id number
38     INTEGER iMin,iMax,jMin,jMax
39     INTEGER bi,bj
40 jmc 1.11 _RL kappaRU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr+1)
41     _RL kappaRV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr+1)
42 heimbach 1.1 INTEGER myThid
43    
44 cnh 1.3 C !LOCAL VARIABLES:
45 heimbach 1.1 C == Local variables ==
46 jmc 1.8 C i, j, k :: Loop counters
47     INTEGER i,j,k
48 jmc 1.11 INTEGER ki
49 cnh 1.3 CEOP
50 heimbach 1.1
51 jmc 1.11 DO k = 1,Nr+1
52     ki = MIN(k,Nr)
53 heimbach 1.1
54 jmc 1.10 DO j = 1-OLy, sNy+OLy
55     DO i = 1-OLx, sNx+OLx
56 jmc 1.11 kappaRU(i,j,k) = viscArNr(ki)
57     kappaRV(i,j,k) = viscArNr(ki)
58 jmc 1.8 ENDDO
59 heimbach 1.1 ENDDO
60    
61     #ifdef ALLOW_KPP
62 jmc 1.11 IF ( useKPP .AND. k.LE.Nr ) THEN
63     CALL KPP_CALC_VISC(
64 jmc 1.8 I bi,bj, iMin,iMax,jMin,jMax, k,
65 jmc 1.11 O kappaRU, kappaRV,
66 heimbach 1.1 I myThid)
67 jmc 1.11 ENDIF
68 heimbach 1.1 #endif
69    
70 mlosch 1.6 #ifdef ALLOW_PP81
71 jmc 1.11 IF ( usePP81 .AND. k.LE.Nr ) THEN
72     CALL PP81_CALC_VISC(
73 jmc 1.8 I bi,bj, iMin,iMax,jMin,jMax, k,
74 jmc 1.11 O kappaRU, kappaRV,
75 mlosch 1.6 I myThid)
76 jmc 1.11 ENDIF
77 mlosch 1.6 #endif
78    
79 jmc 1.10 #ifdef ALLOW_KL10
80 jmc 1.11 IF ( useKL10 .AND. k.LE.Nr ) THEN
81     CALL KL10_CALC_VISC(
82 jmc 1.10 I bi,bj, iMin,iMax,jMin,jMax, k,
83 jmc 1.11 O kappaRU, kappaRV,
84 jmc 1.10 I myThid)
85 jmc 1.11 ENDIF
86 jmc 1.10 #endif
87    
88 mlosch 1.6 #ifdef ALLOW_MY82
89 jmc 1.11 IF ( useMY82 .AND. k.LE.Nr ) THEN
90     CALL MY82_CALC_VISC(
91 jmc 1.8 I bi,bj, iMin,iMax,jMin,jMax, k,
92 jmc 1.11 O kappaRU, kappaRV,
93 mlosch 1.6 I myThid)
94 jmc 1.11 ENDIF
95 mlosch 1.6 #endif
96    
97 mlosch 1.7 #ifdef ALLOW_GGL90
98 jmc 1.11 IF ( useGGL90 .AND. k.LE.Nr ) THEN
99     CALL GGL90_CALC_VISC(
100 jmc 1.8 I bi,bj, iMin,iMax,jMin,jMax, k,
101 jmc 1.11 O kappaRU, kappaRV,
102 mlosch 1.7 I myThid)
103 jmc 1.11 ENDIF
104 mlosch 1.7 #endif
105    
106 jmc 1.11 IF ( k.EQ.Nr+1 .AND.
107     & ( usePP81 .OR. useKL10 .OR. useMY82 .OR. useGGL90 )
108     & ) THEN
109     DO j = 1-OLy, sNy+OLy
110     DO i = 1-OLx, sNx+OLx
111     kappaRU(i,j,k) = kappaRU(i,j,ki)
112     kappaRV(i,j,k) = kappaRV(i,j,ki)
113     ENDDO
114     ENDDO
115     ENDIF
116    
117 jmc 1.8 C-- end of k loop
118     ENDDO
119 heimbach 1.1
120     RETURN
121     END

  ViewVC Help
Powered by ViewVC 1.1.22