From 61e749c54ca5e1d71645ce0f889bd3c8c91244cf Mon Sep 17 00:00:00 2001 From: Maximilian Reininghaus <maximilian.reininghaus@kit.edu> Date: Wed, 3 Oct 2018 18:29:15 +0200 Subject: [PATCH] first prototype --- Environment/HydrogenSphere/HydrogenSphere.h | 38 +++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 Environment/HydrogenSphere/HydrogenSphere.h diff --git a/Environment/HydrogenSphere/HydrogenSphere.h b/Environment/HydrogenSphere/HydrogenSphere.h new file mode 100644 index 00000000..aaf15e89 --- /dev/null +++ b/Environment/HydrogenSphere/HydrogenSphere.h @@ -0,0 +1,38 @@ +#ifndef _include_HydrogenSphere_h_ +#define _include_HydrogenSphere_h_ + +#include <corsika/geometry/CoordinateSystem.h> +#include <corsika/particles/ParticleProperties.h> +#include <corsika/units/PhysicalUnits.h> + +/** + * a fSphere homogeneously filled with hydrogen + */ + +class HydrogenSphere { + CoordinateSystem const& fCS; + corsika::geometry::Sphere const fSphere; + MassDensityType const fDensity; + +public: + HydrogenSphere(corsika::geometry::CoordinateSystem const& pEnvCS, LengthType pRadius, + MassDensityType pDensity) + : fCS(pEnvCS) fSphere(corsika::geometry::Point(pEnvCS, {0_m, 0_m, 0_m}), radius) + , fDensity(pDensity) {} + + auto GetTargetParticle(Point const& p) const { + return fSphere.isInside(p) ? corsika::particles::Code::Proton + : corsika::particles::Code::Unknown; + } + + MassDensityType GetDensity(Point const& p) const { return density; }; + + GetMagneticField(Point const& p) { + QuantityVector<magnetic_flux_density_d> components{0 * corsika::units::tesla, + 0. * corsika::units::tesla, + 0. * corsika::units::tesla}; + return Vector<magnetic_flux_density_d>(fCS, components); + } +}; + +#endif -- GitLab