15 #ifndef BORNAGAIN_CORE_COMPUTATION_SPECULARCOMPUTATIONTERM_H
16 #define BORNAGAIN_CORE_COMPUTATION_SPECULARCOMPUTATIONTERM_H
Defines and implements class ISpecularStrategy.
Counter for reporting progress (with delay interval) in a threaded computation.
Specular reflection and transmission coefficients in a layer in case of magnetic interactions between...
Maintains information about progress of a computation.
Data structure containing the data of a single slice, for calculating the Fresnel coefficients.
Computes the specular scattering.
std::unique_ptr< ISpecularStrategy > m_Strategy
virtual void eval(SpecularSimulationElement &elem, const std::vector< Slice > &slices) const =0
void setProgressHandler(ProgressHandler *p_progress)
virtual ~SpecularComputationTerm()
void computeIntensity(SpecularSimulationElement &elem, const std::vector< Slice > &slices) const
SpecularComputationTerm(const SpecularComputationTerm &other)=delete
SpecularComputationTerm(std::unique_ptr< ISpecularStrategy > strategy)
SpecularComputationTerm & operator=(const SpecularComputationTerm &other)=delete
std::unique_ptr< DelayedProgressCounter > mP_progress_counter
Computes the specular scattering for a magnetic sample Used by SpecularComputation.
void eval(SpecularSimulationElement &elem, const std::vector< Slice > &slices) const override
~SpecularMatrixTerm() override
SpecularMatrixTerm(std::unique_ptr< ISpecularStrategy > strategy)
Computes the specular scattering for a scalar sample Used by SpecularComputation.
SpecularScalarTerm(std::unique_ptr< ISpecularStrategy > strategy)
void eval(SpecularSimulationElement &elem, const std::vector< Slice > &slices) const override
~SpecularScalarTerm() override
Data stucture containing both input and output of a single image pixel for specular simulation.