SUBROUTINE VCORDADJ(IDTYP,ZVAL,IMARK,KLIST,KNELE,KNVAL,KINT,KNELOUT) 1 IMPLICIT NONE #include "cparbrp.cdk"
#include "comnumbr.cdk"
#include "cvcord.cdk"
INTEGER KNELE,KNVAL,KINT,KNELOUT INTEGER KLIST(KNELE+2) INTEGER ilemin,ilemout,ielistin(5),ielistou(5),jnel REAL*8 ZVAL(*) INTEGER IMARK(*) CHARACTER*9 CSTNID * #if defined (DOC) ************************************************************************ * * PURPOSE: SEt vertical coordinate parmeters for surface data. * -change 12192 ( t-td) element to 12203 for surface data * -change 11001 ( t-td) element to 11011 for surface data * -change 11002 ( t-td) element to 11012 for surface data * -change 12001 ( t-td) element to 12004 for surface data * * AUTHOR: P. KOCLAS (CMC/CMDA) * * Revision : * J. St-James *CMDA/SMC - July 2003 * - Move vcordsf=0. to brpacma subroutine * JM Belanger CMDA/SMC Feb 2004 * - Introduce "scatterometer family SC" * Y. Yang - Oct. 2004 * - Switched order of "cvcord.cdk" and "comnumbr.cdk" * due to the dependence of the former on JPNBRELEM * * ARGUMENTS: * INPUT: * -ZVAL : DATA BLOCK * -IMARK : MARKER DATA BLOCK * -KLIST : LIST OF BUFR ELEMENTS * -KNELE : NUMBER OF ELEMENTS IN DATA BLOCK * -KNVAL : NUMBER OF LEVELS IN DATA BLOCK * -KINT : THIRD DIMENSION OF INPUT DATA BLOCK * -KNELOUT : THIRD DIMENSION OF OUTPUT DATA BLOCK * * OUTPUT: * -MODIFIED ZVAL AND KLIST * * ************************************************************************ #endif * REAL*8 ZPROEL(JPMXNLV) REAL*8 ZEL INTEGER JJ,JN,IND1,INDEX1,IDTYP,list(254) logical llmis * ************************************************************************ * KNELOUT=KNELE C C GENERATE TABLES TO ADJUST VERTICAL COORDINATE OF SURFACE DATA C do jj=1,254 list(jj)=0 * Initialization of array "vcordsf" moved to routine BRPACMA Cjud do jn=1,jpnbrelem Cjud vcordsf(jn,jj)=0. Cjud end do end do C C UPPER AIR LAND C LIST(135)=3 LIST(136)=3 LIST(137)=3 LIST(138)=3 LIST(32)=3 LIST(34)=3 LIST(35)=3 LIST(37)=3 LIST(38)=3 LIST(159)=3 LIST(160)=3 LIST(161)=3 LIST(162)=3 C C UPPER AIR SHIP C LIST(139)=4 LIST(140)=4 LIST(141)=4 LIST(142)=4 LIST(33)=4 LIST(36)=4 C C SYNOPS C list(12)=1 list(14)=1 list(146)=1 C C SHIPS C list(13)=2 list(18)=2 list(145)=2 list(147)=2 C C SCATTEROMETER WINDS C list(254)=5 do jj=1,254 if ( jj .eq. idtyp .and. list(jj) .eq. 1 ) then C us,vs,ffs,dds vcordsf(12,jj)=10.0 vcordsf(13,jj)=10.0 vcordsf(54,jj)=10.0 vcordsf(55,jj)=10.0 C pnm vcordsf(53,jj)=0.0 C ps vcordsf(47,jj)=0.0 C ts vcordsf(10,jj)=1.5 C t-td vcordsf(9, jj)=1.5 vcordsf(11,jj)=1.5 else if ( jj .eq. idtyp .and. list(jj) .eq. 2 ) then C us,vs,ffs,dds vcordsf(12,jj)=20.0 vcordsf(13,jj)=20.0 vcordsf(54,jj)=20.0 vcordsf(55,jj)=20.0 C pnm vcordsf(53,jj)=0.0 C ps vcordsf(47,jj)=0.0 C ts vcordsf(10,jj)=11.5 C t-td vcordsf(9 ,jj)=11.5 vcordsf(11,jj)=11.5 else if ( jj .eq. idtyp .and. list(jj) .eq. 3 ) then C us,vs,ffs,dds vcordsf(12,jj)=10.0 vcordsf(13,jj)=10.0 vcordsf(54,jj)=10.0 vcordsf(55,jj)=10.0 C pnm vcordsf(53,jj)=0.0 C ps vcordsf(47,jj)=0.0 C ts vcordsf(10,jj)=1.5 C t-td vcordsf(9, jj)=0.0 vcordsf(11, jj)=1.5 else if ( jj .eq. idtyp .and. list(jj) .eq. 4 ) then C us,vs,ffs,dds vcordsf(12,jj)=20.0 vcordsf(13,jj)=20.0 vcordsf(54,jj)=20.0 vcordsf(55,jj)=20.0 C pnm vcordsf(53,jj)=0.0 C ps vcordsf(47,jj)=0.0 C ts vcordsf(10,jj)=1.5 C t-td vcordsf(9, jj)=0.0 vcordsf(11, jj)=1.5 else if ( jj .eq. idtyp .and. list(jj) .eq. 5 ) then vcordsf(12,jj)=10.0 vcordsf(13,jj)=10.0 vcordsf(54,jj)=10.0 vcordsf(55,jj)=10.0 else endif end do c c dd c ielistin(1)=NEDD ielistou(1)=NEDS c c ff C ielistin(2)=NEFF ielistou(2)=NEFS c c t-td c ielistin(3)=NEES ielistou(3)=NESS c C temperature c ielistin(4)=NETT ielistou(4)=NETS c C eliminate gz from cma C ielistin(5)=NEGZ ielistou(5)=12345 c DO 223 JN=1,KINT do jnel=1,5 ilemin=ielistin(jnel) ilemout=ielistou(jnel) CALL GETELE(ilemin,JN,KLIST,ZVAL,ZPROEL,KNELE,KNVAL,KINT,IND1) IF ( (IND1 .NE. -1) ) THEN * ************************************************************************ * TRANSFORM ilemin element to ilemout ( surface data only) ************************************************************************ * DO 334 JJ=1,KNVAL * INDEX1=IND1 + (JJ-1)*(KNELOUT)+(JN-1)*(KNVAL)*(KNELOUT) llmis=( ZPROEL(JJ) .eq. PPMIS ) IF ( .NOT. LLMIS .AND. list(idtyp) .ne. 0) THEN Cjud + .and. nvcordtyp .eq. 1) THEN KLIST(IND1)=ilemout * ************************************************************************ * ZEL=ZPROEL(JJ) *============================================= C ZVAL (INDEX1)=ZEL ENDIF C *============================================= 334 CONTINUE * ENDIF end do 223 CONTINUE C C 1234 format( a16,2x,a9,2x,i3,5(f9.3,2x) ) RETURN END