/[MITgcm]/MITgcm/pkg/fizhi/fizhi_tendency_apply.F
ViewVC logotype

Diff of /MITgcm/pkg/fizhi/fizhi_tendency_apply.F

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

revision 1.8 by molod, Mon Feb 14 22:56:58 2005 UTC revision 1.11 by molod, Tue Jan 17 18:46:27 2006 UTC
# Line 32  C======================================= Line 32  C=======================================
32        integer iMin, iMax, jMin, jMax, kLev, bi, bj, myThid        integer iMin, iMax, jMin, jMax, kLev, bi, bj, myThid
33        _RL myTime        _RL myTime
34        _RL rayleighdrag        _RL rayleighdrag
35          _RL tmpdiag(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
36    
37        integer i, j        integer i, j
38    #ifdef ALLOW_DIAGNOSTICS
39          logical  diagnostics_is_on
40          external diagnostics_is_on
41    #endif
42    
43        if(klev.eq.Nr .or. rC(klev).lt.7000.)then        if(klev.eq.Nr .or. rC(klev).lt.1000.)then
44         rayleighdrag = 1./(31.*86400.*2.)         rayleighdrag = 1./(31.*86400.*2.)
45        else        else
46         rayleighdrag = 0.         rayleighdrag = 0.
# Line 49  C======================================= Line 54  C=======================================
54         enddo         enddo
55        enddo        enddo
56    
57          if(diagnostics_is_on('DIABUDYN',myThid) ) then
58           do j=jMin,jMax
59           do i=iMin,iMax
60            tmpdiag(i,j) = ( maskW(i,j,kLev,bi,bj) * guphy(i,j,kLev,bi,bj)
61         .    - rayleighdrag * maskW(i,j,kLev,bi,bj)*uVel(i,j,kLev,bi,bj) )
62         .    * 86400
63           enddo
64           enddo
65           call diagnostics_fill(tmpdiag,'DIABUDYN',kLev,1,2,bi,bj,myThid)
66          endif
67    
68          if(diagnostics_is_on('RFU     ',myThid) ) then
69           do j=jMin,jMax
70           do i=iMin,iMax
71            tmpdiag(i,j) = -1. _d 0 * rayleighdrag *
72         .       maskW(i,j,kLev,bi,bj)*uVel(i,j,kLev,bi,bj) * 86400
73           enddo
74           enddo
75           call diagnostics_fill(tmpdiag,'RFU     ',kLev,1,2,bi,bj,myThid)
76          endif
77    
78        return        return
79        end        end
80        subroutine fizhi_tendency_apply_v(iMin, iMax, jMin, jMax,        subroutine fizhi_tendency_apply_v(iMin, iMax, jMin, jMax,
# Line 81  C======================================= Line 107  C=======================================
107        integer iMin, iMax, jMin, jMax, kLev, bi, bj, myThid        integer iMin, iMax, jMin, jMax, kLev, bi, bj, myThid
108        _RL myTime        _RL myTime
109        _RL rayleighdrag        _RL rayleighdrag
110          _RL tmpdiag(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
111    
112        integer i, j        integer i, j
113    #ifdef ALLOW_DIAGNOSTICS
114          logical  diagnostics_is_on
115          external diagnostics_is_on
116    #endif
117    
118        if(klev.eq.Nr .or. rC(klev).lt.7000.)then        if(klev.eq.Nr .or. rC(klev).lt.1000.)then
119         rayleighdrag = 1./(31.*86400.*2.)         rayleighdrag = 1./(31.*86400.*2.)
120        else        else
121         rayleighdrag = 0.         rayleighdrag = 0.
# Line 98  C======================================= Line 129  C=======================================
129         enddo         enddo
130        enddo        enddo
131    
132          if(diagnostics_is_on('DIABVDYN',myThid) ) then
133           do j=jMin,jMax
134           do i=iMin,iMax
135            tmpdiag(i,j) = ( maskS(i,j,kLev,bi,bj) * gvphy(i,j,kLev,bi,bj)
136         .    - rayleighdrag * maskS(i,j,kLev,bi,bj)*vVel(i,j,kLev,bi,bj) )
137         .    * 86400
138           enddo
139           enddo
140           call diagnostics_fill(tmpdiag,'DIABVDYN',kLev,1,2,bi,bj,myThid)
141          endif
142    
143          if(diagnostics_is_on('RFV     ',myThid) ) then
144           do j=jMin,jMax
145           do i=iMin,iMax
146            tmpdiag(i,j) = -1. _d 0 * rayleighdrag *
147         .       maskS(i,j,kLev,bi,bj)*vVel(i,j,kLev,bi,bj) * 86400
148           enddo
149           enddo
150           call diagnostics_fill(tmpdiag,'RFV     ',kLev,1,2,bi,bj,myThid)
151          endif
152    
153        return        return
154        end        end
155        subroutine fizhi_tendency_apply_t(iMin, iMax, jMin, jMax,        subroutine fizhi_tendency_apply_t(iMin, iMax, jMin, jMax,
# Line 129  C======================================= Line 181  C=======================================
181        integer iMin, iMax, jMin, jMax, kLev, bi, bj, myThid        integer iMin, iMax, jMin, jMax, kLev, bi, bj, myThid
182        _RL myTime        _RL myTime
183        _RL rayleighdrag,getcon,cp,kappa,pNrkappa        _RL rayleighdrag,getcon,cp,kappa,pNrkappa
184          _RL tmpdiag(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
185    
186        integer i, j        integer i, j
187    #ifdef ALLOW_DIAGNOSTICS
188          logical  diagnostics_is_on
189          external diagnostics_is_on
190    #endif
191    
192        if(klev.eq.Nr .or. rC(klev).lt.7000.)then        if(klev.eq.Nr .or. rC(klev).lt.1000.)then
193         cp = getcon('CP')         cp = getcon('CP')
194         kappa = getcon('KAPPA')         kappa = getcon('KAPPA')
195         pNrkappa = (rC(Nr)/100000.)**kappa         pNrkappa = (rC(klev)/100000.)**kappa
196         rayleighdrag = 1./((31.*86400.*2.)*(pNrkappa*cp))         rayleighdrag = 1./((31.*86400.*2.)*(pNrkappa*cp))
197        else        else
198         rayleighdrag = 0.         rayleighdrag = 0.
# Line 145  C======================================= Line 202  C=======================================
202         do i=iMin,iMax         do i=iMin,iMax
203          gT(i,j,kLev,bi,bj) = maskC(i,j,kLev,bi,bj)          gT(i,j,kLev,bi,bj) = maskC(i,j,kLev,bi,bj)
204       .       *( gT(i,j,kLev,bi,bj) + gthphy(i,j,kLev,bi,bj) )       .       *( gT(i,j,kLev,bi,bj) + gthphy(i,j,kLev,bi,bj) )
205       . + rayleighdrag *       . + rayleighdrag * 0.5 *
206       . (maskW(i,j,kLev,bi,bj)*uVel(i,j,kLev,bi,bj)*uVel(i,j,kLev,bi,bj)+       . (maskW(i,j,kLev,bi,bj)*uVel(i,j,kLev,bi,bj)*uVel(i,j,kLev,bi,bj)+
207       .  maskS(i,j,kLev,bi,bj)*vVel(i,j,kLev,bi,bj)*vVel(i,j,kLev,bi,bj))       .  maskW(i+1,j,kLev,bi,bj)*
208         .                uVel(i+1,j,kLev,bi,bj)*uVel(i+1,j,kLev,bi,bj)+
209         .  maskS(i,j,kLev,bi,bj)*vVel(i,j,kLev,bi,bj)*vVel(i,j,kLev,bi,bj)+
210         .  maskS(i,j+1,kLev,bi,bj)*
211         .                vVel(i,j+1,kLev,bi,bj)*vVel(i,j+1,kLev,bi,bj))
212         enddo         enddo
213        enddo        enddo
214    
215          if(diagnostics_is_on('DIABTDYN',myThid) ) then
216           do j=jMin,jMax
217           do i=iMin,iMax
218            tmpdiag(i,j) = ( maskC(i,j,kLev,bi,bj) * gthphy(i,j,kLev,bi,bj)
219         . + rayleighdrag * 0.5 *
220         . (maskW(i,j,kLev,bi,bj)*uVel(i,j,kLev,bi,bj)*uVel(i,j,kLev,bi,bj)+
221         .  maskW(i+1,j,kLev,bi,bj)*
222         .                uVel(i+1,j,kLev,bi,bj)*uVel(i+1,j,kLev,bi,bj)+
223         .  maskS(i,j,kLev,bi,bj)*vVel(i,j,kLev,bi,bj)*vVel(i,j,kLev,bi,bj)+
224         .  maskS(i,j+1,kLev,bi,bj)*
225         .                vVel(i,j+1,kLev,bi,bj)*vVel(i,j+1,kLev,bi,bj)) )
226         .    * 86400
227           enddo
228           enddo
229           call diagnostics_fill(tmpdiag,'DIABTDYN',kLev,1,2,bi,bj,myThid)
230          endif
231    
232          if(diagnostics_is_on('RFT     ',myThid) ) then
233           do j=jMin,jMax
234           do i=iMin,iMax
235            tmpdiag(i,j) = rayleighdrag * 0.5 *
236         . (maskW(i,j,kLev,bi,bj)*uVel(i,j,kLev,bi,bj)*uVel(i,j,kLev,bi,bj)+
237         .  maskW(i+1,j,kLev,bi,bj)*
238         .                uVel(i+1,j,kLev,bi,bj)*uVel(i+1,j,kLev,bi,bj)+
239         .  maskS(i,j,kLev,bi,bj)*vVel(i,j,kLev,bi,bj)*vVel(i,j,kLev,bi,bj)+
240         .  maskS(i,j+1,kLev,bi,bj)*
241         .                vVel(i,j+1,kLev,bi,bj)*vVel(i,j+1,kLev,bi,bj)) )
242         .       * 86400
243           enddo
244           enddo
245           call diagnostics_fill(tmpdiag,'RFT     ',kLev,1,2,bi,bj,myThid)
246          endif
247    
248        return        return
249        end        end
250        subroutine fizhi_tendency_apply_s(iMin, iMax, jMin, jMax,        subroutine fizhi_tendency_apply_s(iMin, iMax, jMin, jMax,
# Line 181  C======================================= Line 275  C=======================================
275    
276        integer iMin, iMax, jMin, jMax, kLev, bi, bj, myThid        integer iMin, iMax, jMin, jMax, kLev, bi, bj, myThid
277        _RL myTime        _RL myTime
278          _RL tmpdiag(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
279    
280        integer i, j        integer i, j
281    #ifdef ALLOW_DIAGNOSTICS
282          logical  diagnostics_is_on
283          external diagnostics_is_on
284    #endif
285    
286        do j=jMin,jMax        do j=jMin,jMax
287         do i=iMin,iMax         do i=iMin,iMax
# Line 191  C======================================= Line 290  C=======================================
290         enddo         enddo
291        enddo        enddo
292    
293          if(diagnostics_is_on('DIABQDYN',myThid) ) then
294           do j=jMin,jMax
295           do i=iMin,iMax
296            tmpdiag(i,j) = ( maskC(i,j,kLev,bi,bj) * gsphy(i,j,kLev,bi,bj) )
297         .    * 86400
298           enddo
299           enddo
300           call diagnostics_fill(tmpdiag,'DIABQDYN',kLev,1,2,bi,bj,myThid)
301          endif
302    
303        return        return
304        end        end

Legend:
Removed from v.1.8  
changed lines
  Added in v.1.11

  ViewVC Help
Powered by ViewVC 1.1.22