/[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.10 - (show annotations) (download)
Thu Dec 8 15:44:34 2005 UTC (18 years, 5 months ago) by heimbach
Branch: MAIN
CVS Tags: checkpoint58b_post, checkpoint57y_post, checkpoint58, checkpoint58f_post, checkpoint58d_post, checkpoint58a_post, checkpoint57z_post, checkpoint58m_post, checkpoint58o_post, checkpoint58p_post, checkpoint58q_post, checkpoint58e_post, checkpoint58r_post, checkpoint58n_post, checkpoint58k_post, checkpoint58l_post, checkpoint58g_post, checkpoint58h_post, checkpoint58j_post, checkpoint58i_post, checkpoint58c_post
Changes since 1.9: +3 -1 lines
First step for a NLFS adjoint
o initially suppress rStar (new flag DISABLE_RSTAR_CODE)
o new init. routines for calc_r_star, calc_surf_dr
o still need to deal with ini_masks_etc
o testreport seemed happy

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.
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)
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)
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 ENDDO
80 ENDDO
81 ELSE
82 DO j=1,sNy
83 DO i=1,sNx
84 wFld(i,j,k,bi,bj) =
85 & ( wFld(i,j,k+1,bi,bj)
86 & -( uTrans(i+1,j)-uTrans(i,j)
87 & +vTrans(i,j+1)-vTrans(i,j)
88 & )*recip_rA(i,j,bi,bj)
89 & )*maskC(i,j,k,bi,bj)*maskC(i,j,k-1,bi,bj)
90 ENDDO
91 ENDDO
92 ENDIF
93 #ifdef NONLIN_FRSURF
94 ELSEIF (select_rStar .NE. 0) THEN
95 # ifndef DISABLE_RSTAR_CODE
96 C- o rStar case: zero under-ground and at r_lower boundary
97 C can be non-zero at surface (useRealFreshWaterFlux)
98 IF (k.eq.Nr) THEN
99 DO j=1,sNy
100 DO i=1,sNx
101 wFld(i,j,k,bi,bj) =
102 & ( -( uTrans(i+1,j)-uTrans(i,j)
103 & +vTrans(i,j+1)-vTrans(i,j)
104 & )*recip_rA(i,j,bi,bj)
105 & - rStarDhCDt(i,j,bi,bj)*drF(k)*h0FacC(i,j,k,bi,bj)
106 & )*maskC(i,j,k,bi,bj)
107 ENDDO
108 ENDDO
109 ELSE
110 DO j=1,sNy
111 DO i=1,sNx
112 wFld(i,j,k,bi,bj) =
113 & ( wFld(i,j,k+1,bi,bj)
114 & -( uTrans(i+1,j)-uTrans(i,j)
115 & +vTrans(i,j+1)-vTrans(i,j)
116 & )*recip_rA(i,j,bi,bj)
117 & - rStarDhCDt(i,j,bi,bj)*drF(k)*h0FacC(i,j,k,bi,bj)
118 & )*maskC(i,j,k,bi,bj)
119 ENDDO
120 ENDDO
121 ENDIF
122 # endif /* DISABLE_RSTAR_CODE */
123 #endif /* NONLIN_FRSURF */
124 ELSE
125 C- o Free Surface case (r-Coordinate):
126 C non zero at surface ; zero under-ground and at r_lower boundary
127 IF (k.eq.Nr) THEN
128 DO j=1,sNy
129 DO i=1,sNx
130 wFld(i,j,k,bi,bj) =
131 & -( uTrans(i+1,j)-uTrans(i,j)
132 & +vTrans(i,j+1)-vTrans(i,j)
133 & )*recip_rA(i,j,bi,bj)
134 & *maskC(i,j,k,bi,bj)
135 ENDDO
136 ENDDO
137 ELSE
138 DO j=1,sNy
139 DO i=1,sNx
140 wFld(i,j,k,bi,bj) =
141 & ( wFld(i,j,k+1,bi,bj)
142 & -( uTrans(i+1,j)-uTrans(i,j)
143 & +vTrans(i,j+1)-vTrans(i,j)
144 & )*recip_rA(i,j,bi,bj)
145 & )*maskC(i,j,k,bi,bj)
146 ENDDO
147 ENDDO
148 ENDIF
149 C- endif - rigid-lid / Free-Surf.
150 ENDIF
151
152 RETURN
153 END

  ViewVC Help
Powered by ViewVC 1.1.22