From 1096d8d8bafd6410bdb42ea7704f40b5d505e9ab Mon Sep 17 00:00:00 2001 From: Mateusz Pusz Date: Thu, 1 Sep 2022 12:18:18 +0200 Subject: [PATCH] fix: luminous flux support fixed --- .../include/units/isq/dimensions/luminous_flux.h | 10 +++++++--- src/systems/si/include/units/isq/si/luminous_flux.h | 13 +++++++------ test/unit_test/static/si_test.cpp | 3 +-- 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/src/systems/isq/include/units/isq/dimensions/luminous_flux.h b/src/systems/isq/include/units/isq/dimensions/luminous_flux.h index a86a6285..ffa81053 100644 --- a/src/systems/isq/include/units/isq/dimensions/luminous_flux.h +++ b/src/systems/isq/include/units/isq/dimensions/luminous_flux.h @@ -23,12 +23,16 @@ #pragma once #include -#include +#include +#include namespace units::isq { -template -using dim_luminous_flux = dim_power; +template +struct dim_luminous_flux; + +template I, DimensionOfT A> +struct dim_luminous_flux : derived_dimension, exponent> {}; template concept LuminousFlux = QuantityOfT; diff --git a/src/systems/si/include/units/isq/si/luminous_flux.h b/src/systems/si/include/units/isq/si/luminous_flux.h index a1de8d48..c35f5e8c 100644 --- a/src/systems/si/include/units/isq/si/luminous_flux.h +++ b/src/systems/si/include/units/isq/si/luminous_flux.h @@ -23,25 +23,26 @@ #pragma once // IWYU pragma: begin_exports -#include +#include +#include #include #include #include // IWYU pragma: end_exports +#include #include #include namespace units::isq::si { -// TODO Is this correct? Should we account for steradian here? How? +struct lumen : named_unit {}; -struct lumen : named_scaled_unit(), watt> {}; - -using dim_luminous_flux = dim_power; +struct dim_luminous_flux : + isq::dim_luminous_flux> {}; template U, Representation Rep = double> -using luminous_flux = power; +using luminous_flux = quantity; #ifndef UNITS_NO_LITERALS diff --git a/test/unit_test/static/si_test.cpp b/test/unit_test/static/si_test.cpp index 2299a0f5..b10b987b 100644 --- a/test/unit_test/static/si_test.cpp +++ b/test/unit_test/static/si_test.cpp @@ -241,8 +241,7 @@ static_assert(kilogray::symbol == "kGy"); // luminous flux -static_assert(683_q_lm == 1_q_W); - +static_assert(1_q_sr * 1_q_cd == 1_q_lm); static_assert(lumen::symbol == "lm"); /* ************** DERIVED DIMENSIONS IN TERMS OF BASE UNITS **************** */