File: pick-dir/rd_species.f90
1 SUBROUTINE RD_SPECIES(Jchan,Fnspecies,Species,Lverb,NMAXS,Nspec, &
2 & Isppce,Ispint)
3 USE KINETIC
4 IMPLICIT NONE
5 !
6 ! Dummy arguments
7 !
8 CHARACTER(200) :: Fnspecies
9 INTEGER :: Ispint , Isppce , Jchan , Nspec
10 LOGICAL :: Lverb
11 INTEGER :: NMAXS
12 TYPE (SPECIES_RECORD) , DIMENSION(NMAXS) :: Species
13 INTENT (IN) Fnspecies , Jchan , Lverb , NMAXS
14 INTENT (INOUT) Ispint , Isppce , Nspec , Species
15 !
16 ! Local variables
17 !
18 INTEGER :: i , j
19 !
20 !-----------------------------------------------------------------------
21 !
22 ! written by: David Lary
23 !
24 ! started: 7/1/1993
25 !
26 ! last updated: 27/1/2004
27 !
28 !----------------------------------------------------------------------
29 !
30 DO i = 1 , NMAXS
31 CALL BLANK(Species(i)%speci)
32 CALL BLANK(Species(i)%latex)
33 ENDDO
34 !
35 !----------------------------------------------------------------------
36 !
37 ! Reads in an AutoChem species file.
38 !
39 !----------------------------------------------------------------------
40 !
41 WRITE (6,*) TRIM(Fnspecies)
42 OPEN (Jchan,FILE=TRIM(Fnspecies),STATUS="old')
43 !
44 !----------------------------------------------------------------------
45 !
46 ! Skip header
47 READ (Jchan,*)
48 !
49 !----------------------------------------------------------------------
50 !
51 ! Read bimolecular reactions
52 j = 0
53 Isppce = 0
54 Ispint = 0
55 DO WHILE ( .TRUE. )
56 READ (Jchan,*,END=100,ERR=100) Species(j+1)%isptype , &
57 & Species(j+1)%speci , &
58 & Species(j+1)%latex
59 IF ( Lverb ) WRITE (6,FMT="(i4,2(1x,a))') Species(j+1) &
60 & %isptype , Species(j+1)%speci , &
61 & Species(j+1)%latex
62 ! update the various specie counters.
63 IF ( Species(j+1)%isptype==0 ) THEN
64 Isppce = Isppce + 1
65 ELSEIF ( Species(j+1)%isptype==1 ) THEN
66 Ispint = Ispint + 1
67 ENDIF
68 j = j + 1
69 IF ( j>=NMAXS ) EXIT
70 ENDDO
71 !
72 !----------------------------------------------------------------------
73 !
74 100 Nspec = j
75 WRITE (6,*) "# Species read was:' , Nspec
76 CLOSE (Jchan)
77 !
78 !-----------------------------------------------------------------------
79 !
80 DO i = 1 , Nspec
81 DO j = 1 , Nspec
82 IF ( i/=j ) THEN
83 IF ( Species(i)%speci==Species(j)%speci ) THEN
84 WRITE (6,*) "Duplicate entries :' , i , j
85 WRITE (6,*) Species(i)%speci , Species(j)%speci
86 ENDIF
87 ENDIF
88 ENDDO
89 ENDDO
90 !
91 !----------------------------------------------------------------------
92 !
93 END SUBROUTINE RD_SPECIES