cloudy trunk
Loading...
Searching...
No Matches
energy.h
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
4#ifndef ENERGY_H_
5#define ENERGY_H_
6
7class Energy
8{
9 double m_energy;
10public:
11 // CONSTRUCTORS
12 Energy () : m_energy(0.0) {}
13 Energy (double energy) : m_energy(energy) {}
14 Energy (double energy, const char *unit) : m_energy(0.0)
15 {
16 set(energy, unit);
17 }
18 // MUTATORS
19 void set(double energy)
20 {
21 m_energy = energy;
22 }
23 void set(double energy, const char *unit);
24 // ACCESSORS
25 double get(const char * unit) const;
26 double Ryd() const
27 {
28 return m_energy;
29 }
30 double K() const
31 {
32 return m_energy*TE1RYD;
33 }
34 double Erg() const
35 {
36 return m_energy*EN1RYD;
37 }
38 double WN() const
39 {
40 return m_energy*RYD_INF;
41 }
42 double eV() const
43 {
44 return m_energy*EVRYD;
45 }
46 double keV() const
47 {
48 return 1e-3*eV();
49 }
50 double MeV() const
51 {
52 return 1e-6*eV();
53 }
54 double Hz() const
55 {
56 return m_energy*FR1RYD;
57 }
58 double kHz() const
59 {
60 return Hz()*1e-3;
61 }
62 double MHz() const
63 {
64 return Hz()*1e-6;
65 }
66 double GHz() const
67 {
68 return Hz()*1e-9;
69 }
70 double Angstrom() const
71 {
72 return RYDLAM/m_energy;
73 }
74 double nm() const
75 {
76 return Angstrom()*1e-1;
77 }
78 double micron() const
79 {
80 return Angstrom()*1e-4;
81 }
82 double mm() const
83 {
84 return Angstrom()*1e-7;
85 }
86 double cm() const
87 {
88 return Angstrom()*1e-8;
89 }
90};
91
92//
97//
98class EnergyEntry : public Energy
99{
100 long p_ip;
101 void p_set_ip();
102public:
104 {
105 p_ip = -1;
106 }
107 EnergyEntry(double energy) : Energy(energy)
108 {
109 p_ip = -1;
110 }
111 EnergyEntry(double energy, const char *unit) : Energy(energy,unit)
112 {
113 p_ip = -1;
114 }
115 void set(double energy, const char *unit)
116 {
117 Energy::set(energy,unit);
118 p_set_ip();
119 }
120 void set(double energy)
121 {
122 Energy::set(energy);
123 p_set_ip();
124 }
125 // pointer on C scale
126 long ip_C()
127 {
128 // doing it this way assures that we can create an EnergyEntry before
129 // the mesh is set up; ipoint() will check that mesh is actually set up
130 if( p_ip < 0 )
131 p_set_ip();
132 return p_ip;
133 }
134 // pointer on fortran scale
136 {
137 return ip_C() + 1;
138 }
139};
140
141const char *StandardEnergyUnit(const char *);
142
143bool lgConserveEnergy( void );
144
145#endif /* ENERGY_H_ */
146
long ip_fortran()
Definition energy.h:135
void set(double energy)
Definition energy.h:120
long ip_C()
Definition energy.h:126
void set(double energy, const char *unit)
Definition energy.h:115
void p_set_ip()
Definition energy.cpp:293
EnergyEntry(double energy, const char *unit)
Definition energy.h:111
EnergyEntry()
Definition energy.h:103
EnergyEntry(double energy)
Definition energy.h:107
long p_ip
Definition energy.h:100
double GHz() const
Definition energy.h:66
double mm() const
Definition energy.h:82
double MHz() const
Definition energy.h:62
double MeV() const
Definition energy.h:50
double get(const char *unit) const
Definition energy.cpp:141
double Ryd() const
Definition energy.h:26
double Angstrom() const
Definition energy.h:70
double nm() const
Definition energy.h:74
double WN() const
Definition energy.h:38
double cm() const
Definition energy.h:86
double Hz() const
Definition energy.h:54
double kHz() const
Definition energy.h:58
double keV() const
Definition energy.h:46
Energy(double energy, const char *unit)
Definition energy.h:14
double micron() const
Definition energy.h:78
Energy(double energy)
Definition energy.h:13
double K() const
Definition energy.h:30
Energy()
Definition energy.h:12
double Erg() const
Definition energy.h:34
void set(double energy)
Definition energy.h:19
double eV() const
Definition energy.h:42
double m_energy
Definition energy.h:9
bool lgConserveEnergy(void)
Definition energy.cpp:314
const char * StandardEnergyUnit(const char *)
Definition energy.cpp:47
UNUSED const double FR1RYD
Definition physconst.h:195
UNUSED const double RYD_INF
Definition physconst.h:115
UNUSED const double EN1RYD
Definition physconst.h:179
UNUSED const double EVRYD
Definition physconst.h:189
UNUSED const double TE1RYD
Definition physconst.h:183
UNUSED const double RYDLAM
Definition physconst.h:176