Physical Quantities  v1.0.0
C++ library of physical quantities, physical models, and units of measure for scientific computing. https://github.com/acodcha/phq
Time.hpp
Go to the documentation of this file.
1 // Copyright © 2020-2024 Alexandre Coderre-Chabot
2 //
3 // This file is part of Physical Quantities (PhQ), a C++ library of physical quantities, physical
4 // models, and units of measure for scientific computing.
5 //
6 // Physical Quantities is hosted at:
7 // https://github.com/acodcha/phq
8 //
9 // Physical Quantities is licensed under the MIT License:
10 // https://mit-license.org
11 //
12 // Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
13 // associated documentation files (the "Software"), to deal in the Software without restriction,
14 // including without limitation the rights to use, copy, modify, merge, publish, distribute,
15 // sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
16 // furnished to do so, subject to the following conditions:
17 // - The above copyright notice and this permission notice shall be included in all copies or
18 // substantial portions of the Software.
19 // - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
20 // BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
21 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
22 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM
23 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24 
25 #ifndef PHQ_DURATION_HPP
26 #define PHQ_DURATION_HPP
27 
28 #include <cstddef>
29 #include <functional>
30 #include <ostream>
31 
32 #include "DimensionalScalar.hpp"
33 #include "Unit/Time.hpp"
34 
35 namespace PhQ {
36 
37 // Forward declaration for class PhQ::Time.
38 template <typename NumericType>
39 class Acceleration;
40 
41 // Forward declaration for class PhQ::Time.
42 template <typename NumericType>
43 class Angle;
44 
45 // Forward declaration for class PhQ::Time.
46 template <typename NumericType>
47 class AngularSpeed;
48 
49 // Forward declaration for class PhQ::Time.
50 template <typename NumericType>
51 class Displacement;
52 
53 // Forward declaration for class PhQ::Time.
54 template <typename NumericType>
55 class DisplacementGradient;
56 
57 // Forward declaration for class PhQ::Time.
58 template <typename NumericType>
59 class ElectricCharge;
60 
61 // Forward declaration for class PhQ::Time.
62 template <typename NumericType>
63 class ElectricCurrent;
64 
65 // Forward declaration for class PhQ::Time.
66 template <typename NumericType>
67 class Energy;
68 
69 // Forward declaration for class PhQ::Time.
70 template <typename NumericType>
71 class Frequency;
72 
73 // Forward declaration for class PhQ::Time.
74 template <typename NumericType>
75 class Length;
76 
77 // Forward declaration for class PhQ::Time.
78 template <typename NumericType>
79 class Mass;
80 
81 // Forward declaration for class PhQ::Time.
82 template <typename NumericType>
83 class MassRate;
84 
85 // Forward declaration for class PhQ::Time.
86 template <typename NumericType>
87 class Memory;
88 
89 // Forward declaration for class PhQ::Time.
90 template <typename NumericType>
91 class MemoryRate;
92 
93 // Forward declaration for class PhQ::Time.
94 template <typename NumericType>
95 class PlanarAcceleration;
96 
97 // Forward declaration for class PhQ::Time.
98 template <typename NumericType>
99 class PlanarDisplacement;
100 
101 // Forward declaration for class PhQ::Time.
102 template <typename NumericType>
103 class PlanarVelocity;
104 
105 // Forward declaration for class PhQ::Time.
106 template <typename NumericType>
107 class Power;
108 
109 // Forward declaration for class PhQ::Time.
110 template <typename NumericType>
111 class ScalarAcceleration;
112 
113 // Forward declaration for class PhQ::Time.
114 template <typename NumericType>
115 class ScalarAngularAcceleration;
116 
117 // Forward declaration for class PhQ::Time.
118 template <typename NumericType>
119 class ScalarDisplacementGradient;
120 
121 // Forward declaration for class PhQ::Time.
122 template <typename NumericType>
123 class ScalarStrain;
124 
125 // Forward declaration for class PhQ::Time.
126 template <typename NumericType>
127 class ScalarStrainRate;
128 
129 // Forward declaration for class PhQ::Time.
130 template <typename NumericType>
131 class ScalarVelocityGradient;
132 
133 // Forward declaration for class PhQ::Time.
134 template <typename NumericType>
135 class SpecificEnergy;
136 
137 // Forward declaration for class PhQ::Time.
138 template <typename NumericType>
139 class SpecificPower;
140 
141 // Forward declaration for class PhQ::Time.
142 template <typename NumericType>
143 class Speed;
144 
145 // Forward declaration for class PhQ::Time.
146 template <typename NumericType>
147 class Strain;
148 
149 // Forward declaration for class PhQ::Time.
150 template <typename NumericType>
151 class StrainRate;
152 
153 // Forward declaration for class PhQ::Time.
154 template <typename NumericType>
155 class Velocity;
156 
157 // Forward declaration for class PhQ::Time.
158 template <typename NumericType>
159 class VelocityGradient;
160 
161 // Forward declaration for class PhQ::Time.
162 template <typename NumericType>
163 class Volume;
164 
165 // Forward declaration for class PhQ::Time.
166 template <typename NumericType>
167 class VolumeRate;
168 
169 /// \brief Time. Can represent either a point in time, a time duration, or a period. For the inverse
170 /// of time, see PhQ::Frequency.
171 template <typename NumericType = double>
172 class Time : public DimensionalScalar<Unit::Time, NumericType> {
173 public:
174  /// \brief Default constructor. Constructs a time quantity with an uninitialized value.
175  Time() = default;
176 
177  /// \brief Constructor. Constructs a time quantity with a given value expressed in a given time
178  /// unit.
179  Time(const NumericType value, const Unit::Time unit)
180  : DimensionalScalar<Unit::Time, NumericType>(value, unit) {}
181 
182  /// \brief Constructor. Constructs a time quantity from a given frequency using the definition of
183  /// frequency.
184  explicit constexpr Time(const PhQ::Frequency<NumericType>& frequency);
185 
186  /// \brief Constructor. Constructs a time quantity from a given speed and scalar acceleration
187  /// using the definition of acceleration.
188  constexpr Time(
189  const Speed<NumericType>& speed, const ScalarAcceleration<NumericType>& scalar_acceleration);
190 
191  /// \brief Constructor. Constructs a time quantity from a given angular speed and scalar angular
192  /// acceleration using the definition of angular acceleration.
193  constexpr Time(const AngularSpeed<NumericType>& angular_speed,
194  const ScalarAngularAcceleration<NumericType>& scalar_angular_acceleration);
195 
196  /// \brief Constructor. Constructs a time quantity from a given angle and angular speed using the
197  /// definition of angular speed.
198  constexpr Time(const Angle<NumericType>& angle, const AngularSpeed<NumericType>& angular_speed);
199 
200  /// \brief Constructor. Constructs a time quantity from a given electric charge and electric
201  /// current using the definition of electric current.
202  constexpr Time(const ElectricCharge<NumericType>& electric_charge,
203  const ElectricCurrent<NumericType>& electric_current);
204 
205  /// \brief Constructor. Constructs a time quantity from a given mass and mass rate using the
206  /// definition of mass rate.
207  constexpr Time(const Mass<NumericType>& mass, const MassRate<NumericType>& mass_rate);
208 
209  /// \brief Constructor. Constructs a time quantity from a given memory and memory rate using the
210  /// definition of memory rate.
211  constexpr Time(const Memory<NumericType>& memory, const MemoryRate<NumericType>& memory_rate);
212 
213  /// \brief Constructor. Constructs a time quantity from a given energy and power using the
214  /// definition of power.
215  constexpr Time(const Energy<NumericType>& energy, const Power<NumericType>& power);
216 
217  /// \brief Constructor. Constructs a time quantity from a given specific energy and specific power
218  /// using the definition of specific power.
219  constexpr Time(const SpecificEnergy<NumericType>& specific_energy,
220  const SpecificPower<NumericType>& specific_power);
221 
222  /// \brief Constructor. Constructs a time quantity from a given length and speed using the
223  /// definition of speed.
224  constexpr Time(const Length<NumericType>& length, const Speed<NumericType>& speed);
225 
226  /// \brief Constructor. Constructs a time quantity from a given volume and volume rate using the
227  /// definition of volume rate.
228  constexpr Time(const Volume<NumericType>& volume, const VolumeRate<NumericType>& volume_rate);
229 
230  /// \brief Destructor. Destroys this time quantity.
231  ~Time() noexcept = default;
232 
233  /// \brief Copy constructor. Constructs a time quantity by copying another one.
234  constexpr Time(const Time<NumericType>& other) = default;
235 
236  /// \brief Copy constructor. Constructs a time quantity by copying another one.
237  template <typename OtherNumericType>
238  explicit constexpr Time(const Time<OtherNumericType>& other)
239  : Time(static_cast<NumericType>(other.Value())) {}
240 
241  /// \brief Move constructor. Constructs a time quantity by moving another one.
242  constexpr Time(Time<NumericType>&& other) noexcept = default;
243 
244  /// \brief Copy assignment operator. Assigns this time quantity by copying another one.
245  constexpr Time<NumericType>& operator=(const Time<NumericType>& other) = default;
246 
247  /// \brief Copy assignment operator. Assigns this time quantity by copying another one.
248  template <typename OtherNumericType>
250  this->value = static_cast<NumericType>(other.Value());
251  return *this;
252  }
253 
254  /// \brief Move assignment operator. Assigns this time quantity by moving another one.
255  constexpr Time<NumericType>& operator=(Time<NumericType>&& other) noexcept = default;
256 
257  /// \brief Statically creates a time quantity of zero.
258  [[nodiscard]] static constexpr Time<NumericType> Zero() {
259  return Time<NumericType>{static_cast<NumericType>(0)};
260  }
261 
262  /// \brief Statically creates a time quantity with a given value expressed in a given time unit.
263  template <Unit::Time Unit>
264  [[nodiscard]] static constexpr Time<NumericType> Create(const NumericType value) {
265  return Time<NumericType>{ConvertStatically<Unit::Time, Unit, Standard<Unit::Time>>(value)};
266  }
267 
268  [[nodiscard]] constexpr PhQ::Frequency<NumericType> Frequency() const;
269 
270  constexpr Time<NumericType> operator+(const Time<NumericType>& time) const {
271  return Time<NumericType>{this->value + time.value};
272  }
273 
274  constexpr Time<NumericType> operator-(const Time<NumericType>& time) const {
275  return Time<NumericType>{this->value - time.value};
276  }
277 
278  constexpr Time<NumericType> operator*(const NumericType number) const {
279  return Time<NumericType>{this->value * number};
280  }
281 
282  constexpr NumericType operator*(const PhQ::Frequency<NumericType>& frequency) const noexcept;
283 
285  const PlanarAcceleration<NumericType>& planar_acceleration) const;
286 
287  constexpr Angle<NumericType> operator*(const AngularSpeed<NumericType>& angular_speed) const;
288 
290  const ScalarAngularAcceleration<NumericType>& scalar_angular_acceleration) const;
291 
293  const ElectricCurrent<NumericType>& electric_current) const;
294 
295  constexpr Velocity<NumericType> operator*(const Acceleration<NumericType>& acceleration) const;
296 
298  const ScalarAcceleration<NumericType>& scalar_acceleration) const;
299 
300  constexpr Mass<NumericType> operator*(const MassRate<NumericType>& mass_rate) const;
301 
302  constexpr Energy<NumericType> operator*(const Power<NumericType>& power) const;
303 
305  const SpecificPower<NumericType>& specific_power) const;
306 
307  constexpr Strain<NumericType> operator*(const StrainRate<NumericType>& strain_rate) const;
308 
310  const ScalarStrainRate<NumericType>& scalar_strain_rate) const;
311 
313  const PlanarVelocity<NumericType>& planar_velocity) const;
314 
316 
318  const VelocityGradient<NumericType>& velocity_gradient) const;
319 
321  const ScalarVelocityGradient<NumericType>& scalar_velocity_gradient) const;
322 
323  constexpr Volume<NumericType> operator*(const VolumeRate<NumericType>& volume_rate) const;
324 
325  constexpr Time<NumericType> operator/(const NumericType number) const {
326  return Time<NumericType>{this->value / number};
327  }
328 
329  constexpr NumericType operator/(const Time<NumericType>& time) const noexcept {
330  return this->value / time.value;
331  }
332 
333  constexpr void operator+=(const Time<NumericType>& time) noexcept {
334  this->value += time.value;
335  }
336 
337  constexpr void operator-=(const Time<NumericType>& time) noexcept {
338  this->value -= time.value;
339  }
340 
341  constexpr void operator*=(const NumericType number) noexcept {
342  this->value *= number;
343  }
344 
345  constexpr void operator/=(const NumericType number) noexcept {
346  this->value /= number;
347  }
348 
349 private:
350  /// \brief Constructor. Constructs a time quantity with a given value expressed in the standard
351  /// time unit.
352  explicit constexpr Time(const NumericType value) : DimensionalScalar<Unit::Time>(value) {}
353 };
354 
355 template <typename NumericType>
356 inline constexpr bool operator==(
357  const Time<NumericType>& left, const Time<NumericType>& right) noexcept {
358  return left.Value() == right.Value();
359 }
360 
361 template <typename NumericType>
362 inline constexpr bool operator!=(
363  const Time<NumericType>& left, const Time<NumericType>& right) noexcept {
364  return left.Value() != right.Value();
365 }
366 
367 template <typename NumericType>
368 inline constexpr bool operator<(
369  const Time<NumericType>& left, const Time<NumericType>& right) noexcept {
370  return left.Value() < right.Value();
371 }
372 
373 template <typename NumericType>
374 inline constexpr bool operator>(
375  const Time<NumericType>& left, const Time<NumericType>& right) noexcept {
376  return left.Value() > right.Value();
377 }
378 
379 template <typename NumericType>
380 inline constexpr bool operator<=(
381  const Time<NumericType>& left, const Time<NumericType>& right) noexcept {
382  return left.Value() <= right.Value();
383 }
384 
385 template <typename NumericType>
386 inline constexpr bool operator>=(
387  const Time<NumericType>& left, const Time<NumericType>& right) noexcept {
388  return left.Value() >= right.Value();
389 }
390 
391 template <typename NumericType>
392 inline std::ostream& operator<<(std::ostream& stream, const Time<NumericType>& time) {
393  stream << time.Print();
394  return stream;
395 }
396 
397 template <typename NumericType>
398 inline constexpr Time<NumericType> operator*(
399  const NumericType number, const Time<NumericType>& time) {
400  return time * number;
401 }
402 
403 } // namespace PhQ
404 
405 namespace std {
406 
407 template <typename NumericType>
408 struct hash<PhQ::Time<NumericType>> {
409  inline size_t operator()(const PhQ::Time<NumericType>& time) const {
410  return hash<NumericType>()(time.Value());
411  }
412 };
413 
414 } // namespace std
415 
416 #endif // PHQ_DURATION_HPP
Three-dimensional Euclidean acceleration vector. Contains three components in Cartesian coordinates: ...
Plane angle between two lines or dihedral angle between two planes.
Definition: Angle.hpp:130
Angular speed, also known as angular rate or angular frequency. Represents the time rate of change of...
Abstract base class that represents any dimensional scalar physical quantity. Such a physical quantit...
double value
Value of this physical quantity expressed in its standard unit of measure.
constexpr double Value() const noexcept
Value of this physical quantity expressed in its standard unit of measure.
static constexpr Unit::Time Unit()
Standard unit of measure for this physical quantity. This physical quantity's value is stored interna...
std::string Print() const
Prints this physical quantity as a string. This physical quantity's value is expressed in its standar...
Three-dimensional Euclidean displacement gradient dyadic tensor. Gradient of the displacement vector....
Three-dimensional Euclidean displacement vector. Contains three components in Cartesian coordinates: ...
Electric charge.
Electric current, also known as amperage. Represents a flow of electric charge or a time rate of chan...
Energy physical quantity. Can represent any kind of energy, such as kinetic energy,...
Definition: Energy.hpp:73
Frequency. Inverse of a time duration. See also PhQ::Time.
Definition: Frequency.hpp:40
Length, distance, or physical size. Can also represent a scalar component or magnitude of a position ...
Definition: Length.hpp:111
Mass rate. Can represent the time rate of change of a mass or a mass flow rate; see PhQ::Mass,...
Definition: MassRate.hpp:51
Mass. For the time rate of change of mass, see PhQ::MassRate; see also PhQ::Time and PhQ::Frequency.
Definition: Mass.hpp:100
Computer memory rate. Can represent the time rate of change of memory or a memory transfer speed; see...
Definition: MemoryRate.hpp:43
Computer memory. For the time rate of change of computer memory, see PhQ::MemoryRate; see also PhQ::T...
Definition: Memory.hpp:52
Two-dimensional Euclidean acceleration vector in the XY plane. Contains two components in Cartesian c...
Two-dimensional Euclidean displacement vector in the XY plane. Contains two components in Cartesian c...
Two-dimensional Euclidean velocity vector in the XY plane. Contains two components in Cartesian coord...
Power. Time rate of change of energy or energy transfer rate; see PhQ::Energy, PhQ::Time,...
Definition: Power.hpp:51
Scalar acceleration component or magnitude of an acceleration vector. For a three-dimensional Euclide...
Scalar angular acceleration. Represents the time rate of change of an angular speed; see also PhQ::An...
Scalar component or resultant of a three-dimensional Euclidean displacement gradient dyadic tensor....
Scalar component or resultant of a three-dimensional Euclidean strain rate symmetric dyadic tensor....
Scalar component or resultant of a three-dimensional Euclidean strain symmetric dyadic tensor....
Scalar component or resultant of a three-dimensional Euclidean velocity gradient dyadic tensor....
Mass-specific energy. Energy per unit mass; see PhQ::Energy and PhQ::Mass.
Mass-specific power. Power per unit mass; see PhQ::Power and PhQ::Mass.
Scalar velocity component or magnitude of a velocity vector. For a three-dimensional Euclidean veloci...
Definition: Speed.hpp:100
Three-dimensional Euclidean strain rate symmetric dyadic tensor. Time rate of change of strain....
Definition: StrainRate.hpp:51
Three-dimensional Euclidean strain symmetric dyadic tensor. Contains six components in Cartesian coor...
Definition: Strain.hpp:68
Time. Can represent either a point in time, a time duration, or a period. For the inverse of time,...
Definition: Time.hpp:172
constexpr AngularSpeed< NumericType > operator*(const ScalarAngularAcceleration< NumericType > &scalar_angular_acceleration) const
constexpr void operator/=(const NumericType number) noexcept
Definition: Time.hpp:345
constexpr PlanarVelocity< NumericType > operator*(const PlanarAcceleration< NumericType > &planar_acceleration) const
constexpr ScalarDisplacementGradient< NumericType > operator*(const ScalarVelocityGradient< NumericType > &scalar_velocity_gradient) const
constexpr Time(const PhQ::Frequency< NumericType > &frequency)
Constructor. Constructs a time quantity from a given frequency using the definition of frequency.
constexpr Time(const Speed< NumericType > &speed, const ScalarAcceleration< NumericType > &scalar_acceleration)
Constructor. Constructs a time quantity from a given speed and scalar acceleration using the definiti...
constexpr Time(const Length< NumericType > &length, const Speed< NumericType > &speed)
Constructor. Constructs a time quantity from a given length and speed using the definition of speed.
constexpr NumericType operator/(const Time< NumericType > &time) const noexcept
Definition: Time.hpp:329
static constexpr Time< NumericType > Zero()
Statically creates a time quantity of zero.
Definition: Time.hpp:258
constexpr PlanarDisplacement< NumericType > operator*(const PlanarVelocity< NumericType > &planar_velocity) const
constexpr void operator-=(const Time< NumericType > &time) noexcept
Definition: Time.hpp:337
Time(const NumericType value, const Unit::Time unit)
Constructor. Constructs a time quantity with a given value expressed in a given time unit.
Definition: Time.hpp:179
constexpr Volume< NumericType > operator*(const VolumeRate< NumericType > &volume_rate) const
constexpr Time(const Angle< NumericType > &angle, const AngularSpeed< NumericType > &angular_speed)
Constructor. Constructs a time quantity from a given angle and angular speed using the definition of ...
constexpr Time(const Energy< NumericType > &energy, const Power< NumericType > &power)
Constructor. Constructs a time quantity from a given energy and power using the definition of power.
constexpr SpecificEnergy< NumericType > operator*(const SpecificPower< NumericType > &specific_power) const
constexpr Displacement< NumericType > operator*(const Velocity< NumericType > &velocity) const
constexpr Time(const SpecificEnergy< NumericType > &specific_energy, const SpecificPower< NumericType > &specific_power)
Constructor. Constructs a time quantity from a given specific energy and specific power using the def...
~Time() noexcept=default
Destructor. Destroys this time quantity.
constexpr Time(const Mass< NumericType > &mass, const MassRate< NumericType > &mass_rate)
Constructor. Constructs a time quantity from a given mass and mass rate using the definition of mass ...
constexpr void operator+=(const Time< NumericType > &time) noexcept
Definition: Time.hpp:333
static constexpr Time< NumericType > Create(const NumericType value)
Statically creates a time quantity with a given value expressed in a given time unit.
Definition: Time.hpp:264
constexpr Time< NumericType > & operator=(const Time< NumericType > &other)=default
Copy assignment operator. Assigns this time quantity by copying another one.
constexpr Time(const Volume< NumericType > &volume, const VolumeRate< NumericType > &volume_rate)
Constructor. Constructs a time quantity from a given volume and volume rate using the definition of v...
constexpr Time< NumericType > operator*(const NumericType number) const
Definition: Time.hpp:278
constexpr PhQ::Frequency< NumericType > Frequency() const
constexpr Time(const AngularSpeed< NumericType > &angular_speed, const ScalarAngularAcceleration< NumericType > &scalar_angular_acceleration)
Constructor. Constructs a time quantity from a given angular speed and scalar angular acceleration us...
constexpr Time(const NumericType value)
Constructor. Constructs a time quantity with a given value expressed in the standard time unit.
Definition: Time.hpp:352
constexpr Time< NumericType > operator-(const Time< NumericType > &time) const
Definition: Time.hpp:274
constexpr Time(const Memory< NumericType > &memory, const MemoryRate< NumericType > &memory_rate)
Constructor. Constructs a time quantity from a given memory and memory rate using the definition of m...
constexpr Energy< NumericType > operator*(const Power< NumericType > &power) const
constexpr Velocity< NumericType > operator*(const Acceleration< NumericType > &acceleration) const
constexpr Time< NumericType > operator+(const Time< NumericType > &time) const
Definition: Time.hpp:270
constexpr ElectricCharge< NumericType > operator*(const ElectricCurrent< NumericType > &electric_current) const
constexpr NumericType operator*(const PhQ::Frequency< NumericType > &frequency) const noexcept
Time()=default
Default constructor. Constructs a time quantity with an uninitialized value.
constexpr Mass< NumericType > operator*(const MassRate< NumericType > &mass_rate) const
constexpr Time< NumericType > operator/(const NumericType number) const
Definition: Time.hpp:325
constexpr Time(const ElectricCharge< NumericType > &electric_charge, const ElectricCurrent< NumericType > &electric_current)
Constructor. Constructs a time quantity from a given electric charge and electric current using the d...
constexpr ScalarStrain< NumericType > operator*(const ScalarStrainRate< NumericType > &scalar_strain_rate) const
constexpr Speed< NumericType > operator*(const ScalarAcceleration< NumericType > &scalar_acceleration) const
constexpr Time< NumericType > & operator=(const Time< OtherNumericType > &other)
Copy assignment operator. Assigns this time quantity by copying another one.
Definition: Time.hpp:249
constexpr Time< NumericType > & operator=(Time< NumericType > &&other) noexcept=default
Move assignment operator. Assigns this time quantity by moving another one.
constexpr Strain< NumericType > operator*(const StrainRate< NumericType > &strain_rate) const
constexpr void operator*=(const NumericType number) noexcept
Definition: Time.hpp:341
constexpr DisplacementGradient< NumericType > operator*(const VelocityGradient< NumericType > &velocity_gradient) const
constexpr Angle< NumericType > operator*(const AngularSpeed< NumericType > &angular_speed) const
constexpr Time(Time< NumericType > &&other) noexcept=default
Move constructor. Constructs a time quantity by moving another one.
Three-dimensional Euclidean velocity gradient dyadic tensor. Gradient of the velocity vector....
Three-dimensional Euclidean velocity vector. Contains three components in Cartesian coordinates: x,...
Definition: Velocity.hpp:55
Volume rate. Can represent a time rate of change of a volume or a volume flow rate....
Definition: VolumeRate.hpp:51
Volume. For the time rate of change of volume, see PhQ::VolumeRate; see also PhQ::Time and PhQ::Frequ...
Definition: Volume.hpp:62
ElectricCurrent
Electric current units.
VolumeRate
Volume rate units. Can represent a time rate of change of a volume or a volume flow rate.
Definition: VolumeRate.hpp:53
Mass
Mass units.
Definition: Mass.hpp:53
Power
Power units.
Definition: Power.hpp:53
Length
Length units.
Definition: Length.hpp:53
Frequency
Frequency units.
Definition: Frequency.hpp:53
Energy
Energy units.
Definition: Energy.hpp:53
SpecificEnergy
Mass-specific energy units.
MassRate
Mass rate units. Can represent the time rate of change of a mass or a mass flow rate.
Definition: MassRate.hpp:53
Angle
Angle units.
Definition: Angle.hpp:53
Volume
Volume units.
Definition: Volume.hpp:53
Memory
Computer memory units.
Definition: Memory.hpp:53
MemoryRate
Computer memory rate unit. Can represent the time rate of change of memory or a memory transfer speed...
Definition: MemoryRate.hpp:54
SpecificPower
Mass-specific power units.
Acceleration
Acceleration units.
ElectricCharge
Electric charge units.
Time
Time units.
Definition: Time.hpp:53
Speed
Speed units.
Definition: Speed.hpp:53
AngularSpeed
Angular speed units.
Namespace that encompasses all of the Physical Quantities library's content.
constexpr bool operator<(const Acceleration< NumericType > &left, const Acceleration< NumericType > &right) noexcept
constexpr bool operator<=(const Acceleration< NumericType > &left, const Acceleration< NumericType > &right) noexcept
constexpr Acceleration< NumericType > operator*(const NumericType number, const Acceleration< NumericType > &acceleration)
constexpr bool operator>(const Acceleration< NumericType > &left, const Acceleration< NumericType > &right) noexcept
constexpr bool operator==(const Acceleration< NumericType > &left, const Acceleration< NumericType > &right) noexcept
constexpr bool operator>=(const Acceleration< NumericType > &left, const Acceleration< NumericType > &right) noexcept
constexpr bool operator!=(const Acceleration< NumericType > &left, const Acceleration< NumericType > &right) noexcept
std::ostream & operator<<(std::ostream &stream, const Acceleration< NumericType > &acceleration)