* PACKAGE LSTEP  !" 線形力学固有値解析 : パラメターステップ設定
*
*"  [HIS]  92/12/20(takepiro)
*"         93/04/09(takepiro) リスタート出力設定
*
**********************************************************************
      SUBROUTINE SETLTM
     O            (  ITA   , ISTEP , ORSTR , 
     I               MSTEP , RSTEP , TSTEP , PSTEP  )
*
*  [OUTPUT]
      INTEGER    ISTEP                 !" 通しステップ数
      INTEGER    ITA                   !" 通し時間(t), 標準時間単位
      LOGICAL    ORSTR                 !" 再出発出力するか否か
*
*  [INPUT]
      INTEGER    MSTEP                 !" 東西波数の計算数
      INTEGER    RSTEP                 !" レイリー数の計算数
      INTEGER    TSTEP                 !" テイラー数の計算数
      INTEGER    PSTEP                 !" プランドル数の計算数
*
*  [INTERNAL WORK]
      INTEGER    KETA              !" ITA での出力表示桁数
        PARAMETER ( KETA = 2 )     !" PSTEP,TSTEP,RSTEP,MSTEP を表示
*
      INTEGER RSTSTM               !" 固有関数出力ステップ間隔(東西波数)
      INTEGER RSTSTR               !" 固有関数出力ステップ間隔(レイリー数)
      INTEGER RSTSTT               !" 固有関数出力ステップ間隔(テイラー数)
      INTEGER RSTSTP               !" 固有関数出力ステップ間隔(プランドル数)
*
      LOGICAL    OFIRST
      DATA       OFIRST / .TRUE. /
*
      IF( OFIRST )THEN
         OFIRST = .FALSE. 
*
         CALL ASUTIM                   !"  標準時間単位の設定(ダミー)
     I         ( 'DAY' )
*
         CALL STRSTR            !" リスタート(固有関数)出力間隔設定
     O         ( RSTSTM , RSTSTR , RSTSTT , RSTSTP )
      ENDIF
*
*"  < 2. 出力用パラメターの設定 > 
*
*"      < 2.1 時間設定 >
*
*"         時間でパラメターを表示
*
      ITA   =   PSTEP * 10 ** ( 3 * KETA ) 
     &             + TSTEP * 10 ** ( 2 * KETA ) 
     &                  + RSTEP * 10 ** ( 1 * KETA ) 
     &                         + MSTEP
*
      ISTEP = ITA
*
*"      < 2.2 リスタート(固有関数)出力設定 >
*
      IF (      ( RSTSTP .LE. 0 ) .OR. ( RSTSTT .LE. 0 ) 
     &     .OR. ( RSTSTR. LE. 0 ) .OR. ( RSTSTM .LE. 0 )   ) THEN
         ORSTR = .FALSE. 
*
      ELSE IF (        (  MOD( PSTEP,RSTSTP ) .EQ. 0  )
     &           .AND. (  MOD( TSTEP,RSTSTT ) .EQ. 0  )
     &           .AND. (  MOD( RSTEP,RSTSTR ) .EQ. 0  )
     &           .AND. (  MOD( MSTEP,RSTSTM ) .EQ. 0  )     )THEN
         ORSTR = .TRUE. 
*
      ELSE
         ORSTR = .FALSE.
      ENDIF 
*
      CALL  SETTIM                 !" 時刻の設定
     I         ( ITA   ,  ISTEP  )
*
      RETURN
      END
**********************************************************************
      SUBROUTINE STRSTR        !" リスタート(固有関数)出力間隔設定
     O           ( RSTSTM , RSTSTR , RSTSTT , RSTSTP )
*
*  [OUTPUT]
      INTEGER RSTSTM         !" 固有関数出力ステップ間隔(東西波数)
      INTEGER RSTSTR         !" 固有関数出力ステップ間隔(レイリー数)
      INTEGER RSTSTT         !" 固有関数出力ステップ間隔(テイラー数)
      INTEGER RSTSTP         !" 固有関数出力ステップ間隔(プランドル数)
*
*
*  [INTERNAL ONCE]
      INTEGER MFSTP          !" 固有関数出力ステップ間隔(東西波数)
      INTEGER RAYSTP         !" 固有関数出力ステップ間隔(レイリー数)
      INTEGER TAYSTP         !" 固有関数出力ステップ間隔(テイラー数)
      INTEGER PRNSTP         !" 固有関数出力ステップ間隔(プランドル数)
*
      NAMELIST /NMRSTS/  MFSTP, RAYSTP , TAYSTP , PRNSTP
*
*  [INTERNAL WORK]
      INTEGER    IFPAR, JFPAR
*
*
*"  < 1. パラメターの設定 > 
*
      MFSTP  = 0
      RAYSTP = 0 
      TAYSTP = 0 
      PRNSTP = 0 
*
      CALL   REWNML ( IFPAR , JFPAR )
      READ   ( IFPAR, NMRSTS , END=1090 )
 1090 WRITE  ( JFPAR, NMRSTS )
*
      RSTSTM = MFSTP
      RSTSTR = RAYSTP
      RSTSTT = TAYSTP
      RSTSTP = PRNSTP
*
      RETURN
      END

