cloudy  trunk
TestEnergy.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 "cdstd.h"
4 #include <UnitTest++.h>
5 #include "cddefines.h"
6 #include "physconst.h"
7 #include "energy.h"
8 
9 namespace {
10 
11  TEST(TestEnergyCTor)
12  {
13  Energy Ezero;
14  CHECK( fp_equal( Ezero.Ryd(), 0. ) );
15  Energy Eryd0(1.);
16  CHECK( fp_equal( Eryd0.Ryd(), 1. ) );
17  Energy Eryd1(1.,"Ryd");
18  CHECK( fp_equal( Eryd1.Ryd(), 1. ) );
19  Energy Eerg(1.,"erg");
20  CHECK( fp_equal( Eerg.Ryd(), 1./EN1RYD ) );
21  Energy EeV(1.,"eV");
22  CHECK( fp_equal( EeV.Ryd(), 1./EVRYD ) );
23  Energy EkeV(1.,"keV");
24  CHECK( fp_equal( EkeV.Ryd(), 1.e3/EVRYD ) );
25  Energy EMeV(1.,"MeV");
26  CHECK( fp_equal( EMeV.Ryd(), 1.e6/EVRYD ) );
27  Energy Ewavn(1.,"cm^-1");
28  CHECK( fp_equal( Ewavn.Ryd(), 1./RYD_INF ) );
29  Energy Ecm(1.,"cm");
30  CHECK( fp_equal( Ecm.Ryd(), RYDLAM/1.e8 ) );
31  Energy Emm(1.,"mm");
32  CHECK( fp_equal( Emm.Ryd(), RYDLAM/1.e7 ) );
33  Energy Eum(1.,"um");
34  CHECK( fp_equal( Eum.Ryd(), RYDLAM/1.e4 ) );
35  Energy Enm(1.,"nm");
36  CHECK( fp_equal( Enm.Ryd(), RYDLAM/1.e1 ) );
37  Energy EA(1.,"A");
38  CHECK( fp_equal( EA.Ryd(), RYDLAM ) );
39  Energy EHz(1.,"Hz");
40  CHECK( fp_equal( EHz.Ryd(), 1./FR1RYD ) );
41  Energy EkHz(1.,"kHz");
42  CHECK( fp_equal( EkHz.Ryd(), 1.e3/FR1RYD ) );
43  Energy EMHz(1.,"MHz");
44  CHECK( fp_equal( EMHz.Ryd(), 1.e6/FR1RYD ) );
45  Energy EGHz(1.,"GHz");
46  CHECK( fp_equal( EGHz.Ryd(), 1.e9/FR1RYD ) );
47  Energy EK(1.,"K");
48  CHECK( fp_equal( EK.Ryd(), 1./TE1RYD ) );
49  }
50 
51  TEST(TestEnergySet)
52  {
53  Energy E;
54  E.set(10.);
55  CHECK( fp_equal( E.Ryd(), 10. ) );
56  E.set(10.,"Ryd");
57  CHECK( fp_equal( E.Ryd(), 10. ) );
58  E.set(10.,"erg");
59  CHECK( fp_equal( E.Ryd(), 10./EN1RYD ) );
60  E.set(10.,"eV");
61  CHECK( fp_equal( E.Ryd(), 10./EVRYD ) );
62  E.set(10.,"keV");
63  CHECK( fp_equal( E.Ryd(), 1.e4/EVRYD ) );
64  E.set(10.,"MeV");
65  CHECK( fp_equal( E.Ryd(), 1.e7/EVRYD ) );
66  E.set(10.,"cm^-1");
67  CHECK( fp_equal( E.Ryd(), 10./RYD_INF ) );
68  E.set(10.,"cm");
69  CHECK( fp_equal( E.Ryd(), RYDLAM/1.e9 ) );
70  E.set(10.,"mm");
71  CHECK( fp_equal( E.Ryd(), RYDLAM/1.e8 ) );
72  E.set(10.,"um");
73  CHECK( fp_equal( E.Ryd(), RYDLAM/1.e5 ) );
74  E.set(10.,"nm");
75  CHECK( fp_equal( E.Ryd(), RYDLAM/1.e2 ) );
76  E.set(10.,"A");
77  CHECK( fp_equal( E.Ryd(), RYDLAM/10. ) );
78  E.set(10.,"Hz");
79  CHECK( fp_equal( E.Ryd(), 10./FR1RYD ) );
80  E.set(10.,"kHz");
81  CHECK( fp_equal( E.Ryd(), 1.e4/FR1RYD ) );
82  E.set(10.,"MHz");
83  CHECK( fp_equal( E.Ryd(), 1.e7/FR1RYD ) );
84  E.set(10.,"GHz");
85  CHECK( fp_equal( E.Ryd(), 1.e10/FR1RYD ) );
86  E.set(10.,"K");
87  CHECK( fp_equal( E.Ryd(), 10./TE1RYD ) );
88  }
89 
90  TEST(TestEnergyGet)
91  {
92  Energy E( 1. );
93  CHECK( fp_equal( E.get("Ryd"), 1. ) );
94  CHECK( fp_equal( E.get("erg"), EN1RYD ) );
95  CHECK( fp_equal( E.get("eV"), EVRYD ) );
96  CHECK( fp_equal( E.get("keV"), EVRYD/1.e3 ) );
97  CHECK( fp_equal( E.get("MeV"), EVRYD/1.e6 ) );
98  CHECK( fp_equal( E.get("cm^-1"), RYD_INF ) );
99  CHECK( fp_equal( E.get("cm"), RYDLAM/1.e8 ) );
100  CHECK( fp_equal( E.get("mm"), RYDLAM/1.e7 ) );
101  CHECK( fp_equal( E.get("um"), RYDLAM/1.e4 ) );
102  CHECK( fp_equal( E.get("nm"), RYDLAM/1.e1 ) );
103  CHECK( fp_equal( E.get("A"), RYDLAM ) );
104  CHECK( fp_equal( E.get("Hz"), FR1RYD ) );
105  CHECK( fp_equal( E.get("kHz"), FR1RYD/1.e3 ) );
106  CHECK( fp_equal( E.get("MHz"), FR1RYD/1.e6 ) );
107  CHECK( fp_equal( E.get("GHz"), FR1RYD/1.e9 ) );
108  CHECK( fp_equal( E.get("K"), TE1RYD ) );
109  }
110 
111  TEST(TestEnergyGet2)
112  {
113  Energy E( 1. );
114  CHECK( fp_equal( E.Ryd(), 1. ) );
115  CHECK( fp_equal( E.Erg(), EN1RYD ) );
116  CHECK( fp_equal( E.eV(), EVRYD ) );
117  CHECK( fp_equal( E.keV(), EVRYD/1.e3 ) );
118  CHECK( fp_equal( E.MeV(), EVRYD/1.e6 ) );
119  CHECK( fp_equal( E.WN(), RYD_INF ) );
120  CHECK( fp_equal( E.cm(), RYDLAM/1.e8 ) );
121  CHECK( fp_equal( E.mm(), RYDLAM/1.e7 ) );
122  CHECK( fp_equal( E.micron(), RYDLAM/1.e4 ) );
123  CHECK( fp_equal( E.nm(), RYDLAM/1.e1 ) );
124  CHECK( fp_equal( E.Angstrom(), RYDLAM ) );
125  CHECK( fp_equal( E.Hz(), FR1RYD ) );
126  CHECK( fp_equal( E.kHz(), FR1RYD/1.e3 ) );
127  CHECK( fp_equal( E.MHz(), FR1RYD/1.e6 ) );
128  CHECK( fp_equal( E.GHz(), FR1RYD/1.e9 ) );
129  CHECK( fp_equal( E.K(), TE1RYD ) );
130  }
131 
132  TEST(TestEnergyUnitConversion)
133  {
134  Energy E( 10. );
135  CHECK( fp_equal( E.get( StandardEnergyUnit(" RYDBERG ") ), 10. ) );
136  CHECK( fp_equal( E.get( StandardEnergyUnit(" ERG ")), 10.*EN1RYD ) );
137  CHECK( fp_equal( E.get( StandardEnergyUnit(" EV ") ), 10.*EVRYD ) );
138  CHECK( fp_equal( E.get( StandardEnergyUnit(" KEV ") ), EVRYD/1.e2 ) );
139  CHECK( fp_equal( E.get( StandardEnergyUnit(" MEV ") ), EVRYD/1.e5 ) );
140  CHECK( fp_equal( E.get( StandardEnergyUnit(" WAVENUMBERS ") ), 10.*RYD_INF ) );
141  CHECK( fp_equal( E.get( StandardEnergyUnit(" CM ") ), RYDLAM/1.e9 ) );
142  CHECK( fp_equal( E.get( StandardEnergyUnit(" CENTIMETER ") ), RYDLAM/1.e9 ) );
143  CHECK( fp_equal( E.get( StandardEnergyUnit(" MM ") ), RYDLAM/1.e8 ) );
144  CHECK( fp_equal( E.get( StandardEnergyUnit(" MICRON ") ), RYDLAM/1.e5 ) );
145  CHECK( fp_equal( E.get( StandardEnergyUnit(" NM ") ), RYDLAM/1.e2 ) );
146  CHECK( fp_equal( E.get( StandardEnergyUnit(" ANGSTROM ") ), RYDLAM/10. ) );
147  CHECK( fp_equal( E.get( StandardEnergyUnit(" HZ ") ), 10.*FR1RYD ) );
148  CHECK( fp_equal( E.get( StandardEnergyUnit(" KHZ ") ), FR1RYD/1.e2 ) );
149  CHECK( fp_equal( E.get( StandardEnergyUnit(" MHZ ") ), FR1RYD/1.e5 ) );
150  CHECK( fp_equal( E.get( StandardEnergyUnit(" GHZ ") ), FR1RYD/1.e8 ) );
151  CHECK( fp_equal( E.get( StandardEnergyUnit(" K ") ), 10.*TE1RYD ) );
152  CHECK( fp_equal( E.get( StandardEnergyUnit(" KELVIN ") ), 10.*TE1RYD ) );
153  }
154 
155 }
FR1RYD
const UNUSED double FR1RYD
Definition: physconst.h:195
Energy::Hz
double Hz() const
Definition: energy.h:54
energy.h
Energy::kHz
double kHz() const
Definition: energy.h:58
Energy::GHz
double GHz() const
Definition: energy.h:66
Energy::WN
double WN() const
Definition: energy.h:38
Energy::MeV
double MeV() const
Definition: energy.h:50
Energy::nm
double nm() const
Definition: energy.h:74
Energy::K
double K() const
Definition: energy.h:30
cddefines.h
Energy::set
void set(double energy)
Definition: energy.h:19
e2
double e2(double t)
Definition: service.cpp:299
Energy::Ryd
double Ryd() const
Definition: energy.h:26
cdstd.h
RYDLAM
const UNUSED double RYDLAM
Definition: physconst.h:176
RYD_INF
const UNUSED double RYD_INF
Definition: physconst.h:115
StandardEnergyUnit
const char * StandardEnergyUnit(const char *chCard)
Definition: energy.cpp:47
Energy
Definition: energy.h:7
Energy::keV
double keV() const
Definition: energy.h:46
fp_equal
bool fp_equal(sys_float x, sys_float y, int n=3)
Definition: cddefines.h:812
physconst.h
Energy::mm
double mm() const
Definition: energy.h:82
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
EVRYD
const UNUSED double EVRYD
Definition: physconst.h:189
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