diff --git a/Core/Computation/MainComputation.cpp b/Core/Computation/MainComputation.cpp index f2004ccb7b4f38210b69a21311e22e9f35c53940..d3f6085c3247b034798b98e9519141ebf67a79a9 100644 --- a/Core/Computation/MainComputation.cpp +++ b/Core/Computation/MainComputation.cpp @@ -25,12 +25,12 @@ #include "ScalarFresnelMap.h" #include "ProgressHandler.h" #include "SimulationElement.h" +#include "MaterialFactoryFuncs.h" namespace { -Material CalculateAverageMaterial(const Material& layer_mat, - double wavelength, - const std::vector<HomogeneousRegion>& regions); +Material CalculateAverageMaterial(const Material& layer_mat, double wavelength, + const std::vector<HomogeneousRegion>& regions); } MainComputation::MainComputation( @@ -161,9 +161,9 @@ bool MainComputation::checkRegions(const std::vector<HomogeneousRegion>& regions namespace { -Material CalculateAverageMaterial(const Material& layer_mat, - double wavelength, - const std::vector<HomogeneousRegion>& regions) +// TODO: make this procedure correct for all types of materials +Material CalculateAverageMaterial(const Material& layer_mat, double wavelength, + const std::vector<HomogeneousRegion>& regions) { kvector_t magnetization_layer = layer_mat.magnetization(); complex_t refr_index2_layer = layer_mat.refractiveIndex2(wavelength); @@ -177,7 +177,6 @@ Material CalculateAverageMaterial(const Material& layer_mat, refr_index2_avg += region.m_volume*(refr_index2_region - refr_index2_layer); } complex_t refr_index_avg = std::sqrt(refr_index2_avg); - Material result(layer_mat.getName()+"_avg", refr_index_avg, magnetization_avg); - return result; + return HomogeneousMaterial(layer_mat.getName() + "_avg", refr_index_avg, magnetization_avg); } }