17 Flux Ferg_s_cm20(E,1.);
18 CHECK(
fp_equal( Ferg_s_cm20.get(), 1. ) );
19 Flux Ferg_s_cm21(E,1.,
"erg/s/cm2");
20 CHECK(
fp_equal( Ferg_s_cm21.get(), 1. ) );
21 Flux Ferg_s_cm2_A(E,1.,
"erg/s/cm2/A");
22 CHECK(
fp_equal( Ferg_s_cm2_A.get(), E.Angstrom() ) );
23 Flux Ferg_s_cm2_micron(E,1.,
"erg/s/cm2/micron");
24 CHECK(
fp_equal( Ferg_s_cm2_micron.get(), E.micron() ) );
25 Flux Ferg_s_cm2_Hz(E,1.,
"erg/s/cm2/Hz");
26 CHECK(
fp_equal( Ferg_s_cm2_Hz.get(), E.Hz() ) );
27 Flux FW_m2(E,1.,
"W/m2");
28 CHECK(
fp_equal( FW_m2.get(), 1.e3 ) );
29 Flux FW_m2_A(E,1.,
"W/m2/A");
30 CHECK(
fp_equal( FW_m2_A.get(), 1.e3*E.Angstrom() ) );
31 Flux FW_m2_nm(E,1.,
"W/m2/nm");
32 CHECK(
fp_equal( FW_m2_nm.get(), 1.e3*E.nm() ) );
33 Flux FW_m2_micron(E,1.,
"W/m2/micron");
34 CHECK(
fp_equal( FW_m2_micron.get(), 1.e3*E.micron() ) );
35 Flux FW_m2_Hz(E,1.,
"W/m2/Hz");
36 CHECK(
fp_equal( FW_m2_Hz.get(), 1.e3*E.Hz() ) );
37 Flux FW_cm2(E,1.,
"W/cm2");
38 CHECK(
fp_equal( FW_cm2.get(), 1.e7 ) );
39 Flux FW_cm2_A(E,1.,
"W/cm2/A");
40 CHECK(
fp_equal( FW_cm2_A.get(), 1.e7*E.Angstrom() ) );
41 Flux FW_cm2_micron(E,1.,
"W/cm2/micron");
42 CHECK(
fp_equal( FW_cm2_micron.get(), 1.e7*E.micron() ) );
43 Flux FW_cm2_Hz(E,1.,
"W/cm2/Hz");
44 CHECK(
fp_equal( FW_cm2_Hz.get(), 1.e7*E.Hz() ) );
45 Flux FW_cm2_Hz_sr(E,1.,
"W/cm2/Hz/sr");
46 CHECK(
fp_equal( FW_cm2_Hz_sr.get(), 1.e7*E.Hz()*
PI4 ) );
47 Flux FW_cm2_Hz_arcsec2(E,1.,
"W/cm2/Hz/arcsec2");
50 CHECK(
fp_equal( FJy.get(), 1.e-23*E.Hz() ) );
51 Flux FmJy(E,1.,
"mJy");
52 CHECK(
fp_equal( FmJy.get(), 1.e-26*E.Hz() ) );
53 Flux FMJy_sr(E,1.,
"MJy/sr");
54 CHECK(
fp_equal( FMJy_sr.get(), 1.e-17*E.Hz()*
PI4 ) );
63 CHECK_EQUAL(
"erg/s/cm2", F.
uu() );
65 F.
set(E,10.,
"erg/s/cm2");
67 CHECK_EQUAL(
"erg/s/cm2", F.
uu() );
69 F.
set(E,10.,
"erg/s/cm2/A");
71 CHECK_EQUAL(
"erg/s/cm2/A", F.
uu() );
73 F.
set(E,10.,
"erg/s/cm2/micron");
75 CHECK_EQUAL(
"erg/s/cm2/micron", F.
uu() );
77 F.
set(E,10.,
"erg/s/cm2/Hz");
79 CHECK_EQUAL(
"erg/s/cm2/Hz", F.
uu() );
83 CHECK_EQUAL(
"W/m2", F.
uu() );
85 F.
set(E,10.,
"W/m2/A");
87 CHECK_EQUAL(
"W/m2/A", F.
uu() );
89 F.
set(E,10.,
"W/m2/nm");
91 CHECK_EQUAL(
"W/m2/nm", F.
uu() );
93 F.
set(E,10.,
"W/m2/micron");
95 CHECK_EQUAL(
"W/m2/micron", F.
uu() );
97 F.
set(E,10.,
"W/m2/Hz");
99 CHECK_EQUAL(
"W/m2/Hz", F.
uu() );
101 F.
set(E,10.,
"W/cm2");
103 CHECK_EQUAL(
"W/cm2", F.
uu() );
105 F.
set(E,10.,
"W/cm2/A");
107 CHECK_EQUAL(
"W/cm2/A", F.
uu() );
109 F.
set(E,10.,
"W/cm2/micron");
111 CHECK_EQUAL(
"W/cm2/micron", F.
uu() );
113 F.
set(E,10.,
"W/cm2/Hz");
115 CHECK_EQUAL(
"W/cm2/Hz", F.
uu() );
117 F.
set(E,10.,
"W/cm2/Hz/sr");
119 CHECK_EQUAL(
"W/cm2/Hz/sr", F.
uu() );
121 F.
set(E,10.,
"W/cm2/Hz/arcsec2");
123 CHECK_EQUAL(
"W/cm2/Hz/arcsec2", F.
uu() );
127 CHECK_EQUAL(
"Jy", F.
uu() );
131 CHECK_EQUAL(
"mJy", F.
uu() );
133 F.
set(E,10.,
"MJy/sr");
135 CHECK_EQUAL(
"MJy/sr", F.
uu() );
143 CHECK(
fp_equal( F.
get(
"erg/s/cm2/A"), 1./E.Angstrom() ) );
144 CHECK(
fp_equal( F.
get(
"erg/s/cm2/micron"), 1./E.micron() ) );
145 CHECK(
fp_equal( F.
get(
"erg/s/cm2/Hz"), 1./E.Hz() ) );
147 CHECK(
fp_equal( F.
get(
"W/m2/A"), 1.e-3/E.Angstrom() ) );
148 CHECK(
fp_equal( F.
get(
"W/m2/micron"), 1.e-3/E.micron() ) );
149 CHECK(
fp_equal( F.
get(
"W/m2/Hz"), 1.e-3/E.Hz() ) );
151 CHECK(
fp_equal( F.
get(
"W/cm2/A"), 1.e-7/E.Angstrom() ) );
152 CHECK(
fp_equal( F.
get(
"W/cm2/nm"), 1.e-7/E.nm() ) );
153 CHECK(
fp_equal( F.
get(
"W/cm2/micron"), 1.e-7/E.micron() ) );
154 CHECK(
fp_equal( F.
get(
"W/cm2/Hz"), 1.e-7/E.Hz() ) );
162 TEST(TestFluxUnitConversion)
187 TEST(TestValidFluxUnit)
201 TEST(TestEnergyFluxParser1)
204 strcpy( chCard,
"OPTIMIZE FLUX 0.03 RYD 24 ERG/S/SQCM/MICRON" );
212 CHECK(
fp_equal( F.
get(
"erg/s/cm2/micron"), 24. ) );
215 TEST(TestEnergyFluxParser2)
218 strcpy( chCard,
"OPTIMIZE FLUX 12 MICRON 24 ERG/S/SQCM" );
225 CHECK(
fp_equal( E.micron(), 12. ) );
229 TEST(TestEnergyFluxParser3)
232 strcpy( chCard,
"OPTIMIZE FLUX 12E-14 ERG 24 W/SQCM" );
239 CHECK(
fp_equal( E.Erg(), 12.e-14 ) );
bool fp_equal(sys_float x, sys_float y, int n=3)
void set(Energy e, double flux)
void setline(const char *const card)
const char * StandardEnergyUnit(void) const
string StandardFluxUnit(void) const
string StandardFluxUnit(const char *chCard)
bool ValidFluxUnit(const string &unit)
UNUSED const double SQAS_SKY