ARTS 2.5.11 (git: 725533f0)
arts_conversions.h
Go to the documentation of this file.
1
11#ifndef CONVERSIONS_IN_ARTS_H
12#define CONVERSIONS_IN_ARTS_H
13
14#include <cmath>
15
16#include "arts_constants.h"
17
19namespace Conversion {
20using namespace Constant;
21
23constexpr auto deg2rad(auto x) noexcept { return x * one_degree_in_radians; }
24
26constexpr auto rad2deg(auto x) noexcept { return x / one_degree_in_radians; }
27
29auto cosd(auto x) noexcept { return std::cos(deg2rad(x)); }
30
32auto sind(auto x) noexcept { return std::sin(deg2rad(x)); }
33
35auto tand(auto x) noexcept { return std::tan(deg2rad(x)); }
36
38auto acosd(auto x) noexcept { return rad2deg(std::acos(x)); }
39
41auto asind(auto x) noexcept { return rad2deg(std::asin(x)); }
42
44auto atand(auto x) noexcept { return rad2deg(std::atan(x)); }
45
47auto atan2d(auto y, auto x) noexcept { return rad2deg(std::atan2(y, x)); }
48
50constexpr auto kaycm2freq(auto x) noexcept { return x * (100 * c); }
51
53constexpr auto freq2kaycm(auto x) noexcept { return x / (100 * c); }
54
56constexpr auto angcm2freq(auto x) noexcept {
57 return x * kaycm2freq(inv_two_pi);
58}
59
61constexpr auto freq2angcm(auto x) noexcept {
62 return x / kaycm2freq(inv_two_pi);
63}
64
66constexpr auto angfreq2freq(auto x) noexcept { return x * inv_two_pi; }
67
69constexpr auto freq2angfreq(auto x) noexcept { return x * two_pi; }
70
72constexpr auto wavelen2freq(auto x) noexcept { return c / x; }
73
75constexpr auto freq2wavelen(auto x) noexcept { return c / x; }
76
78constexpr auto hz2ghz(auto x) noexcept { return x * 1e-9; }
79
81constexpr auto ghz2hz(auto x) noexcept { return x * 1e9; }
82
84constexpr auto atm2pa(auto x) noexcept { return x * 101'325.0; }
85
87constexpr auto pa2atm(auto x) noexcept { return x / 101'325.0; }
88
90constexpr auto bar2pa(auto x) noexcept { return x * 1e5; }
91
93constexpr auto pa2bar(auto x) noexcept { return x * 1e-5; }
94
96constexpr auto hpa2pa(auto x) noexcept { return x * 1e2; }
97
99constexpr auto pa2hpa(auto x) noexcept { return x * 1e-2; }
100
102constexpr auto hpa2bar(auto x) noexcept { return x * 1e-3; }
103
105constexpr auto bar2hpa(auto x) noexcept{ return x * 1e3; }
106
108constexpr auto torr2pa(auto x) noexcept { return x * atm2pa(1.0 / 760.0); }
109
111constexpr auto pa2torr(auto x) noexcept { return x / atm2pa(1.0 / 760.0); }
112
114constexpr auto mhz_per_torr2hz_per_pa(auto x) noexcept {
115 return x * pa2torr(1e6);
116}
117
119constexpr auto celsius2kelvin(auto x) noexcept { return x + 273.15; }
120
122constexpr auto kelvin2celsius(auto x) noexcept { return x - 273.15; }
123
125constexpr auto kaycm_per_cmsquared2hz_per_msquared(auto x) noexcept {
126 return x * kaycm2freq(1e-4);
127}
128
130constexpr auto hz_per_msquared2kaycm_per_cmsquared(auto x) noexcept {
131 return x * freq2kaycm(1e4);
132}
133
135constexpr auto kaycm_per_atm2hz_per_pa(auto x) noexcept {
136 return x * kaycm2freq(pa2atm(1));
137}
138
140constexpr auto hz_per_pa2kaycm_per_atm(auto x) noexcept {
141 return x * freq2kaycm(atm2pa(1));
142}
143
145constexpr auto kaycm2joule(auto x) noexcept { return x * kaycm2freq(h); }
146
148constexpr auto hz2joule(auto x) noexcept { return x * h; }
149
151constexpr auto mhz2joule(auto x) noexcept { return hz2joule(x) * 1e6; }
152
154constexpr auto kelvin2joule(auto x) noexcept { return x * k; }
155
157constexpr auto joule2hz(auto x) noexcept { return x / h; }
158
160constexpr auto joule2kaycm(auto x) noexcept { return x / kaycm2freq(h); }
161
163constexpr auto angstrom2meter(auto x) noexcept { return x * 1e-10; }
164
166constexpr auto meter2angstrom(auto x) noexcept { return x * 1e10; }
167}; // namespace Conversion
168
169#endif
Constants of physical expressions as constexpr.
Namespace containing several constants, physical and mathematical.
constexpr Numeric one_degree_in_radians
One degree in radians.
constexpr Numeric inv_two_pi
Inverse of two pi.
constexpr Numeric two_pi
Two times pi.
constexpr Numeric k
Boltzmann constant convenience name [J/K].
constexpr Numeric c
Speed of light convenience name [m/s].
constexpr Numeric e
Elementary charge convenience name [C].
constexpr Numeric h
Planck constant convenience name [J s].
Namespace containing several practical unit conversions, physical and mathematical.
constexpr auto ghz2hz(auto x) noexcept
Conversion from Hz to wavelength.
auto tand(auto x) noexcept
Returns the tangent of the deg2rad of the input.
constexpr auto deg2rad(auto x) noexcept
Converts degrees to radians.
constexpr auto kelvin2joule(auto x) noexcept
Conversion from Kelvin to Joule.
constexpr auto pa2atm(auto x) noexcept
Conversion from Pa to Atm.
constexpr auto celsius2kelvin(auto x) noexcept
Conversion from C to K.
auto atand(auto x) noexcept
Returns rad2deg of the arc-tangent of the input.
constexpr auto kaycm2joule(auto x) noexcept
Conversion from cm-1 to Joule.
constexpr auto joule2kaycm(auto x) noexcept
Conversion from Joule to cm-1.
auto asind(auto x) noexcept
Returns rad2deg of the arc-sine of the input.
constexpr auto freq2wavelen(auto x) noexcept
Conversion from Hz to wavelength.
constexpr auto torr2pa(auto x) noexcept
Conversion from Torr to Pa.
constexpr auto kaycm_per_cmsquared2hz_per_msquared(auto x) noexcept
Conversion from cm-1 per molecule per cm^2 to Hz per molecule per m^2.
constexpr auto kaycm_per_atm2hz_per_pa(auto x) noexcept
Conversion from cm-1 per atmosphere to Hz per Pascal.
constexpr auto mhz2joule(auto x) noexcept
Conversion from MHz to Joule.
constexpr auto hz2joule(auto x) noexcept
Conversion from MHz to Joule.
constexpr auto hz_per_pa2kaycm_per_atm(auto x) noexcept
Conversion from Hz per Pascal to cm-1 per atmosphere.
constexpr auto mhz_per_torr2hz_per_pa(auto x) noexcept
Conversion from MHz/Torr to Hz/Pa.
constexpr auto hpa2bar(auto x) noexcept
Conversion from hPa to bar.
auto acosd(auto x) noexcept
Returns rad2deg of the arc-cosine of the input.
constexpr auto meter2angstrom(auto x) noexcept
Conversion from meter to Å
constexpr auto hpa2pa(auto x) noexcept
Conversion from hPa to Pa.
auto sind(auto x) noexcept
Returns the sine of the deg2rad of the input.
constexpr auto rad2deg(auto x) noexcept
Converts radians to degrees.
constexpr auto freq2angfreq(auto x) noexcept
Conversion from Hz to Angular Hz.
constexpr auto wavelen2freq(auto x) noexcept
Conversion from wavelength to Hz.
constexpr auto freq2angcm(auto x) noexcept
Conversion from Hz to Angular wavenumber.
constexpr auto joule2hz(auto x) noexcept
Conversion from Hz to Joule.
constexpr auto bar2pa(auto x) noexcept
Conversion from bar to Pa.
auto cosd(auto x) noexcept
Returns the cosine of the deg2rad of the input.
constexpr auto freq2kaycm(auto x) noexcept
Conversion from Hz to Kayser wavenumber.
constexpr auto angcm2freq(auto x) noexcept
Conversion from Angular wavenumber to Hz.
constexpr auto bar2hpa(auto x) noexcept
Conversion from bar to hPa.
constexpr auto kelvin2celsius(auto x) noexcept
Conversion from K to C.
constexpr auto kaycm2freq(auto x) noexcept
Conversion from Kayser wavenumber to Hz.
constexpr auto hz2ghz(auto x) noexcept
Conversion from wavelength to Hz.
constexpr auto pa2bar(auto x) noexcept
Conversion from Pa to bar.
constexpr auto pa2torr(auto x) noexcept
Conversion from Pa to Torr.
auto atan2d(auto y, auto x) noexcept
Returns rad2deg of the arc-tangent of inputs #T1/#T2
constexpr auto hz_per_msquared2kaycm_per_cmsquared(auto x) noexcept
Conversion from Hz per molecule per m^2 to cm-1 per molecule per cm^2.
constexpr auto angstrom2meter(auto x) noexcept
Conversion from Å to meter.
constexpr auto pa2hpa(auto x) noexcept
Conversion from Pa to hPa.
constexpr auto atm2pa(auto x) noexcept
Conversion from Atm to Pa.
constexpr auto angfreq2freq(auto x) noexcept
Conversion from Angular Hz to Hz.