Unit Conversion and Dimensional Analysis Library 3.6.1
A compile-time, header-only C++23 dimensional-analysis library
Loading...
Searching...
No Matches
units.h
Go to the documentation of this file.
1//--------------------------------------------------------------------------------------------------
2//
3// UnitConversion: A compile-time c++23 unit conversion library with no dependencies
4//
5//--------------------------------------------------------------------------------------------------
6//
7// The MIT License (MIT)
8//
9// Permission is hereby granted, free of charge, to any person obtaining a copy of this software
10// and associated documentation files (the "Software"), to deal in the Software without
11// restriction, including without limitation the rights to use, copy, modify, merge, publish,
12// distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
13// Software is furnished to do so, subject to the following conditions:
14//
15// The above copyright notice and this permission notice shall be included in all copies or
16// substantial portions of the Software.
17//
18// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
19// BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
20// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
21// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
22// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23//
24//--------------------------------------------------------------------------------------------------
25//
26// Copyright (c) 2016 Nic Holthaus
27//
28//--------------------------------------------------------------------------------------------------
29//
30// ATTRIBUTION:
31// Parts of this work have been adapted from:
32// http://stackoverflow.com/questions/35069778/create-comparison-trait-for-template-classes-whose-parameters-are-in-a-different
33// http://stackoverflow.com/questions/28253399/check-traits-for-all-variadic-template-arguments/28253503
34// http://stackoverflow.com/questions/36321295/rational-approximation-of-square-root-of-stdratio-at-compile-time?noredirect=1#comment60266601_36321295
35// https://github.com/swatanabe/cppnow17-units
36// https://physics.nist.gov/cuu/Constants/index.html
37//
38//--------------------------------------------------------------------------------------------------
39//
43//
44//--------------------------------------------------------------------------------------------------
45
46#pragma once
47
48#ifndef units_h_
49#define units_h_
50
51#include <units/acceleration.h>
52#include <units/angle.h>
54#include <units/angular_jerk.h>
56#include <units/area.h>
57#include <units/capacitance.h>
58#include <units/charge.h>
59#include <units/concentration.h>
60#include <units/conductance.h>
61#include <units/current.h>
62#include <units/data.h>
64#include <units/density.h>
65#include <units/energy.h>
67#include <units/force.h>
68#include <units/frequency.h>
69#include <units/illuminance.h>
70#include <units/impedance.h>
71#include <units/inductance.h>
72#include <units/irradiance.h>
73#include <units/jerk.h>
74#include <units/length.h>
75#include <units/luminance.h>
76#include <units/luminous_flux.h>
79#include <units/magnetic_flux.h>
80#include <units/mass.h>
81#include <units/power.h>
82#include <units/pressure.h>
83#include <units/radiance.h>
85#include <units/radiation.h>
86#include <units/solid_angle.h>
87#include <units/spectral_flux.h>
91#include <units/substance.h>
94#include <units/temperature.h>
95#include <units/time.h>
96#include <units/torque.h>
97#include <units/velocity.h>
98#include <units/viscosity.h>
99#include <units/voltage.h>
100#include <units/volume.h>
102
103// Optional interoperability with the Eigen linear-algebra library. Inert unless <Eigen/Core> is on the include
104// path; see units/eigen.h. Included last so it can reference any dimension defined above.
105#include <units/eigen.h>
106
107namespace units
108{
109 namespace detail
110 {
111 struct PI : conversion_factor<std::ratio<1>, dimensionless_, std::ratio<1>>
112 {
113 };
114 } // namespace detail
115
116 //------------------------------
117 // CONSTANTS
118 //------------------------------
119
125 inline namespace constants
126 {
132
133 // clang-format off
134 inline constexpr unit<detail::PI> pi(1);
135 inline constexpr meters_per_second c(299792458.0);
137 inline constexpr unit<compound_conversion_factor<joules_, seconds_>> h(6.62607015e-34);
141 inline constexpr ohms Z0(376.730313668);
143 inline constexpr coulombs e(1.602176634e-19);
144 inline constexpr kilograms m_e(9.1093837015e-31);
145 inline constexpr kilograms m_p(1.67262192369e-27);
147 inline constexpr unit<inverse<mols_>> N_A(6.02214076e23);
153 // clang-format on
154 } // namespace constants
155} // end namespace units
156
157#endif // units_h_
units representing acceleration values
units representing angular acceleration values
units representing angular jerk values
units representing angular velocity values
units representing area values
units representing capacitance values
units representing charge values
Definition core.h:2740
units representing concentration values
units representing conductance values
units representing current values
units representing data values
units representing data transfer rate values
units representing density values
optional, dependency-free interoperability between units and the Eigen linear-algebra library
units representing energy values
units representing energy density values
units representing force values
units representing frequency values
typename detail::inverse_impl< Cf >::type inverse
represents the inverse unit type of class U.
Definition core.h:1646
units representing illuminance values
units representing impedance values
units representing inductance values
units representing irradiance values
units representing jerk values
units representing length values
units representing luminance values
units representing luminous flux values
units representing luminous intensity values
units representing magnetic field strength values
units representing magnetic flux values
units representing mass values
namespace for physical constants like PI and Avogadro's Number.
Definition units.h:126
constexpr kilograms m_p(1.67262192369e-27)
proton mass.
constexpr unit< compound_conversion_factor< newtons_, square_meters_, inverse< squared< coulombs_ > > > > k_e(8.9875517923e9)
Coulomb's constant.
constexpr ohms Z0(376.730313668)
characteristic impedance of vacuum.
constexpr unit< compound_conversion_factor< cubed< meters_ >, inverse< kilograms_ >, inverse< squared< seconds_ > > > > G(6.67430e-11)
Newtonian constant of gravitation.
constexpr unit< compound_conversion_factor< watts_, inverse< square_meters_ >, inverse< squared< squared< kelvin_ > > > > > sigma(5.670374419e-8)
Stefan-Boltzmann constant.
constexpr unit< compound_conversion_factor< coulombs_, inverse< mols_ > > > F(96485.33212)
Faraday constant.
constexpr unit< compound_conversion_factor< joules_, inverse< kelvin_ > > > k_B(1.380649e-23)
Boltzmann constant.
constexpr unit< compound_conversion_factor< farads_, inverse< meters_ > > > epsilon0(8.8541878128e-12)
vacuum permittivity.
constexpr unit< compound_conversion_factor< joules_, inverse< teslas_ > > > mu_B(9.2740100783e-24)
Bohr Magneton.
constexpr unit< inverse< mols_ > > N_A(6.02214076e23)
Avogadro's Number.
constexpr unit< detail::PI > pi(1)
Ratio of a circle's circumference to its diameter.
constexpr kilograms m_e(9.1093837015e-31)
electron mass.
constexpr coulombs e(1.602176634e-19)
elementary charge.
constexpr unit< compound_conversion_factor< joules_, inverse< kelvin_ >, inverse< mols_ > > > R(8.314462618)
Gas constant.
constexpr meters_per_second c(299792458.0)
Speed of light in vacuum.
constexpr unit< compound_conversion_factor< joules_, seconds_ > > h_bar(1.054571817e-34)
Reduced Planck constant.
constexpr unit< compound_conversion_factor< newtons_, inverse< squared< amperes_ > > > > mu0(1.25663706212e-6)
vacuum permeability.
constexpr unit< compound_conversion_factor< joules_, seconds_ > > h(6.62607015e-34)
Planck constant.
Unit Conversion Library namespace.
Definition units.h:108
units representing power values
units representing angle values
units representing radiance values
units representing radiant intensity values
units representing radiation values
units representing solid angle values
units representing spectral flux values
units representing spectral intensity values
units representing spectral irradiance values
units representing spectral radiance values
Type representing an arbitrary conversion factor between units.
Definition core.h:1568
Definition units.h:112
units representing amount of substance values
units representing substance concentration values
units representing substance mass values
units representing temperature values
units representing time values
units representing torque values
units representing velocity values
units representing dynamic and kinematic viscosity values
units representing voltage values
units representing volume values
units representing volumetric flow rate values