/[MITgcm]/MITgcm/pkg/atm_phys/atm_phys_tendency_apply.F
ViewVC logotype

Contents of /MITgcm/pkg/atm_phys/atm_phys_tendency_apply.F

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


Revision 1.2 - (show annotations) (download)
Fri Jun 28 21:25:25 2013 UTC (11 years, 3 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint64y, checkpoint64x, checkpoint64o, checkpoint64q, checkpoint64p, checkpoint64s, checkpoint64r, checkpoint64u, checkpoint64t, checkpoint64w, checkpoint64v, checkpoint64n, checkpoint64k, checkpoint64j, checkpoint64m, checkpoint64l
Changes since 1.1: +59 -3 lines
allows to add some damping on uVel,vVel (strength only function of k)

1 C $Header: /u/gcmpack/MITgcm/pkg/atm_phys/atm_phys_tendency_apply.F,v 1.1 2013/05/08 22:14:14 jmc Exp $
2 C $Name: $
3
4 #include "ATM_PHYS_OPTIONS.h"
5 C-- File atm_phys_tendency_apply.F: Routines to apply ATM_PHYS tendencies
6 C-- Contents
7 C-- o ATM_PHYS_TENDENCY_APPLY_U
8 C-- o ATM_PHYS_TENDENCY_APPLY_V
9 C-- o ATM_PHYS_TENDENCY_APPLY_T
10 C-- o ATM_PHYS_TENDENCY_APPLY_S
11
12 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
13 CBOP 0
14 C !ROUTINE: ATM_PHYS_TENDENCY_APPLY_U
15
16 C !INTERFACE:
17 SUBROUTINE ATM_PHYS_TENDENCY_APPLY_U(
18 & iMin, iMax, jMin, jMax,
19 & bi, bj, k, myTime, myThid )
20
21 C !DESCRIPTION:
22 C Add AtmPhys tendency terms to U tendency. Routine works for one
23 C level at a time. Assumes that U and V tendencies are on A-Grid
24
25 C !USES:
26 IMPLICIT NONE
27 #include "SIZE.h"
28 #include "EEPARAMS.h"
29 #include "PARAMS.h"
30 #include "GRID.h"
31 #include "DYNVARS.h"
32 #include "FFIELDS.h"
33 #include "ATM_PHYS_PARAMS.h"
34 #include "ATM_PHYS_VARS.h"
35
36 C !INPUT PARAMETERS:
37 INTEGER iMin, iMax, jMin, jMax, k, bi, bj, myThid
38 _RL myTime
39 CEOP
40
41 C !LOCAL VARIABLES:
42 INTEGER i, j
43 _RL damp_dKE(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
44
45 IF ( atmPhys_addTendU ) THEN
46
47 C-- Assume Agrid position:
48 DO j=jMin,jMax
49 DO i=iMin,iMax
50 gU(i,j,k,bi,bj) = gU(i,j,k,bi,bj)
51 & + maskW(i,j,k,bi,bj)*( atmPhys_dU(i-1,j,k,bi,bj)
52 & +atmPhys_dU( i ,j,k,bi,bj)
53 & )*0.5 _d 0
54 ENDDO
55 ENDDO
56
57 IF ( atmPhys_dampUVfac(k).GT.zeroRL ) THEN
58 DO j=jMin,jMax
59 DO i=iMin,iMax
60 gU(i,j,k,bi,bj) = gU(i,j,k,bi,bj)
61 & - maskW(i,j,k,bi,bj)*uVel(i,j,k,bi,bj)*atmPhys_dampUVfac(k)
62 damp_dKE(i,j) =
63 & - uVel(i,j,k,bi,bj)*uVel(i,j,k,bi,bj)*atmPhys_dampUVfac(k)
64 & *hFacW(i,j,k,bi,bj)*drF(k)*rUnit2mass
65 ENDDO
66 ENDDO
67 #ifdef ALLOW_FRICTION_HEATING
68 IF ( addFrictionHeating ) THEN
69 DO j=1,sNy
70 DO i=1,sNx
71 frictionHeating(i,j,k,bi,bj) = frictionHeating(i,j,k,bi,bj)
72 & -0.5 _d 0 * ( damp_dKE( i, j)*rAw( i, j,bi,bj)
73 & + damp_dKE(i+1,j)*rAw(i+1,j,bi,bj) )
74 ENDDO
75 ENDDO
76 ENDIF
77 #endif /* ALLOW_FRICTION_HEATING */
78 ENDIF
79
80 ENDIF
81
82 RETURN
83 END
84
85 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
86 CBOP 0
87 C !ROUTINE: ATM_PHYS_TENDENCY_APPLY_V
88
89 C !INTERFACE:
90 SUBROUTINE ATM_PHYS_TENDENCY_APPLY_V(
91 & iMin, iMax, jMin, jMax,
92 & bi, bj, k, myTime, myThid )
93
94 C !DESCRIPTION:
95 C Add AtmPhys tendency terms to V tendency. Routine works for one
96 C level at a time. Assumes that U and V tendencies are on A-Grid
97
98 C !USES:
99 IMPLICIT NONE
100 #include "SIZE.h"
101 #include "EEPARAMS.h"
102 #include "PARAMS.h"
103 #include "GRID.h"
104 #include "DYNVARS.h"
105 #include "FFIELDS.h"
106 #include "ATM_PHYS_PARAMS.h"
107 #include "ATM_PHYS_VARS.h"
108
109 C !INPUT PARAMETERS:
110 INTEGER iMin, iMax, jMin, jMax, k, bi, bj, myThid
111 _RL myTime
112 CEOP
113
114 C !LOCAL VARIABLES:
115 INTEGER i, j
116 _RL damp_dKE(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
117
118 IF ( atmPhys_addTendV ) THEN
119
120 C-- Assume Agrid position:
121 DO j=jMin,jMax
122 DO i=iMin,iMax
123 gV(i,j,k,bi,bj) = gV(i,j,k,bi,bj)
124 & + maskS(i,j,k,bi,bj)*( atmPhys_dV(i,j-1,k,bi,bj)
125 & +atmPhys_dV(i, j ,k,bi,bj)
126 & )*0.5 _d 0
127 ENDDO
128 ENDDO
129
130 IF ( atmPhys_dampUVfac(k).GT.zeroRL ) THEN
131 DO j=jMin,jMax
132 DO i=iMin,iMax
133 gV(i,j,k,bi,bj) = gV(i,j,k,bi,bj)
134 & - maskS(i,j,k,bi,bj)*vVel(i,j,k,bi,bj)*atmPhys_dampUVfac(k)
135 damp_dKE(i,j) =
136 & - vVel(i,j,k,bi,bj)*vVel(i,j,k,bi,bj)*atmPhys_dampUVfac(k)
137 & *hFacS(i,j,k,bi,bj)*drF(k)*rUnit2mass
138 ENDDO
139 ENDDO
140 #ifdef ALLOW_FRICTION_HEATING
141 IF ( addFrictionHeating ) THEN
142 DO j=1,sNy
143 DO i=1,sNx
144 frictionHeating(i,j,k,bi,bj) = frictionHeating(i,j,k,bi,bj)
145 & -0.5 _d 0 * ( damp_dKE( i, j)*rAs(i, j ,bi,bj)
146 & + damp_dKE(i+1,j)*rAs(i,j+1,bi,bj) )
147 ENDDO
148 ENDDO
149 ENDIF
150 #endif /* ALLOW_FRICTION_HEATING */
151 ENDIF
152
153 ENDIF
154
155 RETURN
156 END
157
158 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
159 CBOP 0
160 C !ROUTINE: ATM_PHYS_TENDENCY_APPLY_T
161
162 C !INTERFACE:
163 SUBROUTINE ATM_PHYS_TENDENCY_APPLY_T(
164 & iMin, iMax, jMin, jMax,
165 & bi, bj, k, myTime, myThid )
166
167 C !DESCRIPTION:
168 C Add AtmPhys tendency terms to T (theta) tendency. Routine works
169 C for one level at a time
170
171 C !USES:
172 IMPLICIT NONE
173 #include "SIZE.h"
174 #include "GRID.h"
175 #include "EEPARAMS.h"
176 #include "DYNVARS.h"
177 #include "ATM_PHYS_PARAMS.h"
178 #include "ATM_PHYS_VARS.h"
179
180 C !INPUT PARAMETERS:
181 INTEGER iMin, iMax, jMin, jMax, k, bi, bj, myThid
182 _RL myTime
183 CEOP
184
185 C !LOCAL VARIABLES:
186 INTEGER i, j
187
188 IF ( atmPhys_addTendT ) THEN
189 DO j=jMin,jMax
190 DO i=iMin,iMax
191 gT(i,j,k,bi,bj) = gT(i,j,k,bi,bj)
192 & + maskC(i,j,k,bi,bj) * atmPhys_dT(i,j,k,bi,bj)
193 ENDDO
194 ENDDO
195 ENDIF
196
197 RETURN
198 END
199
200 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
201 CBOP 0
202 C !ROUTINE: ATM_PHYS_TENDENCY_APPLY_S
203
204 C !INTERFACE:
205 SUBROUTINE ATM_PHYS_TENDENCY_APPLY_S(
206 & iMin, iMax, jMin, jMax,
207 & bi, bj, k, myTime, myThid )
208
209 C !DESCRIPTION:
210 C Add AtmPhys tendency terms to S tendency. Routine works for one
211 C level at a time
212
213 C !INPUT PARAMETERS:
214 IMPLICIT NONE
215 #include "SIZE.h"
216 #include "GRID.h"
217 #include "EEPARAMS.h"
218 #include "DYNVARS.h"
219 #include "ATM_PHYS_PARAMS.h"
220 #include "ATM_PHYS_VARS.h"
221
222 C !INPUT PARAMETERS:
223 INTEGER iMin, iMax, jMin, jMax, k, bi, bj, myThid
224 _RL myTime
225 CEOP
226
227 C !LOCAL VARIABLES:
228 INTEGER i, j
229
230 IF ( atmPhys_addTendS ) THEN
231 DO j=jMin,jMax
232 DO i=iMin,iMax
233 gS(i,j,k,bi,bj) = gS(i,j,k,bi,bj)
234 & + maskC(i,j,k,bi,bj) * atmPhys_dQ(i,j,k,bi,bj)
235 ENDDO
236 ENDDO
237 ENDIF
238
239 RETURN
240 END

  ViewVC Help
Powered by ViewVC 1.1.22