cloudy  trunk
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 
7 class Energy
8 {
9  double m_energy;
10 public:
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 //
98 class EnergyEntry : public Energy
99 {
100  long p_ip;
101  void p_set_ip();
102 public:
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
135  long ip_fortran()
136  {
137  return ip_C() + 1;
138  }
139 };
140 
141 const char *StandardEnergyUnit(const char *);
142 
143 bool lgConserveEnergy( void );
144 
145 #endif /* ENERGY_H_ */
146 
Energy::Energy
Energy(double energy)
Definition: energy.h:13
FR1RYD
const UNUSED double FR1RYD
Definition: physconst.h:195
Energy::Hz
double Hz() const
Definition: energy.h:54
EnergyEntry::p_set_ip
void p_set_ip()
Definition: energy.cpp:293
Energy::Energy
Energy(double energy, const char *unit)
Definition: energy.h:14
EnergyEntry::p_ip
long p_ip
Definition: energy.h:100
Energy::kHz
double kHz() const
Definition: energy.h:58
EnergyEntry::ip_C
long ip_C()
Definition: energy.h:126
Energy::GHz
double GHz() const
Definition: energy.h:66
Energy::Energy
Energy()
Definition: energy.h:12
Energy::WN
double WN() const
Definition: energy.h:38
Energy::m_energy
double m_energy
Definition: energy.h:9
Energy::MeV
double MeV() const
Definition: energy.h:50
EnergyEntry::EnergyEntry
EnergyEntry(double energy, const char *unit)
Definition: energy.h:111
Energy::nm
double nm() const
Definition: energy.h:74
EnergyEntry
Definition: energy.h:98
EnergyEntry::set
void set(double energy, const char *unit)
Definition: energy.h:115
Energy::K
double K() const
Definition: energy.h:30
Energy::set
void set(double energy)
Definition: energy.h:19
Energy::Ryd
double Ryd() const
Definition: energy.h:26
RYDLAM
const UNUSED double RYDLAM
Definition: physconst.h:176
RYD_INF
const UNUSED double RYD_INF
Definition: physconst.h:115
Energy
Definition: energy.h:7
Energy::keV
double keV() const
Definition: energy.h:46
lgConserveEnergy
bool lgConserveEnergy(void)
Definition: energy.cpp:314
EnergyEntry::EnergyEntry
EnergyEntry()
Definition: energy.h:103
Energy::mm
double mm() const
Definition: energy.h:82
EnergyEntry::set
void set(double energy)
Definition: energy.h:120
EnergyEntry::EnergyEntry
EnergyEntry(double energy)
Definition: energy.h:107
Energy::MHz
double MHz() const
Definition: energy.h:62
Energy::Erg
double Erg() const
Definition: energy.h:34
Energy::cm
double cm() const
Definition: energy.h:86
TE1RYD
const UNUSED double TE1RYD
Definition: physconst.h:183
Energy::Angstrom
double Angstrom() const
Definition: energy.h:70
EnergyEntry::ip_fortran
long ip_fortran()
Definition: energy.h:135
EVRYD
const UNUSED double EVRYD
Definition: physconst.h:189
StandardEnergyUnit
const char * StandardEnergyUnit(const char *)
Definition: energy.cpp:47
Energy::get
double get(const char *unit) const
Definition: energy.cpp:141
EN1RYD
const UNUSED double EN1RYD
Definition: physconst.h:179
Energy::micron
double micron() const
Definition: energy.h:78
Energy::eV
double eV() const
Definition: energy.h:42