SERiF v0.0.1a
Stellar Evolution and Rotation in Four Dimensions
Loading...
Searching...
No Matches
quantities.hpp File Reference

This file contains the code to associate numeric data to a dimension. We call this a Quantity and a QuantityValue. More...

#include <type_traits>
#include <compare>
#include <concepts>
#include <tuple>
#include "serif/utils/misc/std_helper/cleaning.hpp"
#include "serif/utils/misc/concepts/numeric.hpp"
Include dependency graph for quantities.hpp:
This graph shows which files directly or indirectly include this file:

Classes

struct  serif::dimensions::PhysicalQuantity
 
struct  serif::dimensions::ThermodynamicQuantity
 
class  serif::dimensions::QuantityValue< Quantity >
 This is the non derivative equivalent to PartialDerivative. This associates a dimension with a value and, if that value can be determined at compile time, can be decomposed to a transparent double through .value() More...
 
struct  serif::dimensions::IsQuantityValue< Candidate >
 
struct  serif::dimensions::IsQuantityValue< QuantityValue< Quantity > >
 
struct  serif::dimensions::QuantityOf< QuantityValue< Quantity > >
 
struct  serif::dimensions::QuantityList< Quantities >
 
struct  serif::dimensions::QuantityAt< Index, QuantityList< Quantities... > >
 

Namespaces

namespace  serif
 
namespace  serif::dimensions
 

Concepts

concept  serif::dimensions::PhysicalQuantityType
 Is compile-time true of the QuantityCandidate can have any const / volatile stripped and if its derived from PhysicalQuantity. Note all ThermodynamicQuantities will also satisfy this concept.
 
concept  serif::dimensions::ThermodynamicQuantityType
 Is compile-time true of the QuantityCandidate can have any const / volatile stripped and if its derived from PhysicalQuantity (both enforced through checking PhysicalQuantityType) and then that is is also derived from ThermodynamicQuantity. Note not all physical quanties will satisfy this.
 
concept  serif::dimensions::QuantityValueType
 Turn those compile time structs into a concept that can be used to constrain a template parameter.
 
concept  serif::dimensions::ThermodynamicQuantityValueType
 

Typedefs

template<QuantityValueType Value>
using serif::dimensions::QuantityOfT = typename QuantityOf<NeitherConstNorVolatileReference<Value>>::Type
 
template<class T>
using serif::dimensions::NeitherConstNorVolatile
 
template<class T>
using serif::dimensions::NeitherConstNorVolatileReference
 

Detailed Description

This file contains the code to associate numeric data to a dimension. We call this a Quantity and a QuantityValue.

Author
Emily M. Boudreaux