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