28 if (roughnessModel == RoughnessModel::TANH || roughnessModel == RoughnessModel::DEFAULT) {
30 return std::make_unique<SpecularMagneticNewTanhStrategy>();
32 }
else if (roughnessModel == RoughnessModel::NEVOT_CROCE) {
34 return std::make_unique<SpecularMagneticNewNCStrategy>();
37 throw std::logic_error(
"Invalid roughness model");
40 if (roughnessModel == RoughnessModel::TANH || roughnessModel == RoughnessModel::DEFAULT) {
41 return std::make_unique<SpecularScalarTanhStrategy>();
43 }
else if (roughnessModel == RoughnessModel::NEVOT_CROCE) {
45 return std::make_unique<SpecularScalarNCStrategy>();
48 throw std::logic_error(
"Invalid roughness model");
Defines helper functions for MultiLayer objects.
Defines class SpecularMagneticNewNCStrategy.
Defines class SpecularMagneticNewTanhStrategy.
Defines class SpecularScalarNCStrategy.
Defines class SpecularScalarTanhStrategy.
Defines class SpecularStrategyBuilder.
Our sample model: a stack of layers one below the other.
RoughnessModel roughnessModel() const
static std::unique_ptr< ISpecularStrategy > build(const MultiLayer &sample, const bool magnetic)