IAP GITLAB

Skip to content
Snippets Groups Projects
Commit c86f0426 authored by Maximilian Reininghaus's avatar Maximilian Reininghaus :vulcan:
Browse files

Merge branch '285-use-vector-instead-of-quantityvector-in-magnetic-field-interface' into 'master'

Resolve "Use Vector instead of QuantityVector in magnetic field interface"

Closes #285

See merge request !230
parents 8c2268a3 5244de54
No related branches found
No related tags found
2 merge requests!234WIP: Initial example of python as script language from C++,!230Resolve "Use Vector instead of QuantityVector in magnetic field interface"
Pipeline #1751 passed
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
#pragma once #pragma once
#include <corsika/geometry/Point.h> #include <corsika/geometry/Point.h>
#include <corsika/geometry/Vector.h>
#include <corsika/units/PhysicalUnits.h> #include <corsika/units/PhysicalUnits.h>
namespace corsika::environment { namespace corsika::environment {
...@@ -25,7 +26,7 @@ namespace corsika::environment { ...@@ -25,7 +26,7 @@ namespace corsika::environment {
// a type-alias for a magnetic field vector // a type-alias for a magnetic field vector
using MagneticFieldVector = using MagneticFieldVector =
corsika::geometry::QuantityVector<corsika::units::si::magnetic_flux_density_d>; corsika::geometry::Vector<corsika::units::si::magnetic_flux_density_d>;
public: public:
/** /**
......
...@@ -25,7 +25,7 @@ namespace corsika::environment { ...@@ -25,7 +25,7 @@ namespace corsika::environment {
// a type-alias for a magnetic field vector // a type-alias for a magnetic field vector
using MagneticFieldVector = using MagneticFieldVector =
corsika::geometry::QuantityVector<corsika::units::si::magnetic_flux_density_d>; corsika::geometry::Vector<corsika::units::si::magnetic_flux_density_d>;
MagneticFieldVector B_; ///< The constant magnetic field we use. MagneticFieldVector B_; ///< The constant magnetic field we use.
......
...@@ -245,7 +245,7 @@ TEST_CASE("UniformMagneticField w/ Homogeneous Medium") { ...@@ -245,7 +245,7 @@ TEST_CASE("UniformMagneticField w/ Homogeneous Medium") {
std::vector<float>{1.f}); std::vector<float>{1.f});
// create a magnetic field vector // create a magnetic field vector
QuantityVector B0(0_T, 0_T, 0_T); Vector B0(gCS, 0_T, 0_T, 0_T);
// the constant density // the constant density
const auto density{19.2_g / cube(1_cm)}; const auto density{19.2_g / cube(1_cm)};
...@@ -254,20 +254,28 @@ TEST_CASE("UniformMagneticField w/ Homogeneous Medium") { ...@@ -254,20 +254,28 @@ TEST_CASE("UniformMagneticField w/ Homogeneous Medium") {
AtmModel medium(B0, density, protonComposition); AtmModel medium(B0, density, protonComposition);
// and test at several locations // and test at several locations
REQUIRE(B0 == medium.GetMagneticField(Point(gCS, -10_m, 4_m, 35_km))); REQUIRE(B0.GetComponents(gCS) ==
REQUIRE(B0 == medium.GetMagneticField(Point(gCS, 1000_km, -1000_km, 1000_km))); medium.GetMagneticField(Point(gCS, -10_m, 4_m, 35_km)).GetComponents(gCS));
REQUIRE(B0 == medium.GetMagneticField(Point(gCS, 0_m, 0_m, 0_m))); REQUIRE(
B0.GetComponents(gCS) ==
medium.GetMagneticField(Point(gCS, 1000_km, -1000_km, 1000_km)).GetComponents(gCS));
REQUIRE(B0.GetComponents(gCS) ==
medium.GetMagneticField(Point(gCS, 0_m, 0_m, 0_m)).GetComponents(gCS));
// create a new magnetic field vector // create a new magnetic field vector
QuantityVector B1(23_T, 57_T, -4_T); Vector B1(gCS, 23_T, 57_T, -4_T);
// and update this atmospheric model // and update this atmospheric model
medium.SetMagneticField(B1); medium.SetMagneticField(B1);
// and test at several locations // and test at several locations
REQUIRE(B1 == medium.GetMagneticField(Point(gCS, -10_m, 4_m, 35_km))); REQUIRE(B1.GetComponents(gCS) ==
REQUIRE(B1 == medium.GetMagneticField(Point(gCS, 1000_km, -1000_km, 1000_km))); medium.GetMagneticField(Point(gCS, -10_m, 4_m, 35_km)).GetComponents(gCS));
REQUIRE(B1 == medium.GetMagneticField(Point(gCS, 0_m, 0_m, 0_m))); REQUIRE(
B1.GetComponents(gCS) ==
medium.GetMagneticField(Point(gCS, 1000_km, -1000_km, 1000_km)).GetComponents(gCS));
REQUIRE(B1.GetComponents(gCS) ==
medium.GetMagneticField(Point(gCS, 0_m, 0_m, 0_m)).GetComponents(gCS));
// check the density and nuclear composition // check the density and nuclear composition
REQUIRE(density == medium.GetMassDensity(Point(gCS, 0_m, 0_m, 0_m))); REQUIRE(density == medium.GetMassDensity(Point(gCS, 0_m, 0_m, 0_m)));
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment