Skip to content

si::normative_unit

kwikius edited this page Jul 12, 2021 · 13 revisions

| Home | Concepts | Types |

Description

A normative si unit is an official si_unit, as opposed to an si unit_conversion.

Example

#include <pqs/systems/si/force.hpp>

using namespace pqs;

#include <iostream>

int main()
{
   si::force::kgf<> q1{1};
   si::force::mN<> q2 = q1;

   std::cout << q1 << " is a normative S.I. quantity = " 
      << std::boolalpha << si::is_normative_quantity(q1) << '\n';
   std::cout << q2 << " is a normative S.I. quantity = " 
      << std::boolalpha << si::is_normative_quantity(q2) << '\n';
}

example output:
1 kgf is a normative S.I. quantity = false
9806.65 mN is a normative S.I quantity = true

The normative si unit is distinguished from unit conversions. In general , in a binary op on 2 quantities in the si system, if one or both has a normative unit, then the result also has a normative unit.
The multiplier of the conversion factor of a normative si unit is always 1. 1

An important advantage of quantities with normative si units is that it is possible to raise them to arbitrary rationals powers and roots. This is often not possible with units where the multiplier of the exponent is not 1.

Notation

typename model of notes
D dimension
E Base10Exponent
typename type notes
Un si::normative_unit< D, E >

Provides

concept result
unit< Un > true
inline constant result
si::is_normative_unit< Un > true
si::is_prefixable< D , E > true if {D,E} supports the standard si prefixes
get_measurement_system< Un > si_measurement_system

Notes

[1] The fact that the multiplier is 1 does not of itself guarantee that a unit is a normative si unit though.

Clone this wiki locally