* PACKAGE IAVRG 
*
*"   [HIS] 90/11/02(numaguti) Original
*"         93/05/27(takepiro) bug fix
*
************************************************************************
      SUBROUTINE XAVR         
     I         ( GDATA , HCORD ,
     O           GDATAO, IMAXD , JMAXD , KMAXD  )
*
*   [PARAM] 




* PACKAGE  ZXT10L32 !" 格子点数，波数 X-Z
*
      INTEGER     IMAX           !" 経度格子数
      INTEGER     JMAX           !" 緯度格子数
      INTEGER     IDIM           !" 経度配列サイズ
      INTEGER     JDIM           !" 緯度配列サイズ
      INTEGER     MMAX           !" 最大東西波数
      INTEGER     LMAX           !" 最大南北波数
      INTEGER     NMAX           !" 最大全波数
      INTEGER     MINT           !" 東西波数間隔
      INTEGER     KMAX           !" 鉛直層数
      INTEGER     KDIM           !" 鉛直配列サイズ
      INTEGER     NMDIM          !" 水平波数成分数
      INTEGER     JMXHF          !" JMAX/2+1
      INTEGER     NWORK          !" ワーク領域大きさ
*
      PARAMETER ( IMAX  = 32,     JMAX =  1,
     &            IDIM  = IMAX+1, JDIM = JMAX,
     &            MMAX  = 10,     LMAX =  0,    NMAX = MMAX, MINT = 1,
     &            KMAX  = 32,     KDIM = KMAX,
     &            NMDIM = (MMAX/MINT+1)*(2*(NMAX+1)-MMAX)
     &                  - (NMAX-LMAX)/MINT*(NMAX-LMAX+1),
     &            JMXHF = JMAX/2+1,
     &            NWORK = IDIM*JDIM*KMAX*12                       )

*
*   [INPUT] 
      ReaL*8       GDATA ( IDIM, JDIM, *  )
      CHARACTER  HCORD *(*)
*
*   [OUTPUT] 
      ReaL*8       GDATAO( IDIM, JDIM, *  )
      INTEGER    IMAXD, JMAXD, KMAXD
*
*   [INTERNAL WORK] 
      ReaL*8       DLON   ( IMAX )             
      ReaL*8       DLAT   ( JMAX )             
      ReaL*8       DSIG   ( KMAX+1 )           
*
      INTEGER    I, J, K, KLEVS
      ReaL*8       TLON
*
      CALL HQCORD
     I   ( HCORD ,
     O     DLON  , DLAT  , DSIG  ,
     O     KLEVS                   )
*
      IMAXD = 1
      JMAXD = JMAX
      KMAXD = KLEVS
*
      CALL RESET ( GDATAO, IDIM*JDIM*KLEVS )
      TLON = 0.  
*
      DO 1100 I = 1, IMAX
         DO 1110 K = 1, KLEVS
            DO 1110 J = 1, JDIM
               GDATAO( 1,J,K ) = GDATAO( 1,J,K )
     &                         + GDATA ( I,J,K ) * DLON( I )
 1110    CONTINUE
         TLON = TLON + DLON( I )
 1100 CONTINUE
*
      DO 1200 K = 1, KLEVS
         DO 1200 J = 1, JDIM
               GDATAO( 1,J,K ) =  GDATAO( 1,J,K ) / TLON
 1200 CONTINUE
*
      RETURN
      END
************************************************************************
      SUBROUTINE ZAVR        
     I         ( GDATA , HCORD ,
     O           GDATAO, IMAXD , JMAXD , KMAXD  )
*
*   [PARAM] 




