File: pick-dir/rd_bulkbi.f90
1 SUBROUTINE RD_BULKBI(Jchan,Bulkbimolecular,Lend,Lverb,J)
2 USE KINETIC
3 IMPLICIT NONE
4 !
5 ! Dummy arguments
6 !
7 TYPE (BULKBIMOLECULAR_RECORD) :: Bulkbimolecular
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 bulkBimolecular 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(BULKBIMOLECULAR%RE(i))
47 ENDDO
48 DO i = 1 , iwantp
49 CALL BLANK(BULKBIMOLECULAR%P(i))
50 ENDDO
51 !
52 !----------------------------------------------------------------------
53 !
54 READ (Jchan,FMT="(i4,1x,a)',END=100,ERR=100) jwant_bi , &
55 & bulkbimolecular%comment
56 J = J + 1
57 IF ( Lverb ) WRITE (6,FMT="(2i4,1x,a)') jwant_bi , J , &
58 & TRIM(bulkbimolecular%comment)
59 !
60 READ (Jchan,FMT="(2x,3x,2(a20,1x))',END=100,ERR=100) &
61 & (BULKBIMOLECULAR%RE(i),i=1,iwantr)
62 lset = .TRUE.
63 DO i = 1 , iwantr
64 IF ( lset ) THEN
65 IF ( BULKBIMOLECULAR%RE(i)==rp_blank ) THEN
66 iwantr = i - 1
67 lset = .FALSE.
68 ENDIF
69 ENDIF
70 ENDDO
71 bulkbimolecular%iwantr = iwantr
72 IF ( Lverb ) WRITE (6,*) "iwantr:' , iwantr
73 !
74 IF ( Lverb ) WRITE (6,FMT="(a2,3x,2(a20,1x))') "R:' , &
75 & (BULKBIMOLECULAR%RE(i),i=1,iwantr)
76 !
77 READ (Jchan,FMT="(2x,3x,14(a20,1x))',END=100,ERR=100) &
78 & (BULKBIMOLECULAR%P(i),i=1,iwantp)
79 lset = .TRUE.
80 DO i = 1 , iwantp
81 IF ( lset ) THEN
82 IF ( BULKBIMOLECULAR%P(i)==rp_blank ) THEN
83 iwantp = i - 1
84 lset = .FALSE.
85 ENDIF
86 ENDIF
87 ENDDO
88 bulkbimolecular%iwantp = iwantp
89 IF ( Lverb ) WRITE (6,*) "iwantp:' , iwantp
90 !
91 IF ( Lverb ) WRITE (6,FMT="(1p,a2,3x,14(a20,1x))') "P:' , &
92 & (BULKBIMOLECULAR%P(i),i=1,iwantp)
93 !
94 READ (Jchan,FMT="(2x,14(e13.4,8x))',END=100,ERR=100) &
95 & (bulkbimolecular%z(i),i=1,iwantp)
96 IF ( Lverb ) WRITE (6,FMT="(1p,a2,14(e13.4,8x))') "#:' , &
97 & (bulkbimolecular%z(i),i=1,iwantp)
98 !
99 READ (Jchan,FMT="(2x,i4,17x,2(e13.4,8x),/)',END=100,ERR=100) &
100 & bulkbimolecular%isptype , bulkbimolecular%a1 , &
101 & bulkbimolecular%a2
102 IF ( Lverb ) WRITE (6,FMT="(1p,2x,i4,17x,2(e13.4,8x),/)') &
103 & bulkbimolecular%isptype , bulkbimolecular%a1 ,&
104 & bulkbimolecular%a2
105 !
106 !----------------------------------------------------------------------
107 !
108 RETURN
109 !
110 !----------------------------------------------------------------------
111 !
112 100 Lend = .TRUE.
113 !
114 !----------------------------------------------------------------------
115 !
116 END SUBROUTINE RD_BULKBI