cloudy
trunk
source
predcont.cpp
Go to the documentation of this file.
1
/* This file is part of Cloudy and is copyright (C)1978-2013 by Gary J. Ferland and
2
* others. For conditions of distribution and use see copyright notice in license.txt */
3
#include "
cddefines.h
"
4
#include "
predcont.h
"
5
#include "
rfield.h
"
6
7
t_PredCont::t_PredCont
()
8
{
9
/* energies where diffuse continuum is to be entered into line array
10
* NB - if these numbers change, the wavelength in the printout will change
11
* too, since the wavelength is derived form this */
12
/* >>>chng 99 mar 23, adjusted energies so that wavelength line list is
13
* the same as it was in C90 - small changes were caused by going over
14
* to proper Rydberg constant */
15
16
p_val
.reserve(100);
17
18
add
(1275.,
"MHz"
);
/* VLA */
19
add
(1465.,
"MHz"
);
/* VLA */
20
add
(4535.,
"MHz"
);
/* VLA */
21
add
(4885.,
"MHz"
);
/* VLA */
22
add
(8435.,
"MHz"
);
/* VLA */
23
add
(8735.,
"MHz"
);
/* VLA */
24
add
(3.4,
"cm"
);
25
add
(14965.,
"MHz"
);
/* VLA */
26
add
(22460.,
"MHz"
);
/* VLA */
27
add
(30.,
"GHz"
);
/* OCRA */
28
add
(43340.,
"MHz"
);
/* VLA */
29
add
(7.445e-04,
"Ryd"
);
30
add
(1.498e-03,
"Ryd"
);
31
add
(2.211e-03,
"Ryd"
);
32
add
(2.952e-03,
"Ryd"
);
33
add
(3.677e-03,
"Ryd"
);
34
add
(3.7501e-03,
"Ryd"
);
/* Ney-Allen */
35
add
(3.9915e-03,
"Ryd"
);
/* Ney-Allen */
36
add
(4.2543e-03,
"Ryd"
);
/* Ney-Allen */
37
add
(4.314e-03,
"Ryd"
);
38
add
(4.6446e-03,
"Ryd"
);
/* Ney-Allen */
39
add
(5.162e-03,
"Ryd"
);
40
add
(5.2462e-03,
"Ryd"
);
/* Ney-Allen */
41
add
(5.8079e-03,
"Ryd"
);
/* Ney-Allen */
42
add
(6.240e-03,
"Ryd"
);
43
add
(7.3312e-03,
"Ryd"
);
/* Ney-Allen */
44
add
(7.9936e-03,
"Ryd"
);
/* Ney-Allen */
45
add
(8.7119e-03,
"Ryd"
);
/* Ney-Allen */
46
add
(9.6125e-03,
"Ryd"
);
/* Ney-Allen */
47
add
(9.77243e-03,
"Ryd"
);
48
add
(1.1099e-02,
"Ryd"
);
/* Ney-Allen */
49
add
(1.2022e-02,
"Ryd"
);
/* Ney-Allen */
50
add
(1.29253e-02,
"Ryd"
);
51
add
(2.2152e-02,
"Ryd"
);
52
add
(3.92044e-02,
"Ryd"
);
53
add
(5.54593e-02,
"Ryd"
);
54
/* next two either side of n=4 edge of hydrogen, set to 1.5% off either direction*/
55
/* >>chng 00 sep 18, had been too close in energy */
56
add
(6.1563e-02,
"Ryd"
);
57
add
(6.3437e-02,
"Ryd"
);
58
add
(8.1460e-02,
"Ryd"
);
59
/* >>chng 00 sep 14, changed energies of paschen jump to be farther away as
60
* per note on BJ */
61
add
(0.1094,
"Ryd"
);
62
add
(0.1128,
"Ryd"
);
63
add
(0.14675,
"Ryd"
);
64
add
(0.18653,
"Ryd"
);
65
/* >>chng 00 sep 14, next two energies changed since they were too close to BJ
66
* and so both ended up shortward of limit*/
67
/* these two are the Balmer jump, below and above. */
68
/* continuum binning not much better than 1% so offset energies by more */
69
add
(0.246,
"Ryd"
);
70
add
(0.254,
"Ryd"
);
71
add
(0.375,
"Ryd"
);
/* peak on two photon continuum */
72
add
(0.38096,
"Ryd"
);
73
add
(0.43994,
"Ryd"
);
74
add
(0.44394,
"Ryd"
);
75
add
(0.50811,
"Ryd"
);
76
add
(0.57489,
"Ryd"
);
77
add
(0.62487,
"Ryd"
);
78
add
(0.67155,
"Ryd"
);
79
add
(0.70244,
"Ryd"
);
80
add
(0.72163,
"Ryd"
);
81
add
(0.74812,
"Ryd"
);
82
add
(0.76172,
"Ryd"
);
83
add
(0.77551,
"Ryd"
);
84
add
(0.79681,
"Ryd"
);
85
add
(0.81859,
"Ryd"
);
86
add
(0.8260,
"Ryd"
);
87
add
(0.84859,
"Ryd"
);
88
add
(0.85618,
"Ryd"
);
89
add
(0.87967,
"Ryd"
);
90
add
(1000.,
"A"
);
91
/* points on either side of Lyman jump,
92
* energies changed to be robust when energy grid changes,
93
* grid resolution is about 1%, so change from 0.99783 and 1.000
94
* to 1 +/- 1.5%
95
* >>chng 00 sep 23 change wavelength points for next two */
96
add
(0.985,
"Ryd"
);
97
add
(1.015,
"Ryd"
);
98
add
(1.199,
"Ryd"
);
99
add
(1.299,
"Ryd"
);
100
add
(1.4984,
"Ryd"
);
101
add
(1.58441,
"Ryd"
);
102
/* points on either side of Lyman jump,
103
* energies changed to be robust when energy grid changes,
104
* grid resolution is about 1%, so change from 1.80433 and 1.809
105
* to 1.807 +/- 1.5%
106
* >>chng 00 sep 23 change wavelength points for next two */
107
add
(1.780,
"Ryd"
);
108
add
(1.834,
"Ryd"
);
109
add
(2.283,
"Ryd"
);
110
}
111
112
long
t_PredCont::find
(
double
energy,
const
char
* unit)
const
113
{
114
DEBUG_ENTRY
(
"t_PredCont::find()"
);
115
116
for
(
size_t
i=0; i <
p_val
.size(); ++i )
117
if
(
fp_equal
(
p_val
[i].get(unit), energy ) )
118
return
i;
119
return
-1;
120
}
121
122
long
t_PredCont::add
(
double
energy,
const
char
* unit)
123
{
124
DEBUG_ENTRY
(
"t_PredCont::add()"
);
125
126
long
ind =
find
(energy, unit);
127
if
( ind < 0 )
128
{
129
p_val
.push_back(
EnergyEntry
(energy, unit) );
130
ind =
p_val
.size()-1;
131
}
132
double
eRyd =
p_val
[ind].Ryd();
133
if
( eRyd < rfield.emm || eRyd >
rfield
.
egamry
)
134
{
135
fprintf(
ioQQQ
,
" The energy %g Ryd (%g %s) is not within the default Cloudy range\n"
,
136
eRyd, energy, unit );
137
fprintf(
ioQQQ
,
" The energy must be between %g and %g Ryd\n"
,
138
rfield
.
emm
,
rfield
.
egamry
);
139
cdEXIT
(
EXIT_FAILURE
);
140
}
141
return
ind;
142
}
rfield
t_rfield rfield
Definition:
rfield.cpp:8
ioQQQ
FILE * ioQQQ
Definition:
cddefines.cpp:7
rfield.h
predcont.h
EnergyEntry
Definition:
energy.h:98
EXIT_FAILURE
#define EXIT_FAILURE
Definition:
cddefines.h:140
t_rfield::egamry
realnum egamry
Definition:
rfield.h:52
t_PredCont::t_PredCont
t_PredCont()
Definition:
predcont.cpp:7
cddefines.h
cdEXIT
#define cdEXIT(FAIL)
Definition:
cddefines.h:434
t_PredCont::find
long find(double energy, const char *unit="Ryd") const
Definition:
predcont.cpp:112
t_PredCont::add
long add(double energy, const char *unit="Ryd")
Definition:
predcont.cpp:122
fp_equal
bool fp_equal(sys_float x, sys_float y, int n=3)
Definition:
cddefines.h:812
t_PredCont::p_val
vector< EnergyEntry > p_val
Definition:
predcont.h:18
t_rfield::emm
realnum emm
Definition:
rfield.h:49
DEBUG_ENTRY
#define DEBUG_ENTRY(funcname)
Definition:
cddefines.h:684
Generated by
1.8.17