79 lines
2.1 KiB
Fortran
79 lines
2.1 KiB
Fortran
subroutine exopf(indmol,t,u)
|
|
c ============================
|
|
c
|
|
c oartition functions from EXOMOL for 32 molewcular species
|
|
c
|
|
INCLUDE 'PARAMS.FOR'
|
|
parameter (nmol=32)
|
|
character*4 filpf(nmol)
|
|
character*7 fil
|
|
character*6 fil1
|
|
character*1 fil0
|
|
character*17 fil5
|
|
character*18 fil6
|
|
dimension indtsu(nmol),ntemp(nmol),pf(nmol,10000)
|
|
c
|
|
data filpf/
|
|
* ' AlO',' C2',' CH',' CN',' CO',
|
|
* ' CS',' CaH',' CaO',' CrH',' FeH',
|
|
* ' H2',' HCl',' HF',' MgH',' MgO',
|
|
* ' N2',' NH',' NO',' NS',' NaH',
|
|
* ' OH',' PH',' SH',' SiH',' SiO',
|
|
* ' SiS',' TiH',' TiO',' VO',
|
|
^ ' H2O',' H2S',' CO2'/
|
|
data ntemp/
|
|
* 9, 10, 8, 3, 9, 3, 3, 8, 3, 10,
|
|
* 10, 5, 5, 3, 5, 9, 5, 5, 5, 5,
|
|
* 5, 4, 5, 5, 9, 5, 48, 8, 8, 10,
|
|
* 3, 5/
|
|
data indtsu/
|
|
* 134, 8, 5, 7, 6, 20, 34, 179, 198, 214,
|
|
* 2, 36, 33, 32, 126, 9, 12, 11, 23, 122,
|
|
* 4, 148, 16, 17, 25, 28, 315, 29, 30, 3,
|
|
* 57, 44/
|
|
data iread /1/
|
|
c
|
|
if(iread.eq.1) then
|
|
do i=1,nmol
|
|
ntemp(i)=ntemp(i)*1000
|
|
end do
|
|
ntemp(27)=ntemp(27)/10
|
|
do i=1,nmol
|
|
fil=filpf(i)//'.pf'
|
|
fil1=fil(2:)
|
|
fil0=fil1(:1)
|
|
if(fil0.eq.' ') then
|
|
fil5='data/EXOMOL/'//fil1(2:)
|
|
open(unit=67,file=fil5,status='old')
|
|
else
|
|
fil6=fil1
|
|
open(unit=67,file='data/EXOMOL/'//fil6,status='old')
|
|
end if
|
|
do j=1,ntemp(i)
|
|
read(67,*) tt,pf(i,j)
|
|
end do
|
|
close(67)
|
|
end do
|
|
iread=0
|
|
end if
|
|
c
|
|
ie=0
|
|
u=0.
|
|
do i=1,nmol
|
|
if(indtsu(i).eq.indmol) ie=i
|
|
end do
|
|
if(ie.eq.0) return
|
|
c
|
|
tmax=float(ntemp(ie))
|
|
if(t.le.tmax) then
|
|
j=int(t)
|
|
u=pf(ie,j)
|
|
else
|
|
call irwpf(0,0,indmol,tmax,umx)
|
|
call irwpf(0,0,indmol,t,uirw)
|
|
u=pf(ie,ntemp(ie))/umx*uirw
|
|
end if
|
|
c
|
|
return
|
|
end
|