File: pick-dir/rd_j.f90

    1       SUBROUTINE RD_J(Jchan,Photolysis,Lend,Lverb,J)
    2       USE KINETIC
    3       IMPLICIT NONE
    4 !
    5 ! Dummy arguments
    6 !
    7       INTEGER :: J , Jchan
    8       LOGICAL :: Lend , Lverb
    9       TYPE (PHOTOLYSIS_RECORD) :: Photolysis
   10       INTENT (IN) Jchan , Lverb
   11       INTENT (OUT) Lend
   12       INTENT (INOUT) J
   13 !
   14 ! Local variables
   15 !
   16       INTEGER :: i , iwantp , iwantr , jwant_j
   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 photolysis 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(PHOTOLYSIS%RE(i))
   47       ENDDO
   48       DO i = 1 , iwantp
   49          CALL BLANK(PHOTOLYSIS%P(i))
   50       ENDDO
   51 !
   52 !----------------------------------------------------------------------
   53 !
   54       READ (Jchan,FMT="(i4,1x,a)',END=100,ERR=100) jwant_j ,            &
   55           & photolysis%comment
   56       J = J + 1
   57       IF ( Lverb ) WRITE (6,FMT="(2i4,1x,a)') jwant_j , J ,             &
   58                         & TRIM(photolysis%comment)
   59 !
   60       READ (Jchan,FMT="(2x,3x,2(a20,1x))',END=100,ERR=100)              &
   61           & (PHOTOLYSIS%RE(i),i=1,iwantr)
   62       lset = .TRUE.
   63       DO i = 1 , iwantr
   64          IF ( lset ) THEN
   65             IF ( PHOTOLYSIS%RE(i)==rp_blank ) THEN
   66                iwantr = i - 1
   67                lset = .FALSE.
   68             ENDIF
   69          ENDIF
   70       ENDDO
   71       photolysis%iwantr = iwantr
   72       IF ( Lverb ) WRITE (6,*) "iwantr:' , iwantr
   73 !
   74       IF ( Lverb ) WRITE (6,FMT="(a2,3x,2(a20,1x))') "R:' ,             &
   75                         & (PHOTOLYSIS%RE(i),i=1,iwantr)
   76 !
   77       READ (Jchan,FMT="(2x,3x,14(a20,1x))',END=100,ERR=100)             &
   78           & (PHOTOLYSIS%P(i),i=1,iwantp)
   79       lset = .TRUE.
   80       DO i = 1 , iwantp
   81          IF ( lset ) THEN
   82             IF ( PHOTOLYSIS%P(i)==rp_blank ) THEN
   83                iwantp = i - 1
   84                lset = .FALSE.
   85             ENDIF
   86          ENDIF
   87       ENDDO
   88       photolysis%iwantp = iwantp
   89       IF ( Lverb ) WRITE (6,*) "iwantp:' , iwantp
   90 !
   91       IF ( Lverb ) WRITE (6,FMT="(1p,a2,3x,14(a20,1x))') "P:' ,         &
   92                         & (PHOTOLYSIS%P(i),i=1,iwantp)
   93 !
   94       READ (Jchan,FMT="(2x,14(e13.4,8x))',END=100,ERR=100)              &
   95           & (photolysis%z(i),i=1,iwantp)
   96       IF ( Lverb ) WRITE (6,FMT="(1p,a2,14(e13.4,8x))') "#:' ,          &
   97                         & (photolysis%z(i),i=1,iwantp)
   98 !
   99       READ (Jchan,FMT="(5x,a)',END=100,ERR=100) photolysis%st_cross_data
  100       IF ( Lverb ) WRITE (6,FMT="(5x,a)') TRIM(photolysis%st_cross_data)
  101       READ (Jchan,FMT="(5x,a,/)',END=100,ERR=100)                       &
  102           & photolysis%st_cross_fun
  103       IF ( Lverb ) WRITE (6,FMT="(5x,a,/)')                             &
  104                         & TRIM(photolysis%st_cross_fun)
  105 !
  106 !----------------------------------------------------------------------
  107 !
  108       RETURN
  109 !
  110 !----------------------------------------------------------------------
  111 !
  112  100  Lend = .TRUE.
  113 !
  114 !----------------------------------------------------------------------
  115 !
  116       END SUBROUTINE RD_J