added to fps length, mass, force and pressure

This commit is contained in:
Mike Ford
2020-06-17 11:10:21 +01:00
committed by Mateusz Pusz
parent d4d5ad243c
commit 1cf58f3796
4 changed files with 58 additions and 8 deletions

View File

@@ -34,9 +34,12 @@ namespace units::physical::fps {
struct poundal : named_unit<poundal, "pdl", no_prefix> {}; struct poundal : named_unit<poundal, "pdl", no_prefix> {};
// https://en.wikipedia.org/wiki/Pound_(force) // https://en.wikipedia.org/wiki/Pound_(force)
struct pound_force : named_scaled_unit<pound_force, "lbf", no_prefix, ratio<32'174'049, 1'000'000>, poundal> {}; struct pound_force : named_scaled_unit<pound_force, "lbf", si::prefix, ratio<32'174'049, 1'000'000>, poundal> {};
struct kilopound_force : prefixed_unit<kilopound_force, si::kilo, pound_force> {};
// https://en.wikipedia.org/wiki/Kip_(unit),
struct kip : alias_unit<kilopound_force, "klbf", no_prefix> {};
struct dim_force : physical::dim_force<dim_force, poundal, dim_mass, dim_acceleration> {}; struct dim_force : physical::dim_force<dim_force, poundal, dim_mass, dim_acceleration> {};
@@ -53,6 +56,10 @@ constexpr auto operator"" q_pdl(long double l) { return force<poundal, long doub
constexpr auto operator"" q_lbf(unsigned long long l) { return force<pound_force, std::int64_t>(l); } constexpr auto operator"" q_lbf(unsigned long long l) { return force<pound_force, std::int64_t>(l); }
constexpr auto operator"" q_lbf(long double l) { return force<pound_force, long double>(l); } constexpr auto operator"" q_lbf(long double l) { return force<pound_force, long double>(l); }
// kilopound force
constexpr auto operator"" q_klbf(unsigned long long l) { return force<kilopound_force, std::int64_t>(l); }
constexpr auto operator"" q_klbf(long double l) { return force<kilopound_force, long double>(l); }
} // namespace literals } // namespace literals
} // namespace units::physical::fps } // namespace units::physical::fps

View File