* PACKAGE  ZXT10L32 !" 格子点数，波数 X-Z
*
      INTEGER     IMAX           !" 経度格子数
      INTEGER     JMAX           !" 緯度格子数
      INTEGER     IDIM           !" 経度配列サイズ
      INTEGER     JDIM           !" 緯度配列サイズ
      INTEGER     MMAX           !" 最大東西波数
      INTEGER     LMAX           !" 最大南北波数
      INTEGER     NMAX           !" 最大全波数
      INTEGER     MINT           !" 東西波数間隔
      INTEGER     KMAX           !" 鉛直層数
      INTEGER     KDIM           !" 鉛直配列サイズ
      INTEGER     NMDIM          !" 水平波数成分数
      INTEGER     JMXHF          !" JMAX/2+1
      INTEGER     NWORK          !" ワーク領域大きさ
*
      PARAMETER ( IMAX  = 32,     JMAX =  1,
     &            IDIM  = IMAX+1, JDIM = JMAX,
     &            MMAX  = 10,     LMAX =  0,    NMAX = MMAX, MINT = 1,
     &            KMAX  = 32,     KDIM = KMAX,
     &            NMDIM = (MMAX/MINT+1)*(2*(NMAX+1)-MMAX)
     &                  - (NMAX-LMAX)/MINT*(NMAX-LMAX+1),
     &            JMXHF = JMAX/2+1,
     &            NWORK = IDIM*JDIM*KMAX*12                       )

*   [INPUT] 
      ReaL*8       GDATA ( IDIM, JDIM, *  )
      CHARACTER  HCORD *(*)
*
*   [OUTPUT]
      ReaL*8       GDATAO( IDIM, JDIM, *  )
      INTEGER    IMAXD, JMAXD, KMAXD
*
*   [INTERNAL WORK] 
      ReaL*8       DLON   ( IMAX )             
      ReaL*8       DLAT   ( JMAX )             
      ReaL*8       DSIG   ( KMAX+1 )           
*
      INTEGER    I, J, K, KLEVS
      ReaL*8       TSIG
*
      CALL HQCORD
     I   ( HCORD ,
     O     DLON  , DLAT  , DSIG  ,
     O     KLEVS                   )
*
      IMAXD = IMAX
      JMAXD = JMAX
      KMAXD = 1
*
      IF ( KLEVS .EQ. 1 ) THEN
         CALL COPY ( GDATAO, GDATA, IDIM*JDIM )
         RETURN
      ENDIF
*
      CALL RESET ( GDATAO, IDIM*JDIM )
      TSIG = 0.  
*
      DO 1100 K = 1, KLEVS
         DO 1110 I = 1, IDIM
            DO 1110 J = 1, JDIM
               GDATAO( I,J,1 ) = GDATAO( I,J,1 )
     &                         + GDATA ( I,J,K ) * DSIG( K )
 1110    CONTINUE
         TSIG = TSIG + DSIG( K )
 1100 CONTINUE
*
      DO 1200 I = 1, IDIM
         DO 1200 J = 1, JDIM
            GDATAO( I,J,1 ) =  GDATAO( I,J,1 ) / TSIG
 1200 CONTINUE
*
      RETURN
      END
************************************************************************
      SUBROUTINE XZAVR     
     I         ( GDATA , HCORD ,
     O           GDATAO, IMAXD , JMAXD , KMAXD  )
*
*   [PARAM] 




* PACKAGE  ZXT10L32 !" 格子点数，波数 X-Z
*
      INTEGER     IMAX           !" 経度格子数
      INTEGER     JMAX           !" 緯度格子数
      INTEGER     IDIM           !" 経度配列サイズ
      INTEGER     JDIM           !" 緯度配列サイズ
      INTEGER     MMAX           !" 最大東西波数
      INTEGER     LMAX           !" 最大南北波数
      INTEGER     NMAX           !" 最大全波数
      INTEGER     MINT           !" 東西波数間隔
      INTEGER     KMAX           !" 鉛直層数
      INTEGER     KDIM           !" 鉛直配列サイズ
      INTEGER     NMDIM          !" 水平波数成分数
      INTEGER     JMXHF          !" JMAX/2+1
      INTEGER     NWORK          !" ワーク領域大きさ
