summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--c++/converter.hpp27
-rw-r--r--c++/lbm_unit.hpp24
-rw-r--r--tests/converter.cpp11
3 files changed, 40 insertions, 22 deletions
diff --git a/c++/converter.hpp b/c++/converter.hpp
index f3c3518..67058aa 100644
--- a/c++/converter.hpp
+++ b/c++/converter.hpp
@@ -8,34 +8,37 @@ namespace lbm {
template<typename T>
class converter {
private:
- saw::data<saw::unit_division<T, LbmMeter<T>, SiMeter<T> >> meter_conv_;
- saw::data<saw::unit_division<T, LbmSecond<T>, SiSecond<T> >> second_conv_;
+ saw::data<typename saw::unit_division<sch::SiMeter<T>, sch::LbmMeter<T> >::Schema > meter_conv_;
+ saw::data<typename saw::unit_division<sch::SiSecond<T>, sch::LbmSecond<T> >::Schema > second_conv_;
public:
converter() = delete;
converter(
- saw::data<saw::unit_division<T, LbmMeter<T>, SiMeter<T> >> meter_conv__,
- saw::data<saw::unit_division<T, LbmSecond<T>, SiSecond<T> >> second_conv__
+ saw::data<typename saw::unit_division<sch::SiMeter<T>, sch::LbmMeter<T> >::Schema > meter_conv__,
+ saw::data<typename saw::unit_division<sch::SiSecond<T>, sch::LbmSecond<T> >::Schema > second_conv__
):
meter_conv_{meter_conv__},
second_conv_{second_conv__}
{}
- saw::data<sch::LbmMeter<T>> meter_si_to_lbm(const saw::data<sch::SiMeter<T>>& m_si){
- return m_si * meter_conv_;
+ saw::data<sch::LbmMeter<T>> meter_si_to_lbm(const saw::data<sch::SiMeter<T>>& m_si) const {
+ return m_si / meter_conv_;
}
- saw::data<sch::LbmSecond<T>> second_si_to_lbm(const saw::data<sch::SiSecond<T>>& s_si){
- return s_si * second_conv_;
+ saw::data<sch::LbmSecond<T>> second_si_to_lbm(const saw::data<sch::SiSecond<T>>& s_si) const {
+ return s_si / second_conv_;
}
- saw::data<sch::LbmVelocity<T>> velocity_si_to_lbm(const saw::data<sch::SiVelocity<T>>& vel_si){
- return vel_si * meter_conv_ / second_conv_;
+ saw::data<sch::LbmVelocity<T>> velocity_si_to_lbm(const saw::data<sch::SiVelocity<T>>& vel_si) const {
+ return vel_si * second_conv_ / meter_conv_;
}
- saw::data<sch::LbmAcceleration<T>> acceleration_si_to_lbm(const saw::data<sch::SiAcceleration<T>>& acc_si){
- return acc_si * meter_conv_ / (second_conv_ * second_conv_);
+ saw::data<sch::LbmAcceleration<T>> acceleration_si_to_lbm(const saw::data<sch::SiAcceleration<T>>& acc_si) const {
+ return acc_si * (second_conv_ * second_conv_) / meter_conv_;
}
+ saw::data<sch::LbmKinematicViscosity<T>> kinematic_viscosity_si_to_lbm (const saw::data<sch::SiKinematicViscosity<T>>& kin_si) const {
+ return kin_si * second_conv_ / (meter_conv_ * meter_conv_);
+ }
};
}
}
diff --git a/c++/lbm_unit.hpp b/c++/lbm_unit.hpp
index 4cb9b52..e69323f 100644
--- a/c++/lbm_unit.hpp
+++ b/c++/lbm_unit.hpp
@@ -30,31 +30,37 @@ struct second {
};
}
-namesapce sch {
+namespace sch {
+using namespace saw::schema;
+template<typename S>
+using SiMeter = Unit<S, UnitElement<si_type::meter, 1>>;
+
+template<typename S>
+using LbmMeter = Unit<S, UnitElement<lbm_type::meter, 1>>;
template<typename S>
-using SiMeter = schema::Unit<S, schema::UnitElement<si_type::meter, 1>>;
+using SiSecond = Unit<S, UnitElement<si_type::meter, 1>>;
template<typename S>
-using LbmMeter = schema::Unit<S, schema::UnitElement<lbm_type::meter, 1>>;
+using LbmSecond = Unit<S, UnitElement<lbm_type::second, 1>>;
template<typename S>
-using SiSecond = schema::Unit<S, schema::UnitElement<si_type::meter, 1>>;
+using SiVelocity = Unit<S, UnitElement<si_type::meter, 1>, UnitElement<si_type::second, -1>>;
template<typename S>
-using LbmSecond = schema::Unit<S, schema::UnitElement<lbm_type::second, 1>>;
+using LbmVelocity = Unit<S, UnitElement<lbm_type::meter, 1>, UnitElement<lbm_type::second, -1>>;
template<typename S>
-using SiVelocity = schema::Unit<S, schema::UnitElement<si_type::meter, 1>, schema::UnitElement<si_type::second, -1>>;
+using SiAcceleration = Unit<S, UnitElement<si_type::meter, 1>, UnitElement<si_type::second, -2>>;
template<typename S>
-using LbmVelocity = schema::Unit<S, schema::UnitElement<lbm_type::meter, 1>, schema::UnitElement<lbm_type::second, -1>>;
+using LbmAcceleration = Unit<S, UnitElement<lbm_type::meter, 1>, UnitElement<lbm_type::second, -2>>;
template<typename S>
-using SiAcceleration = schema::Unit<S, schema::UnitElement<si_type::meter, 1>, schema::UnitElement<si_type::second, -2>>;
+using SiKinematicViscosity = Unit<S, UnitElement<si_type::meter, 2>, UnitElement<si_type::second, -1>>;
template<typename S>
-using LbmAcceleration = schema::Unit<S, schema::UnitElement<lbm_type::meter, 1>, schema::UnitElement<lbm_type::second, -2>>;
+using LbmKinematicViscosity = Unit<S, UnitElement<lbm_type::meter, 2>, UnitElement<lbm_type::second, -1>>;
}
}
diff --git a/tests/converter.cpp b/tests/converter.cpp
index 3c66348..01cd4ce 100644
--- a/tests/converter.cpp
+++ b/tests/converter.cpp
@@ -13,6 +13,15 @@ using T = Float64;
SAW_TEST("Meter"){
using namespace kel;
- lbm::converter<sch::T> converter;
+ lbm::converter<sch::T> converter{
+ {0.1},
+ {0.1}
+ };
+
+ saw::data<sch::SiMeter<sch::T>> si_m{1.0};
+
+ auto lbm_m = converter.meter_si_to_lbm(si_m);
+
+ SAW_EXPECT(lbm_m.handle().get() == 10.0, "Correct si to lbm conversion");
}
}