@@ -31,9 +31,11 @@ namespace units::physical::fps {
// https://en.wikipedia.org/wiki/Foot_(unit) // https://en.wikipedia.org/wiki/Foot_(unit)
struct foot : named_scaled_unit<foot, "ft", no_prefix, ratio<3'048, 1'000, -1>, si::metre> {}; struct foot : named_scaled_unit<foot, "ft", no_prefix, ratio<3'048, 1'000, -1>, si::metre> {};
struct inch : named_scaled_unit<inch, "in", no_prefix, ratio<1, 12>, foot> {};
struct yard : named_scaled_unit<yard, "yd", no_prefix, ratio<3, 1>, foot> {}; struct yard : named_scaled_unit<yard, "yd", no_prefix, ratio<3, 1>, foot> {};
struct inch : named_scaled_unit<inch, "in", no_prefix, ratio<1, 12>, foot> {}; struct fathom : named_scaled_unit<fathom, "ftm", no_prefix, ratio<6, 1>, foot> {};
struct mile : named_scaled_unit<mile, "mile", no_prefix, ratio<5'280>, foot> {}; struct mile : named_scaled_unit<mile, "mile", no_prefix, ratio<5'280>, foot> {};
@@ -48,19 +50,27 @@ using length = quantity<dim_length, U, Rep>;
inline namespace literals { inline namespace literals {
// Inch
constexpr auto operator"" q_in(unsigned long long l) { return length<inch, std::int64_t>(l); } constexpr auto operator"" q_in(unsigned long long l) { return length<inch, std::int64_t>(l); }
constexpr auto operator"" q_in(long double l) { return length<inch, long double>(l); } constexpr auto operator"" q_in(long double l) { return length<inch, long double>(l); }
// ft // Foot
constexpr auto operator"" q_ft(unsigned long long l) { return length<foot, std::int64_t>(l); } constexpr auto operator"" q_ft(unsigned long long l) { return length<foot, std::int64_t>(l); }
constexpr auto operator"" q_ft(long double l) { return length<foot, long double>(l); } constexpr auto operator"" q_ft(long double l) { return length<foot, long double>(l); }
// Yard
constexpr auto operator"" q_yd(unsigned long long l) { return length<yard, std::int64_t>(l); } constexpr auto operator"" q_yd(unsigned long long l) { return length<yard, std::int64_t>(l); }
constexpr auto operator"" q_yd(long double l) { return length<yard, long double>(l); } constexpr auto operator"" q_yd(long double l) { return length<yard, long double>(l); }
// Fathom
constexpr auto operator"" q_ftm(unsigned long long l) { return length<fathom, std::int64_t>(l); }
constexpr auto operator"" q_ftm(long double l) { return length<fathom, long double>(l); }
// Mile
constexpr auto operator"" q_mile(unsigned long long l) { return length<mile, std::int64_t>(l); } constexpr auto operator"" q_mile(unsigned long long l) { return length<mile, std::int64_t>(l); }
constexpr auto operator"" q_mile(long double l) { return length<mile, long double>(l); } constexpr auto operator"" q_mile(long double l) { return length<mile, long double>(l); }
// Nautical mile
constexpr auto operator"" q_naut_mi(unsigned long long l) { return length<nautical_mile, std::int64_t>(l); } constexpr auto operator"" q_naut_mi(unsigned long long l) { return length<nautical_mile, std::int64_t>(l); }
constexpr auto operator"" q_naut_mi(long double l) { return length<nautical_mile, long double>(l); } constexpr auto operator"" q_naut_mi(long double l) { return length<nautical_mile, long double>(l); }

View File

@@ -36,28 +36,57 @@ struct dim_mass : physical::dim_mass<pound> {};
template<Unit U, Scalar Rep = double> template<Unit U, Scalar Rep = double>
using mass = quantity<dim_mass, U, Rep>; using mass = quantity<dim_mass, U, Rep>;
struct grain : named_scaled_unit<grain, "gr", no_prefix, ratio<1, 7000>, pound>{};
struct dram : named_scaled_unit<dram, "dr", no_prefix, ratio<1, 256>, pound>{};
struct ounce : named_scaled_unit<ounce, "oz", no_prefix, ratio<1, 16>, pound>{}; struct ounce : named_scaled_unit<ounce, "oz", no_prefix, ratio<1, 16>, pound>{};
struct stone : named_scaled_unit<stone, "st", no_prefix, ratio<14, 1>, pound>{};
struct quarter : named_scaled_unit<quarter, "qr", no_prefix, ratio<28, 1>, pound>{};
struct hundredweight : named_scaled_unit<hundredweight, "cwt", no_prefix, ratio<112, 1>, pound>{};
struct short_ton : named_scaled_unit<short_ton, "ton (short)", no_prefix, ratio<2'000, 1>, pound>{}; struct short_ton : named_scaled_unit<short_ton, "ton (short)", no_prefix, ratio<2'000, 1>, pound>{};
struct long_ton : named_scaled_unit<long_ton, "ton (long)", no_prefix, ratio<2'240, 1>, pound>{}; struct long_ton : named_scaled_unit<long_ton, "ton (long)", no_prefix, ratio<2'240, 1>, pound>{};
inline namespace literals { inline namespace literals {
// Grain
constexpr auto operator"" q_gr(unsigned long long l) { return mass<grain, std::int64_t>(l); }
constexpr auto operator"" q_gr(long double l) { return mass<grain, long double>(l); }
// Dram
constexpr auto operator"" q_dr(unsigned long long l) { return mass<dram, std::int64_t>(l); }
constexpr auto operator"" q_dr(long double l) { return mass<dram, long double>(l); }
// Ounce
constexpr auto operator"" q_oz(unsigned long long l) { return mass<ounce, std::int64_t>(l); } constexpr auto operator"" q_oz(unsigned long long l) { return mass<ounce, std::int64_t>(l); }
constexpr auto operator"" q_oz(long double l) { return mass<ounce, long double>(l); } constexpr auto operator"" q_oz(long double l) { return mass<ounce, long double>(l); }
// Pound
// lb
constexpr auto operator"" q_lb(unsigned long long l) { return mass<pound, std::int64_t>(l); } constexpr auto operator"" q_lb(unsigned long long l) { return mass<pound, std::int64_t>(l); }
constexpr auto operator"" q_lb(long double l) { return mass<pound, long double>(l); } constexpr auto operator"" q_lb(long double l) { return mass<pound, long double>(l); }
// Stone
constexpr auto operator"" q_st(unsigned long long l) { return mass<stone, std::int64_t>(l); }
constexpr auto operator"" q_st(long double l) { return mass<stone, long double>(l); }
// Quarter
constexpr auto operator"" q_qr(unsigned long long l) { return mass<quarter, std::int64_t>(l); }
constexpr auto operator"" q_qr(long double l) { return mass<quarter, long double>(l); }
// Hundredweight
constexpr auto operator"" q_cwt(unsigned long long l) { return mass<hundredweight, std::int64_t>(l); }
constexpr auto operator"" q_cwt(long double l) { return mass<hundredweight, long double>(l); }
// Short ton
constexpr auto operator"" q_ston(unsigned long long l) { return mass<short_ton, std::int64_t>(l); } constexpr auto operator"" q_ston(unsigned long long l) { return mass<short_ton, std::int64_t>(l); }
constexpr auto operator"" q_ston(long double l) { return mass<short_ton, long double>(l); } constexpr auto operator"" q_ston(long double l) { return mass<short_ton, long double>(l); }
// Long Ton
constexpr auto operator"" q_lton(unsigned long long l) { return mass<long_ton, std::int64_t>(l); } constexpr auto operator"" q_lton(unsigned long long l) { return mass<long_ton, std::int64_t>(l); }
constexpr auto operator"" q_lton(long double l) { return mass<long_ton, long double>(l); } constexpr auto operator"" q_lton(long double l) { return mass<long_ton, long double>(l); }

View File

@@ -39,10 +39,10 @@ using pressure = quantity<dim_pressure, U, Rep>;
struct pound_force_per_foot_sq : named_scaled_unit<pound_force_per_foot_sq, "lbf ft2", si::prefix, ratio<32'174'049, 1'000'000>, poundal_per_foot_sq> {}; struct pound_force_per_foot_sq : named_scaled_unit<pound_force_per_foot_sq, "lbf ft2", si::prefix, ratio<32'174'049, 1'000'000>, poundal_per_foot_sq> {};
// struct pound_force_per_foot_sq : noble_deduced_unit<pound_force_per_foot_sq, dim_pressure, pound_force, square_ft> {};
struct pound_force_per_inch_sq : named_scaled_unit<pound_force_per_inch_sq, "psi", si::prefix, ratio<1, 144>, pound_force_per_foot_sq> {}; struct pound_force_per_inch_sq : named_scaled_unit<pound_force_per_inch_sq, "psi", si::prefix, ratio<1, 144>, pound_force_per_foot_sq> {};
struct kilopound_force_per_inch_sq : prefixed_unit<kilopound_force_per_inch_sq, si::kilo, pound_force_per_inch_sq> {};
inline namespace literals { inline namespace literals {
// Poundal per square foot // Poundal per square foot
constexpr auto operator"" q_pdl_per_ft2(unsigned long long l) { return pressure<poundal_per_foot_sq, std::int64_t>(l); } constexpr auto operator"" q_pdl_per_ft2(unsigned long long l) { return pressure<poundal_per_foot_sq, std::int64_t>(l); }
@@ -52,6 +52,10 @@ constexpr auto operator"" q_pdl_per_ft2(long double l) { return pressure<poundal
constexpr auto operator"" q_psi(unsigned long long l) { return pressure<pound_force_per_inch_sq, std::int64_t>(l); } constexpr auto operator"" q_psi(unsigned long long l) { return pressure<pound_force_per_inch_sq, std::int64_t>(l); }
constexpr auto operator"" q_psi(long double l) { return pressure<pound_force_per_inch_sq, long double>(l); } constexpr auto operator"" q_psi(long double l) { return pressure<pound_force_per_inch_sq, long double>(l); }
// kilopounds per square inch
constexpr auto operator"" q_kpsi(unsigned long long l) { return pressure<kilopound_force_per_inch_sq, std::int64_t>(l); }
constexpr auto operator"" q_kpsi(long double l) { return pressure<kilopound_force_per_inch_sq, long double>(l); }
} // namespace literals } // namespace literals
} // namespace units::physical::fps } // namespace units::physical::fps