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

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

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


Revision 1.1 - (hide annotations) (download)
Wed Oct 20 18:27:36 2004 UTC (19 years, 8 months ago) by molod
Branch: MAIN
Rayleigh friction calculation - damping of top layer winds (plus associated heating)

1 molod 1.1 C $Header: $
2     C $Name: $
3    
4     #include "FIZHI_OPTIONS.h"
5     subroutine rayleigh(myid,pres,preskappa,psurf,u,v,im,jm,lm,bi,bj,
6     . rfu,rfv,rft)
7     C **********************************************************************
8     C
9     C PURPOSE
10     C To implement Rayleigh Friction
11     C
12     C ARGUMENTS DESCRIPTION
13     C MYID .... PROCESS(OR) NUMBER
14     C PRES .... VALUE OF MID-LEVEL PRESSURE
15     C PZ ...... VALUE OF SURFACE PRESSURE - PTOP
16     C UZ ...... VALUE OF U-WIND IN MODEL FOR N-1 TIME STEP
17     C VZ ...... VALUE OF V-WIND IN MODEL FOR N-1 TIME STEP
18     C IM ...... NUMBER OF LONGITUDE POINTS IN MODEL
19     C JM ...... NUMBER OF LATITUDE POINTS IN MODEL
20     C LM ...... NUMBER OF VERTICAL LEVELS IN MODEL
21     C BI ...... X-DIRECTION PROCESSOR INDEX
22     C BJ ...... Y-DIRECTION PROCESSOR INDEX
23     C RFU ..... VALUE OF U-WIND TENDENCY
24     C RFV ..... VALUE OF V-WIND TENDENCY
25     C RFT ..... VALUE OF THETA TENDENCY
26     C
27     C **********************************************************************
28    
29     implicit none
30    
31     #ifdef ALLOW_DIAGNOSTICS
32     #include "SIZE.h"
33     #include "diagnostics_SIZE.h"
34     #include "diagnostics.h"
35     #endif
36    
37     integer myid,im,jm,lm,bi,bj
38    
39     real psurf(im,jm)
40     real pres(im,jm,lm)
41     real preskappa(im,jm,lm)
42     real u(im,jm,lm)
43     real v(im,jm,lm)
44     real rfu(im,jm,lm)
45     real rfv(im,jm,lm)
46     real rft(im,jm,lm)
47    
48     integer i,j,L
49     real rf(im,jm,lm)
50     real z(im,jm,lm)
51     real z1(im,jm,lm)
52     real z2(im,jm,lm)
53     real cpinv, getcon
54    
55     C **********************************************************************
56     C **** APPLY RAYLEIGH FRICTION TO WIND TENDENCIES ***
57     C **********************************************************************
58    
59     cpinv = 1.0/getcon('CP')
60    
61     do L=1,lm
62    
63     do j=1,jm
64     do i=1,im
65    
66     z1(i,j,L) = -7e2*log(pres(i,j,1)/psurf(i,j))
67     z2(i,j,L) = -7e3*log(pres(i,j,2)/psurf(i,j))
68     z(i,j,L) = -7e3*log(pres(i,j,L)/psurf(i,j))
69     rf(i,j,L) = 0.40*(1+tanh((z(i,j,L)-z2(i,j,L))/z1(i,j,L)))/86400
70    
71     rfu(i,j,L) = - rf(i,j,L) * u(i,j,L)
72     rfv(i,j,L) = - rf(i,j,L) * v(i,j,L)
73     rft(i,j,L) = -(u(i,j,L)*rfu(i,j,L) + v(i,j,L)*rfv(i,j,L) )*cpinv
74     . /preskappa(i,j,L)
75    
76     enddo
77     enddo
78    
79     if( irfu.ne.0 ) then
80     do j=1,jm
81     do i=1,im
82     qdiag(i,j,irfu+L-1,bi,bj) = qdiag(i,j,irfu+L-1,bi,bj) +
83     . rfu(i,j,L)*86400
84     enddo
85     enddo
86     endif
87    
88     if( irfv.ne.0 ) then
89     do j=1,jm
90     do i=1,im
91     qdiag(i,j,irfv+L-1,bi,bj) = qdiag(i,j,irfv+L-1,bi,bj) +
92     . rfv(i,j,L)*86400
93     enddo
94     enddo
95     endif
96    
97     if( irft.ne.0 ) then
98     do j=1,jm
99     do i=1,im
100     qdiag(i,j,irft+L-1,bi,bj) = qdiag(i,j,irft+L-1,bi,bj) +
101     . rft(i,j,L)*86400
102     enddo
103     enddo
104     endif
105    
106     enddo
107    
108     nrfu = nrfu + 1
109     nrfv = nrfv + 1
110     nrft = nrft + 1
111    
112     return
113     end

  ViewVC Help
Powered by ViewVC 1.1.22