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

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

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

revision 1.4 by molod, Fri Oct 22 17:56:03 2004 UTC revision 1.8 by molod, Sat May 21 23:50:13 2005 UTC
# Line 35  C ************************************** Line 35  C **************************************
35    
36        implicit none        implicit none
37    
 #ifdef ALLOW_DIAGNOSTICS  
 #include "SIZE.h"  
 #include "diagnostics_SIZE.h"  
 #include "diagnostics.h"  
 #endif  
   
38        integer myid,im,jm,lm,bi,bj        integer myid,im,jm,lm,bi,bj
39        _RL zsurf(im,jm),pres(im,jm,lm),pkap(im,jm,lm)        _RL zsurf(im,jm),pres(im,jm,lm),pkap(im,jm,lm)
40        _RL pekap(im,jm,lm+1)        _RL pekap(im,jm,lm+1)
# Line 52  C ************************************** Line 46  C **************************************
46        _RL z(im,jm,lm)        _RL z(im,jm,lm)
47        _RL dz(im,jm,lm)        _RL dz(im,jm,lm)
48        _RL cpog, cpinv, virtcon, getcon, dampcoef        _RL cpog, cpinv, virtcon, getcon, dampcoef
49    #ifdef ALLOW_DIAGNOSTICS
50          logical  diagnostics_is_on
51          external diagnostics_is_on
52          _RL tmpdiag(im,jm)
53    #endif
54    
55  C **********************************************************************  C **********************************************************************
56  C ****   APPLY RAYLEIGH FRICTION TO WIND (INCLUDE HEATING)           ***  C ****   APPLY RAYLEIGH FRICTION TO WIND (INCLUDE HEATING)           ***
# Line 71  C ************************************** Line 70  C **************************************
70         enddo         enddo
71        enddo        enddo
72    
       do L=1,lm  
        do j=1,jm  
        do i=1,im  
         dz(i,j,L) = cpog * (pekap(i,j,L+1)-pekap(i,j,L)) * t(i,j,L) *  
      .                (1.+virtcon*s(i,j,L))  
        enddo  
        enddo  
       enddo  
   
73        do j=1,jm        do j=1,jm
74        do i=1,im        do i=1,im
75         z(i,j,lm) = zsurf(i,j) +  0.5 * dz(i,j,lm)         z(i,j,lm) = zsurf(i,j) +  0.5 * dz(i,j,lm)
# Line 97  C ************************************** Line 87  C **************************************
87        do L=1,lm        do L=1,lm
88         do j=1,jm         do j=1,jm
89         do i=1,im         do i=1,im
90          rf(i,j,L) = dampcoef*(1+tanh((z(i,j,L)-80000.)/5000.))/86400.          rf(i,j,L) = dampcoef*(1+tanh((z(i,j,L)-50000.)/5000.))/86400.
91          rfu(i,j,L) = - rf(i,j,L) * u(i,j,L)          rfu(i,j,L) = - rf(i,j,L) * u(i,j,L)
92          rfv(i,j,L) = - rf(i,j,L) * v(i,j,L)          rfv(i,j,L) = - rf(i,j,L) * v(i,j,L)
93          rft(i,j,L) = -(u(i,j,L)*rfu(i,j,L) + v(i,j,L)*rfv(i,j,L) )*cpinv          rft(i,j,L) = -(u(i,j,L)*rfu(i,j,L) + v(i,j,L)*rfv(i,j,L) )*cpinv
# Line 108  C ************************************** Line 98  C **************************************
98    
99  #ifdef ALLOW_DIAGNOSTICS  #ifdef ALLOW_DIAGNOSTICS
100        do L=1,lm        do L=1,lm
101         if( irfu.ne.0 ) then  
102          if(diagnostics_is_on('RFU     ',myid) ) then
103         do j=1,jm         do j=1,jm
104         do i=1,im         do i=1,im
105          qdiag(i,j,irfu+L-1,bi,bj) = qdiag(i,j,irfu+L-1,bi,bj) +          tmpdiag(i,j) = rfu(i,j,L)*86400
      .                  rfu(i,j,L)*86400  
106         enddo         enddo
107         enddo         enddo
108         endif         call diagnostics_fill(tmpdiag,'RFU     ',L,1,3,bi,bj,myid)
109          endif
110    
111         if( irfv.ne.0 ) then        if(diagnostics_is_on('RFV     ',myid) ) then
112         do j=1,jm         do j=1,jm
113         do i=1,im         do i=1,im
114          qdiag(i,j,irfv+L-1,bi,bj) = qdiag(i,j,irfv+L-1,bi,bj) +          tmpdiag(i,j) = rfv(i,j,L)*86400
      .                  rfv(i,j,L)*86400  
115         enddo         enddo
116         enddo         enddo
117         endif         call diagnostics_fill(tmpdiag,'RFV     ',L,1,3,bi,bj,myid)
118          endif
119    
120         if( irft.ne.0 ) then        if(diagnostics_is_on('RFT     ',myid) ) then
121         do j=1,jm         do j=1,jm
122         do i=1,im         do i=1,im
123          qdiag(i,j,irft+L-1,bi,bj) = qdiag(i,j,irft+L-1,bi,bj) +          tmpdiag(i,j) = rft(i,j,L)*86400
      .                  rft(i,j,L)*86400  
124         enddo         enddo
125         enddo         enddo
126         endif         call diagnostics_fill(tmpdiag,'RFT     ',L,1,3,bi,bj,myid)
       enddo  
 #endif  
   
 #ifdef ALLOW_DIAGNOSTICS  
       if( (bi.eq.1) .and. (bj.eq.1) ) then  
        nrfu = nrfu + 1  
        nrfv = nrfv + 1  
        nrft = nrft + 1  
127        endif        endif
128    
129          enddo
130  #endif  #endif
131    
132        return        return

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

  ViewVC Help
Powered by ViewVC 1.1.22