/[MITgcm]/MITgcm/pkg/mom_common/mom_calc_ke.F
ViewVC logotype

Annotation of /MITgcm/pkg/mom_common/mom_calc_ke.F

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


Revision 1.6 - (hide annotations) (download)
Fri Apr 4 20:08:11 2014 UTC (11 years, 11 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint64y, checkpoint64x, checkpoint64z, checkpoint64w, checkpoint64v, checkpoint65, checkpoint66g, checkpoint66f, checkpoint66e, checkpoint66d, checkpoint66c, checkpoint66b, checkpoint66a, checkpoint66o, checkpoint66n, checkpoint66m, checkpoint66l, checkpoint66k, checkpoint66j, checkpoint66i, checkpoint66h, checkpoint65z, checkpoint65x, checkpoint65y, checkpoint65r, checkpoint65s, checkpoint65p, checkpoint65q, checkpoint65v, checkpoint65w, checkpoint65t, checkpoint65u, checkpoint65j, checkpoint65k, checkpoint65h, checkpoint65i, checkpoint65n, checkpoint65o, checkpoint65l, checkpoint65m, checkpoint65b, checkpoint65c, checkpoint65a, checkpoint65f, checkpoint65g, checkpoint65d, checkpoint65e, HEAD
Changes since 1.5: +2 -2 lines
- Start to include explicitly AUTODIFF_OPTIONS.h, COST_OPTIONS.h,
  and CTRL_OPTIONS.h in src files (to enable to skip the ECCO_CPPOPTIONS.h)
  For now, only in pkgs used in verification/hs94.1x64x5.
- Replace ALLOW_AUTODIFF_TAMC by ALLOW_AUTODIFF (except for tape/storage
  which are specific to TAF/TAMC).

1 jmc 1.6 C $Header: /u/gcmpack/MITgcm/pkg/mom_common/mom_calc_ke.F,v 1.5 2012/03/04 23:13:07 jmc Exp $
2 jmc 1.2 C $Name: $
3 adcroft 1.1
4     #include "MOM_COMMON_OPTIONS.h"
5    
6     CBOP
7     C !ROUTINE: MOM_CALC_KE
8    
9     C !INTERFACE: ==========================================================
10     SUBROUTINE MOM_CALC_KE(
11     I bi,bj,k,KEscheme,
12     I uFld, vFld,
13     O KE,
14     I myThid)
15    
16     C !DESCRIPTION:
17     C Calculates the Kinetic energy of horizontal flow
18     C \begin{equation*}
19     C KE = \frac{1}{2} \left( h_w \overline{u^2}^i + h_s \overline{v^2}^j \right)
20     C \end{equation*}
21    
22     C !USES: ===============================================================
23     IMPLICIT NONE
24     #include "SIZE.h"
25     #include "GRID.h"
26    
27     C !INPUT PARAMETERS: ===================================================
28     C bi,bj :: tile indices
29     C k :: vertical level
30 jmc 1.2 C KEscheme :: spacial discretisation scheme for KE
31 adcroft 1.1 C uFld :: zonal flow
32     C vFld :: meridional flow
33 jmc 1.2 C KE :: Kinetic Energy
34 adcroft 1.1 C myThid :: thread number
35     INTEGER bi,bj,k
36     _RL uFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
37     _RL vFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
38     INTEGER KEscheme
39     INTEGER myThid
40    
41     C !OUTPUT PARAMETERS: ==================================================
42     C KE :: Kinetic energy
43     _RL KE(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
44    
45     C !LOCAL VARIABLES: ====================================================
46     C i,j :: loop indices
47 jmc 1.5 INTEGER i,j
48 adcroft 1.1 CEOP
49    
50     C This defn of KE should not ever be used. Just to let you know.
51     C 2 2
52     C 1 / ___I ___J \
53     C KE = --- | U + V |
54     C 2 \ /
55     C
56 jmc 1.6 #ifdef ALLOW_AUTODIFF
57 jmc 1.5 DO j=1-OLy,sNy+OLy
58     DO i=1-OLx,sNx+OLx
59     KE(i,j) = 0.
60     ENDDO
61     ENDDO
62     #endif
63    
64 jmc 1.3 IF (KEscheme.EQ.-1) THEN
65 jmc 1.5 DO j=1-OLy,sNy+OLy-1
66     DO i=1-OLx,sNx+OLx-1
67 adcroft 1.1 KE(i,j) = 0.125*(
68     & ( uFld(i,j)+uFld(i+1, j ) )**2
69     & +( vFld(i,j)+vFld( i ,j+1) )**2 )
70 jmc 1.5 ENDDO
71 adcroft 1.1 ENDDO
72    
73 jmc 1.3 ELSEIF (KEscheme.EQ.0) THEN
74 adcroft 1.1 C This defn of KE should be used for the vector invariant equations.
75     C _____I _____J
76     C 1 / 2 2 \
77     C KE = --- | U + V |
78     C 2 \ /
79     C
80 jmc 1.5 DO j=1-OLy,sNy+OLy-1
81     DO i=1-OLx,sNx+OLx-1
82 adcroft 1.1 KE(i,j) = 0.25*(
83 jmc 1.3 & ( uFld( i , j )*uFld( i , j )
84     & +uFld(i+1, j )*uFld(i+1, j ) )
85     & + ( vFld( i , j )*vFld( i , j )
86 adcroft 1.1 & +vFld( i ,j+1)*vFld( i ,j+1) )
87 jmc 1.3 & )
88 adcroft 1.1 ENDDO
89     ENDDO
90    
91 jmc 1.3 ELSEIF (KEscheme.EQ.1) THEN
92     C As above but including the area
93 jmc 1.5 DO j=1-OLy,sNy+OLy-1
94     DO i=1-OLx,sNx+OLx-1
95 jmc 1.3 KE(i,j) = 0.25*(
96     & ( uFld(i, j )*uFld(i, j )*rAw(i ,j, bi,bj)
97     & +uFld(i+1,j)*uFld(i+1,j)*rAw(i+1,j,bi,bj) )
98     & + ( vFld(i, j )*vFld(i, j )*rAs(i ,j, bi,bj)
99     & +vFld(i,j+1)*vFld(i,j+1)*rAs(i,j+1,bi,bj) )
100     & )*recip_rA(i,j,bi,bj)
101     ENDDO
102     ENDDO
103    
104     ELSEIF (KEscheme.EQ.2) THEN
105     C As KEscheme=0 but including the lopping factors and should be used
106 adcroft 1.1 C for the conservative form of the momentum equations.
107 jmc 1.5 DO j=1-OLy,sNy+OLy-1
108     DO i=1-OLx,sNx+OLx-1
109 adcroft 1.1 KE(i,j) = 0.25*(
110 heimbach 1.4 & ( uFld( i , j )*uFld( i , j )*_hFacW(i,j,k,bi,bj)
111     & +uFld(i+1, j )*uFld(i+1, j )*_hFacW(i+1,j,k,bi,bj) )
112     & + ( vFld( i , j )*vFld( i , j )*_hFacS(i,j,k,bi,bj)
113     & +vFld( i ,j+1)*vFld( i ,j+1)*_hFacS(i,j+1,k,bi,bj) )
114     & )*_recip_hFacC(i,j,k,bi,bj)
115 adcroft 1.1 ENDDO
116     ENDDO
117    
118 jmc 1.3 ELSEIF (KEscheme.EQ.3) THEN
119     C As above but including the area
120 jmc 1.5 DO j=1-OLy,sNy+OLy-1
121     DO i=1-OLx,sNx+OLx-1
122 jmc 1.2 KE(i,j) = 0.25*(
123 jmc 1.3 & (
124 heimbach 1.4 & uFld(i, j )*uFld(i, j )
125     & *_hFacW(i ,j, k,bi,bj)*rAw(i ,j, bi,bj)
126     & +uFld(i+1,j)*uFld(i+1,j)
127     & *_hFacW(i+1,j,k,bi,bj)*rAw(i+1,j,bi,bj)
128 jmc 1.5 & )
129 jmc 1.3 & + (
130 heimbach 1.4 & vFld(i, j )*vFld(i, j )
131     & *_hFacS(i, j, k,bi,bj)*rAs(i ,j, bi,bj)
132     & +vFld(i,j+1)*vFld(i,j+1)
133     & *_hFacS(i,j+1,k,bi,bj)*rAs(i,j+1,bi,bj)
134     & ) )*_recip_hFacC(i,j,k,bi,bj)
135     & * recip_rA(i,j,bi,bj)
136 jmc 1.2 ENDDO
137     ENDDO
138    
139 adcroft 1.1 ELSE
140     STOP 'S/R MOM_CALC_KE: We should never reach this point!'
141     ENDIF
142    
143     RETURN
144     END

  ViewVC Help
Powered by ViewVC 1.1.22