From 5b9fa4f33155741a15b840b6dfbcfe0dbc4fd7e7 Mon Sep 17 00:00:00 2001 From: Mateusz Pusz Date: Wed, 19 Jun 2024 15:53:22 +0200 Subject: [PATCH] docs: "Strong Angular System" chapter added --- .../defining_systems/strong_angular_system.md | 0 .../introduction.md | 0 .../{defining_systems => systems}/isq.md | 0 .../natural_units.md | 0 .../{defining_systems => systems}/si.md | 0 .../systems/strong_angular_system.md | 135 ++++++++++++++++++ mkdocs.yml | 12 +- 7 files changed, 141 insertions(+), 6 deletions(-) delete mode 100644 docs/users_guide/defining_systems/strong_angular_system.md rename docs/users_guide/{defining_systems => systems}/introduction.md (100%) rename docs/users_guide/{defining_systems => systems}/isq.md (100%) rename docs/users_guide/{defining_systems => systems}/natural_units.md (100%) rename docs/users_guide/{defining_systems => systems}/si.md (100%) create mode 100644 docs/users_guide/systems/strong_angular_system.md diff --git a/docs/users_guide/defining_systems/strong_angular_system.md b/docs/users_guide/defining_systems/strong_angular_system.md deleted file mode 100644 index e69de29b..00000000 diff --git a/docs/users_guide/defining_systems/introduction.md b/docs/users_guide/systems/introduction.md similarity index 100% rename from docs/users_guide/defining_systems/introduction.md rename to docs/users_guide/systems/introduction.md diff --git a/docs/users_guide/defining_systems/isq.md b/docs/users_guide/systems/isq.md similarity index 100% rename from docs/users_guide/defining_systems/isq.md rename to docs/users_guide/systems/isq.md diff --git a/docs/users_guide/defining_systems/natural_units.md b/docs/users_guide/systems/natural_units.md similarity index 100% rename from docs/users_guide/defining_systems/natural_units.md rename to docs/users_guide/systems/natural_units.md diff --git a/docs/users_guide/defining_systems/si.md b/docs/users_guide/systems/si.md similarity index 100% rename from docs/users_guide/defining_systems/si.md rename to docs/users_guide/systems/si.md diff --git a/docs/users_guide/systems/strong_angular_system.md b/docs/users_guide/systems/strong_angular_system.md new file mode 100644 index 00000000..746f4af6 --- /dev/null +++ b/docs/users_guide/systems/strong_angular_system.md @@ -0,0 +1,135 @@ +# Strong Angular System + +## Some background information + +As per today's SI, both radian and steradian are dimensionless. This forces the convention to set the angle `1 radian` +equal to the number `1` within equations (similar to what natural units system does for `c` constant). + +Following [Wikipedia](https://en.wikipedia.org/wiki/Radian#Dimensional_analysis): + +!!! quote "Wikipedia: Radian - Dimensional analysis" + + Giacomo Prando says "the current state of affairs leads inevitably to ghostly appearances and disappearances of the radian + in the dimensional analysis of physical equations." For example, a mass hanging by a string from a pulley will rise or drop + by $y=rθ$ centimeters, where $r$ is the radius of the pulley in centimeters and $θ$ is the angle the pulley turns in radians. + When multiplying $r$ by $θ$ the unit of radians disappears from the result. + Similarly in the formula for the angular velocity of a rolling wheel, $ω=v/r$, radians appear in the units of + $ω$ but not on the right hand side. + Anthony French calls this phenomenon "a perennial problem in the teaching of mechanics". Oberhofer says that the typical + advice of ignoring radians during dimensional analysis and adding or removing radians in units according to convention + and contextual knowledge is "pedagogically unsatisfying". + +At least a dozen scientists have made proposals to treat the radian as a base unit of measure defining its own dimension of "angle", +as early as 1936 and as recently as 2022. This would bring the advantages of a physics-based, consistent, and logically-robust +unit system, with unambiguous units for all physical quantities. At the same time the only notable changes for typical +end-users would be: improved units for the quantities _torque_, _angular momentum_, and _moment of inertia_. + +Paul Quincey in his proposal [_"Angles in the SI: a detailed proposal for solving the problem"_](../../appendix/references.md#Quincey) states: + +!!! quote "Paul Quincey: Angles in the SI: a detailed proposal for solving the problem" + + The familiar units assigned to some angular quantities are based on equations that have adopted the radian convention, + and so are missing `rad`s that would be present if the complete equation is used. The physically-correct units are + those with the `rad`s reinstated. Numerical values would not change, and the physical meanings of all quantities would + also be unaffected. + +He proposes the following changes: + +- The **radian** would become either a new base unit or a 'complementary' unit +- The **steradian** would become a derived unit equal to $1\:rad^2$ +- The SI units for + + - _Torque_ would change from $N\:m$ ($=J$) to $J\:rad^{-1}$ + - _Angular momentum_ would change from $J\:s$ to $J\:s\:rad^{-1}$ (i.e. $J/(rad/s)$) + - _Moment of inertia_ would change from $kg\:m^2$ to $kg\:m^2\:rad^{-2}$ (i.e. $J/(rad/s)^2$) + +- The option to omit the radian from the SI units for _angle_, _angular velocity_, _angular frequency_, + _angular acceleration_, and _angular wavenumber_ would be removed, the only correct SI units being + $rad$, $rad/s$, $rad/s$, $rad/s^2$ and $rad/m$ respectively. + +Paul Quincey summarizes that with the above in action: + +!!! quote "Paul Quincey: Angles in the SI: a detailed proposal for solving the problem" + + However, the physical clarity this would build into the SI should be recognised very quickly. The units would tell us that + $torque \times angle = energy$, and $angular\:momentum \times angle = action$, for example, in the same way that they do for + $force \times distance = energy$, $linear\:momentum \times distance = action$, and + $radiant\:intensity \times solid\:angle = radiant\:flux$. + Dimensional analysis could be used to its full extent. Software involving angular quantities would be rationalised. + Arguments about the correct units for frequency and angular frequency, and the meaning of the unit $Hz$, could be left behind. + The explanation of these changes would be considerably easier and more rewarding than explaining how a kilogram-sized mass + can be measured in terms of the Planck constant. + + +## Angular quantities in the SI + +Even though the SI somehow ignores the dimensionality of angle: + +!!! quote "SI Brochure" + + Plane and solid angles, when expressed in radians and steradians respectively, are in effect + also treated within the SI as quantities with the unit one. The symbols $rad$ and $sr$ + are written explicitly where appropriate, in order to emphasize that, for radians or + steradians, the quantity being considered is, or involves the plane angle or solid angle + respectively. For steradians it emphasizes the distinction between units of flux and intensity + in radiometry and photometry for example. However, it is a long-established practice in + mathematics and across all areas of science to make use of $rad = 1$ and $sr = 1$. + For historical reasons the radian and steradian are treated as derived units. + +It also explicitly states: + +!!! quote "SI Brochure" + + The SI unit of frequency is hertz, the SI unit of angular velocity and angular frequency is + radian per second, and the SI unit of activity is becquerel, implying counts per second. + Although it is formally correct to write all three of these units as the reciprocal second, the + use of the different names emphasizes the different nature of the quantities concerned. It is + especially important to carefully distinguish frequencies from angular frequencies, because + by definition their numerical values differ by a factor of $2\pi$. Ignoring this fact may cause + an error of $2\pi$. Note that in some countries, frequency values are conventionally expressed + using “cycle/s” or “cps” instead of the SI unit $Hz$, although “cycle” and “cps” are not units + in the SI. Note also that it is common, although not recommended, to use the term + frequency for quantities expressed in $rad/s$. Because of this, it is recommended that + quantities called “frequency”, “angular frequency”, and “angular velocity” always be given + explicit units of $Hz$ or $rad/s$ and not $s^{-1}$. + + +## Strong Angular extensions in the library + +The mp-units library strives to define physically-correct quantities and their units to provide maximum help +to its users. As treating angle as a dimensional quantity can lead to many "trivial" mistakes in dimensional +analysis and calculation, it was decided to provide additional experimental systems of quantities and units +that follow the above approach and treat _angle_ as a base quantity with a base unit of radian and +_solid angle_ as its derived quantity. + +As those (at least for now) are not a part of SI, the _plain angle_ and _solid angle_ definitions can be found +in a dedicated `angular` system. Those definitions are also used in the `isq_angle` system of quantities +to make the recipes for angle-based quantities like _torque_ or _angular velocity_ physically correct: + +```cpp +using namespace mp_units; +using namespace mp_units::si::unit_symbols; +using mp_units::angular::unit_symbols::deg; +using mp_units::angular::unit_symbols::rad; + +const quantity lever = isq_angle::position_vector(20 * cm); +const quantity force = isq_angle::force(500 * N); +const quantity angle = isq_angle::angular_measure(90. * deg); +const quantity torque = isq_angle::torque(lever * force * angular::sin(angle) / (1 * isq_angle::cotes_angle)); + +std::cout << "Applying a perpendicular force of " << force << " to a " << lever << " long lever results in " + << torque.in(N * m / rad) << " of torque.\n"; +``` + +The above program prints: + +```text +Applying a perpendicular force of 500 N to a 20 cm long lever results in 100 N m/rad of torque. +``` + +!!! note + + `cotes_angle` is a constant which represents an angle with the value of exactly `1 radian`. + You can find more information about this constant in [Quincey](../../appendix/references.md#Quincey). + +!!! example "[Try it on Compiler Explorer](https://godbolt.org/z/qfxosv9YM)" diff --git a/mkdocs.yml b/mkdocs.yml index 9e4283c0..b3b12169 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -151,12 +151,12 @@ nav: - Obtaining Metadata: users_guide/framework_basics/obtaining_metadata.md - Concepts: users_guide/framework_basics/concepts.md - Text Output: users_guide/framework_basics/text_output.md - - Defining Systems: - - Introduction: users_guide/defining_systems/introduction.md - - International System of Quantities (ISQ): users_guide/defining_systems/isq.md - - International System of Units (SI): users_guide/defining_systems/si.md - - Strong Angular System: users_guide/defining_systems/strong_angular_system.md - - Natural Units: users_guide/defining_systems/natural_units.md + - Systems: + - Introduction: users_guide/systems/introduction.md + - International System of Quantities (ISQ): users_guide/systems/isq.md + - International System of Units (SI): users_guide/systems/si.md + - Strong Angular System: users_guide/systems/strong_angular_system.md + - Natural Units: users_guide/systems/natural_units.md - Use Cases: - Pure Dimensional Analysis: users_guide/use_cases/pure_dimensional_analysis.md - Working with Legacy Interfaces: users_guide/use_cases/working_with_legacy_interfaces.md