From wd20mi@hp44.scd.ucar.EDU Thu Jun 20 10:28:05 1996 Message-Id: <199606201628.KAA15764@niwot.scd.ucar.EDU> Received: from hp44 by niwot.scd.ucar.EDU (NCAR Local/ NCAR Mail Server 04/10/90) id KAA15764; Thu, 20 Jun 1996 10:28:00 -0600 (MDT) Received: by hp44 (1.38.193.4/16.2) id AA27805; Thu, 20 Jun 1996 12:25:02 -0400 From: Mark Iredell Subject: Re: reanalysis sigma to pressure levels To: joseph@niwot.scd.ucar.edu (Dennis Joseph) (Dennis Joseph) Date: Thu, 20 Jun 96 12:25:02 EDT In-Reply-To: <199606200029.SAA05570@royal.scd.ucar.edu>; from "Dennis Joseph" at Jun 19, 96 6:29 pm Mailer: Elm [revision: 70.85] Status: R Dennis, Here is the operational version of SIG2P. I hope it is self-explanatory enough. Except for below ground values, it is simply linear in log pressure. Mark C----------------------------------------------------------------------- CFPP$ NOCONCUR R SUBROUTINE SIG2P(IM,IX,KM,SI,SL, & PS,US,VS,OS,ZS,ZI,TS,RS,QS,CLS,O3S, & KO,PO,LPCL,LPO3,UP,VP,OP,ZP,TP,RP,CLP,O3P) C$$$ SUBPROGRAM DOCUMENTATION BLOCK C C SUBPROGRAM: SIG2P SIGMA TO PRESSURE INTERPOLATION C PRGMMR: IREDELL ORG: W/NMC23 DATE: 92-10-31 C C ABSTRACT: INTERPOLATES WINDS, OMEGA, HEIGHT, TEMPERATURE AND HUMIDITY C FROM THE SIGMA COORDINATE SYSTEM TO THE MANDATORY PRESSURE LEVELS. C ASSUMES THAT RELATIVE HUMIDITY, TEMPERATURE, GEOPOTENTIAL HEIGHTS, C WIND COMPONENTS AND VERTICAL VELOCITY VARY LINEARLY IN THE VERTICAL C WITH THE LOG OF PRESSURE. UNDERGROUND HEIGHTS ARE OBTAINED USING C THE SHUELL METHOD AND UNDERGROUND TEMPERATURES ARE OBTAINED USING C A CONSTANT MOIST ADIABATIC LAPSE RATE. HEIGHTS ABOVE THE TOP SIGMA C LEVEL ARE INTEGRATED HYDROSTATICALLY. OTHERWISE FIELDS ARE HELD C CONSTANT OUTSIDE THE SIGMA STRUCTURE AND NO EXTRAPOLATION IS DONE. C C PROGRAM HISTORY LOG: C 92-10-31 SELA,NEWELL,GERRITY,BALLISH,DEAVEN,IREDELL C C USAGE: CALL SIG2P(IM,IX,KM,SI,SL, C & PS,US,VS,OS,ZS,ZI,TS,RS,QS,CLS,O3S, C & KO,PO,UP,VP,OP,ZP,TP,RP,CLP,O3P) C C INPUT ARGUMENT LIST: C IM - INTEGER NUMBER OF POINTS C IX - INTEGER FIRST DIMENSION OF UPPER AIR DATA C KM - INTEGER NUMBER OF SIGMA LEVELS C SI - REAL (KM+1) SIGMA INTERFACE VALUES C SL - REAL (KM) SIGMA VALUES C PS - REAL (IM) SURFACE PRESSURE IN KPA C US - REAL (IX,KM) ZONAL WIND IN M/S C VS - REAL (IX,KM) MERID WIND IN M/S C OS - REAL (IX,KM) VERTICAL VELOCITY IN PA/S C ZS - REAL (IX,KM) HEIGHTS ON THE FULL LEVELS IN M C ZI - REAL (IX,KM) HEIGHTS ON THE INTERFACES IN M C TS - REAL (IX,KM) TEMPERATURE IN K C RS - REAL (IX,KM) RELATIVE HUMIDITY IN PERCENT C QS - REAL (IX,KM) SPECIFIC HUMIDITY IN KG/KG C CLS - REAL (IX,KM) CLOUD WATER IN KG/KG C O3S - REAL (IX,KM) OZONE IN KG/KG C TRS - REAL (IX,KM,NT) TRACERS IN KG/KG C KO - INTEGER NUMBER OF PRESSURE LEVELS C PO - REAL (KO) MANDATORY PRESSURES IN KPA C LPCL - LOGICAL TRUE TO POST CLOUD WATER C LPO3 - LOGICAL TRUE TO POST OZONE C C OUTPUT ARGUMENT LIST: C UP - REAL (IX,KO) ZONAL WIND IN M/S C VP - REAL (IX,KO) MERID WIND IN M/S C OP - REAL (IX,KO) VERTICAL VELOCITY IN PA/S C ZP - REAL (IX,KO) HEIGHTS IN M C TP - REAL (IX,KO) TEMPERATURE IN K C RP - REAL (IX,KO) RELATIVE HUMIDITY IN PERCENT C CLP - REAL (IX,KO) CLOUD WATER IN KG/KG C O3P - REAL (IX,KO) OZONE IN KG/KG C C SUBPROGRAMS CALLED: C ISRCHFLT - FIND FIRST VALUE IN AN ARRAY LESS THAN TARGET VALUE C C ATTRIBUTES: C LANGUAGE: CRAY FORTRAN C C$$$ DIMENSION SI(KM+1),SL(KM),PS(IM) DIMENSION US(IX,KM),VS(IX,KM),OS(IX,KM) DIMENSION ZS(IX,KM),ZI(IX,KM),TS(IX,KM),RS(IX,KM),QS(IX,KM) DIMENSION CLS(IX,KM),O3S(IX,KM) DIMENSION PO(KO) LOGICAL LPCL,LPO3 DIMENSION UP(IX,KO),VP(IX,KO),OP(IX,KO) DIMENSION ZP(IX,KO),TP(IX,KO),RP(IX,KO) DIMENSION CLP(IX,KO),O3P(IX,KO) DIMENSION ASI(2:KM),ASL(KM),APO(KO),APS(IM) PARAMETER(G= 9.8000E+0 ,RD= 2.8705E+2 ,RV= 4.6150E+2 ) PARAMETER(ROG=RD/G,FVIRT=RV/RD-1.) PARAMETER(GAMMAM=-6.5E-3,ZSHUL=75.,TVSHUL=290.66) C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - C COMPUTE LOG PRESSURES FOR INTERPOLATION ASI=LOG(SI(2:KM)) ASL=LOG(SL) APO=LOG(PO) APS=LOG(PS) APSMIN=APS(ISMIN(IM,APS,1)) APSMAX=APS(ISMAX(IM,APS,1)) C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - C DETERMINE SIGMA LAYERS BRACKETING PRESSURE LAYER. C WITHIN SIGMA STRUCTURE, INTERPOLATE FIELDS LINEARLY IN LOG PRESSURE C BETWEEN BRACKETING FULL SIGMA LAYERS EXCEPT HEIGHTS ARE INTERPOLATED C BETWEEN THE NEAREST FULL SIGMA LAYER AND THE NEAREST SIGMA INTERFACE KD1=1 DO K=1,KO IF(KM-1-KD1.GT.0) & KD1=KD1+ISRCHFLT(KM-1-KD1,ASL(KD1+1),1,APO(K)-APSMIN)-1 KD2=KD1 IF(KM-1-KD2.GT.0) & KD2=KD2+ISRCHFLT(KM-1-KD2,ASL(KD2+1),1,APO(K)-APSMAX)-1 DO KD=KD1,KD2 KU=KD+1 DO I=1,IM ASK=APO(K)-APS(I) IF(ASK.LE.ASL(KD).AND.ASK.GT.ASL(KU)) THEN WU=(ASL(KD)-ASK)/(ASL(KD)-ASL(KD+1)) WD=1.-WU UP(I,K)=WU*US(I,KU)+WD*US(I,KD) VP(I,K)=WU*VS(I,KU)+WD*VS(I,KD) OP(I,K)=WU*OS(I,KU)+WD*OS(I,KD) KI=KD+1 DI=ASI(KI)-ASK KL=NINT(KI-0.5+SIGN(0.5,DI)) WL=DI/(ASI(KI)-ASL(KL)) WI=1.-WL ZP(I,K)=WI*ZI(I,KI)+WL*ZS(I,KL) TP(I,K)=WU*TS(I,KU)+WD*TS(I,KD) RP(I,K)=WU*RS(I,KU)+WD*RS(I,KD) IF(LPCL) CLP(I,K)=WU*CLS(I,KU)+WD*CLS(I,KD) IF(LPO3) O3P(I,K)=WU*O3S(I,KU)+WD*O3S(I,KD) ENDIF ENDDO ENDDO C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - C INTERPOLATE SIGMA TO PRESSURE OUTSIDE THE MODEL DOMAIN DO I=1,IM ASK=APO(K)-APS(I) C BELOW GROUND USE SHUELL METHOD TO OBTAIN HEIGHT, CONSTANT LAPSE RATE C TO OBTAIN TEMPERATURE, AND HOLD OTHER FIELDS CONSTANT IF(ASK.GT.0.) THEN UP(I,K)=US(I,1) VP(I,K)=VS(I,1) OP(I,K)=OS(I,1) TVSF=TS(I,1)*(1.+FVIRT*QS(I,1))-GAMMAM*(ZS(I,1)-ZI(I,1)) IF(ZI(I,1).GT.ZSHUL) THEN TVSL=TVSF-GAMMAM*ZI(I,1) IF(TVSL.GT.TVSHUL) THEN IF(TVSF.GT.TVSHUL) THEN TVSL=TVSHUL-5.E-3*(TVSF-TVSHUL)**2 ELSE TVSL=TVSHUL ENDIF ENDIF GAMMAS=(TVSF-TVSL)/ZI(I,1) ELSE GAMMAS=0. ENDIF PART=ROG*ASK ZP(I,K)=ZI(I,1)-TVSF*PART/(1.+0.5*GAMMAS*PART) TP(I,K)=TS(I,1)+GAMMAM*(ZP(I,K)-ZS(I,1)) RP(I,K)=RS(I,1) IF(LPCL) CLP(I,K)=CLS(I,1) IF(LPO3) O3P(I,K)=O3S(I,1) C BETWEEN BOTTOM SIGMA AND GROUND INTERPOLATE HEIGHT, C EXTRAPOLATE TEMPERATURE AND HOLD OTHER FIELDS CONSTANT ELSEIF(ASK.GE.ASL(1)) THEN UP(I,K)=US(I,1) VP(I,K)=VS(I,1) OP(I,K)=OS(I,1) WL=ASK/ASL(1) WI=1.-WL ZP(I,K)=WI*ZI(I,1)+WL*ZS(I,1) WU=(ASL(1)-ASK)/(ASL(1)-ASL(2)) WD=1.-WU TP(I,K)=WU*TS(I,2)+WD*TS(I,1) RP(I,K)=RS(I,1) IF(LPCL) CLP(I,K)=CLS(I,1) IF(LPO3) O3P(I,K)=O3S(I,1) C ABOVE TOP SIGMA INTEGRATE HEIGHT HYDROSTATICALLY C AND HOLD OTHER FIELDS CONSTANT ELSEIF(ASK.LE.ASL(KM)) THEN UP(I,K)=US(I,KM) VP(I,K)=VS(I,KM) OP(I,K)=OS(I,KM) TVKM=TS(I,KM)*(1.+FVIRT*QS(I,KM)) ZP(I,K)=ZS(I,KM)+ROG*TVKM*(ASL(KM)-ASK) TP(I,K)=TS(I,KM) RP(I,K)=RS(I,KM) IF(LPCL) CLP(I,K)=CLS(I,KM) IF(LPO3) O3P(I,K)=O3S(I,KM) ENDIF ENDDO ENDDO C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - RETURN END