source: trunk/pgm97/molis.f @ 1

Last change on this file since 1 was 1, checked in by cbipsl, 18 years ago

Geisa inital import

File size: 4.4 KB
Line 
1C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *
2C     SUBROUTINE QUI RECHERCHE LES MOLECULES ET ISOTOPES A CHOISIR
3C     (QQ(J),J=1,NMOL)  QQ(J)=.TRUE. MOLECULE J A RETENIR
4C                            =.FALSE. MOLECULE NON CHOISIE
5C     (P(J),J=1,1000)  P(J)=.TRUE. ISOTOPE J A RETENIR
6C                          =.FALSE. ISOTOPE J NON CHOISI
7C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *
8C       
9C LAST MODIF : 07.05.1991 PASSAGE DE 40 MOLECULES A 75 DANS LES COMMON
10C       
11C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *
12C       
13      subroutine molis(p,qq,*)
14C       
15      character*9 trs1,trs2
16      character*7 form,bin
17      character*4 mole,ctlg,code,blanc
18      character*3 iopt,pgm,ianl,iext,itrs,ilst,icop,info,icre,
19     &            modif,oui,liste,trans
20      character*2 ikod,icod
21      real nu1,nu2
22      integer  vers
23      logical*1 p (1),qq(1)
24C       
25      common/p1/ nu1,nu2,dnu,nbclas,khist,kanal,vers,mode,liste
26      common/p2/ mole(75),isot(100),nbi(75),nbt(75),iopt,ctlg,trans,
27     &           trs1,trs2
28      common/p3/ imole,iran,ival,pgm,ianl,iext,itrs,ilst,icop,info,icre
29      common/p4/ nmol,knmol,ksot,kksot,ntab,nhist,kp,lre,form,bin,modif
30      common/p5/ code(75),nn(150),nq(150),ikod(18),icod(18),jdeb(75)
31      common/entsor/iuni,juni,kuni,ient,isor,iper,nresv,maxx,blanc,oui
32C       
33C     KAN=0  ANL-HISTO  1 MOLECULE  ET  1 ISOTOPE
34C     KAN=1  ANL-HISTO  1 MOLECULE
35      iarr=0
36C     POUR CRE NE PAS FAIRE DE TESTS SUR MOLE ET ISOT
37C     POUR COP INCLURE TOUTES LES MOLECULES
38      if(liste.eq.ctlg) go to 100
39      if(liste.eq.iopt) go to 150
40      if(pgm.eq.icre) go to 100
41      nzot=0
42      kan=0
43      iran=2
44      do  5 i=1,nmol
45      qq(i)=.false.
465     continue
47      do  6 i=1,ntab
486     p(i)=.false.
49c     print *,' knmol=',knmol
50      if(knmol.ne.0) go to 20
51      if(kksot.eq.0) go to 10
52      iarr=1
53      write(isor,1000) pgm
541000  format(///' *',a3,'*  mole parameter must be specified'///)
55      go to 100
5610    continue
57C     CAS DE TOUTES LES MOLECULES ET TOUS LES ISOTOPES
58      do 15 i=1,nmol
59      qq(i)=.true.
60      kk=jdeb(i)
61      ki=kk+1
62      kf=kk+nn(kk)
63      do 15 j=ki,kf
64      nzot=nzot+1
65      isot(nzot)=nn(j)
66      p(nn(j))=.true.
6715    continue
68      if(pgm.eq.info) return
69      go to 40
7020    continue
71C     CAS MOLE#0
72      do 22 i=1,knmol
73      do 21 k=1,nmol
74      if(mole(i).eq.code(k)) qq(k)=.true.
7521    continue
7622    continue
77c     print *,'qq=',(qq(kkk),kkk=1,nmol)
78      if(kksot.ne.0) go to 25
79C     CAS DE MOLE#0 ET ISOT=0
80      kan=1
81      do 24 i=1,nmol
82      if(.not.qq(i)) go to 24
83      kk=jdeb(i)
84      ki=kk+1
85      kf=kk+nn(kk)
86      do 23 j=ki,kf
87      nzot=nzot+1
88      isot(nzot)=nn(j)
89      p(nn(j))=.true.
9023    continue
9124    continue
92      go to 40
9325    continue
94C     CAS DE MOLE#0 ET ISOT#0
95      do 29 i=1,nmol
96      if(.not.qq(i)) go to 29
97      kk=jdeb(i)
98      ki=kk+1
99      kf=kk+nn(kk)
100      n1=0
101      do 27 k=1,kksot
102      do 26 j=ki,kf
103      if(nn(j).ne.isot(k)) go to 26
104      n1=n1+1
105      p (nn(j))=.true.
10626    continue
10727    continue
108      if(n1.ne.0) go to 29
109      do 28 j=ki,kf
110      p (nn(j))=.true.
11128    continue
11229    continue
113C     MISE DES ISOTOPES AU DEBUT DU TABLEAU ISOT
114      do 30  j=1,ksot
115      isot(j)=0
11630    continue
117      do 35 j=1,ntab
118      if(.not.p (j)) go to 35
119      nzot=nzot+1
120      isot(nzot)=j
12135    continue
12240    continue
123      kksot=nzot
124      knmol=0
125      do 45 i=1,nmol
126      if(.not.qq(i)) go to 45
127      knmol=knmol+1
12845    continue
129C     POUR EXT ,TRS ET KANAL=1(ANAL='OUI') KNMOL>=1
130C     POUR INF AVEC ANAL='OUI' OU TRANS='OUI'
131      if(pgm.eq.ianl.and.knmol.eq.1.or.pgm.eq.ilst) go to 50
132      if(pgm.eq.iext.or.pgm.eq.itrs.or.pgm.eq.icop.or.kanal.eq.1
133     &.or.mode.eq.1) go to 100
134C     POUR ANL ET HISTO UNE SEULE MOLECULE
135      iarr=1
136      write(isor,2000) pgm
1372000  format(///' *',a3,'*   choosen a molecule'///)
138      go to 100
13950    continue
140      if(pgm.eq.ianl.and.kan.eq.1) go to 55
141      if(pgm.eq.ianl.and.kksot.eq.1) go to 55
142      if(pgm.eq.ilst.and.knmol*kksot.eq.1) go to 55
143      iarr=1
144      write(isor,3000) pgm
1453000  format(///' *',a3,'*   choosen a molecule and an isotope'///)
146      go to 100
14755    continue
148      do 57 i=1,nmol
149      if(qq(i)) go to 58
15057    continue
15158    continue
152      ival=i
153      imole=i
154      if(kan.eq.1) go to 100
155      iran=1
156      ival=isot(1)
157100   continue
158150   continue
159      return
160      end
Note: See TracBrowser for help on using the repository browser.