Skip to content
Snippets Groups Projects
Commit c445a86c authored by Van Herck, Walter's avatar Van Herck, Walter
Browse files

Forward multilayer to SpecularComputation to check for magnetic layers

parent ba86530e
No related branches found
No related tags found
No related merge requests found
......@@ -55,7 +55,7 @@ MainComputation::MainComputation(
// scattering from rough surfaces in DWBA
if (mP_multi_layer->hasRoughness())
m_computation_terms.push_back(new RoughMultiLayerComputation(mP_multi_layer.get()));
mp_specular_computation = new SpecularComputation();
mp_specular_computation = new SpecularComputation(mP_multi_layer.get());
}
MainComputation::~MainComputation()
......
......@@ -26,7 +26,7 @@ class ILayout;
//! Controlled by MainComputation.
//! @ingroup algorithms_internal
class ParticleLayoutComputation : public IComputationTerm
class ParticleLayoutComputation final : public IComputationTerm
{
public:
ParticleLayoutComputation(const MultiLayer* p_multilayer, const ILayout* p_layout,
......
......@@ -55,7 +55,7 @@ void RoughMultiLayerComputation::eval(
const std::vector<SimulationElement>::iterator& end_it) const
{
if (mp_multilayer->requiresMatrixRTCoefficients()) {
for (std::vector<SimulationElement>::iterator it = begin_it; it != end_it; ++it) {
for (auto it = begin_it; it != end_it; ++it) {
it->setIntensity(0.0);
}
return;
......
......@@ -27,7 +27,7 @@ class SimulationElement;
//! Controlled by MainComputation.
//! @ingroup algorithms_internal
class RoughMultiLayerComputation : public IComputationTerm
class RoughMultiLayerComputation final : public IComputationTerm
{
public:
RoughMultiLayerComputation(const MultiLayer* p_multi_layer);
......
......@@ -17,19 +17,20 @@
#include "SimulationElement.h"
#include "ILayerSpecularInfo.h"
#include "ILayerRTCoefficients.h"
#include "MultiLayer.h"
SpecularComputation::SpecularComputation()
: IComputationTerm(nullptr)
SpecularComputation::SpecularComputation(const MultiLayer* p_multi_layer)
: IComputationTerm(p_multi_layer)
{}
void SpecularComputation::eval(
const SimulationOptions&,
ProgressHandler*,
bool polarized,
const SimulationOptions&, ProgressHandler*, bool,
const std::vector<SimulationElement>::iterator& begin_it,
const std::vector<SimulationElement>::iterator& end_it) const
{
if (polarized) return;
if (mp_multilayer->requiresMatrixRTCoefficients())
return;
for (auto it = begin_it; it != end_it; ++it) {
if (it->containsSpecularWavevector()) {
complex_t R = (*mp_specular_info_map)[0]->getInCoefficients(*it)->getScalarR();
......
......@@ -25,7 +25,7 @@
class SpecularComputation final : public IComputationTerm
{
public:
SpecularComputation();
SpecularComputation(const MultiLayer* p_multi_layer);
void eval(const SimulationOptions& options,
ProgressHandler* progress,
......
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