File: pick-dir/rd_bi.f90
1 SUBROUTINE RD_BI(Jchan,Bimolecular,Lend,Lverb,J)
2 USE KINETIC
3 IMPLICIT NONE
4 !
5 ! Dummy arguments
6 !
7 TYPE (BIMOLECULAR_RECORD) :: Bimolecular
8 INTEGER :: J , Jchan
9 LOGICAL :: Lend , Lverb
10 INTENT (IN) Jchan , Lverb
11 INTENT (OUT) Lend
12 INTENT (INOUT) J
13 !
14 ! Local variables
15 !
16 INTEGER :: i , iwantp , iwantr , jwant_bi
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 bimolecular 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(BIMOLECULAR%RE(i))
47 ENDDO
48 DO i = 1 , iwantp
49 CALL BLANK(BIMOLECULAR%P(i))
50 ENDDO
51 !
52 !----------------------------------------------------------------------
53 !
54 READ (Jchan,FMT="(i4,1x,a)',END=100,ERR=100) jwant_bi , &
55 & bimolecular%comment
56 J = J + 1
57 IF ( Lverb ) WRITE (6,FMT="(2i4,1x,a)') jwant_bi , J , &
58 & TRIM(bimolecular%comment)
59 !
60 READ (Jchan,FMT="(2x,3x,2(a20,1x))',END=100,ERR=100) &
61 & (BIMOLECULAR%RE(i),i=1,iwantr)
62 lset = .TRUE.
63 DO i = 1 , iwantr
64 IF ( lset ) THEN
65 IF ( BIMOLECULAR%RE(i)==rp_blank ) THEN
66 iwantr = i - 1
67 lset = .FALSE.
68 ENDIF
69 ENDIF
70 ENDDO
71 bimolecular%iwantr = iwantr
72 IF ( Lverb ) WRITE (6,*) "iwantr:' , iwantr
73 !
74 IF ( Lverb ) WRITE (6,FMT="(a2,3x,2(a20,1x))') "R:' , &
75 & (BIMOLECULAR%RE(i),i=1,iwantr)
76 !
77 READ (Jchan,FMT="(2x,3x,14(a20,1x))',END=100,ERR=100) &
78 & (BIMOLECULAR%P(i),i=1,iwantp)
79 lset = .TRUE.
80 DO i = 1 , iwantp
81 IF ( lset ) THEN
82 IF ( BIMOLECULAR%P(i)==rp_blank ) THEN
83 iwantp = i - 1
84 lset = .FALSE.
85 ENDIF
86 ENDIF
87 ENDDO
88 bimolecular%iwantp = iwantp
89 IF ( Lverb ) WRITE (6,*) "iwantp:' , iwantp
90 !
91 IF ( Lverb ) WRITE (6,FMT="(1p,a2,3x,14(a20,1x))') "P:' , &
92 & (BIMOLECULAR%P(i),i=1,iwantp)
93 !
94 READ (Jchan,FMT="(2x,14(e13.4,8x))',END=100,ERR=100) &
95 & (bimolecular%z(i),i=1,iwantp)
96 IF ( Lverb ) WRITE (6,FMT="(1p,a2,14(e13.4,8x))') "#:' , &
97 & (bimolecular%z(i),i=1,iwantp)
98 !
99 READ (Jchan,FMT="(a1,1x,1(5(e13.4,8x),2x))',END=100,ERR=100) &
100 & bimolecular%flag , bimolecular%a1 , bimolecular%a2 , &
101 & bimolecular%a3 , bimolecular%a4 , bimolecular%a5
102 IF ( Lverb ) WRITE (6,FMT="(1p,a1,1x,1(5(e13.4,8x),2x))') &
103 & bimolecular%flag , bimolecular%a1 , &
104 & bimolecular%a2 , bimolecular%a3 , &
105 & bimolecular%a4 , bimolecular%a5
106 !
107 IF ( bimolecular%flag=="V' ) THEN
108 READ (Jchan,FMT="(1(2x,5(e13.4,8x)),/)',END=100,ERR=100) &
109 & bimolecular%b1 , bimolecular%b2 , bimolecular%b3 , &
110 & bimolecular%b4 , bimolecular%b5
111 IF ( Lverb ) WRITE (6,FMT="(1p,1(2x,5(e13.4,8x)),/)') &
112 & bimolecular%b1 , bimolecular%b2 , &
113 & bimolecular%b3 , bimolecular%b4 , &
114 & bimolecular%b5
115 ELSE
116 READ (Jchan,*)
117 IF ( Lverb ) WRITE (6,*)
118 !
119 ENDIF
120 !
121 !----------------------------------------------------------------------
122 !
123 RETURN
124 !
125 !----------------------------------------------------------------------
126 !
127 100 Lend = .TRUE.
128 !
129 !----------------------------------------------------------------------
130 !
131 END SUBROUTINE RD_BI