*"É½Âê   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