*
      PARAMETER ( IMAX  = 32,     JMAX =  1,
     &            IDIM  = IMAX+1, JDIM = JMAX,
     &            MMAX  = 10,     LMAX =  0,    NMAX = MMAX, MINT = 1,
     &            KMAX  = 32,     KDIM = KMAX,
     &            NMDIM = (MMAX/MINT+1)*(2*(NMAX+1)-MMAX)
     &                  - (NMAX-LMAX)/MINT*(NMAX-LMAX+1),
     &            JMXHF = JMAX/2+1,
     &            NWORK = IDIM*JDIM*KMAX*12                       )

*
*   [INPUT] 
      ReaL*8       GDATA ( IDIM, JDIM, *  )
      CHARACTER  HCORD *(*)
*
*   [OUTPUT] 
      ReaL*8       GDATAO( IDIM, JDIM, *  )
      INTEGER    IMAXD, JMAXD, KMAXD
*
*   [INTERNAL WORK] 
      ReaL*8       DLON   ( IMAX )             
      ReaL*8       DLAT   ( JMAX )             
      ReaL*8       DSIG   ( KMAX+1 )           
*
      INTEGER    I, J, K, KLEVS
      ReaL*8       TSIG, SUMO, TLON
*
      CALL HQCORD
     I   ( HCORD ,
     O     DLON  , DLAT  , DSIG  ,
     O     KLEVS                   )
*
      IMAXD = 1
      JMAXD = JMAX
      KMAXD = 1
*
      CALL RESET ( GDATAO, IDIM*JDIM )
      TSIG = 0.  
*
      DO 1100 K = 1, KLEVS
         DO 1110 J = 1, JMAX
            DO 1110 I = 1, IMAX
               GDATAO( I,J,1 ) = GDATAO( I,J,1 )
     &                         + GDATA ( I,J,K ) * DSIG( K )
 1110    CONTINUE
         TSIG = TSIG + DSIG( K )
 1100 CONTINUE
*
      DO 1200 J = 1, JMAX
*
         SUMO = 0.  
         TLON = 0.  
         DO 1300 I = 1, JMAX
            SUMO = SUMO + GDATAO( I,J,1 ) * DLON( I )
            TLON = TLON + DLON( I )
 1300    CONTINUE
*
         GDATAO( 1,J,1 ) = SUMO / TLON / TSIG
*
 1200 CONTINUE
*
      RETURN
      END
************************************************************************
      SUBROUTINE XYAVR    
     I         ( GDATA , HCORD ,
     O           GDATAO, IMAXD , JMAXD , KMAXD  )
*
*   [PARAM] 




* PACKAGE  ZXT10L32 !" 格子点数，波数 X-Z
*
      INTEGER     IMAX           !" 経度格子数
      INTEGER     JMAX           !" 緯度格子数
      INTEGER     IDIM           !" 経度配列サイズ
      INTEGER     JDIM           !" 緯度配列サイズ
      INTEGER     MMAX           !" 最大東西波数
      INTEGER     LMAX           !" 最大南北波数
      INTEGER     NMAX           !" 最大全波数
      INTEGER     MINT           !" 東西波数間隔
      INTEGER     KMAX           !" 鉛直層数
      INTEGER     KDIM           !" 鉛直配列サイズ
      INTEGER     NMDIM          !" 水平波数成分数
      INTEGER     JMXHF          !" JMAX/2+1
      INTEGER     NWORK          !" ワーク領域大きさ
*
      PARAMETER ( IMAX  = 32,     JMAX =  1,
     &            IDIM  = IMAX+1, JDIM = JMAX,
     &            MMAX  = 10,     LMAX =  0,    NMAX = MMAX, MINT = 1,
     &            KMAX  = 32,     KDIM = KMAX,
     &            NMDIM = (MMAX/MINT+1)*(2*(NMAX+1)-MMAX)
     &                  - (NMAX-LMAX)/MINT*(NMAX-LMAX+1),
     &            JMXHF = JMAX/2+1,
     &            NWORK = IDIM*JDIM*KMAX*12                       )

