Skip to content
Snippets Groups Projects
Commit 6d614dd3 authored by Wuttke, Joachim's avatar Wuttke, Joachim
Browse files

various little simplifications

parent 046373d6
No related branches found
No related tags found
No related merge requests found
...@@ -22,24 +22,21 @@ ParticleLayoutComputation::ParticleLayoutComputation(const ProcessedLayout* p_la ...@@ -22,24 +22,21 @@ ParticleLayoutComputation::ParticleLayoutComputation(const ProcessedLayout* p_la
const SimulationOptions& options, const SimulationOptions& options,
bool polarized) bool polarized)
: m_layout(p_layout) : m_layout(p_layout)
, m_region_map(p_layout->regionMap())
{ {
LayoutStrategyBuilder builder(p_layout, options, polarized); LayoutStrategyBuilder builder(p_layout, options, polarized);
m_strategy.reset(builder.releaseStrategy()); m_strategy.reset(builder.releaseStrategy());
m_region_map = p_layout->regionMap();
m_surface_density = p_layout->surfaceDensity();
} }
ParticleLayoutComputation::~ParticleLayoutComputation() = default; ParticleLayoutComputation::~ParticleLayoutComputation() = default;
void ParticleLayoutComputation::compute(SimulationElement& elem) const void ParticleLayoutComputation::compute(SimulationElement& elem) const
{ {
double alpha_f = elem.getAlphaMean(); const double alpha_f = elem.getAlphaMean();
size_t n_layers = m_layout->numberOfSlices(); const size_t n_layers = m_layout->numberOfSlices();
if (n_layers > 1 && alpha_f < 0) { if (n_layers > 1 && alpha_f < 0)
return; // zero for transmission with multilayers (n>1) return; // zero for transmission with multilayers (n>1) # TODO: support transmission GISAS
} else { elem.addIntensity(m_strategy->evaluate(elem) * m_layout->surfaceDensity());
elem.addIntensity(m_strategy->evaluate(elem) * m_surface_density);
}
} }
void ParticleLayoutComputation::mergeRegionMap( void ParticleLayoutComputation::mergeRegionMap(
......
...@@ -44,8 +44,7 @@ public: ...@@ -44,8 +44,7 @@ public:
private: private:
const ProcessedLayout* m_layout; const ProcessedLayout* m_layout;
std::unique_ptr<const IInterferenceFunctionStrategy> m_strategy; std::unique_ptr<const IInterferenceFunctionStrategy> m_strategy;
double m_surface_density; const std::map<size_t, std::vector<HomogeneousRegion>> m_region_map;
std::map<size_t, std::vector<HomogeneousRegion>> m_region_map;
}; };
#endif // BORNAGAIN_CORE_COMPUTATION_PARTICLELAYOUTCOMPUTATION_H #endif // BORNAGAIN_CORE_COMPUTATION_PARTICLELAYOUTCOMPUTATION_H
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