Sequoia
Loading...
Searching...
No Matches
Classes | Typedefs | Functions | Variables
PhysicalValues.hpp File Reference
#include "sequoia/Physics/PhysicalValuesDetails.hpp"

Go to the source code of this file.

Classes

struct  sequoia::physics::is_invertible_unit< T >
 
struct  sequoia::physics::is_invertible_unit< T >
 
struct  sequoia::maths::dual< T >
 Specialization for units, such as degrees Celsius, for which the corresponding quantity cannot be inverted. More...
 
struct  sequoia::physics::reduced_validator< T >
 
struct  sequoia::physics::reduced_validator< T, Us... >
 
struct  sequoia::physics::no_unit_t
 
struct  sequoia::physics::composite_unit< Ts >
 
struct  sequoia::physics::composite_space< Ts... >
 
struct  sequoia::physics::reduction< direct_product< T, U > >
 
struct  sequoia::physics::reduction< direct_product< composite_unit< Ts... >, U > >
 
struct  sequoia::physics::reduction< direct_product< T, composite_unit< Us... > > >
 
struct  sequoia::physics::reduction< direct_product< composite_unit< Ts... >, composite_unit< Us... > > >
 
struct  sequoia::physics::reduction< direct_product< composite_space< Ts... >, U > >
 
struct  sequoia::physics::reduction< direct_product< T, composite_space< Us... > > >
 
struct  sequoia::physics::reduction< direct_product< composite_space< Ts... >, composite_space< Us... > > >
 
struct  sequoia::physics::canonical_convention< 1 >
 
struct  sequoia::physics::canonical_convention< D >
 
struct  sequoia::physics::y_down_convention
 
struct  sequoia::physics::left_handed_convention
 
struct  sequoia::physics::physical_value_displacement_basis< FreeModule, Unit, Convention >
 
struct  sequoia::physics::reduced_validator< T, std::identity >
 
struct  sequoia::physics::reduced_validator< std::identity, T >
 
struct  sequoia::physics::reduced_validator< half_line_validator, half_line_validator >
 
struct  sequoia::physics::unit_defined_origin< Unit >
 
struct  sequoia::physics::implicit_affine_origin< T >
 
struct  sequoia::physics::to_origin_type< ValueSpace, Unit >
 
struct  sequoia::physics::to_base_space< T >
 
struct  sequoia::physics::to_base_space< T >
 
struct  sequoia::physics::to_base_space< dual< T > >
 
struct  sequoia::physics::to_base_space< composite_space< Ts... > >
 
struct  sequoia::physics::to_displacement_space< T, T >
 
struct  sequoia::physics::to_displacement_space< T, U >
 
struct  sequoia::physics::physical_value_product< physical_value< LHSValueSpace, LHSUnit, LHSConvention, distinguished_origin, LHSValidator >, physical_value< RHSValueSpace, RHSUnit, RHSConvention, distinguished_origin, RHSValidator > >
 
class  sequoia::physics::physical_value< ValueSpace, Unit, Convention, Origin, Validator >
 
struct  sequoia::physics::sets::classical::masses< Arena >
 
struct  sequoia::physics::sets::classical::temperatures< Arena >
 
struct  sequoia::physics::sets::classical::electrical_currents< Arena >
 
struct  sequoia::physics::sets::classical::times< Arena >
 
struct  sequoia::physics::sets::classical::time_intervals< Arena >
 
struct  sequoia::physics::sets::classical::positions< Arena >
 
struct  sequoia::physics::sets::classical::lengths< Arena >
 
struct  sequoia::physics::sets::classical::angles< Arena >
 
struct  sequoia::physics::sets::classical::differences< PhysicalValueSet >
 
struct  sequoia::physics::associated_displacement_space< Space >
 
struct  sequoia::physics::physical_value_convex_space< PhysicalValueSet, Rep, D, Derived >
 
struct  sequoia::physics::physical_value_affine_space< PhysicalValueSet, Rep, D, Derived >
 
struct  sequoia::physics::physical_value_vector_space< PhysicalValueSet, Rep, D, Derived >
 
struct  sequoia::physics::mass_space< Rep, Arena >
 
struct  sequoia::physics::temperature_space< Rep, Arena >
 
struct  sequoia::physics::electrical_current_space< Rep, Arena >
 
struct  sequoia::physics::angular_space< Rep, Arena >
 
struct  sequoia::physics::length_space< Rep, Arena >
 
struct  sequoia::physics::width_space< Rep, Arena >
 
struct  sequoia::physics::height_space< Rep, Arena >
 
struct  sequoia::physics::time_interval_space< Rep, Arena >
 
struct  sequoia::physics::time_space< Rep, Arena >
 
struct  sequoia::physics::position_space< D, Rep, Arena >
 
struct  sequoia::physics::implicit_common_arena
 
