mirror of
https://github.com/mpusz/mp-units.git
synced 2025-08-03 20:34:26 +02:00
refactor: natural units refactored
This commit is contained in:
@@ -138,8 +138,15 @@ set(unitsSphinxDocs
|
|||||||
"${CMAKE_CURRENT_SOURCE_DIR}/reference/systems/isq/iec80000/transfer_rate.rst"
|
"${CMAKE_CURRENT_SOURCE_DIR}/reference/systems/isq/iec80000/transfer_rate.rst"
|
||||||
|
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/reference/systems/isq/natural.rst"
|
"${CMAKE_CURRENT_SOURCE_DIR}/reference/systems/isq/natural.rst"
|
||||||
|
"${CMAKE_CURRENT_SOURCE_DIR}/reference/systems/isq/natural/acceleration.rst"
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/reference/systems/isq/natural/constants.rst"
|
"${CMAKE_CURRENT_SOURCE_DIR}/reference/systems/isq/natural/constants.rst"
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/reference/systems/isq/natural/dimensions.rst"
|
"${CMAKE_CURRENT_SOURCE_DIR}/reference/systems/isq/natural/energy.rst"
|
||||||
|
"${CMAKE_CURRENT_SOURCE_DIR}/reference/systems/isq/natural/force.rst"
|
||||||
|
"${CMAKE_CURRENT_SOURCE_DIR}/reference/systems/isq/natural/length.rst"
|
||||||
|
"${CMAKE_CURRENT_SOURCE_DIR}/reference/systems/isq/natural/mass.rst"
|
||||||
|
"${CMAKE_CURRENT_SOURCE_DIR}/reference/systems/isq/natural/momentum.rst"
|
||||||
|
"${CMAKE_CURRENT_SOURCE_DIR}/reference/systems/isq/natural/speed.rst"
|
||||||
|
"${CMAKE_CURRENT_SOURCE_DIR}/reference/systems/isq/natural/time.rst"
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/reference/systems/isq/natural/units.rst"
|
"${CMAKE_CURRENT_SOURCE_DIR}/reference/systems/isq/natural/units.rst"
|
||||||
|
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/reference/systems/isq/si_cgs.rst"
|
"${CMAKE_CURRENT_SOURCE_DIR}/reference/systems/isq/si_cgs.rst"
|
||||||
|
@@ -4,6 +4,13 @@ Natural
|
|||||||
.. toctree::
|
.. toctree::
|
||||||
:maxdepth: 2
|
:maxdepth: 2
|
||||||
|
|
||||||
natural/dimensions
|
|
||||||
natural/units
|
natural/units
|
||||||
natural/constants
|
natural/constants
|
||||||
|
natural/acceleration
|
||||||
|
natural/energy
|
||||||
|
natural/force
|
||||||
|
natural/length
|
||||||
|
natural/mass
|
||||||
|
natural/momentum
|
||||||
|
natural/speed
|
||||||
|
natural/time
|
||||||
|
4
docs/reference/systems/isq/natural/acceleration.rst
Normal file
4
docs/reference/systems/isq/natural/acceleration.rst
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
Acceleration
|
||||||
|
============
|
||||||
|
|
||||||
|
.. doxygenfile:: natural/acceleration.h
|
@@ -1,4 +0,0 @@
|
|||||||
Dimensions
|
|
||||||
==========
|
|
||||||
|
|
||||||
.. doxygenfile:: natural/dimensions.h
|
|
4
docs/reference/systems/isq/natural/energy.rst
Normal file
4
docs/reference/systems/isq/natural/energy.rst
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
Energy
|
||||||
|
======
|
||||||
|
|
||||||
|
.. doxygenfile:: natural/energy.h
|
4
docs/reference/systems/isq/natural/force.rst
Normal file
4
docs/reference/systems/isq/natural/force.rst
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
Force
|
||||||
|
=====
|
||||||
|
|
||||||
|
.. doxygenfile:: natural/force.h
|
4
docs/reference/systems/isq/natural/length.rst
Normal file
4
docs/reference/systems/isq/natural/length.rst
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
Length
|
||||||
|
======
|
||||||
|
|
||||||
|
.. doxygenfile:: natural/length.h
|
4
docs/reference/systems/isq/natural/mass.rst
Normal file
4
docs/reference/systems/isq/natural/mass.rst
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
Mass
|
||||||
|
====
|
||||||
|
|
||||||
|
.. doxygenfile:: natural/mass.h
|
4
docs/reference/systems/isq/natural/momentum.rst
Normal file
4
docs/reference/systems/isq/natural/momentum.rst
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
Momentum
|
||||||
|
========
|
||||||
|
|
||||||
|
.. doxygenfile:: natural/momentum.h
|
4
docs/reference/systems/isq/natural/speed.rst
Normal file
4
docs/reference/systems/isq/natural/speed.rst
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
Speed
|
||||||
|
=====
|
||||||
|
|
||||||
|
.. doxygenfile:: natural/speed.h
|
4
docs/reference/systems/isq/natural/time.rst
Normal file
4
docs/reference/systems/isq/natural/time.rst
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
Time
|
||||||
|
====
|
||||||
|
|
||||||
|
.. doxygenfile:: natural/time.h
|
@@ -22,47 +22,48 @@
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include <units/isq/natural/length.h>
|
||||||
|
#include <units/isq/natural/time.h>
|
||||||
|
|
||||||
// IWYU pragma: begin_exports
|
// IWYU pragma: begin_exports
|
||||||
#include <units/isq/dimensions.h>
|
#include <units/isq/dimensions/acceleration.h>
|
||||||
#include <units/isq/natural/units.h>
|
#include <units/isq/natural/units.h>
|
||||||
#include <units/quantity.h>
|
#include <units/quantity.h>
|
||||||
|
#include <units/reference.h>
|
||||||
|
#include <units/symbol_text.h>
|
||||||
// IWYU pragma: end_exports
|
// IWYU pragma: end_exports
|
||||||
|
|
||||||
namespace units::isq::natural {
|
namespace units::isq::natural {
|
||||||
|
|
||||||
struct dim_length : isq::dim_length<inverted_gigaelectronvolt> {};
|
|
||||||
template<UnitOf<dim_length> U, Representation Rep = double>
|
|
||||||
using length = quantity<dim_length, U, Rep>;
|
|
||||||
|
|
||||||
struct dim_time : isq::dim_time<inverted_gigaelectronvolt> {};
|
|
||||||
template<UnitOf<dim_time> U, Representation Rep = double>
|
|
||||||
using time = quantity<dim_time, U, Rep>;
|
|
||||||
|
|
||||||
struct dim_mass : isq::dim_mass<gigaelectronvolt> {};
|
|
||||||
template<UnitOf<dim_mass> U, Representation Rep = double>
|
|
||||||
using mass = quantity<dim_mass, U, Rep>;
|
|
||||||
|
|
||||||
struct dim_speed : isq::dim_speed<dim_speed, one, dim_length, dim_time> {};
|
|
||||||
template<UnitOf<dim_speed> U, Representation Rep = double>
|
|
||||||
using speed = quantity<dim_speed, U, Rep>;
|
|
||||||
|
|
||||||
struct dim_acceleration : isq::dim_acceleration<dim_acceleration, gigaelectronvolt, dim_length, dim_time> {};
|
struct dim_acceleration : isq::dim_acceleration<dim_acceleration, gigaelectronvolt, dim_length, dim_time> {};
|
||||||
|
|
||||||
template<UnitOf<dim_acceleration> U, Representation Rep = double>
|
template<UnitOf<dim_acceleration> U, Representation Rep = double>
|
||||||
using acceleration = quantity<dim_acceleration, U, Rep>;
|
using acceleration = quantity<dim_acceleration, U, Rep>;
|
||||||
|
|
||||||
struct dim_force : isq::dim_force<dim_force, square_gigaelectronvolt, dim_mass, dim_acceleration> {};
|
#ifdef UNITS_REFERENCES
|
||||||
template<UnitOf<dim_force> U, Representation Rep = double>
|
|
||||||
using force = quantity<dim_force, U, Rep>;
|
|
||||||
|
|
||||||
struct dim_momentum : isq::dim_momentum<dim_momentum, gigaelectronvolt, dim_mass, dim_speed> {};
|
namespace acceleration_references {
|
||||||
template<UnitOf<dim_momentum> U, Representation Rep = double>
|
|
||||||
using momentum = quantity<dim_momentum, U, Rep>;
|
|
||||||
|
|
||||||
struct dim_energy : isq::dim_energy<dim_energy, gigaelectronvolt, dim_force, dim_length> {};
|
inline constexpr auto GeV = reference<dim_acceleration, gigaelectronvolt>{};
|
||||||
template<UnitOf<dim_force> U, Representation Rep = double>
|
|
||||||
using energy = quantity<dim_force, U, Rep>;
|
|
||||||
|
|
||||||
// Typical UDLs will not work here as the same units are reused by many quantities.
|
} // namespace acceleration_references
|
||||||
// Should we define some strange ones (i.e. _q_mass_GeV)?
|
|
||||||
|
namespace references {
|
||||||
|
|
||||||
|
using namespace acceleration_references;
|
||||||
|
|
||||||
|
} // namespace references
|
||||||
|
|
||||||
|
#endif // UNITS_REFERENCES
|
||||||
|
|
||||||
} // namespace units::isq::natural
|
} // namespace units::isq::natural
|
||||||
|
|
||||||
|
#ifdef UNITS_ALIASES
|
||||||
|
|
||||||
|
namespace units::aliases::isq::natural::inline acceleration {
|
||||||
|
|
||||||
|
template<Representation Rep = double> using GeV = units::isq::natural::acceleration<units::isq::natural::gigaelectronvolt, Rep>;
|
||||||
|
|
||||||
|
} // namespace units::aliases::isq::natural::inline acceleration
|
||||||
|
|
||||||
|
#endif // UNITS_ALIASES
|
@@ -22,7 +22,7 @@
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <units/isq/natural/dimensions.h>
|
#include <units/isq/natural/speed.h>
|
||||||
|
|
||||||
namespace units::isq::natural {
|
namespace units::isq::natural {
|
||||||
|
|
||||||
|
69
src/systems/isq-natural/include/units/isq/natural/energy.h
Normal file
69
src/systems/isq-natural/include/units/isq/natural/energy.h
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
// The MIT License (MIT)
|
||||||
|
//
|
||||||
|
// Copyright (c) 2018 Mateusz Pusz
|
||||||
|
//
|
||||||
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
// of this software and associated documentation files (the "Software"), to deal
|
||||||
|
// in the Software without restriction, including without limitation the rights
|
||||||
|
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
// copies of the Software, and to permit persons to whom the Software is
|
||||||
|
// furnished to do so, subject to the following conditions:
|
||||||
|
//
|
||||||
|
// The above copyright notice and this permission notice shall be included in all
|
||||||
|
// copies or substantial portions of the Software.
|
||||||
|
//
|
||||||
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
// SOFTWARE.
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <units/isq/natural/force.h>
|
||||||
|
#include <units/isq/natural/length.h>
|
||||||
|
|
||||||
|
// IWYU pragma: begin_exports
|
||||||
|
#include <units/isq/dimensions/energy.h>
|
||||||
|
#include <units/isq/natural/units.h>
|
||||||
|
#include <units/quantity.h>
|
||||||
|
#include <units/reference.h>
|
||||||
|
#include <units/symbol_text.h>
|
||||||
|
// IWYU pragma: end_exports
|
||||||
|
|
||||||
|
namespace units::isq::natural {
|
||||||
|
|
||||||
|
struct dim_energy : isq::dim_energy<dim_energy, gigaelectronvolt, dim_force, dim_length> {};
|
||||||
|
|
||||||
|
template<UnitOf<dim_energy> U, Representation Rep = double>
|
||||||
|
using energy = quantity<dim_energy, U, Rep>;
|
||||||
|
|
||||||
|
#ifdef UNITS_REFERENCES
|
||||||
|
|
||||||
|
namespace energy_references {
|
||||||
|
|
||||||
|
inline constexpr auto GeV = reference<dim_energy, gigaelectronvolt>{};
|
||||||
|
|
||||||
|
} // namespace energy_references
|
||||||
|
|
||||||
|
namespace references {
|
||||||
|
|
||||||
|
using namespace energy_references;
|
||||||
|
|
||||||
|
} // namespace references
|
||||||
|
|
||||||
|
#endif // UNITS_REFERENCES
|
||||||
|
|
||||||
|
} // namespace units::isq::natural
|
||||||
|
|
||||||
|
#ifdef UNITS_ALIASES
|
||||||
|
|
||||||
|
namespace units::aliases::isq::natural::inline energy {
|
||||||
|
|
||||||
|
template<Representation Rep = double> using GeV = units::isq::natural::energy<units::isq::natural::gigaelectronvolt, Rep>;
|
||||||
|
|
||||||
|
} // namespace units::aliases::isq::natural::inline energy
|
||||||
|
|
||||||
|
#endif // UNITS_ALIASES
|
69
src/systems/isq-natural/include/units/isq/natural/force.h
Normal file
69
src/systems/isq-natural/include/units/isq/natural/force.h
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
// The MIT License (MIT)
|
||||||
|
//
|
||||||
|
// Copyright (c) 2018 Mateusz Pusz
|
||||||
|
//
|
||||||
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
// of this software and associated documentation files (the "Software"), to deal
|
||||||
|
// in the Software without restriction, including without limitation the rights
|
||||||
|
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
// copies of the Software, and to permit persons to whom the Software is
|
||||||
|
// furnished to do so, subject to the following conditions:
|
||||||
|
//
|
||||||
|
// The above copyright notice and this permission notice shall be included in all
|
||||||
|
// copies or substantial portions of the Software.
|
||||||
|
//
|
||||||
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
// SOFTWARE.
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <units/isq/natural/acceleration.h>
|
||||||
|
#include <units/isq/natural/mass.h>
|
||||||
|
|
||||||
|
// IWYU pragma: begin_exports
|
||||||
|
#include <units/isq/dimensions/force.h>
|
||||||
|
#include <units/isq/natural/units.h>
|
||||||
|
#include <units/quantity.h>
|
||||||
|
#include <units/reference.h>
|
||||||
|
#include <units/symbol_text.h>
|
||||||
|
// IWYU pragma: end_exports
|
||||||
|
|
||||||
|
namespace units::isq::natural {
|
||||||
|
|
||||||
|
struct dim_force : isq::dim_force<dim_force, square_gigaelectronvolt, dim_mass, dim_acceleration> {};
|
||||||
|
|
||||||
|
template<UnitOf<dim_force> U, Representation Rep = double>
|
||||||
|
using force = quantity<dim_force, U, Rep>;
|
||||||
|
|
||||||
|
#ifdef UNITS_REFERENCES
|
||||||
|
|
||||||
|
namespace force_references {
|
||||||
|
|
||||||
|
inline constexpr auto GeV2 = reference<dim_force, square_gigaelectronvolt>{};
|
||||||
|
|
||||||
|
} // namespace force_references
|
||||||
|
|
||||||
|
namespace references {
|
||||||
|
|
||||||
|
using namespace force_references;
|
||||||
|
|
||||||
|
} // namespace references
|
||||||
|
|
||||||
|
#endif // UNITS_REFERENCES
|
||||||
|
|
||||||
|
} // namespace units::isq::natural
|
||||||
|
|
||||||
|
#ifdef UNITS_ALIASES
|
||||||
|
|
||||||
|
namespace units::aliases::isq::natural::inline force {
|
||||||
|
|
||||||
|
template<Representation Rep = double> using GeV2 = units::isq::natural::force<units::isq::natural::square_gigaelectronvolt, Rep>;
|
||||||
|
|
||||||
|
} // namespace units::aliases::isq::natural::inline force
|
||||||
|
|
||||||
|
#endif // UNITS_ALIASES
|
66
src/systems/isq-natural/include/units/isq/natural/length.h
Normal file
66
src/systems/isq-natural/include/units/isq/natural/length.h
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
// The MIT License (MIT)
|
||||||
|
//
|
||||||
|
// Copyright (c) 2018 Mateusz Pusz
|
||||||
|
//
|
||||||
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
// of this software and associated documentation files (the "Software"), to deal
|
||||||
|
// in the Software without restriction, including without limitation the rights
|
||||||
|
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
// copies of the Software, and to permit persons to whom the Software is
|
||||||
|
// furnished to do so, subject to the following conditions:
|
||||||
|
//
|
||||||
|
// The above copyright notice and this permission notice shall be included in all
|
||||||
|
// copies or substantial portions of the Software.
|
||||||
|
//
|
||||||
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
// SOFTWARE.
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
// IWYU pragma: begin_exports
|
||||||
|
#include <units/isq/dimensions/length.h>
|
||||||
|
#include <units/isq/natural/units.h>
|
||||||
|
#include <units/quantity.h>
|
||||||
|
#include <units/reference.h>
|
||||||
|
#include <units/symbol_text.h>
|
||||||
|
// IWYU pragma: end_exports
|
||||||
|
|
||||||
|
namespace units::isq::natural {
|
||||||
|
|
||||||
|
struct dim_length : isq::dim_length<inverted_gigaelectronvolt> {};
|
||||||
|
|
||||||
|
template<UnitOf<dim_length> U, Representation Rep = double>
|
||||||
|
using length = quantity<dim_length, U, Rep>;
|
||||||
|
|
||||||
|
#ifdef UNITS_REFERENCES
|
||||||
|
|
||||||
|
namespace length_references {
|
||||||
|
|
||||||
|
inline constexpr auto inv_GeV = reference<dim_length, inverted_gigaelectronvolt>{};
|
||||||
|
|
||||||
|
} // namespace length_references
|
||||||
|
|
||||||
|
namespace references {
|
||||||
|
|
||||||
|
using namespace length_references;
|
||||||
|
|
||||||
|
} // namespace references
|
||||||
|
|
||||||
|
#endif // UNITS_REFERENCES
|
||||||
|
|
||||||
|
} // namespace units::isq::natural
|
||||||
|
|
||||||
|
#ifdef UNITS_ALIASES
|
||||||
|
|
||||||
|
namespace units::aliases::isq::natural::inline length {
|
||||||
|
|
||||||
|
template<Representation Rep = double> using inv_GeV = units::isq::natural::length<units::isq::natural::inverted_gigaelectronvolt, Rep>;
|
||||||
|
|
||||||
|
} // namespace units::aliases::isq::natural::inline length
|
||||||
|
|
||||||
|
#endif // UNITS_ALIASES
|
66
src/systems/isq-natural/include/units/isq/natural/mass.h
Normal file
66
src/systems/isq-natural/include/units/isq/natural/mass.h
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
// The MIT License (MIT)
|
||||||
|
//
|
||||||
|
// Copyright (c) 2018 Mateusz Pusz
|
||||||
|
//
|
||||||
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
// of this software and associated documentation files (the "Software"), to deal
|
||||||
|
// in the Software without restriction, including without limitation the rights
|
||||||
|
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
// copies of the Software, and to permit persons to whom the Software is
|
||||||
|
// furnished to do so, subject to the following conditions:
|
||||||
|
//
|
||||||
|
// The above copyright notice and this permission notice shall be included in all
|
||||||
|
// copies or substantial portions of the Software.
|
||||||
|
//
|
||||||
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
// SOFTWARE.
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
// IWYU pragma: begin_exports
|
||||||
|
#include <units/isq/dimensions/mass.h>
|
||||||
|
#include <units/isq/natural/units.h>
|
||||||
|
#include <units/quantity.h>
|
||||||
|
#include <units/reference.h>
|
||||||
|
#include <units/symbol_text.h>
|
||||||
|
// IWYU pragma: end_exports
|
||||||
|
|
||||||
|
namespace units::isq::natural {
|
||||||
|
|
||||||
|
struct dim_mass : isq::dim_mass<gigaelectronvolt> {};
|
||||||
|
|
||||||
|
template<UnitOf<dim_mass> U, Representation Rep = double>
|
||||||
|
using mass = quantity<dim_mass, U, Rep>;
|
||||||
|
|
||||||
|
#ifdef UNITS_REFERENCES
|
||||||
|
|
||||||
|
namespace mass_references {
|
||||||
|
|
||||||
|
inline constexpr auto GeV = reference<dim_mass, gigaelectronvolt>{};
|
||||||
|
|
||||||
|
} // namespace mass_references
|
||||||
|
|
||||||
|
namespace references {
|
||||||
|
|
||||||
|
using namespace mass_references;
|
||||||
|
|
||||||
|
} // namespace references
|
||||||
|
|
||||||
|
#endif // UNITS_REFERENCES
|
||||||
|
|
||||||
|
} // namespace units::isq::natural
|
||||||
|
|
||||||
|
#ifdef UNITS_ALIASES
|
||||||
|
|
||||||
|
namespace units::aliases::isq::natural::inline mass {
|
||||||
|
|
||||||
|
template<Representation Rep = double> using GeV = units::isq::natural::mass<units::isq::natural::gigaelectronvolt, Rep>;
|
||||||
|
|
||||||
|
} // namespace units::aliases::isq::natural::inline mass
|
||||||
|
|
||||||
|
#endif // UNITS_ALIASES
|
69
src/systems/isq-natural/include/units/isq/natural/momentum.h
Normal file
69
src/systems/isq-natural/include/units/isq/natural/momentum.h
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
// The MIT License (MIT)
|
||||||
|
//
|
||||||
|
// Copyright (c) 2018 Mateusz Pusz
|
||||||
|
//
|
||||||
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
// of this software and associated documentation files (the "Software"), to deal
|
||||||
|
// in the Software without restriction, including without limitation the rights
|
||||||
|
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
// copies of the Software, and to permit persons to whom the Software is
|
||||||
|
// furnished to do so, subject to the following conditions:
|
||||||
|
//
|
||||||
|
// The above copyright notice and this permission notice shall be included in all
|
||||||
|
// copies or substantial portions of the Software.
|
||||||
|
//
|
||||||
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
// SOFTWARE.
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <units/isq/natural/mass.h>
|
||||||
|
#include <units/isq/natural/speed.h>
|
||||||
|
|
||||||
|
// IWYU pragma: begin_exports
|
||||||
|
#include <units/isq/dimensions/momentum.h>
|
||||||
|
#include <units/isq/natural/units.h>
|
||||||
|
#include <units/quantity.h>
|
||||||
|
#include <units/reference.h>
|
||||||
|
#include <units/symbol_text.h>
|
||||||
|
// IWYU pragma: end_exports
|
||||||
|
|
||||||
|
namespace units::isq::natural {
|
||||||
|
|
||||||
|
struct dim_momentum : isq::dim_momentum<dim_momentum, gigaelectronvolt, dim_mass, dim_speed> {};
|
||||||
|
|
||||||
|
template<UnitOf<dim_momentum> U, Representation Rep = double>
|
||||||
|
using momentum = quantity<dim_momentum, U, Rep>;
|
||||||
|
|
||||||
|
#ifdef UNITS_REFERENCES
|
||||||
|
|
||||||
|
namespace momentum_references {
|
||||||
|
|
||||||
|
inline constexpr auto GeV = reference<dim_momentum, gigaelectronvolt>{};
|
||||||
|
|
||||||
|
} // namespace momentum_references
|
||||||
|
|
||||||
|
namespace references {
|
||||||
|
|
||||||
|
using namespace momentum_references;
|
||||||
|
|
||||||
|
} // namespace references
|
||||||
|
|
||||||
|
#endif // UNITS_REFERENCES
|
||||||
|
|
||||||
|
} // namespace units::isq::natural
|
||||||
|
|
||||||
|
#ifdef UNITS_ALIASES
|
||||||
|
|
||||||
|
namespace units::aliases::isq::natural::inline momentum {
|
||||||
|
|
||||||
|
template<Representation Rep = double> using GeV = units::isq::natural::momentum<units::isq::natural::gigaelectronvolt, Rep>;
|
||||||
|
|
||||||
|
} // namespace units::aliases::isq::natural::inline momentum
|
||||||
|
|
||||||
|
#endif // UNITS_ALIASES
|
@@ -23,7 +23,14 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
// IWYU pragma: begin_exports
|
// IWYU pragma: begin_exports
|
||||||
#include "dimensions.h"
|
#include <units/isq/natural/acceleration.h>
|
||||||
#include "units.h"
|
#include <units/isq/natural/constants.h>
|
||||||
#include "constants.h"
|
#include <units/isq/natural/energy.h>
|
||||||
|
#include <units/isq/natural/force.h>
|
||||||
|
#include <units/isq/natural/length.h>
|
||||||
|
#include <units/isq/natural/mass.h>
|
||||||
|
#include <units/isq/natural/momentum.h>
|
||||||
|
#include <units/isq/natural/natural.h>
|
||||||
|
#include <units/isq/natural/speed.h>
|
||||||
|
#include <units/isq/natural/time.h>
|
||||||
// IWYU pragma: end_exports
|
// IWYU pragma: end_exports
|
||||||
|
44
src/systems/isq-natural/include/units/isq/natural/speed.h
Normal file
44
src/systems/isq-natural/include/units/isq/natural/speed.h
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
// The MIT License (MIT)
|
||||||
|
//
|
||||||
|
// Copyright (c) 2018 Mateusz Pusz
|
||||||
|
//
|
||||||
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
// of this software and associated documentation files (the "Software"), to deal
|
||||||
|
// in the Software without restriction, including without limitation the rights
|
||||||
|
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
// copies of the Software, and to permit persons to whom the Software is
|
||||||
|
// furnished to do so, subject to the following conditions:
|
||||||
|
//
|
||||||
|
// The above copyright notice and this permission notice shall be included in all
|
||||||
|
// copies or substantial portions of the Software.
|
||||||
|
//
|
||||||
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
// SOFTWARE.
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <units/isq/natural/length.h>
|
||||||
|
#include <units/isq/natural/time.h>
|
||||||
|
|
||||||
|
// IWYU pragma: begin_exports
|
||||||
|
#include <units/generic/dimensionless.h>
|
||||||
|
#include <units/isq/dimensions/speed.h>
|
||||||
|
#include <units/isq/natural/units.h>
|
||||||
|
#include <units/quantity.h>
|
||||||
|
#include <units/reference.h>
|
||||||
|
#include <units/symbol_text.h>
|
||||||
|
// IWYU pragma: end_exports
|
||||||
|
|
||||||
|
namespace units::isq::natural {
|
||||||
|
|
||||||
|
struct dim_speed : isq::dim_speed<dim_speed, one, dim_length, dim_time> {};
|
||||||
|
|
||||||
|
template<UnitOf<dim_speed> U, Representation Rep = double>
|
||||||
|
using speed = quantity<dim_speed, U, Rep>;
|
||||||
|
|
||||||
|
} // namespace units::isq::natural
|
66
src/systems/isq-natural/include/units/isq/natural/time.h
Normal file
66
src/systems/isq-natural/include/units/isq/natural/time.h
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
// The MIT License (MIT)
|
||||||
|
//
|
||||||
|
// Copyright (c) 2018 Mateusz Pusz
|
||||||
|
//
|
||||||
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
// of this software and associated documentation files (the "Software"), to deal
|
||||||
|
// in the Software without restriction, including without limitation the rights
|
||||||
|
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
// copies of the Software, and to permit persons to whom the Software is
|
||||||
|
// furnished to do so, subject to the following conditions:
|
||||||
|
//
|
||||||
|
// The above copyright notice and this permission notice shall be included in all
|
||||||
|
// copies or substantial portions of the Software.
|
||||||
|
//
|
||||||
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
// SOFTWARE.
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
// IWYU pragma: begin_exports
|
||||||
|
#include <units/isq/dimensions/time.h>
|
||||||
|
#include <units/isq/natural/units.h>
|
||||||
|
#include <units/quantity.h>
|
||||||
|
#include <units/reference.h>
|
||||||
|
#include <units/symbol_text.h>
|
||||||
|
// IWYU pragma: end_exports
|
||||||
|
|
||||||
|
namespace units::isq::natural {
|
||||||
|
|
||||||
|
struct dim_time : isq::dim_time<inverted_gigaelectronvolt> {};
|
||||||
|
|
||||||
|
template<UnitOf<dim_time> U, Representation Rep = double>
|
||||||
|
using time = quantity<dim_time, U, Rep>;
|
||||||
|
|
||||||
|
#ifdef UNITS_REFERENCES
|
||||||
|
|
||||||
|
namespace time_references {
|
||||||
|
|
||||||
|
inline constexpr auto inv_GeV = reference<dim_time, inverted_gigaelectronvolt>{};
|
||||||
|
|
||||||
|
} // namespace time_references
|
||||||
|
|
||||||
|
namespace references {
|
||||||
|
|
||||||
|
using namespace time_references;
|
||||||
|
|
||||||
|
} // namespace references
|
||||||
|
|
||||||
|
#endif // UNITS_REFERENCES
|
||||||
|
|
||||||
|
} // namespace units::isq::natural
|
||||||
|
|
||||||
|
#ifdef UNITS_ALIASES
|
||||||
|
|
||||||
|
namespace units::aliases::isq::natural::inline time {
|
||||||
|
|
||||||
|
template<Representation Rep = double> using inv_GeV = units::isq::natural::time<units::isq::natural::inverted_gigaelectronvolt, Rep>;
|
||||||
|
|
||||||
|
} // namespace units::aliases::isq::natural::inline time
|
||||||
|
|
||||||
|
#endif // UNITS_ALIASES
|
Reference in New Issue
Block a user