diff --git a/corsika/detail/media/LayeredSphericalAtmosphereBuilder.inl b/corsika/detail/media/LayeredSphericalAtmosphereBuilder.inl index 17371ff3b775986099e6436894c1213a945e4733..0f17cf7c8ddf03f5a9e036038240e8a786ed0f9c 100644 --- a/corsika/detail/media/LayeredSphericalAtmosphereBuilder.inl +++ b/corsika/detail/media/LayeredSphericalAtmosphereBuilder.inl @@ -37,10 +37,10 @@ namespace corsika { template <typename TMediumInterface, template <typename> typename TMediumModelExtra, typename... TModelArgs> - inline void LayeredSphericalAtmosphereBuilder< - TMediumInterface, TMediumModelExtra, - TModelArgs...>::addExponentialLayer(GrammageType b, LengthType c, - LengthType upperBoundary) { + inline typename LayeredSphericalAtmosphereBuilder<TMediumInterface, TMediumModelExtra, + TModelArgs...>::volume_tree_node* + LayeredSphericalAtmosphereBuilder<TMediumInterface, TMediumModelExtra, TModelArgs...>:: + addExponentialLayer(GrammageType b, LengthType c, LengthType upperBoundary) { auto const radius = planetRadius_ + upperBoundary; checkRadius(radius); @@ -68,6 +68,7 @@ namespace corsika { } layers_.push(std::move(node)); + return layers_.top().get(); } template <typename TMediumInterface, template <typename> typename TMediumModelExtra, diff --git a/corsika/media/LayeredSphericalAtmosphereBuilder.hpp b/corsika/media/LayeredSphericalAtmosphereBuilder.hpp index 6c178f4589537fff2a79c7e166662791c30a1306..09bcabc06472717a79ed14f62778843aac042f4f 100644 --- a/corsika/media/LayeredSphericalAtmosphereBuilder.hpp +++ b/corsika/media/LayeredSphericalAtmosphereBuilder.hpp @@ -75,8 +75,12 @@ namespace corsika { , additionalModelArgs_{args...} {} public: + typedef typename VolumeTreeNode<TMediumInterface>::VTN_type volume_tree_node; + typedef typename VolumeTreeNode<TMediumInterface>::VTNUPtr volume_tree_node_uptr; + void setNuclearComposition(NuclearComposition const& composition); - void addExponentialLayer(GrammageType b, LengthType c, LengthType upperBoundary); + volume_tree_node* addExponentialLayer(GrammageType b, LengthType c, + LengthType upperBoundary); void addLinearLayer(LengthType c, LengthType upperBoundary); void addTabularLayer(std::function<MassDensityType(LengthType)> const& funcRho, @@ -102,8 +106,7 @@ namespace corsika { LengthType planetRadius_; std::tuple<TModelArgs...> const additionalModelArgs_; - std::stack<typename VolumeTreeNode<TMediumInterface>::VTNUPtr> - layers_; // innermost layer first + std::stack<volume_tree_node_uptr> layers_; // innermost layer first }; // end class LayeredSphericalAtmosphereBuilder