File: pick-dir/rd_tri.f90

    1       SUBROUTINE RD_TRI(Jchan,Trimolecular,Lend,Lverb,J)
    2       USE KINETIC
    3       IMPLICIT NONE
    4 !
    5 ! Dummy arguments
    6 !
    7       INTEGER :: J , Jchan
    8       LOGICAL :: Lend , Lverb
    9       TYPE (TRIMOLECULAR_RECORD) :: Trimolecular
   10       INTENT (IN) Jchan , Lverb
   11       INTENT (OUT) Lend
   12       INTENT (INOUT) J
   13 !
   14 ! Local variables
   15 !
   16       INTEGER :: i , iwantp , iwantr , jwant_tri
   17       LOGICAL :: lset
   18       CHARACTER(20) :: rp_blank
   19 !
   20 !-----------------------------------------------------------------------
   21 !
   22 !     written by:   David Lary
   23 !
   24 !     started:      7/1/1993
   25 !
   26 !     last updated: 22/1/2004
   27 !
   28 !----------------------------------------------------------------------
   29 !
   30 !     Reads in one line of an AutoChem trimolecular kinetic data file.
   31 !
   32 !     If Lend is true on return then we have reached the end of the
   33 !     file.
   34 !
   35 !----------------------------------------------------------------------
   36 !
   37       Lend = .FALSE.
   38       CALL BLANK(rp_blank)
   39 !
   40 !----------------------------------------------------------------------
   41 !
   42 !     Initialize.
   43       iwantr = 2
   44       iwantp = 14
   45       DO i = 1 , iwantr
   46          CALL BLANK(TRIMOLECULAR%RE(i))
   47       ENDDO
   48       DO i = 1 , iwantp
   49          CALL BLANK(TRIMOLECULAR%P(i))
   50       ENDDO
   51 !
   52 !----------------------------------------------------------------------
   53 !
   54       READ (Jchan,FMT="(i4,1x,a)',END=100,ERR=100) jwant_tri ,          &
   55           & trimolecular%comment
   56       J = J + 1
   57       IF ( Lverb ) WRITE (6,FMT="(2i4,1x,a)') jwant_tri , J ,           &
   58                         & TRIM(trimolecular%comment)
   59 !
   60       READ (Jchan,FMT="(2x,3x,2(a20,1x))',END=100,ERR=100)              &
   61           & (TRIMOLECULAR%RE(i),i=1,iwantr)
   62       lset = .TRUE.
   63       DO i = 1 , iwantr
   64          IF ( lset ) THEN
   65             IF ( TRIMOLECULAR%RE(i)==rp_blank ) THEN
   66                iwantr = i - 1
   67                lset = .FALSE.
   68             ENDIF
   69          ENDIF
   70       ENDDO
   71       trimolecular%iwantr = iwantr
   72       IF ( Lverb ) WRITE (6,*) "iwantr:' , iwantr
   73 !
   74       IF ( Lverb ) WRITE (6,FMT="(a2,3x,2(a20,1x))') "R:' ,             &
   75                         & (TRIMOLECULAR%RE(i),i=1,iwantr)
   76 !
   77       READ (Jchan,FMT="(2x,3x,14(a20,1x))',END=100,ERR=100)             &
   78           & (TRIMOLECULAR%P(i),i=1,iwantp)
   79       lset = .TRUE.
   80       DO i = 1 , iwantp
   81          IF ( lset ) THEN
   82             IF ( TRIMOLECULAR%P(i)==rp_blank ) THEN
   83                iwantp = i - 1
   84                lset = .FALSE.
   85             ENDIF
   86          ENDIF
   87       ENDDO
   88       trimolecular%iwantp = iwantp
   89       IF ( Lverb ) WRITE (6,*) "iwantp:' , iwantp
   90 !
   91       IF ( Lverb ) WRITE (6,FMT="(1p,a2,3x,14(a20,1x))') "P:' ,         &
   92                         & (TRIMOLECULAR%P(i),i=1,iwantp)
   93 !
   94       READ (Jchan,FMT="(2x,14(e13.4,8x))',END=100,ERR=100)              &
   95           & (trimolecular%z(i),i=1,iwantp)
   96       IF ( Lverb ) WRITE (6,FMT="(1p,a2,14(e13.4,8x))') "#:' ,          &
   97                         & (trimolecular%z(i),i=1,iwantp)
   98 !
   99       READ (Jchan,FMT="(a1,1x,1(5(e13.4,8x),2x))',END=100,ERR=100)      &
  100           & trimolecular%flag , trimolecular%a1 , trimolecular%a2 ,     &
  101           & trimolecular%a3 , trimolecular%a4 , trimolecular%a5
  102       IF ( Lverb ) WRITE (6,FMT="(1p,a1,1x,1(5(e13.4,8x),2x))')         &
  103                         & trimolecular%flag , trimolecular%a1 ,         &
  104                         & trimolecular%a2 , trimolecular%a3 ,           &
  105                         & trimolecular%a4 , trimolecular%a5
  106 !
  107       IF ( trimolecular%flag/="E' ) THEN
  108          READ (Jchan,FMT="(1(2x,5(e13.4,8x)))',END=100,ERR=100)         &
  109              & trimolecular%b1 , trimolecular%b2 , trimolecular%b3 ,    &
  110              & trimolecular%b4 , trimolecular%b5
  111          IF ( Lverb ) WRITE (6,FMT="(1p,1(2x,5(e13.4,8x)))')            &
  112                            & trimolecular%b1 , trimolecular%b2 ,        &
  113                            & trimolecular%b3 , trimolecular%b4 ,        &
  114                            & trimolecular%b5
  115          READ (Jchan,FMT="(1(2x,5(e13.4,8x)),/)',END=100,ERR=100)       &
  116              & trimolecular%c1 , trimolecular%c2 , trimolecular%c3 ,    &
  117              & trimolecular%c4 , trimolecular%c5
  118          IF ( Lverb ) WRITE (6,FMT="(1p,1(2x,5(e13.4,8x)),/)')          &
  119                            & trimolecular%c1 , trimolecular%c2 ,        &
  120                            & trimolecular%c3 , trimolecular%c4 ,        &
  121                            & trimolecular%c5
  122       ELSE
  123          READ (Jchan,*)
  124          IF ( Lverb ) WRITE (6,*)
  125 !
  126       ENDIF
  127 !
  128 !----------------------------------------------------------------------
  129 !
  130       RETURN
  131 !
  132 !----------------------------------------------------------------------
  133 !
  134  100  Lend = .TRUE.
  135 !
  136 !----------------------------------------------------------------------
  137 !
  138       END SUBROUTINE RD_TRI