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

Contents of /MITgcm/model/src/integrate_for_w.F

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


Revision 1.11 - (show annotations) (download)
Tue Dec 5 05:25:08 2006 UTC (17 years, 6 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint59, checkpoint58y_post, checkpoint58t_post, checkpoint60, checkpoint61, checkpoint58w_post, mitgcm_mapl_00, checkpoint59q, checkpoint59p, checkpoint59r, checkpoint59e, checkpoint59d, checkpoint59g, checkpoint59f, checkpoint59a, checkpoint59c, checkpoint59b, checkpoint59m, checkpoint59l, checkpoint59o, checkpoint59n, checkpoint59i, checkpoint59h, checkpoint59k, checkpoint58v_post, checkpoint58x_post, checkpoint59j, checkpoint58u_post, checkpoint58s_post, checkpoint61b, checkpoint61a
Changes since 1.10: +44 -39 lines
start to implement deep-atmosphere and/or anelastic formulation

1 C $Header: /u/gcmpack/MITgcm/model/src/integrate_for_w.F,v 1.9 2003/01/26 21:06:11 jmc Exp $
2 C $Name: $
3
4 #include "CPP_OPTIONS.h"
5
6 CBOP
7 C !ROUTINE: INTEGRATE_FOR_W
8 C !INTERFACE:
9 SUBROUTINE INTEGRATE_FOR_W(
10 I bi,bj,k,uFld,vFld,
11 O wFld,
12 I myThid)
13
14 C !DESCRIPTION: \bv
15 C *==========================================================*
16 C | SUBROUTINE INTEGRATE_FOR_W
17 C | o Integrate for vertical velocity.
18 C *==========================================================*
19 C \ev
20
21 C !USES:
22 IMPLICIT NONE
23 C == GLobal variables ==
24 #include "SIZE.h"
25 #include "EEPARAMS.h"
26 #include "PARAMS.h"
27 #include "GRID.h"
28 #include "SURFACE.h"
29
30 C !INPUT/OUTPUT PARAMETERS:
31 C == Routine arguments ==
32 C uFld, vFld :: Zonal and meridional flow
33 C wFld :: Vertical flow
34 INTEGER bi,bj,k
35 _RL uFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
36 _RL vFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
37 _RL wFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
38 INTEGER myThid
39
40 C !LOCAL VARIABLES:
41 C == Local variables ==
42 C uTrans, vTrans :: Temps. for volume transports
43 INTEGER i,j
44 _RL uTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
45 _RL vTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
46 CEOP
47
48 C-- Calculate velocity field "volume transports" through
49 C tracer cell faces (anelastic: scaled as a mass transport).
50 DO j=1,sNy+1
51 DO i=1,sNx+1
52 uTrans(i,j) = uFld(i,j,k,bi,bj)
53 & *_dyG(i,j,bi,bj)*deepFacC(k)*rhoFacC(k)
54 & *drF(k)*_hFacW(i,j,k,bi,bj)
55 vTrans(i,j) = vFld(i,j,k,bi,bj)
56 & *_dxG(i,j,bi,bj)*deepFacC(k)*rhoFacC(k)
57 & *drF(k)*_hFacS(i,j,k,bi,bj)
58 ENDDO
59 ENDDO
60
61 C-- Calculate vertical "volume transport" through face k
62 C between tracer cell k-1 & k
63 IF (rigidLid) THEN
64 C- o Rigid-Lid case: zero at lower and upper boundaries
65 IF (k.EQ.1) THEN
66 DO j=1,sNy
67 DO i=1,sNx
68 wFld(i,j,k,bi,bj) = 0.
69 ENDDO
70 ENDDO
71 ELSEIF (k.EQ.Nr) THEN
72 DO j=1,sNy
73 DO i=1,sNx
74 wFld(i,j,k,bi,bj) =
75 & -( uTrans(i+1,j)-uTrans(i,j)
76 & +vTrans(i,j+1)-vTrans(i,j)
77 & )*recip_rA(i,j,bi,bj)
78 & *maskC(i,j,k,bi,bj)*maskC(i,j,k-1,bi,bj)
79 & *recip_deepFac2F(k)*recip_rhoFacF(k)
80 ENDDO
81 ENDDO
82 ELSE
83 DO j=1,sNy
84 DO i=1,sNx
85 wFld(i,j,k,bi,bj) =
86 & ( wFld(i,j,k+1,bi,bj)*deepFac2F(k+1)*rhoFacF(k+1)
87 & -( uTrans(i+1,j)-uTrans(i,j)
88 & +vTrans(i,j+1)-vTrans(i,j)
89 & )*recip_rA(i,j,bi,bj)
90 & )*maskC(i,j,k,bi,bj)*maskC(i,j,k-1,bi,bj)
91 & *recip_deepFac2F(k)*recip_rhoFacF(k)
92 ENDDO
93 ENDDO
94 ENDIF
95 #ifdef NONLIN_FRSURF
96 ELSEIF (select_rStar .NE. 0) THEN
97 # ifndef DISABLE_RSTAR_CODE
98 C- o rStar case: zero under-ground and at r_lower boundary
99 C can be non-zero at surface (useRealFreshWaterFlux).
100 C note: not implemented neither for anelastic nor deep-model.
101 IF (k.EQ.Nr) THEN
102 DO j=1,sNy
103 DO i=1,sNx
104 wFld(i,j,k,bi,bj) =
105 & ( -( uTrans(i+1,j)-uTrans(i,j)
106 & +vTrans(i,j+1)-vTrans(i,j)
107 & )*recip_rA(i,j,bi,bj)
108 & - rStarDhCDt(i,j,bi,bj)*drF(k)*h0FacC(i,j,k,bi,bj)
109 & )*maskC(i,j,k,bi,bj)
110 ENDDO
111 ENDDO
112 ELSE
113 DO j=1,sNy
114 DO i=1,sNx
115 wFld(i,j,k,bi,bj) =
116 & ( wFld(i,j,k+1,bi,bj)
117 & -( uTrans(i+1,j)-uTrans(i,j)
118 & +vTrans(i,j+1)-vTrans(i,j)
119 & )*recip_rA(i,j,bi,bj)
120 & - rStarDhCDt(i,j,bi,bj)*drF(k)*h0FacC(i,j,k,bi,bj)
121 & )*maskC(i,j,k,bi,bj)
122 ENDDO
123 ENDDO
124 ENDIF
125 # endif /* DISABLE_RSTAR_CODE */
126 #endif /* NONLIN_FRSURF */
127 ELSE
128 C- o Free Surface case (r-Coordinate):
129 C non zero at surface ; zero under-ground and at r_lower boundary
130 IF (k.EQ.Nr) THEN
131 DO j=1,sNy
132 DO i=1,sNx
133 wFld(i,j,k,bi,bj) =
134 & -( uTrans(i+1,j)-uTrans(i,j)
135 & +vTrans(i,j+1)-vTrans(i,j)
136 & )*recip_rA(i,j,bi,bj)
137 & *maskC(i,j,k,bi,bj)
138 & *recip_deepFac2F(k)*recip_rhoFacF(k)
139 ENDDO
140 ENDDO
141 ELSE
142 DO j=1,sNy
143 DO i=1,sNx
144 wFld(i,j,k,bi,bj) =
145 & ( wFld(i,j,k+1,bi,bj)*deepFac2F(k+1)*rhoFacF(k+1)
146 & -( uTrans(i+1,j)-uTrans(i,j)
147 & +vTrans(i,j+1)-vTrans(i,j)
148 & )*recip_rA(i,j,bi,bj)
149 & )*maskC(i,j,k,bi,bj)
150 & *recip_deepFac2F(k)*recip_rhoFacF(k)
151 ENDDO
152 ENDDO
153 ENDIF
154 C- endif - rigid-lid / Free-Surf.
155 ENDIF
156
157 RETURN
158 END

  ViewVC Help
Powered by ViewVC 1.1.22