From f90cdda1df48e5575a9bb4e9d54c0c8d3bc0efd5 Mon Sep 17 00:00:00 2001 From: Alan Coleman <alanc@udel.edu> Date: Tue, 31 Jan 2023 10:56:47 +0100 Subject: [PATCH] Fix issue 550, added unit tests to catch this --- corsika/detail/media/FlatExponential.inl | 2 +- tests/media/testEnvironment.cpp | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/corsika/detail/media/FlatExponential.inl b/corsika/detail/media/FlatExponential.inl index ea0fe5b0e..7604352b5 100644 --- a/corsika/detail/media/FlatExponential.inl +++ b/corsika/detail/media/FlatExponential.inl @@ -29,7 +29,7 @@ namespace corsika { template <typename T> inline MassDensityType FlatExponential<T>::getMassDensity(Point const& point) const { return BaseExponential<FlatExponential<T>>::getMassDensity( - (point - BaseExponential<FlatExponential<T>>::getAnchorPoint()).getNorm()); + (point - BaseExponential<FlatExponential<T>>::getAnchorPoint()).dot(axis_)); } template <typename T> diff --git a/tests/media/testEnvironment.cpp b/tests/media/testEnvironment.cpp index 81c1ac757..28368aa96 100644 --- a/tests/media/testEnvironment.cpp +++ b/tests/media/testEnvironment.cpp @@ -101,11 +101,19 @@ TEST_CASE("FlatExponential") { LengthType const length = 2_m; TimeType const tEnd = length / speed; + CHECK((medium.getMassDensity(gOrigin)) == rho0); CHECK(medium.getNuclearComposition().getFractions() == std::vector<double>{1.}); CHECK(medium.getNuclearComposition().getComponents() == std::vector<Code>{Code::Proton}); SECTION("horizontal") { + //Check that not moving along axis does not change density + CHECK(medium.getMassDensity(Point(gCS, 1_m, 0_m, 0_m)) == rho0); + CHECK(medium.getMassDensity(Point(gCS, 1_m, 0_m, 0_m)) == rho0); + CHECK(medium.getMassDensity(Point(gCS, -1_m, 0_m, 0_m)) == rho0); + CHECK(medium.getMassDensity(Point(gCS, 0_m, 1_m, 0_m)) == rho0); + CHECK(medium.getMassDensity(Point(gCS, 0_m,-1_m, 0_m)) == rho0); + Line const line(gOrigin, Vector<SpeedType::dimension_type>( gCS, {speed, 0_m / second, 0_m / second})); setup::Trajectory const trajectory = @@ -117,6 +125,10 @@ TEST_CASE("FlatExponential") { } SECTION("vertical") { + //Moving along axis does change density + CHECK(medium.getMassDensity(Point(gCS, 0_m, 0_m, 1_m)) > rho0); + CHECK(medium.getMassDensity(Point(gCS, 0_m, 0_m, -1_m)) < rho0); + Line const line(gOrigin, Vector<SpeedType::dimension_type>( gCS, {0_m / second, 0_m / second, speed})); setup::Trajectory const trajectory = -- GitLab