Skip to content
Snippets Groups Projects
Commit cfaf3020 authored by Yurov, Dmitry's avatar Yurov, Dmitry
Browse files

Creating averaged homogeneous material in MainComputation

Redmine: #1858

For now works only for wavelength-dependent material
parent ecb049fc
No related branches found
No related tags found
No related merge requests found
...@@ -25,12 +25,12 @@ ...@@ -25,12 +25,12 @@
#include "ScalarFresnelMap.h" #include "ScalarFresnelMap.h"
#include "ProgressHandler.h" #include "ProgressHandler.h"
#include "SimulationElement.h" #include "SimulationElement.h"
#include "MaterialFactoryFuncs.h"
namespace namespace
{ {
Material CalculateAverageMaterial(const Material& layer_mat, Material CalculateAverageMaterial(const Material& layer_mat, double wavelength,
double wavelength, const std::vector<HomogeneousRegion>& regions);
const std::vector<HomogeneousRegion>& regions);
} }
MainComputation::MainComputation( MainComputation::MainComputation(
...@@ -161,9 +161,9 @@ bool MainComputation::checkRegions(const std::vector<HomogeneousRegion>& regions ...@@ -161,9 +161,9 @@ bool MainComputation::checkRegions(const std::vector<HomogeneousRegion>& regions
namespace namespace
{ {
Material CalculateAverageMaterial(const Material& layer_mat, // TODO: make this procedure correct for all types of materials
double wavelength, Material CalculateAverageMaterial(const Material& layer_mat, double wavelength,
const std::vector<HomogeneousRegion>& regions) const std::vector<HomogeneousRegion>& regions)
{ {
kvector_t magnetization_layer = layer_mat.magnetization(); kvector_t magnetization_layer = layer_mat.magnetization();
complex_t refr_index2_layer = layer_mat.refractiveIndex2(wavelength); complex_t refr_index2_layer = layer_mat.refractiveIndex2(wavelength);
...@@ -177,7 +177,6 @@ Material CalculateAverageMaterial(const Material& layer_mat, ...@@ -177,7 +177,6 @@ Material CalculateAverageMaterial(const Material& layer_mat,
refr_index2_avg += region.m_volume*(refr_index2_region - refr_index2_layer); refr_index2_avg += region.m_volume*(refr_index2_region - refr_index2_layer);
} }
complex_t refr_index_avg = std::sqrt(refr_index2_avg); complex_t refr_index_avg = std::sqrt(refr_index2_avg);
Material result(layer_mat.getName()+"_avg", refr_index_avg, magnetization_avg); return HomogeneousMaterial(layer_mat.getName() + "_avg", refr_index_avg, magnetization_avg);
return result;
} }
} }
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