26 static_assert(std::is_copy_constructible<DWBAComputation>::value ==
false,
27 "DWBAComputation should not be copy constructable");
28 static_assert(std::is_copy_assignable<DWBAComputation>::value ==
false,
29 "DWBAComputation should not be copy assignable");
33 std::vector<SimulationElement>::iterator begin_it,
34 std::vector<SimulationElement>::iterator end_it)
35 :
IComputation(multilayer, options, progress), m_begin_it(begin_it), m_end_it(end_it)
37 auto p_fresnel_map = mP_processed_sample->fresnelMap();
38 bool polarized = mP_processed_sample->containsMagneticMaterial();
39 for (
const auto& layout : mP_processed_sample->layouts()) {
40 m_single_computation.addLayoutComputation(
44 if (mP_processed_sample->hasRoughness())
45 m_single_computation.setRoughnessComputation(
47 if (m_sim_options.includeSpecular())
51 DWBAComputation::~DWBAComputation() =
default;
58 void DWBAComputation::runProtected()
60 if (!mp_progress->alive())
62 m_single_computation.setProgressHandler(mp_progress);
63 for (
auto it = m_begin_it; it != m_end_it; ++it) {
64 if (!mp_progress->alive())
66 m_single_computation.compute(*it);
Defines class DWBAComputation.
Defines class GISASSpecularComputation.
Defines class IFresnelMap.
Defines class MultiLayer.
Defines class ParticleLayoutComputation.
Defines class ProcessedLayout.
Defines class ProcessedSample.
Defines class ProgressHandler.
Defines class RoughMultiLayerComputation.
Defines class SimulationElement.
Computes the specular signal in the bin where q_parallel = 0.
Interface for a single-threaded computation with given range of SimulationElements and ProgressHandle...
Our sample model: a stack of layers one below the other.
Computes the scattering contribution from one particle layout.
Maintains information about progress of a computation.
Computes the diffuse reflection from the rough interfaces of a multilayer.
Collect the different options for simulation.