* PACKAGE BASTRT  !" BARO 共通 初期値入出
*
*"  [HIS] 90/08/31(numaguti)
*"        92/04/02 竹広真一 
*
*
**********************************************************************
      SUBROUTINE GRSTRT      !"  初期値の読み込み 
     O         ( GAU   , GAV   ,
     O           GBU   , GBV   ,
     O           ITA   , ITB   , IDATEA, IDATEB, ISTEP ,
     C           HFLSTR, ITSTRT                          )
*
#if   HITAC
      INCLUDE   (ZCDIM)                  !" 格子点数, 波数
      INCLUDE   (ZHDIM)                  !" 文字列文字数
#elif SX3
      INCLUDE   "zcdim.F"                    !" 格子点数, 波数
      INCLUDE   "zhdim.F"                    !" 文字列文字数
#else
#include        "zcdim.F"                    !" 格子点数, 波数
#include        "zhdim.F"                    !" 文字列文字数
#endif
*
      REAL       GAU   ( IDIM, JDIM, KMAX )  !" 西風  ｕ(t)
      REAL       GBU   ( IDIM, JDIM, KMAX )  !" 西風  ｕ(t-Δt)
      REAL       GAV   ( IDIM, JDIM, KMAX )  !" 南風  ｖ(t)
      REAL       GBV   ( IDIM, JDIM, KMAX )  !" 南風  ｖ(t-Δt)
*
      INTEGER    ISTEP                       !" 通しステップ数
      INTEGER    ITA                         !" 通し時間(t)
      INTEGER    ITB                         !" 通し時間(t-Δt)
      INTEGER    IDATEA( * )                 !" 時刻：年月日時分秒
      INTEGER    IDATEB( * )                 !" 時刻：年月日時分秒
*
      CHARACTER  HFLSTR *(*)                 !" 入力ファイル：初期値
      INTEGER    ITSTRT                      !" 計算開始時刻
*
      DATA       IFILED / 95 /
      DATA       IOMODE / 0  /
*
      CALL IFLOPN
     O         ( IFLSTR, IERR  ,
     I           HFLSTR, IFILED, 'READ', 'UNFORMATTED' )
*
*"          < 1.  初期値の読み込み (GB) >
*
      WRITE ( 6,* ) ' TRY TO READ HIST AT T = ', ITSTRT
*
 1100 CONTINUE
*
      CALL GDREAD
     O         ( GBU   , IEODU ,
     O           ITB   , IDATEB, ISTEP , ITDUR ,
     I           IFLSTR, 'GBU' , IOMODE, 'ALEV'  )
*
      IF ( IEODU .EQ. 0 ) THEN
          WRITE ( 6,* ) '        READ HIST AT T = ', ITB
      ENDIF
      IF ( ( ITB .LT. ITSTRT ) .AND. ( IEODU .EQ. 0 ) ) THEN
         GOTO 1100
*"                                     ------> 次のデータ ----->
      ENDIF
*
      CALL GDREAD
     O         ( GBV   , IEODV ,
     O           ITB   , IDATEB, ISTEP , ITDUR ,
     I           IFLSTR, 'GBV' , IOMODE, 'ALEV' )
*
*"          < 2. なければストップ >
*
      IEOD = IEODU + IEODV
      IF ( IEOD .GE. 1 ) THEN
         WRITE (6,*) ' 初期値がありません. ',
     &                            IEODU, IEODV
         STOP 2000
      ENDIF
*
*"          < 3. 初期値の読み込み (GA) >
*
      CALL GDREAD
     O         ( GAU   , IEODU ,
     O           ITA   , IDATEA, ISTEPA, ITDUR ,
     I           IFLSTR, 'GAU' , IOMODE, 'ALEV' )
*
      IF ( ISTEPA .NE. ISTEP ) THEN
         IEODU = 1
      ENDIF
*
      CALL GDREAD
     O         ( GAV   , IEODV ,
     O           ITA   , IDATEA, ISTEPA, ITDUR ,
     I           IFLSTR, 'GAV' , IOMODE, 'ALEV' )
*
*"          < 4. GA なし → GA = GB >
*
      IEOD = IEODU + IEODV
      IF ( IEOD .GE. 1 ) THEN
*
         WRITE (6,*) ' 初期値ＧＡがありません.',
     &              ' ＧＡ＝ＧＢを仮定します.',
     &                            IEODU, IEODV
*
         CALL COPY ( GAU   , GBU   , IDIM*JDIM*KMAX )
         CALL COPY ( GAV   , GBV   , IDIM*JDIM*KMAX )
