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

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

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


Revision 1.1 - (show 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 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