diff --git a/Core/Computation/SpecularComputationTerm.cpp b/Core/Computation/SpecularComputationTerm.cpp index 0b6549fa31d4ebe8cb9eb480c7a1212126ae9a69..dcf8f59d914b65846e788134a64a6e087b5fa7da 100644 --- a/Core/Computation/SpecularComputationTerm.cpp +++ b/Core/Computation/SpecularComputationTerm.cpp @@ -2,7 +2,6 @@ #include "ILayerRTCoefficients.h" #include "MultiLayer.h" #include "SpecularComputationTerm.h" -#include "SpecularData.h" #include "SpecularSimulationElement.h" SpecularComputationTerm::SpecularComputationTerm(const MultiLayer* p_multi_layer, @@ -18,13 +17,8 @@ void SpecularComputationTerm::eval(ProgressHandler*, const SpecularElementIter& return; for (auto it = begin_it; it != end_it; ++it) - if (it->isCalculated()) - evalSingle(it); -} - -void SpecularComputationTerm::evalSingle(const SpecularElementIter& iter) const -{ - mp_fresnel_map->fillSpecularData(*iter); - const ILayerRTCoefficients& layer_data = iter->specularData()[0]; - iter->setIntensity(std::norm(layer_data.getScalarR())); + if (it->isCalculated()) { + double intensity = std::norm(mp_fresnel_map->getInCoefficients(*it, 0)->getScalarR()); + it->setIntensity(intensity); + } } diff --git a/Core/Computation/SpecularComputationTerm.h b/Core/Computation/SpecularComputationTerm.h index e314868554eef5e84fbf3670a08eb51ed6726bf5..1cedf7febfa157975d0bf5fdb88c40a1332d3939 100644 --- a/Core/Computation/SpecularComputationTerm.h +++ b/Core/Computation/SpecularComputationTerm.h @@ -37,8 +37,6 @@ public: const SpecularElementIter& end_it) const; private: - void evalSingle(const SpecularElementIter& iter) const; - const MultiLayer* mp_multilayer; const IFresnelMap* mp_fresnel_map; }; diff --git a/Core/Multilayer/IFresnelMap.h b/Core/Multilayer/IFresnelMap.h index 2fb2901439cbd5c5332e6104ef50d69a67f77f70..7563b2d286a73c138e6fed906be9754e7469bdb1 100644 --- a/Core/Multilayer/IFresnelMap.h +++ b/Core/Multilayer/IFresnelMap.h @@ -50,9 +50,6 @@ public: return getCoefficients(sim_element.getKi(), layer_index); } - //! Fills simulation element specular data - virtual void fillSpecularData(SpecularSimulationElement& sim_element) const = 0; - //! Sets the multilayer to be used for the Fresnel calculations. virtual void setMultilayer(const MultiLayer& multilayer); diff --git a/Core/Multilayer/MatrixFresnelMap.cpp b/Core/Multilayer/MatrixFresnelMap.cpp index f8034f01d26799ebe345b7acb17e50bd63240a2c..8da0be8e05aa1352cc652b09d4dd0e2ae3343d80 100644 --- a/Core/Multilayer/MatrixFresnelMap.cpp +++ b/Core/Multilayer/MatrixFresnelMap.cpp @@ -19,7 +19,6 @@ #include "SimulationElement.h" #include "SpecularData.h" #include "SpecularMagnetic.h" -#include "SpecularSimulationElement.h" namespace { std::vector<MatrixRTCoefficients> calculateCoefficients(const MultiLayer& multilayer, @@ -41,16 +40,6 @@ MatrixFresnelMap::getOutCoefficients(const SimulationElement& sim_element, size_ m_hash_table_out); } -void MatrixFresnelMap::fillSpecularData(SpecularSimulationElement& sim_element) const -{ - const auto& kvec = sim_element.getKi(); - if (m_use_cache) - sim_element.setSpecular( - SpecularData(getCoefficientsFromCache(kvec, *mP_multilayer, m_hash_table_in))); - else - sim_element.setSpecular(SpecularData(calculateCoefficients(*mP_multilayer, kvec))); -} - std::unique_ptr<const ILayerRTCoefficients> MatrixFresnelMap::getCoefficients(const kvector_t& kvec, size_t layer_index) const { diff --git a/Core/Multilayer/MatrixFresnelMap.h b/Core/Multilayer/MatrixFresnelMap.h index a1dbd8dccd7d58b0983fcdcf9395966549050aa1..c1047bcf069f1fcdf2002592bc7b72357b6ba0a6 100644 --- a/Core/Multilayer/MatrixFresnelMap.h +++ b/Core/Multilayer/MatrixFresnelMap.h @@ -33,7 +33,7 @@ class BA_CORE_API_ MatrixFresnelMap : public IFresnelMap { public: MatrixFresnelMap(); - virtual ~MatrixFresnelMap(); + ~MatrixFresnelMap() override; std::unique_ptr<const ILayerRTCoefficients> getOutCoefficients(const SimulationElement& sim_element, @@ -41,9 +41,6 @@ public: void setMultilayer(const MultiLayer& multilayer) final override; - //! Fills simulation element specular data - void fillSpecularData(SpecularSimulationElement& sim_element) const override; - typedef std::unordered_map<kvector_t, std::vector<MatrixRTCoefficients>, HashKVector> CoefficientHash; diff --git a/Core/Multilayer/ScalarFresnelMap.cpp b/Core/Multilayer/ScalarFresnelMap.cpp index 2d3fdf806b0a5d243c5733e44b4bfc2e555d37ca..4034889e238081abfcc9b8d85b8e2922195125f9 100644 --- a/Core/Multilayer/ScalarFresnelMap.cpp +++ b/Core/Multilayer/ScalarFresnelMap.cpp @@ -17,7 +17,6 @@ #include "ScalarRTCoefficients.h" #include "SimulationElement.h" #include "SpecularMatrix.h" -#include "SpecularSimulationElement.h" #include "Vectors3D.h" namespace { @@ -37,15 +36,6 @@ ScalarFresnelMap::getOutCoefficients(const SimulationElement& sim_element, size_ return getCoefficients(-sim_element.getMeanKf(), layer_index); } -void ScalarFresnelMap::fillSpecularData(SpecularSimulationElement& sim_element) const -{ - const auto& kvec = sim_element.getKi(); - if (m_use_cache) - sim_element.setSpecular(SpecularData(getCoefficientsFromCache(kvec))); - else - sim_element.setSpecular(SpecularData(calculateCoefficients(*mP_multilayer, kvec))); -} - std::unique_ptr<const ILayerRTCoefficients> ScalarFresnelMap::getCoefficients(const kvector_t& kvec, size_t layer_index) const { diff --git a/Core/Multilayer/ScalarFresnelMap.h b/Core/Multilayer/ScalarFresnelMap.h index 7a5a81e28449eb3b38ffacfc429c709a38a4977e..57c357d98b5e3918a18604b629d9f39f146b87a1 100644 --- a/Core/Multilayer/ScalarFresnelMap.h +++ b/Core/Multilayer/ScalarFresnelMap.h @@ -39,9 +39,6 @@ public: getOutCoefficients(const SimulationElement& sim_element, size_t layer_index) const override; - //! Fills simulation element specular data - void fillSpecularData(SpecularSimulationElement& sim_element) const override; - private: std::unique_ptr<const ILayerRTCoefficients> getCoefficients(const kvector_t& kvec, size_t layer_index) const override;