*
*   [INPUT] 
      ReaL*8       GDATA ( IDIM, JDIM, *  )
      CHARACTER  HCORD *(*)
*
*   [OUTPUT] 
      ReaL*8       GDATAO( IDIM, JDIM, *  )
      INTEGER    IMAXD, JMAXD, KMAXD
*
*   [INTERNAL WORK] 
      ReaL*8       DLON   ( IMAX )             
      ReaL*8       DLAT   ( JMAX )             
      ReaL*8       DSIG   ( KMAX+1 )           
*
      INTEGER    I, J, K, KLEVS
      ReaL*8       TLAT, SUMO, TLON
*
      CALL HQCORD
     I   ( HCORD ,
     O     DLON  , DLAT  , DSIG  ,
     O     KLEVS                   )
*
      IMAXD = 1
      JMAXD = 1
      KMAXD = KLEVS
*
      CALL RESET ( GDATAO, IDIM*JDIM*KLEVS )
*
      DO 1100 K = 1, KLEVS
*
         TLAT = 0.  
         DO 1200 J = 1, JMAX
            DO 1210 I = 1, IDIM
               GDATAO( I,1,K ) = GDATAO( I,1,K )
     &                         + GDATA ( I,J,K ) * DLAT( J )
 1210       CONTINUE
            TLAT = TLAT + DLAT( J )
 1200    CONTINUE
*
         SUMO = 0.  
         TLON = 0.  
         DO 1300 I = 1, IMAX
            SUMO = SUMO + GDATAO( I,1,K ) * DLON( I )
            TLON = TLON + DLON( I )
 1300    CONTINUE   
*
         GDATAO( 1,1,K ) = SUMO / TLAT / TLON
*
 1100 CONTINUE
*
      RETURN
      END
************************************************************************
      SUBROUTINE XYZAVR       
     I         ( GDATA , HCORD ,
     O           GDATAO, IMAXD , JMAXD , KMAXD  )
*
*   [PARAM] 




* PACKAGE  ZXT10L32 !" 格子点数，波数 X-Z
*
      INTEGER     IMAX           !" 経度格子数
      INTEGER     JMAX           !" 緯度格子数
      INTEGER     IDIM           !" 経度配列サイズ
      INTEGER     JDIM           !" 緯度配列サイズ
      INTEGER     MMAX           !" 最大東西波数
      INTEGER     LMAX           !" 最大南北波数
      INTEGER     NMAX           !" 最大全波数
      INTEGER     MINT           !" 東西波数間隔
      INTEGER     KMAX           !" 鉛直層数
      INTEGER     KDIM           !" 鉛直配列サイズ
      INTEGER     NMDIM          !" 水平波数成分数
      INTEGER     JMXHF          !" JMAX/2+1
      INTEGER     NWORK          !" ワーク領域大きさ
*
      PARAMETER ( IMAX  = 32,     JMAX =  1,
     &            IDIM  = IMAX+1, JDIM = JMAX,
     &            MMAX  = 10,     LMAX =  0,    NMAX = MMAX, MINT = 1,
     &            KMAX  = 32,     KDIM = KMAX,
     &            NMDIM = (MMAX/MINT+1)*(2*(NMAX+1)-MMAX)
     &                  - (NMAX-LMAX)/MINT*(NMAX-LMAX+1),
     &            JMXHF = JMAX/2+1,
     &            NWORK = IDIM*JDIM*KMAX*12                       )

*
*   [INPUT] 
      ReaL*8       GDATA ( IDIM, JDIM, *  )
      CHARACTER  HCORD *(*)
*
*   [OUTPUT] 
      ReaL*8       GDATAO( IDIM, JDIM, *  )
      INTEGER    IMAXD, JMAXD, KMAXD
*
*   [INTERNAL WORK] 
      ReaL*8       DLON   ( IMAX )             
      ReaL*8       DLAT   ( JMAX )             
      ReaL*8       DSIG   ( KMAX+1 )           
