cloudy  trunk
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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 
double Hz() const
Definition: energy.h:54
double Angstrom() const
Definition: energy.h:70
long p_ip
Definition: energy.h:100
Energy()
Definition: energy.h:12
double GHz() const
Definition: energy.h:66
void set(double energy)
Definition: energy.h:19
double keV() const
Definition: energy.h:46
EnergyEntry(double energy, const char *unit)
Definition: energy.h:111
const double RYDLAM
Definition: physconst.h:176
Definition: energy.h:98
EnergyEntry()
Definition: energy.h:103
double cm() const
Definition: energy.h:86
double WN() const
Definition: energy.h:38
const double EVRYD
Definition: physconst.h:189
const double FR1RYD
Definition: physconst.h:195
double Erg() const
Definition: energy.h:34
const double RYD_INF
Definition: physconst.h:115
void set(double energy, const char *unit)
Definition: energy.h:115
bool lgConserveEnergy()
Definition: energy.cpp:314
Energy(double energy)
Definition: energy.h:13
long ip_fortran()
Definition: energy.h:135
double MeV() const
Definition: energy.h:50
void set(double energy)
Definition: energy.h:120
Energy(double energy, const char *unit)
Definition: energy.h:14
double m_energy
Definition: energy.h:9
void p_set_ip()
Definition: energy.cpp:293
double nm() const
Definition: energy.h:74
const double EN1RYD
Definition: physconst.h:179
double K() const
Definition: energy.h:30
double eV() const
Definition: energy.h:42
EnergyEntry(double energy)
Definition: energy.h:107
double kHz() const
Definition: energy.h:58
const char * StandardEnergyUnit(const char *chCard)
Definition: energy.cpp:47
double Ryd() const
Definition: energy.h:26
Definition: energy.h:7
double mm() const
Definition: energy.h:82
double micron() const
Definition: energy.h:78
long ip_C()
Definition: energy.h:126
double MHz() const
Definition: energy.h:62
const double TE1RYD
Definition: physconst.h:183