* PACKAGE P2DIAG  !" 物理過程(2) 診断
*
************************************************************************
      SUBROUTINE PDIAG       !" 物理過程の診断
     I      ( TFLUX , QFLUX , RFLUX , SFLUX ,
     I        GTT   , GTQ   , GTTG  ,
     I        GDT   , GDQ   , GDTG  , GDPM  ,
     C        GRHC                            )
*
*   [PARAM] 
#ifdef SYS_IBMS
      INCLUDE   (ZCDIM)                       !" 格子点数，波数
      INCLUDE   (ZCCOM)                       !" 標準物理定数
#else
#include        "zcdim.F"                     !" 格子点数，波数
#include        "zccom.F"                     !" 標準物理定数
#endif
*
*   [INPUT]
      REAL       TFLUX  ( IDIM*JDIM, KMAX+1)  !" Ｔのフラックス
      REAL       QFLUX  ( IDIM*JDIM, KMAX+1)  !" ｑのフラックス
      REAL       RFLUX  ( IDIM*JDIM, KMAX+1)  !" 長波フラックス
      REAL       SFLUX  ( IDIM*JDIM, KMAX+1)  !" 短波フラックス
*
      REAL       GTT   ( IDIM*JDIM, KMAX )    !" 温度時間変化項 Ｈ
      REAL       GTQ   ( IDIM*JDIM, KMAX )    !" 比湿時間変化項 Ｒ
      REAL       GTTG  ( IDIM*JDIM )          !" 地表温度変化率
      REAL       GDT   ( IDIM*JDIM, KMAX )    !" 温度  Ｔ
      REAL       GDQ   ( IDIM*JDIM, KMAX )    !" 比湿  ｑ
      REAL       GDTG  ( IDIM*JDIM )          !" 地表面温度
      REAL       GDPM  ( IDIM*JDIM, KMAX+1 )  !" 気圧 Ｐ
      REAL       GRHC  ( IDIM*JDIM )          !" 地表熱容量
*
*   [INTERNAL WORK] 
      LOGICAL    ODIAG
      INTEGER    JFLDIA, NCOLS, ISTR, IEND, IINT
      INTEGER    IJ, K
      REAL       SRFLUX, SHFLUX, SQFLUX, CHGHG
      REAL       SSFLUX, TSFLUX, TRFLUX
      REAL       DTTOT, DQTOT
*
*
      CALL QDIAGP
     O         ( ODIAG , JFLDIA, NCOLS ,
     O           ISTR  , IEND  , IINT  ,
     I           1                       )
*
      IF ( .NOT. ODIAG )                RETURN
*
      DO 5100 IJ = ISTR, IEND, IINT
         SRFLUX = RFLUX( IJ,1 )
         SHFLUX = TFLUX( IJ,1 )
         SQFLUX = QFLUX( IJ,1 )
         CHGHG  = GRHC ( IJ   ) * GTTG( IJ )
         SSFLUX = SFLUX( IJ,1 )
         TSFLUX = SFLUX( IJ,KMAX+1 )
         TRFLUX = RFLUX( IJ,KMAX+1 )
*
         DTTOT = 0.  
         DQTOT = 0.  
         DO 5120  K = 1, KMAX
            DTTOT = DTTOT + GTT  ( IJ,K )
     &                      * ( GDPM( IJ,K )-GDPM( IJ,K+1 ) )*CP/GRAV
            DQTOT = DQTOT + GTQ  ( IJ,K )
     &                      * ( GDPM( IJ,K )-GDPM( IJ,K+1 ) )*EL/GRAV
 5120    CONTINUE
*
         WRITE ( JFLDIA,* )  'SURFACE FLUX H,R,E,G',
     &                       SHFLUX, SRFLUX , SQFLUX, CHGHG
         WRITE ( JFLDIA,* )  'SURFACE BUDGET   N,S',
     &                       SRFLUX+SHFLUX+CHGHG+SQFLUX, -SSFLUX
         WRITE ( JFLDIA,* )  'RADIATION BUDGET L,S',
     &                       TRFLUX, -TSFLUX
         WRITE ( JFLDIA,* )  'ENERGY BUDGET  FC,DT',
     &                       SHFLUX+SRFLUX+SSFLUX-TSFLUX-TRFLUX, DTTOT
         WRITE ( JFLDIA,* )  'WATER BUDGET   FC,DQ',
     &                       SQFLUX, DQTOT
*
 5100 CONTINUE
*
      RETURN
      END
************************************************************************
      SUBROUTINE PDIAG2       !" 物理過程の診断(2)
     I         ( GQPR  )
*
*   [PARAM] 
#ifdef SYS_IBMS
      INCLUDE   (ZCDIM)                       !" 格子点数，波数
      INCLUDE   (ZCCOM)                       !" 標準物理定数
#else
#include        "zcdim.F"                     !" 格子点数，波数
#include        "zccom.F"                     !" 標準物理定数
#endif
*
*   [INPUT] 
      REAL       GQPR  ( IDIM*JDIM )          !" 降水量
*
*   [INTERNAL WORK] 
      LOGICAL    ODIAG
      INTEGER    JFLDIA, NCOLS, ISTR, IEND, IINT
      INTEGER    IJ
*
      CALL QDIAGP
     O         ( ODIAG , JFLDIA, NCOLS ,
     O           ISTR  , IEND  , IINT  ,
     I           1                       )
*
      IF ( .NOT. ODIAG )                RETURN
*
      DO 5100 IJ = ISTR, IEND, IINT
*
         WRITE ( JFLDIA,* )  'PRECIPITATION       ',
     &                       GQPR( IJ )
*
 5100 CONTINUE
*
      RETURN
      END
