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

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

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


Revision 1.1 - (show annotations) (download)
Thu May 18 19:38:32 2006 UTC (18 years, 1 month ago) by molod
Branch: MAIN
New routine to compute sea level pressure from theta and surface geop.

1 C $Header: $
2 C $Name: $
3
4 #include "FIZHI_OPTIONS.h"
5 subroutine slprs (SLP,PZ,PTOP,PHIS,THZ,PLE,lwmask,im,jm,lm)
6 C***********************************************************************
7 C INPUT
8 C PZ ...... SURFACE PRESSURE (MB) - PTOP
9 C PTOP .... MODEL TOP PRESSURE (MB)
10 C PHIS .... SURFACE GEOPOTENTIAL (M2/S2)
11 C THZ ..... POTENTIAL TEMPERATURE (K) ON Model LEVELS
12 C grid .... Dynamics Grid Structure
13 C lwmask .. Land:(0.0) Water:(1.0) Mask
14 C
15 C OUTPUT
16 C SLP ..... SEA LEVEL PRESSURE (MB)
17 C
18 C NOTE: Level counting here for thz and ple is top down (thz(1) is top)
19 C***********************************************************************
20
21 implicit none
22
23 integer im,jm,lm
24 _RL SLP (im*jm), PZ (im*jm)
25 _RL PHIS (im*jm), THZ (im*jm,lm)
26 _RL lwmask(im*jm)
27 _RL ple(im*jm,lm+1)
28
29 _RL ZERO, ONE, TWO, BETA
30 PARAMETER(ZERO = 0.0)
31 PARAMETER(ONE = 1.0)
32 PARAMETER(TWO = 2.0)
33 PARAMETER(BETA = 0.0065)
34
35 _RL getcon,g,r,ak,cp,delp,ptop
36 integer i,L
37 _RL tm (im*jm)
38 integer Ltop (im*jm)
39
40 G = GETCON('GRAVITY')
41 R = GETCON('RGAS')
42 AK = GETCON('KAPPA')
43 CP = GETCON('CP')
44
45 C***********************************************************************
46 C* COMPUTE MEAN THETA IN PBL (100 MB) *
47 C***********************************************************************
48
49 do i=1,im*jm
50 tm(i) = 0.0
51 Ltop(i) = lm
52 enddo
53
54 do L = lm,1,-1
55 do i=1,im*jm
56 if ( ple(i,L+1).ge.(ple(i,lm+1)-100.) ) then
57 Ltop(i) = L
58 tm(i) = tm(i) + thz(i,L)*(ple(i,L+1)-ple(i,L))
59 endif
60 enddo
61 enddo
62
63 do i=1,im*jm
64 tm(i) = tm(i)/(ple(i,lm+1)-ple(i,Ltop(i)))
65 enddo
66
67 C***********************************************************************
68 C* COMPUTE SEA LEVEL PRESSURE *
69 C***********************************************************************
70
71 do i=1,im*jm
72 if( lwmask(i).eq.0.0 ) then
73 TM(I) = TM(I) * ((PZ(I)+PTOP)/1000.)**AK + BETA*PHIS(I)/(TWO*G)
74 else
75 TM(I) = THZ(I,LM)*((PZ(I)+PTOP)/1000.)**AK + BETA*PHIS(I)/(TWO*G)
76 endif
77
78 SLP(I) = PHIS(I) / ( R*TM(I) )
79 SLP(I) = ( PZ(I)+PTOP ) * EXP( SLP(I) )
80 enddo
81
82 RETURN
83 END

  ViewVC Help
Powered by ViewVC 1.1.22