struct  sequoia::physics::si::units::ampere_t
 
struct  sequoia::physics::si::units::kilogram_t
 
struct  sequoia::physics::si::units::metre_t
 
struct  sequoia::physics::si::units::second_t
 
struct  sequoia::physics::si::units::kelvin_t
 
struct  sequoia::physics::si::units::coulomb_t
 
struct  sequoia::physics::si::units::radian_t
 
struct  sequoia::physics::si::units::celsius_t
 
struct  sequoia::physics::si::units::celsius_t::validator
 
struct  std::formatter< sequoia::physics::quantity< ValueSpace, Unit, Validator > >
 

Typedefs

template<physical_unit T>
using sequoia::physics::is_invertible_unit_t = is_invertible_unit< T >::type
 
template<class... Ts>
using sequoia::physics::reduced_validator_t = reduced_validator< Ts... >::type
 
template<class T >
using sequoia::physics::reduction_t = reduction< T >::type
 
template<convex_space ValueSpace, physical_unit Unit, class Convention >
using sequoia::physics::to_displacement_basis_t = physical_value_displacement_basis< free_module_type_of_t< ValueSpace >, Unit, Convention >
 
template<convex_space ValueSpace, physical_unit Unit>
using sequoia::physics::to_origin_type_t = to_origin_type< ValueSpace, Unit >::type
 
template<convex_space ValueSpace, physical_unit Unit, class Convention , class Origin , class Validator >
using sequoia::physics::to_coordinates_base_type = coordinates_base< ValueSpace, to_displacement_basis_t< ValueSpace, Unit, Convention >, Origin, Validator, physical_value< free_module_type_of_t< ValueSpace >, Unit, Convention, distinguished_origin, std::identity > >
 
template<convex_space T>
using sequoia::physics::to_base_space_t = to_base_space< T >::type
 
template<convex_space T, convex_space U>
using sequoia::physics::to_displacement_space_t = to_displacement_space< T, U >::type
 
template<class T , class U >
using sequoia::physics::physical_value_product_t = physical_value_product< T, U >::type
 
template<std::floating_point T, class Arena = implicit_common_arena>
using sequoia::physics::si::mass = physical_value< mass_space< T, Arena >, units::kilogram_t >
 
template<std::floating_point T, class Arena = implicit_common_arena>
using sequoia::physics::si::length = physical_value< length_space< T, Arena >, units::metre_t >
 
template<std::floating_point T, class Arena = implicit_common_arena>
using sequoia::physics::si::time_interval = physical_value< time_interval_space< T, Arena >, units::second_t >
 
template<std::floating_point T, class Arena = implicit_common_arena>
using sequoia::physics::si::temperature = physical_value< temperature_space< T, Arena >, units::kelvin_t >
 
template<std::floating_point T, class Arena = implicit_common_arena>
using sequoia::physics::si::electrical_current = physical_value< electrical_current_space< T, Arena >, units::ampere_t >
 
template<std::floating_point T, class Arena = implicit_common_arena>
using sequoia::physics::si::angle = physical_value< angular_space< T, Arena >, units::radian_t >
 
template<std::floating_point T, class Arena = implicit_common_arena>
using sequoia::physics::si::width = physical_value< width_space< T, Arena >, units::metre_t >
 
template<std::floating_point T, class Arena = implicit_common_arena>
using sequoia::physics::si::height = physical_value< height_space< T, Arena >, units::metre_t >
 
template<std::floating_point T, class Arena = implicit_common_arena, class Origin = implicit_affine_origin<time_space<T, Arena>>>
using sequoia::physics::si::time = physical_value< time_space< T, Arena >, units::second_t, canonical_convention< 1 >, Origin, std::identity >
 
template<std::size_t D, std::floating_point T, class Arena = implicit_common_arena, class Convention = canonical_convention<D>, class Origin = implicit_affine_origin<position_space<D, T, Arena>>>
using sequoia::physics::si::position = physical_value< position_space< D, T, Arena >, units::metre_t, Convention, Origin, std::identity >
 
template<convex_space ValueSpace, physical_unit Unit, validator_for< ValueSpace > Validator = typename Unit::validator_type>
using sequoia::physics::quantity = physical_value< ValueSpace, Unit, canonical_convention< 1 >, to_origin_type_t< ValueSpace, Unit >, Validator >
 

Functions

template<vector_space ValueSpace, physical_unit Unit, class Convention , class Origin , validator_for< ValueSpace > Validator>
requires (dimension_of<ValueSpace> == 1)
constexpr physical_value< ValueSpace, Unit, Convention, Origin, Validator > sequoia::physics::abs (physical_value< ValueSpace, Unit, Convention, Origin, Validator > q)
 
template<std::floating_point T, class Arena = implicit_common_arena>
constexpr T sequoia::physics::sin (physical_value< angular_space< T, Arena >, si::units::radian_t > theta)
 