*
      INTEGER    I, J, K, KLEVS
      ReaL*8       TLAT, TLON, TSIG, SUMO, SUMS
*
      CALL HQCORD
     I   ( HCORD ,
     O     DLON  , DLAT  , DSIG  ,
     O     KLEVS                   )
*
      IMAXD = 1
      JMAXD = 1
      KMAXD = 1         
*
      CALL RESET ( GDATAO, IDIM*JDIM*KLEVS )
*
      DO 1100 K = 1, KLEVS
*
         TLAT = 0.  
         DO 1200 J = 1, JMAX
            DO 1210 I = 1, IDIM
               GDATAO( I,1,K ) = GDATAO( I,1,K )
     &                         + GDATA ( I,J,K ) * DLAT( J )
 1210       CONTINUE
            TLAT = TLAT + DLAT( J )
 1200    CONTINUE
*
         SUMO = 0.  
         TLON = 0.  
         DO 1300 I = 1, IMAX
            SUMO = SUMO + GDATAO( I,1,K ) * DLON( I )
            TLON = TLON + DLON( I )
 1300    CONTINUE   
*
         GDATAO( 1,1,K ) = SUMO / TLAT / TLON
*
 1100 CONTINUE
*
      SUMS = 0.  
      TSIG = 0.  
      DO 2100 K = 1, KLEVS
         SUMS = SUMS + GDATAO( 1,1,K ) * DSIG( K )
         TSIG = TSIG + DSIG( K )
 2100 CONTINUE
*
      GDATAO( 1,1,1 ) = SUMS / TSIG
*
      RETURN
      END
************************************************************************
      SUBROUTINE NOAVR          
     I         ( GDATA , HCORD ,
     O           GDATAO, IMAXD , JMAXD , KMAXD  )
*
*   [PARAM] 




* PACKAGE  ZXT10L32 !" 格子点数，波数 X-Z
*
      INTEGER     IMAX           !" 経度格子数
      INTEGER     JMAX           !" 緯度格子数
      INTEGER     IDIM           !" 経度配列サイズ
      INTEGER     JDIM           !" 緯度配列サイズ
      INTEGER     MMAX           !" 最大東西波数
      INTEGER     LMAX           !" 最大南北波数
      INTEGER     NMAX           !" 最大全波数
      INTEGER     MINT           !" 東西波数間隔
      INTEGER     KMAX           !" 鉛直層数
      INTEGER     KDIM           !" 鉛直配列サイズ
      INTEGER     NMDIM          !" 水平波数成分数
      INTEGER     JMXHF          !" JMAX/2+1
      INTEGER     NWORK          !" ワーク領域大きさ
*
      PARAMETER ( IMAX  = 32,     JMAX =  1,
     &            IDIM  = IMAX+1, JDIM = JMAX,
     &            MMAX  = 10,     LMAX =  0,    NMAX = MMAX, MINT = 1,
     &            KMAX  = 32,     KDIM = KMAX,
     &            NMDIM = (MMAX/MINT+1)*(2*(NMAX+1)-MMAX)
     &                  - (NMAX-LMAX)/MINT*(NMAX-LMAX+1),
     &            JMXHF = JMAX/2+1,
     &            NWORK = IDIM*JDIM*KMAX*12                       )

*
*   [INPUT] 
      ReaL*8       GDATA ( IDIM, JDIM, *  )
      CHARACTER  HCORD *(*)
*
*   [OUTPUT] 
      ReaL*8       GDATAO( IDIM, JDIM, *  )
      INTEGER    IMAXD, JMAXD, KMAXD
*
*   [INTERNAL WORK] 
      INTEGER    KLEVS
*
      CALL HQCORL
     I   ( HCORD ,
     O     KLEVS  )
*
      IMAXD = IMAX
      JMAXD = JMAX
      KMAXD = KLEVS
*
      CALL COPY ( GDATAO, GDATA, IDIM*JDIM*KLEVS )
*
      RETURN
      END
