IAP GITLAB

Skip to content
Snippets Groups Projects
Commit 36a1be21 authored by Remy Prechelt's avatar Remy Prechelt Committed by ralfulrich
Browse files

Port over inhomogenous medium.

parent 2c9e97b8
No related branches found
No related tags found
No related merge requests found
/*
* (c) Copyright 2020 CORSIKA Project, corsika-project@lists.kit.edu
*
* This software is distributed under the terms of the GNU General Public
* Licence version 3 (GPL Version 3). See file LICENSE for a full version of
* the license.
*/
#pragma once
#include <corsika/framework/core/PhysicalUnits.hpp>
#include <corsika/framework/geometry/Line.hpp>
#include <corsika/framework/geometry/Point.hpp>
#include <corsika/framework/geometry/Trajectory.hpp>
#include <corsika/media/NuclearComposition.hpp>
namespace corsika {
template <typename T, typename TDensityFunction>
template <typename... TArgs>
InhomogeneousMedium<T, TDensityFunction>::InhomogeneousMedium(
NuclearComposition nuclComp, TArgs&&... rhoTArgs)
: nuclComp_(nuclComp)
, densityFunction_(rhoTArgs...){}
template <typename T, typename TDensityFunction>
units::si::MassDensityType InhomogeneousMedium<T, TDensityFunction>::getMassDensity(
Point const& point) const {
return densityFunction_.evaluateAt(point);
}
template <typename T, typename TDensityFunction>
NuclearComposition const&
InhomogeneousMedium<T, TDensityFunction>::getNuclearComposition() const {
return nuclComp_;
}
template <typename T, typename TDensityFunction>
units::si::GrammageType InhomogeneousMedium<T, TDensityFunction>::integratedGrammage(
Trajectory<Line> const& line, units::si::LengthType to) const {
return densityFunction_.integrateGrammage(line, to);
}
template <typename T, typename TDensityFunction>
units::si::LengthType InhomogeneousMedium<T, TDensityFunction>::arclengthFromGrammage(
Trajectory<Line> const& line, units::si::GrammageType grammage) const {
return densityFunction_.arclengthFromGrammage(line, grammage);
}
} // namespace corsika
...@@ -8,12 +8,10 @@ ...@@ -8,12 +8,10 @@
#pragma once #pragma once
#include <corsika/framework/core/ParticleProperties.hpp>
#include <corsika/framework/core/PhysicalUnits.hpp> #include <corsika/framework/core/PhysicalUnits.hpp>
#include <corsika/framework/geometry/Line.hpp> #include <corsika/framework/geometry/Line.hpp>
#include <corsika/framework/geometry/Point.hpp> #include <corsika/framework/geometry/Point.hpp>
#include <corsika/framework/geometry/Trajectory.hpp> #include <corsika/framework/geometry/Trajectory.hpp>
#include <corsika/framework/random/RNGManager.hpp>
#include <corsika/media/NuclearComposition.hpp> #include <corsika/media/NuclearComposition.hpp>
/** /**
...@@ -23,35 +21,26 @@ ...@@ -23,35 +21,26 @@
namespace corsika { namespace corsika {
template <class T, class TDensityFunction> template <typename T, typename TDensityFunction>
class InhomogeneousMedium : public T { class InhomogeneousMedium : public T {
NuclearComposition const fNuclComp; NuclearComposition const nuclComp_;
TDensityFunction const fDensityFunction; TDensityFunction const densityFunction_;
public: public:
/* template <typename... TArgs>
* FIXME: should have traits here for ...Args InhomogeneousMedium(NuclearComposition nuclComp, TArgs&&... rhoTArgs);
*/
template <typename... Args> units::si::MassDensityType getMassDensity(Point const& point) const override;
InhomogeneousMedium(NuclearComposition pNuclComp, Args&&... rhoArgs)
: fNuclComp(pNuclComp) NuclearComposition const& getNuclearComposition() const override;
, fDensityFunction(rhoArgs...) {}
units::si::GrammageType integratedGrammage(Trajectory<Line> const& line,
MassDensityType GetMassDensity(Point const& p) const override { units::si::LengthType to) const override;
return fDensityFunction.EvaluateAt(p);
} units::si::LengthType arclengthFromGrammage(
Trajectory<Line> const& pLine, units::si::GrammageType grammage) const override;
NuclearComposition const& GetNuclearComposition() const override { return fNuclComp; }
GrammageType IntegratedGrammage(Trajectory<Line> const& pLine,
LengthType pTo) const override {
return fDensityFunction.IntegrateGrammage(pLine, pTo);
}
LengthType ArclengthFromGrammage(Trajectory<Line> const& pLine,
GrammageType pGrammage) const override {
return fDensityFunction.ArclengthFromGrammage(pLine, pGrammage);
}
}; };
} // namespace corsika } // namespace corsika
#include <corsika/detail/media/InhomogeneousMedium.inl>
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