template<std::floating_point T, class Arena = implicit_common_arena>
constexpr T sequoia::physics::cos (physical_value< angular_space< T, Arena >, si::units::radian_t > theta)
 
template<std::floating_point T, class Arena = implicit_common_arena>
constexpr T sequoia::physics::tan (physical_value< angular_space< T, Arena >, si::units::radian_t > theta)
 
template<class Arena = implicit_common_arena, std::floating_point T>
constexpr physical_value< angular_space< T, Arena >, si::units::radian_t > sequoia::physics::asin (T x)
 
template<class Arena = implicit_common_arena, std::floating_point T>
constexpr physical_value< angular_space< T, Arena >, si::units::radian_t > sequoia::physics::acos (T x)
 
template<class Arena = implicit_common_arena, std::floating_point T>
constexpr physical_value< angular_space< T, Arena >, si::units::radian_t > sequoia::physics::atan (T x)
 

Variables

template<physical_unit T>
constexpr bool sequoia::physics::is_invertible_unit_v {is_invertible_unit<T>::value}
 
constexpr no_unit_t sequoia::physics::no_unit {}
 
template<convex_space ValueSpace, physical_unit Unit>
constexpr bool sequoia::physics::has_distinguished_origin
 
template<convex_space ValueSpace, physical_unit Unit, class Origin >
constexpr bool sequoia::physics::has_consistent_origin
 
template<convex_space ValueSpace, validator_for< ValueSpace > Validator>
constexpr bool sequoia::physics::has_consistent_validator
 
template<convex_space ValueSpace, physical_unit Unit>
constexpr bool sequoia::physics::has_consistent_unit
 
template<convex_space T>
constexpr bool sequoia::physics::has_base_space_v
 
template<convex_space T, convex_space U>
constexpr bool sequoia::physics::have_compatible_base_spaces_v
 
template<physical_unit U>
constexpr bool sequoia::physics::has_symbol_v
 
constexpr ampere_t sequoia::physics::si::units::ampere {}
 
constexpr kilogram_t sequoia::physics::si::units::kilogram {}
 
constexpr metre_t sequoia::physics::si::units::metre {}
 
constexpr second_t sequoia::physics::si::units::second {}
 
constexpr kelvin_t sequoia::physics::si::units::kelvin {}
 
constexpr coulomb_t sequoia::physics::si::units::coulomb {}
 
constexpr radian_t sequoia::physics::si::units::radian {}
 
constexpr celsius_t sequoia::physics::si::units::celsius {}
 

Variable Documentation

◆ has_base_space_v

template<convex_space T>
constexpr bool sequoia::physics::has_base_space_v
inlineconstexpr
Initial value:
{
requires { typename T::base_space; }
}

◆ has_consistent_origin

template<convex_space ValueSpace, physical_unit Unit, class Origin >
constexpr bool sequoia::physics::has_consistent_origin
inlineconstexpr
Initial value:
{
( has_distinguished_origin<ValueSpace, Unit> && std::is_same_v<Origin, distinguished_origin>)
|| (!has_distinguished_origin<ValueSpace, Unit> && !std::is_same_v<Origin, distinguished_origin>)
}

◆ has_consistent_unit

template<convex_space ValueSpace, physical_unit Unit>
constexpr bool sequoia::physics::has_consistent_unit
inlineconstexpr
Initial value:
{
!is_dual_v<Unit> || vector_space<ValueSpace> || (!affine_space<ValueSpace> && is_invertible_unit_v<dual_of_t<Unit>>)
}

◆ has_consistent_validator

template<convex_space ValueSpace, validator_for< ValueSpace > Validator>
constexpr bool sequoia::physics::has_consistent_validator
inlineconstexpr
Initial value:
{
!affine_space<ValueSpace> || std::is_same_v<Validator, std::identity>
}

◆ has_distinguished_origin

template<convex_space ValueSpace, physical_unit Unit>
constexpr bool sequoia::physics::has_distinguished_origin
inlineconstexpr
Initial value:
{
free_module<ValueSpace>
|| (!affine_space<ValueSpace> && defines_half_line_v<typename Unit::validator_type>)
}

◆ has_symbol_v

template<physical_unit U>
constexpr bool sequoia::physics::has_symbol_v
inlineconstexpr
Initial value:
{
requires {
{ U::symbol } -> std::convertible_to<std::string_view>; }
}

◆ have_compatible_base_spaces_v

template<convex_space T, convex_space U>
constexpr bool sequoia::physics::have_compatible_base_spaces_v
inlineconstexpr
Initial value:
{
has_base_space_v<T> && has_base_space_v<U> && (free_module_type_of_t<T>::dimension == free_module_type_of_t<U>::dimension) && requires {
typename std::common_type<typename T::base_space, typename U::base_space>::type;
}
}