*"表題   SHALO 力学 スペクトル→格子点値 GCM5(SDGENG)
*
*"履歴   90/08/31 沼口  敦
*"       92/06/11 竹広真一
*"       96/11/14 竹広真一
*
************************************************************************
*"            << 新格子点値の生成 >>
************************************************************************
      SUBROUTINE GENGD
     O         ( GDU   , GDV   , GDPHI ,
     O           GDVOR , GDDIV ,
     I           WDVOR , WDDIV , WDPHI ,
     C           EDEL  , UVFACT          )
*
#if   SYS_IBMS
      INCLUDE   (ZCDIM)                      !" 格子点数, 波数
#else
#include        "zcdim.F"                      !" 格子点数, 波数
#endif
*
      REAL       GDU   ( IDIM*JDIM, KMAX )   !" 西風  Ｕ
      REAL       GDV   ( IDIM*JDIM, KMAX )   !" 南風  Ｖ
      REAL       GDPHI ( IDIM*JDIM, KMAX )   !" 層厚  φ
      REAL       GDVOR ( IDIM*JDIM, KMAX )   !" 渦度  ζ
      REAL       GDDIV ( IDIM*JDIM, KMAX )   !" 発散  Ｄ
*
      REAL       WDVOR ( NMDIM , KMAX     )  !" 渦度  ζ
      REAL       WDDIV ( NMDIM , KMAX     )  !" 発散  Ｄ
      REAL       WDPHI ( NMDIM , KMAX     )  !" 層厚  φ
*
      REAL       EDEL  ( NMDIM  )            !" ζ,Ｄ→Ｕ,Ｖ
      REAL       UVFACT( IDIM*JDIM )         !" u→U のファクター
*
      COMMON    /COMWRK/
     &           WDPSI , WDCHI
      REAL       WDPSI ( NMDIM, KMAX      )  !" ψ/a スペクトル
      REAL       WDCHI ( NMDIM, KMAX      )  !" χ/a スペクトル
*
      INTEGER    IJ, K, NM
*
*"          < 1. ψ/a, χ/a のスペクトル >
*
      DO 1100 K = 1, KMAX
         DO 1100 NM = 1, NMDIM
            WDPSI( NM,K ) = WDVOR( NM,K ) * EDEL( NM )
            WDCHI( NM,K ) = WDDIV( NM,K ) * EDEL( NM )
 1100 CONTINUE
*
*"          < 2. ζ，Ｄ，Ｔ，π 格子点値 >
*
      CALL W2G
     O         ( GDVOR ,
     I           WDVOR ,
     I           '    ', 'POS ', KMAX )
*
      CALL W2G
     O         ( GDDIV ,
     I           WDDIV ,
     I           '    ', 'POS ', KMAX )
*
      CALL W2G
     O         ( GDPHI ,
     I           WDPHI ,
     I           '    ', 'POSO', KMAX )
*
*"          < 3.  Ｕ，Ｖ の格子点値 >
*
      CALL W2G
     O         ( GDU   ,
     I           WDPSI ,
     I           'YGRA', 'NEG ', KMAX )
*
      IF ( MMAX .GE. 1 ) THEN
         CALL W2G
     O         ( GDU   ,
     I           WDCHI ,
     I           'XGRA', 'ADD ', KMAX )
      ENDIF
*
      CALL W2G
     O         ( GDV   ,
     I           WDCHI ,
     I           'YGRA', 'POS ', KMAX )
*
      IF ( MMAX .GE. 1 ) THEN
         CALL W2G
     O         ( GDV   ,
     I           WDPSI ,
     I           'XGRA', 'ADD ', KMAX )
      ENDIF
*
      DO 3100 K = 1, KMAX
         DO 3100 IJ = 1, IDIM*JDIM
            GDU ( IJ,K ) = GDU ( IJ,K ) / UVFACT( IJ )
            GDV ( IJ,K ) = GDV ( IJ,K ) / UVFACT( IJ )
 3100 CONTINUE
*
      RETURN
      END
