1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
|
module readdata_mod
use common_mod
!subroutines to read in data files to arrays at beginning of simulation
contains
subroutine readData()
implicit none
integer :: i, ios ! counter, io state
integer :: iup, ilow ! H counters
! initialise all the arrays that we are reading in
y_dat = 0.
Ay_dat = 0.
HIRecLineData = 0.
HeIILymanData = 0.
HeIILymanNu = 0.
HeIIRecLinedata = 0.
direc_coeffs%elem = 0
direc_coeffs%n = 0
direc_coeffs%a = 0.
direc_coeffs%b = 0.
direc_coeffs%c = 0.
direc_coeffs%d = 0.
direc_coeffs%f = 0.
direc_coeffs%g = 0
aldropequi_coeffs%elem = 0
aldropequi_coeffs%n = 0
aldropequi_coeffs%a = 0
aldropequi_coeffs%b = 0
aldropequi_coeffs%t0 = 0.
aldropequi_coeffs%t1 = 0.
! read in rates from data/HeI2phot.dat
open(unit = 93, action="read", file = PREFIX//"/share/mocassin/data/HeI2phot.dat", status = "old", position = "rewind", iostat=ios)
if (ios /= 0) then
print*, "! readData: can't open file: ",PREFIX,"/share/mocassin/data/HeI2phot.dat"
stop
end if
do i = 1, 41
read(unit = 93, fmt = *) y_dat(i), Ay_dat(i)
end do
close(93)
! read in HI recombination lines [e-25 ergs*cm^3/s]
! (Storey and Hummer MNRAS 272(1995)41)
open(unit = 94, action="read", file = PREFIX//"/share/mocassin/data/r1b0100.dat", status = "old", position = "rewind", iostat=ios)
if (ios /= 0) then
print*, "! readData: can't open file: ",PREFIX,"/share/mocassin/data/r1b0100.dat"
stop
end if
do iup = 15, 3, -1
read(94, fmt=*) (HIRecLinedata(iup, ilow), ilow = 2, min(8, iup-1))
end do
close(94)
! read in HeII Lyman line ratios up to level n=5 [e-25 ergs*cm^3/s]
! (Storey and Hummer MNRAS 272(1995)41)
open(unit = 98, action="read", file = PREFIX//"/share/mocassin/data/r2a0100.dat", status = "old", position = "rewind", iostat=ios)
if (ios /= 0) then
print*, "! readData: can't open file: ",PREFIX,"/share/mocassin/data/r2a0100.dat"
stop
end if
do i = 1, NHeIILyman
read(98, fmt=*) HeIILymanData(i), HeIILymanNu(i)
end do
close(98)
! read in HeII recombination lines [e-25 ergs*cm^3/s]
! (Storey and Hummer MNRAS 272(1995)41)
open(unit = 95, action="read", file = PREFIX//"/share/mocassin/data/r2b0100.dat", status = "old", position = "rewind", iostat=ios)
if (ios /= 0) then
print*, "! readData: can't open file: ",PREFIX,"/share/mocassin/data/r2b0100.dat"
stop
end if
do iup = 30, 3, -1
read(95, fmt=*) (HeIIRecLinedata(iup, ilow), ilow = 2, min(16, iup-1))
end do
close(95)
! dielectronic recombination coefficients
open (unit=18, file=PREFIX//'/share/mocassin/data/dielectronic.dat', status='old',position='rewind', iostat = ios, action="read")
do i = 1, 25
read(unit=18, fmt=*, iostat=ios) direc_coeffs(i)%elem, direc_coeffs(i)%n, direc_coeffs(i)%a, direc_coeffs(i)%b, direc_coeffs(i)%c, direc_coeffs(i)%d, direc_coeffs(i)%f, direc_coeffs(i)%g
if (ios < 0) exit ! end of file reached
enddo
close(18)
! high temperature dielectronic recombination coefficients from
! Aldrovandi and Pequignot 1973
open (unit=17, file=PREFIX//'/share/mocassin/data/aldrovandi.dat', status='old',position='rewind', iostat = ios, action="read")
if (ios /= 0) then
print*, "! readData: can't open file ",PREFIX,"/share/mocassin/data/alrovandi.dat"
stop
end if
do i = 1, 167
read(unit=17, fmt=*, iostat=ios) aldropequi_coeffs(i)%elem, aldropequi_coeffs(i)%n, aldropequi_coeffs(i)%a, aldropequi_coeffs(i)%b, aldropequi_coeffs(i)%t0, aldropequi_coeffs(i)%t1
if (ios < 0) exit ! end of file reached
end do
close(17)
end subroutine readData
end module readdata_mod
|