5 public :: polfixs, polfixv
9 SUBROUTINE polfixs(NM,NX,KM,RLAT,IB,LO,GO)
42 INTEGER,
INTENT(IN ) :: NM, NX, KM
43 INTEGER,
INTENT(IN ) :: IB(KM)
45 LOGICAL*1,
INTENT(INOUT) :: LO(NX,KM)
47 REAL,
INTENT(IN ) :: RLAT(NM)
48 REAL,
INTENT(INOUT) :: GO(NX,KM)
50 REAL,
PARAMETER :: RLATNP=89.9995
51 REAL,
PARAMETER :: RLATSP=-rlatnp
55 REAL :: WNP, GNP, TNP, WSP, GSP, TSP
67 IF(rlat(n).GE.rlatnp)
THEN
69 IF(ib(k).EQ.0.OR.lo(n,k))
THEN
73 ELSEIF(rlat(n).LE.rlatsp)
THEN
75 IF(ib(k).EQ.0.OR.lo(n,k))
THEN
91 IF(rlat(n).GE.rlatnp)
THEN
92 IF(ib(k).NE.0) lo(n,k)=tnp.GE.wnp/2
106 IF(rlat(n).LE.rlatsp)
THEN
107 IF(ib(k).NE.0) lo(n,k)=tsp.GE.wsp/2
115 END SUBROUTINE polfixs
118 SUBROUTINE polfixv(NM,NX,KM,RLAT,RLON,IB,LO,UO,VO)
155 INTEGER,
INTENT(IN ) :: IB(KM), NM, NX, KM
157 LOGICAL*1,
INTENT(INOUT) :: LO(NX,KM)
159 REAL,
INTENT(IN ) :: RLAT(NM), RLON(NM)
160 REAL,
INTENT(INOUT) :: UO(NX,KM), VO(NX,KM)
162 REAL,
PARAMETER :: RLATNP=89.9995
163 REAL,
PARAMETER :: RLATSP=-rlatnp
164 REAL,
PARAMETER :: PI=3.14159265358979
165 REAL,
PARAMETER :: DPR=180./pi
169 REAL :: CLON(NM),SLON(NM)
170 REAL :: TNP, UNP, VNP, WNP
171 REAL :: TSP, USP, VSP, WSP
175 clon(n)=cos(rlon(n)/dpr)
176 slon(n)=sin(rlon(n)/dpr)
192 IF(rlat(n).GE.rlatnp)
THEN
194 IF(ib(k).EQ.0.OR.lo(n,k))
THEN
195 unp=unp+(clon(n)*uo(n,k)-slon(n)*vo(n,k))
196 vnp=vnp+(slon(n)*uo(n,k)+clon(n)*vo(n,k))
199 ELSEIF(rlat(n).LE.rlatsp)
THEN
201 IF(ib(k).EQ.0.OR.lo(n,k))
THEN
202 usp=usp+(clon(n)*uo(n,k)+slon(n)*vo(n,k))
203 vsp=vsp+(-slon(n)*uo(n,k)+clon(n)*vo(n,k))
211 IF(tnp.GE.wnp/2)
THEN
220 IF(rlat(n).GE.rlatnp)
THEN
221 IF(ib(k).NE.0) lo(n,k)=tnp.GE.wnp/2
222 uo(n,k)=clon(n)*unp+slon(n)*vnp
223 vo(n,k)=-slon(n)*unp+clon(n)*vnp
229 IF(tsp.GE.wsp/2)
THEN
238 IF(rlat(n).LE.rlatsp)
THEN
239 IF(ib(k).NE.0) lo(n,k)=tsp.GE.wsp/2
240 uo(n,k)=clon(n)*usp-slon(n)*vsp
241 vo(n,k)=slon(n)*usp+clon(n)*vsp
248 END SUBROUTINE polfixv