SUBROUTINE INITGD0(PTRANS,KLEV,KNI,KNJ,KIG2,CDVAR) 3 * #if defined (DOC) * ***s/r INITGD0 - Transfer input grid-point trial fields * to the model state-vector. This also involves a * transformation from true winds to wind images. * *Author : Luc Fillion *RPN/AES - Aug 92 *Revision: * P. GAUTHIER *ARMA/AES - Sept. 24, 1992 * . Restructuration of the code * P. Gauthier *ARMA/AES - May 21, 1993 * . Conversion of winds from knots to m/s * . RPN standard files require winds to be in knots * P. Koclas *CMC/CMDA February 1994 * . - Handle cdvar = 'VT' inside * routine instead of inside getfst. * P. Koclas *CMC/CMDA August 1995 * . - Handle cdvar = 'ES' as moisture variable * P. GAUTHIER *ARMA/AES - April 1996 * . Modifications on how to handle GZ and VT * S. Pellerin *ARMA/AES Sept 97. * Change from TT to GZ state variables. * J. Halle *CMDA/AES - Oct 1999 * . Added ground temperature (TG) to the model state * Y. Yang Oct. 2003 * - Added option for species * *Arguments * i : PTRANS(KNI,KNJ) : field to be transferred * i : KLEV : model level * i : KNI, KNJ : equivalent to NI, NJ. Used to dimension PTRANS * i : KIG2 : grid type according to the parameter IG2 of the * . RPN standard files. * i : CDVAR : variable type being transfer * #endif * IMPLICIT NONE C * *IMPLICITS #include "pardim.cdk"
#include "comdim.cdk"
#include "comcst.cdk"
#include "comgem.cdk"
#include "comchem.cdk"
#include "comgd0.cdk"
* ** INTEGER KLEV, KNI, KNJ, KIG2 CHARACTER*(*) CDVAR REAL*8 PTRANS(KNI,KNJ),ZCON, dix C CHARACTER*4 CLVAR INTEGER JI, JJ INTEGER NN C --------------------------------------------------- C* THE TREATMENT OF GZ AND VT IS TEMPORARY. C THESE TWO FIELDS ARE BEING PUT IN THE GZ0 FIELD C --------------------------------------------------- CLVAR=CDVAR dix=1.0D1 C C* 1. Input field is stored from North to South C 100 CONTINUE IF(KIG2.EQ.1) THEN IF(CLVAR.EQ.'UU') THEN DO JJ = 1, NJ DO JI = 1, NI UT0(JI,KLEV,JJ) = CONIMA(JJ)*PTRANS(JI,JJ)*RMSKNT END DO END DO ELSE IF(CLVAR.EQ.'VV') THEN DO JJ = 1, NJ DO JI = 1, NI VT0(JI,KLEV,JJ) = CONIMA(JJ)*PTRANS(JI,JJ)*RMSKNT END DO END DO ELSE IF(CLVAR.EQ.'CC') THEN DO JJ = 1, NJ DO JI = 1, NI VT0(JI,KLEV,JJ) = PTRANS(JI,JJ) END DO END DO ELSE IF(CLVAR.EQ.'UC') THEN DO JJ = 1, NJ DO JI = 1, NI VT0(JI,KLEV,JJ) = PTRANS(JI,JJ) END DO END DO ELSE IF(CLVAR.EQ.'PP') THEN DO JJ = 1, NJ DO JI = 1, NI UT0(JI,KLEV,JJ) = PTRANS(JI,JJ) END DO END DO ELSE IF(CLVAR.EQ.'GP') THEN ZCON = dix*RG DO JJ = 1, NJ DO JI = 1, NI GZ0(JI,KLEV,JJ) = PTRANS(JI,JJ)*ZCON END DO END DO ELSE IF(CLVAR.EQ.'GB') THEN ZCON = dix*RG DO JJ = 1, NJ DO JI = 1, NI GZ0(JI,KLEV,JJ) = PTRANS(JI,JJ)*ZCON END DO END DO ELSE IF(CLVAR.EQ.'TT') THEN DO JJ = 1, NJ DO JI = 1, NI TT0(JI,KLEV,JJ)=PTRANS(JI,JJ) END DO END DO ELSE IF(CLVAR.EQ.'UT') THEN DO JJ = 1, NJ DO JI = 1, NI TT0(JI,KLEV,JJ)=PTRANS(JI,JJ) END DO END DO ELSE IF(CLVAR.EQ.'VT') THEN DO JJ = 1, NJ DO JI = 1, NI TT0(JI,KLEV,JJ)=PTRANS(JI,JJ) END DO END DO ELSE IF(CLVAR.EQ.'GZ') THEN ZCON = dix*RG DO JJ = 1, NJ DO JI = 1, NI GZ0(JI,KLEV,JJ)=PTRANS(JI,JJ)*ZCON END DO END DO ELSE IF(CLVAR.EQ.'ES') THEN DO JJ = 1, NJ DO JI = 1, NI Q0(JI,KLEV,JJ)=PTRANS(JI,JJ) END DO END DO ELSE IF(CLVAR.EQ.'LQ') THEN DO JJ = 1, NJ DO JI = 1, NI Q0(JI,KLEV,JJ)=PTRANS(JI,JJ) END DO END DO ELSE IF(CLVAR.EQ.'HU') THEN DO JJ = 1, NJ DO JI = 1, NI Q0(JI,KLEV,JJ)=PTRANS(JI,JJ) END DO END DO ELSE IF(CLVAR.EQ.'P0') THEN ZCON = 1.D2 DO JJ = 1, NJ DO JI = 1, NI GPS0(JI,1,JJ)=ZCON*PTRANS(JI,JJ) END DO END DO ELSE IF(CLVAR.EQ.'LP') THEN DO JJ = 1, NJ DO JI = 1, NI GPS0(JI,1,JJ)=PTRANS(JI,JJ) END DO END DO ELSE IF(CLVAR.EQ.'TG') THEN DO JJ = 1, NJ DO JI = 1, NI GTG0(JI,1,JJ)=PTRANS(JI,JJ) END DO END DO ELSE IF(CLVAR.EQ.'UP') THEN ZCON = 1.D2 DO JJ = 1, NJ DO JI = 1, NI GPS0(JI,1,JJ)=ZCON*PTRANS(JI,JJ) END DO END DO ELSE DO NN= 1,NGCMT IF(CLVAR.EQ.CGCMT(NN)) THEN DO JJ = 1, NJ DO JI = 1, NI GTR0(JI,(NN-1)*NFLEV+KLEV,JJ)=PTRANS(JI,JJ) ENDDO ENDDO ENDIF ENDDO END IF C ELSE IF(KIG2.EQ.0) THEN C C* 2. Input field is stored from South to North C 200 CONTINUE C IF(CLVAR .EQ.'UU') THEN DO JJ = 1, NJ DO JI = 1, NI UT0(JI,KLEV,JJ) = CONIMA(JJ)*RMSKNT S *PTRANS(JI,NJ- JJ + 1) END DO END DO ELSE IF(CLVAR .EQ.'VV') THEN DO JJ = 1, NJ DO JI = 1, NI VT0(JI,KLEV,JJ) = CONIMA(JJ)*RMSKNT S *PTRANS(JI,NJ-JJ+1) END DO END DO ELSE IF(CLVAR .EQ.'CC') THEN DO JJ = 1, NJ DO JI = 1, NI VT0(JI,KLEV,JJ) = PTRANS(JI,NJ-JJ+1) END DO END DO ELSE IF(CLVAR .EQ.'UC') THEN DO JJ = 1, NJ DO JI = 1, NI VT0(JI,KLEV,JJ) = PTRANS(JI,NJ-JJ+1) END DO END DO ELSE IF(CLVAR .EQ.'PP') THEN DO JJ = 1, NJ DO JI = 1, NI UT0(JI,KLEV,JJ) = PTRANS(JI,NJ-JJ+1) END DO END DO ELSE IF(CLVAR.EQ.'TT') THEN DO JJ = 1, NJ DO JI = 1, NI TT0(JI,KLEV,JJ)=PTRANS(JI,NJ-JJ+1) END DO END DO ELSE IF(CLVAR.EQ.'UT') THEN DO JJ = 1, NJ DO JI = 1, NI TT0(JI,KLEV,JJ)=PTRANS(JI,NJ-JJ+1) END DO END DO ELSE IF(CLVAR.EQ.'VT') THEN DO JJ = 1, NJ DO JI = 1, NI TT0(JI,KLEV,JJ)=PTRANS(JI,NJ-JJ+1) END DO END DO ELSE IF(CLVAR.EQ.'GZ') THEN ZCON = dix*RG DO JJ = 1, NJ DO JI = 1, NI GZ0(JI,KLEV,JJ)=PTRANS(JI,NJ-JJ+1)*ZCON END DO END DO ELSE IF(CLVAR.EQ.'GP') THEN ZCON = dix*RG DO JJ = 1, NJ DO JI = 1, NI GZ0(JI,KLEV,JJ)=PTRANS(JI,NJ-JJ+1)*ZCON END DO END DO ELSE IF(CLVAR.EQ.'GB') THEN ZCON = dix*RG DO JJ = 1, NJ DO JI = 1, NI GZ0(JI,KLEV,JJ)=PTRANS(JI,NJ-JJ+1)*ZCON END DO END DO ELSE IF(CLVAR.EQ.'ES') THEN DO JJ = 1, NJ DO JI = 1, NI Q0(JI,KLEV,JJ)=PTRANS(JI,NJ-JJ+1) END DO END DO ELSE IF(CLVAR.EQ.'HU') THEN DO JJ = 1, NJ DO JI = 1, NI Q0(JI,KLEV,JJ)=PTRANS(JI,NJ-JJ+1) END DO END DO ELSE IF(CLVAR.EQ.'LQ') THEN DO JJ = 1, NJ DO JI = 1, NI Q0(JI,KLEV,JJ)=PTRANS(JI,NJ-JJ+1) END DO END DO ELSE IF(CLVAR.EQ.'P0') THEN ZCON = 1.D2 DO 241 JJ = 1, NJ DO 242 JI = 1, NI GPS0(JI,1,JJ)=ZCON*PTRANS(JI,NJ-JJ+1) 242 CONTINUE 241 CONTINUE ELSE IF(CLVAR.EQ.'LP') THEN DO JJ = 1, NJ DO JI = 1, NI GPS0(JI,1,JJ)=PTRANS(JI,NJ-JJ+1) ENDDO ENDDO ELSE IF(CLVAR.EQ.'UP') THEN ZCON = 1.D2 DO JJ = 1, NJ DO JI = 1, NI GPS0(JI,1,JJ)=ZCON*PTRANS(JI,NJ-JJ+1) ENDDO ENDDO ELSE IF(CLVAR.EQ.'TG') THEN DO JJ = 1, NJ DO JI = 1, NI GTG0(JI,1,JJ)=PTRANS(JI,NJ-JJ+1) ENDDO ENDDO ELSE DO NN= 1, NGCMT IF(CLVAR.EQ.CGCMT(NN)) THEN DO JJ = 1, NJ DO JI = 1, NI GTR0(JI,(NN-1)*NFLEV+KLEV,JJ)=PTRANS(JI,NJ-JJ+1) ENDDO ENDDO ENDIF ENDDO END IF C END IF C RETURN END