12 #include <corsika/framework/geometry/Point.hpp> 13 #include <corsika/media/Environment.hpp> 14 #include <corsika/media/IMediumModel.hpp> 15 #include <corsika/media/NuclearComposition.hpp> 16 #include <corsika/media/VolumeTreeNode.hpp> 19 #include <corsika/detail/media/LayeredSphericalAtmosphereBuilder.hpp> 24 #include <type_traits> 43 template <
typename TMediumInterface = IMediumModel,
44 template <
typename>
typename MExtraEnvirnoment = detail::NoExtraModel>
60 typename... TModelArgs>
70 template <
typename,
template <
typename>
typename>
77 , planetRadius_(planetRadius)
78 , additionalModelArgs_{args...} {}
82 typedef typename VolumeTreeNode<TMediumInterface>::VTNUPtr volume_tree_node_uptr;
85 volume_tree_node* addExponentialLayer(
GrammageType const b,
92 unsigned int const nBins,
LengthType const deltaHeight,
95 int getSize()
const {
return layers_.size(); }
108 std::unique_ptr<NuclearComposition> composition_;
112 std::tuple<TModelArgs...>
const additionalModelArgs_;
114 std::stack<volume_tree_node_uptr> layers_;
120 #include <corsika/detail/media/LayeredSphericalAtmosphereBuilder.inl>
LengthType getPlanetRadius() const
Get the current planet radius.
Import and extend the phys::units package.
Helper class to setup concentric spheres of layered atmosphere with spcified density profiles (expone...
`, since they are used everywhere as integral part of the framework.
make_layered_spherical_atmosphere_builder.
static constexpr quantity zero()
We need a "zero" of each type – for comparisons, to initialize running totals, etc.
Describes the composition of matter Allowes and handles the creation of custom matter compositions...