/[MITgcm]/MITgcm/pkg/monitor/mon_ke.F
ViewVC logotype

Contents of /MITgcm/pkg/monitor/mon_ke.F

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


Revision 1.7.4.2 - (show annotations) (download)
Fri Mar 7 04:50:40 2003 UTC (21 years, 2 months ago) by heimbach
Branch: ecco-branch
CVS Tags: ecco_c50_e32, ecco_c50_e33, ecco_c50_e30, ecco_c50_e31, ecco_c50_e29, ecco_c50_e28, ecco_c50_e33a
Changes since 1.7.4.1: +31 -9 lines
merging c44 and e27

1 C $Header: /u/gcmpack/MITgcm/pkg/monitor/mon_ke.F,v 1.9 2002/06/15 03:14:53 jmc Exp $
2 C $Name: $
3
4 #include "CPP_OPTIONS.h"
5
6 SUBROUTINE MON_KE(
7 I myThid )
8 C /==========================================================\
9 C | SUBROUTINE MON_KE |
10 C | o Calculates stats for Kinetic energy |
11 C |==========================================================|
12 C \==========================================================/
13 IMPLICIT NONE
14
15 C === Global data ===
16 #include "SIZE.h"
17 #include "EEPARAMS.h"
18 #include "DYNVARS.h"
19 #include "MONITOR.h"
20 #include "GRID.h"
21
22 C === Routine arguments ===
23 INTEGER myThid
24
25 C === Local variables ====
26 INTEGER bi,bj,I,J,K
27 _RL tmpVal,tmpVol,theMax,theMean,theVolMean,theVol
28 INTEGER numPnts
29
30 theMax=0.
31 numPnts=0
32 theMean=0.
33 theVolMean=0.
34 theVol=0.
35
36 DO bj=myByLo(myThid),myByHi(myThid)
37 DO bi=myBxLo(myThid),myBxHi(myThid)
38 DO K=1,Nr
39 DO J=1,sNy
40 DO I=1,sNx
41 theVol=theVol+rA(i,j,bi,bj)*drF(k)*hFacC(i,j,k,bi,bj)
42
43 C- Vector Invariant form (like in pkg/mom_vecinv/mom_vi_calc_ke.F)
44 c tmpVal=0.25*( uVel( I , J ,K,bi,bj)*uVel( I , J ,K,bi,bj)
45 c & +uVel(I+1, J ,K,bi,bj)*uVel(I+1, J ,K,bi,bj)
46 c & +vVel( I , J ,K,bi,bj)*vVel( I , J ,K,bi,bj)
47 c & +vVel( I ,J+1,K,bi,bj)*vVel( I ,J+1,K,bi,bj) )
48 c theVolMean=theVolMean+tmpVal
49 c & *ra(i,j,bi,bj)*drf(k)*hFacC(i,j,k,bi,bj)
50
51 C- Energy conservative form (like in pkg/mom_fluxform/mom_calc_ke.F)
52 C this is the safe way to check the energy conservation
53 C with no assumption on how grid spacing & area are defined.
54 tmpVal=0.25*(
55 & uVel( i ,j,k,bi,bj)*uVel( i ,j,k,bi,bj)
56 & *dyG( i ,j,bi,bj)*dxC( i ,j,bi,bj)*hFacW( i ,j,k,bi,bj)
57 & +uVel(i+1,j,k,bi,bj)*uVel(i+1,j,k,bi,bj)
58 & *dyG(i+1,j,bi,bj)*dxC(i+1,j,bi,bj)*hFacW(i+1,j,k,bi,bj)
59 & +vVel(i, j ,k,bi,bj)*vVel(i, j ,k,bi,bj)
60 & *dxG(i, j ,bi,bj)*dyC(i, j ,bi,bj)*hFacS(i, j ,k,bi,bj)
61 & +vVel(i,j+1,k,bi,bj)*vVel(i,j+1,k,bi,bj)
62 & *dxG(i,j+1,bi,bj)*dyC(i,j+1,bi,bj)*hFacS(i,j+1,k,bi,bj)
63 & )
64 theVolMean= theVolMean + tmpVal*drF(k)
65 tmpVal= tmpVal*recip_hFacC(i,j,k,bi,bj)*recip_rA(i,j,bi,bj)
66
67 theMax=max(theMax,tmpVal)
68 IF (tmpVal.NE.0.) THEN
69 theMean=theMean+tmpVal
70 numPnts=numPnts+1
71 ENDIF
72
73 ENDDO
74 ENDDO
75 ENDDO
76 ENDDO
77 ENDDO
78 _GLOBAL_MAX_R8(theMax,myThid)
79 _GLOBAL_SUM_R8(theMean,myThid)
80 tmpVal=float(numPnts)
81 _GLOBAL_SUM_R8(tmpVal,myThid)
82 IF (tmpVal.NE.0.) theMean=theMean/tmpVal
83 _GLOBAL_SUM_R8(theVol,myThid)
84 _GLOBAL_SUM_R8(theVolMean,myThid)
85
86 CALL MON_OUT_RL(mon_string_none,theMax,mon_foot_max,myThid)
87 CALL MON_OUT_RL(mon_string_none,theMean,mon_foot_mean,myThid)
88 CALL MON_OUT_RL(mon_string_none,theVolMean,
89 & mon_foot_volint,myThid)
90 IF (theVol.NE.0.) theVolMean=theVolMean/theVol
91 CALL MON_OUT_RL(mon_string_none,theVolMean,
92 & mon_foot_volmean,myThid)
93 CALL MON_OUT_RL(mon_string_none,theVol,
94 & mon_foot_vol,myThid)
95
96 RETURN
97 END

  ViewVC Help
Powered by ViewVC 1.1.22