Page MenuHomec4science

slprs.F
No OneTemporary

File Metadata

Created
Sun, Jul 6, 21:06
C $Header: /u/gcmpack/MITgcm/pkg/fizhi/slprs.F,v 1.4 2009/04/02 20:54:03 jmc Exp $
C $Name: $
#include "FIZHI_OPTIONS.h"
subroutine slprs (PHIS,PLE,THZ,lwmask,im,jm,lm,SLP)
C**********************************************************************
C INPUT
C PHIS .... SURFACE GEOPOTENTIAL (M2/S2)
C THZ ..... POTENTIAL TEMPERATURE (K) ON Model LEVELS
C grid .... Dynamics Grid Structure
C lwmask .. Land:(0.0) Water:(1.0) Mask
C
C OUTPUT
C SLP ..... SEA LEVEL PRESSURE (MB)
C
C NOTE: Level counting here for thz and ple is top down (thz(1) is top)
C***********************************************************************
implicit none
integer im,jm,lm
_RL SLP (im*jm)
_RL PHIS (im*jm), THZ (im*jm,lm)
_RL lwmask(im*jm)
_RL ple(im*jm,lm+1)
_RL TWO, BETA
PARAMETER(TWO = 2.0)
PARAMETER(BETA = 0.0065)
_RL getcon,g,r,ak
integer i,L
_RL tm (im*jm)
integer Ltop (im*jm)
G = GETCON('GRAVITY')
R = GETCON('RGAS')
AK = GETCON('KAPPA')
C***********************************************************************
C* COMPUTE MEAN THETA IN PBL (100 MB) *
C***********************************************************************
do i=1,im*jm
tm(i) = 0.0
Ltop(i) = lm
enddo
do L = lm,1,-1
do i=1,im*jm
if ( ple(i,L+1).ge.(ple(i,lm+1)-100.) ) then
Ltop(i) = L
tm(i) = tm(i) + thz(i,L)*(ple(i,L+1)-ple(i,L))
endif
enddo
enddo
do i=1,im*jm
tm(i) = tm(i)/(ple(i,lm+1)-ple(i,Ltop(i)))
enddo
C***********************************************************************
C* COMPUTE SEA LEVEL PRESSURE *
C***********************************************************************
do i=1,im*jm
if( lwmask(i).ne.0.0 ) then
TM(I) = TM(I) * (PLE(I,LM+1)/1000.)**AK + BETA*PHIS(I)/(TWO*G)
else
TM(I) = THZ(I,LM)*(PLE(I,LM+1)/1000.)**AK + BETA*PHIS(I)/(TWO*G)
endif
SLP(I) = PHIS(I) / ( R*TM(I) )
SLP(I) = PLE(I,LM+1) * EXP( SLP(I) )
enddo
RETURN
END

Event Timeline