*
         ITA = ITB
         DO 4100 II = 1,5
            IDATEA( II ) = IDATEB( II )
 4100    CONTINUE
*
      ENDIF
*
      CLOSE ( IFLSTR )
*
      RETURN
      END
***********************************************************************
      SUBROUTINE GWRSTR      !"  リスタート・ファイルの書き込み 
     I         ( GAU   , GAV   , GAVOR , 
     I           GBU   , GBV   , GBVOR ,
     I           ITA   , ITB   , IDATEA, IDATEB, ISTEP ,
     C           HFLRST, HDFMT                              )
*
#if   HITAC
      INCLUDE   (ZCDIM)                      !" 格子点数，波数
#elif SX3
      INCLUDE   "zcdim.F"                    !" 格子点数，波数
#else
#include        "zcdim.F"                    !" 格子点数，波数
#endif
*
      REAL       GAU   ( IDIM, JDIM, KMAX )  !" 西風  ｕ(t)
      REAL       GBU   ( IDIM, JDIM, KMAX )  !" 西風  ｕ(t-Δt)
      REAL       GAV   ( IDIM, JDIM, KMAX )  !" 南風  ｖ(t)
      REAL       GBV   ( IDIM, JDIM, KMAX )  !" 南風  ｖ(t-Δt)
      REAL       GAVOR ( IDIM, JDIM, KMAX )  !" 渦度  ζ(t)
      REAL       GBVOR ( IDIM, JDIM, KMAX )  !" 渦度  ζ(t-Δt)
*
      INTEGER    ISTEP                       !" 通しステップ数
      INTEGER    ITA                         !" 通し時間(t)
      INTEGER    ITB                         !" 通し時間(t-Δt)
      INTEGER    IDATEA( * )                 !" 時刻：年月日時分秒
      INTEGER    IDATEB( * )                 !" 時刻：年月日時分秒
*
      CHARACTER  HFLRST *(*)                 !" 出力ファイル：再出発
      CHARACTER  HDFMT  *(*)
*
      DATA       JFILED / 97 /
      DATA       IOMODE / 0  /
      DATA       NOEND  / 0  /
      DATA       ITDUR  / 1  /
      LOGICAL    OFIRST
      DATA       OFIRST / .TRUE. /
      SAVE       IOMODE, OFIRST
*
      IF ( OFIRST ) THEN
         OFIRST = .FALSE.
         CALL IFLOPN
     O         ( JFLRST, IERR  ,
     I           HFLRST, JFILED, 'WRITE', 'UNFORMATTED' )
      ENDIF
*
*"          < 1. ファイル出力 (GB) >
*
      CALL GDWRIT
     I        ( GBU   ,
     I         'GBU'  , 'u-velocity @ t      ','1/s' ,
     I          ITB   , IDATEB, ISTEP , ITDUR ,
     I          JFLRST, IOMODE, NOEND , 'ALEV', HDFMT    )
*
      CALL GDWRIT
     I        ( GBV   ,
     I         'GBV'  , 'v-velocity @ t      ','1/s' ,
     I          ITB   , IDATEB, ISTEP , ITDUR ,
     I          JFLRST, IOMODE, NOEND , 'ALEV', HDFMT    )
*
      CALL GDWRIT
     I        ( GBVOR ,
     I         'GBVOR', 'vorticity  @ t      ','1/s' ,
     I          ITB   , IDATEB, ISTEP , ITDUR ,
     I          JFLRST, IOMODE, NOEND , 'ALEV', HDFMT    )
*
*"          < 2. ファイル出力 (GA) >
*
      CALL GDWRIT
     I        ( GAU   ,
     I         'GAU'  , 'u-velocity @ t+dt   ','1/s' ,
     I          ITA   , IDATEA, ISTEP , ITDUR ,
     I          JFLRST, IOMODE, NOEND , 'ALEV', HDFMT    )
*
      CALL GDWRIT
     I        ( GAV   ,
     I         'GAV'  , 'v-velocity @ t+dt   ','1/s' ,
     I          ITA   , IDATEA, ISTEP , ITDUR ,
     I          JFLRST, IOMODE, NOEND , 'ALEV', HDFMT    )
*
      CALL GDWRIT
     I        ( GAVOR ,
     I         'GAVOR', 'vorticity @ t+dt   ','1/s' ,
     I          ITA   , IDATEA, ISTEP , ITDUR ,
     I          JFLRST, IOMODE, NOEND , 'ALEV', HDFMT    )
*
      RETURN
      END
