From 091f2c3d9ab3901621514dae348746fcc35a6f52 Mon Sep 17 00:00:00 2001 From: Randolf Beerwerth <r.beerwerth@fz-juelich.de> Date: Mon, 23 Mar 2020 10:32:36 +0100 Subject: [PATCH] Enable SpecularStrategyBuilder --- Core/Computation/ProcessedSample.cpp | 15 ++++++++------- Core/Computation/SpecularComputation.cpp | 7 +++---- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/Core/Computation/ProcessedSample.cpp b/Core/Computation/ProcessedSample.cpp index 1cfb44024b5..53f224efd27 100644 --- a/Core/Computation/ProcessedSample.cpp +++ b/Core/Computation/ProcessedSample.cpp @@ -24,12 +24,12 @@ #include "ScalarFresnelMap.h" #include "SimulationOptions.h" #include "Slice.h" -#include "SpecularScalarStrategy.h" -#include "SpecularMagneticStrategy.h" +#include "SpecularStrategyBuilder.h" namespace { -std::unique_ptr<IFresnelMap> CreateFresnelMap(const std::vector<Slice>& slices, +std::unique_ptr<IFresnelMap> CreateFresnelMap(const MultiLayer& sample, + const std::vector<Slice>& slices, const SimulationOptions& options); bool ContainsMagneticMaterial(const MultiLayer& sample); bool ContainsMagneticSlice(const std::vector<Slice>& slices); @@ -44,7 +44,7 @@ ProcessedSample::ProcessedSample(const MultiLayer& sample, const SimulationOptio m_ext_field{sample.externalField()} { initSlices(sample, options); - mP_fresnel_map = CreateFresnelMap(m_slices, options); + mP_fresnel_map = CreateFresnelMap(sample, m_slices, options); initBFields(); initLayouts(sample); initFresnelMap(options); @@ -279,14 +279,15 @@ void ProcessedSample::initFresnelMap(const SimulationOptions& sim_options) namespace { -std::unique_ptr<IFresnelMap> CreateFresnelMap(const std::vector<Slice>& slices, +std::unique_ptr<IFresnelMap> CreateFresnelMap(const MultiLayer& sample, + const std::vector<Slice>& slices, const SimulationOptions& options) { std::unique_ptr<IFresnelMap> P_result; if (ContainsMagneticSlice(slices)) - P_result.reset(new MatrixFresnelMap(std::make_unique<SpecularMagneticStrategy>())); + P_result.reset(new MatrixFresnelMap(SpecularStrategyBuilder::build(sample, true))); else - P_result.reset(new ScalarFresnelMap(std::make_unique<SpecularScalarStrategy>())); + P_result.reset(new ScalarFresnelMap(SpecularStrategyBuilder::build(sample, false))); if (options.isIntegrate()) P_result->disableCaching(); return P_result; diff --git a/Core/Computation/SpecularComputation.cpp b/Core/Computation/SpecularComputation.cpp index addb6e6de70..1ba5d46b6fb 100644 --- a/Core/Computation/SpecularComputation.cpp +++ b/Core/Computation/SpecularComputation.cpp @@ -16,9 +16,8 @@ #include "MultiLayer.h" #include "ProcessedSample.h" #include "ProgressHandler.h" -#include "SpecularScalarStrategy.h" -#include "SpecularMagneticStrategy.h" #include "SpecularSimulationElement.h" +#include "SpecularStrategyBuilder.h" static_assert(std::is_copy_constructible<SpecularComputation>::value == false, "SpecularComputation should not be copy constructible"); @@ -35,9 +34,9 @@ SpecularComputation::SpecularComputation(const MultiLayer& multilayer, { if (mP_processed_sample->containsMagneticMaterial() || mP_processed_sample->externalField() != kvector_t{}) - m_computation_term.reset(new SpecularMatrixTerm(std::make_unique<SpecularMagneticStrategy>())); + m_computation_term.reset(new SpecularMatrixTerm(SpecularStrategyBuilder::build(multilayer, true))); else - m_computation_term.reset(new SpecularScalarTerm(std::make_unique<SpecularScalarStrategy>())); + m_computation_term.reset(new SpecularScalarTerm(SpecularStrategyBuilder::build(multilayer, false))); } SpecularComputation::~SpecularComputation() = default; -- GitLab