diff --git a/Core/Multilayer/MultiLayer.cpp b/Core/Multilayer/MultiLayer.cpp index 9a51390d1b173e94a63e516be62503385e11f789..1624d466884734f89e5f88edf477a8b26d14a7a3 100644 --- a/Core/Multilayer/MultiLayer.cpp +++ b/Core/Multilayer/MultiLayer.cpp @@ -45,19 +45,6 @@ void MultiLayer::init_parameters() MultiLayer* MultiLayer::clone() const { - return genericClone( [](const Layer* p_layer) { return p_layer->clone(); } ); -} - -MultiLayer* MultiLayer::cloneInvertB() const -{ - return genericClone( [](const Layer* p_layer) { return p_layer->cloneInvertB(); } ); -} - -std::unique_ptr<MultiLayer> MultiLayer::cloneSliced(bool use_average_layers) const -{ - if (!use_average_layers || numberOfLayers()==0) - return std::unique_ptr<MultiLayer>(clone()); - auto layer_limits = MultiLayerUtils::ParticleRegions(*this, true); std::unique_ptr<MultiLayer> P_result(new MultiLayer()); P_result->setCrossCorrLength(crossCorrLength()); P_result->setExternalField(externalField()); @@ -65,22 +52,13 @@ std::unique_ptr<MultiLayer> MultiLayer::cloneSliced(bool use_average_layers) con { auto p_interface = i>0 ? m_interfaces[i-1] : nullptr; - auto layer_type = (numberOfLayers()==1) ? Layer::ONLYLAYER - : (i==0) ? Layer::TOPLAYER - : (i==numberOfLayers()-1) ? Layer::BOTTOMLAYER - : Layer::INTERMEDIATELAYER; - SafePointerVector<Layer> sliced_layers = - m_layers[i]->slice(layer_limits[i], layer_type); - if (sliced_layers.size()==0) - throw std::runtime_error("MultiLayer::cloneSliced: slicing layer produced empty list."); + std::unique_ptr<Layer> P_layer(m_layers[i]->clone()); if (i>0 && p_interface->getRoughness()) - P_result->addLayerWithTopRoughness(*sliced_layers[0], *p_interface->getRoughness()); + P_result->addLayerWithTopRoughness(*P_layer, *p_interface->getRoughness()); else - P_result->addLayer(*sliced_layers[0]); - for (size_t j=1; j<sliced_layers.size(); ++j) - P_result->addLayer(*sliced_layers[j]); + P_result->addLayer(*P_layer); } - return P_result; + return P_result.release(); } const LayerRoughness* MultiLayer::layerTopRoughness(size_t i_layer) const @@ -104,17 +82,6 @@ const LayerInterface* MultiLayer::layerBottomInterface(size_t i_layer) const return i_layer<m_interfaces.size() ? m_interfaces[ check_interface_index(i_layer) ] : nullptr; } -Material MultiLayer::layerMaterial(size_t i_layer) const -{ - return *layer(i_layer)->material(); -} - -void MultiLayer::setLayerMaterial(size_t i_layer, Material material) -{ - auto p_layer = m_layers[check_layer_index(i_layer)]; - p_layer->setMaterial(std::move(material)); -} - //! Adds layer with top roughness void MultiLayer::addLayerWithTopRoughness(const Layer& layer, const LayerRoughness& roughness) { @@ -128,9 +95,6 @@ void MultiLayer::addLayerWithTopRoughness(const Layer& layer, const LayerRoughne else interface = LayerInterface::createSmoothInterface(p_last_layer, p_new_layer); addAndRegisterInterface(interface); - double bottomz = (numberOfLayers()==1) ? 0.0 - : m_layers_bottomz.back() - p_last_layer->thickness(); - m_layers_bottomz.push_back(bottomz); } else { // the top layer if (p_new_layer->thickness() != 0.0) @@ -249,71 +213,6 @@ size_t MultiLayer::check_interface_index(size_t i_interface) const return i_interface; } -MultiLayer* MultiLayer::genericClone(const std::function<Layer*(const Layer*)>& layer_clone) const -{ - std::unique_ptr<MultiLayer> P_result(new MultiLayer()); - P_result->setCrossCorrLength(crossCorrLength()); - P_result->setExternalField(externalField()); - for (size_t i=0; i<numberOfLayers(); ++i) - { - auto p_interface = i>0 ? m_interfaces[i-1] - : nullptr; - std::unique_ptr<Layer> P_layer(layer_clone(m_layers[i])); - if (i>0 && p_interface->getRoughness()) - P_result->addLayerWithTopRoughness(*P_layer, *p_interface->getRoughness()); - else - P_result->addLayer(*P_layer); - } - return P_result.release(); -} - -bool MultiLayer::requiresMatrixRTCoefficients() const -{ - for (auto p_layer: m_layers) - if (!(p_layer->material()->isScalarMaterial())) - return true; - return false; -} - -size_t MultiLayer::bottomZToLayerIndex(double z_value) const -{ - size_t n_layers = numberOfLayers(); - if (n_layers < 2) - return 0; - if (z_value < m_layers_bottomz[n_layers-2]) return numberOfLayers()-1; - auto top_limit = std::upper_bound(m_layers_bottomz.rbegin(), m_layers_bottomz.rend(), z_value); - size_t nbin = static_cast<size_t>(m_layers_bottomz.rend() - top_limit); - return nbin; -} - -size_t MultiLayer::topZToLayerIndex(double z_value) const -{ - size_t n_layers = numberOfLayers(); - if (n_layers < 2) - return 0; - if (z_value <= m_layers_bottomz[n_layers-2]) return numberOfLayers()-1; - auto bottom_limit = std::lower_bound(m_layers_bottomz.rbegin(), m_layers_bottomz.rend(), z_value); - size_t nbin = static_cast<size_t>(m_layers_bottomz.rend() - bottom_limit); - return nbin; -} - -double MultiLayer::layerTopZ(size_t i_layer) const -{ - if (i_layer==0) - return 0.0; - return layerBottomZ(i_layer-1); -} - -double MultiLayer::layerBottomZ(size_t i_layer) const -{ - if (numberOfLayers()<2) - return 0; - // Size of m_layers_z is numberOfLayers()-1: - if (i_layer>numberOfLayers()-2) - i_layer = numberOfLayers()-2; - return m_layers_bottomz[i_layer]; -} - double MultiLayer::layerThickness(size_t i_layer) const { return m_layers[ check_layer_index(i_layer) ]->thickness(); diff --git a/Core/Multilayer/MultiLayer.h b/Core/Multilayer/MultiLayer.h index 9f385f1222846581021040b789dec8c3f6b0fdea..52ca423fdab51934577e21d7c08bb977234d279c 100644 --- a/Core/Multilayer/MultiLayer.h +++ b/Core/Multilayer/MultiLayer.h @@ -64,12 +64,6 @@ public: const LayerInterface* layerInterface(size_t i_interface) const { return m_interfaces[check_interface_index(i_interface)]; } - //! Returns z-coordinate of the layer's top - double layerTopZ(size_t i_layer) const; - - //! Returns z-coordinate of the layer's bottom - double layerBottomZ(size_t i_layer) const; - //! Returns thickness of layer double layerThickness(size_t i_layer) const; @@ -82,25 +76,10 @@ public: //! Returns bottom interface of layer const LayerInterface* layerBottomInterface(size_t i_layer) const; - //! Returns layer material - Material layerMaterial(size_t i_layer) const; - - //! Changes a layer's material - void setLayerMaterial(size_t i_layer, Material material); - //! Returns a clone of multilayer with clones of all layers and recreated //! interfaces between layers MultiLayer* clone() const final override; - //! Returns a clone with inverted magnetic fields - MultiLayer* cloneInvertB() const; - -#ifndef SWIG - //! Returns a clone of multilayer where the original layers may be sliced into several sublayers - //! for usage with the graded layer approximation - std::unique_ptr<MultiLayer> cloneSliced(bool use_average_layers) const; -#endif // SWIG - //! Sets cross correlation length of roughnesses between interfaces void setCrossCorrLength(double crossCorrLength); @@ -116,17 +95,6 @@ public: //! returns layer index size_t indexOfLayer(const Layer* p_layer) const; - //! returns true if contains magnetic materials and matrix calculations are required - bool requiresMatrixRTCoefficients() const; - - //! returns layer index corresponding to given global z coordinate - //! The top interface position of a layer is considered to belong to the layer above - size_t bottomZToLayerIndex(double z_value) const; - - //! returns layer index corresponding to given global z coordinate - //! The top interface position of a layer is considered to belong to the layer beneath - size_t topZToLayerIndex(double z_value) const; - bool containsMagneticMaterial() const; //! Returns true if the multilayer contains non-default materials of one type only @@ -160,13 +128,8 @@ private: //! Checks index of interface w.r.t. vector length size_t check_interface_index(size_t i_interface) const; - //! Shared implementation for different clones - MultiLayer* genericClone(const std::function<Layer*(const Layer*)>& layer_clone) const; - //! stack of layers [nlayers] SafePointerVector<Layer> m_layers; - //! coordinate of layer's bottoms [nlayers-1] - std::vector<double> m_layers_bottomz; //! stack of layer interfaces [nlayers-1] SafePointerVector<LayerInterface> m_interfaces; //! cross correlation length (in z direction) between different layers diff --git a/Core/Multilayer/MultiLayerSlicer.cpp b/Core/Multilayer/MultiLayerSlicer.cpp deleted file mode 100644 index a26c910b462335682a6bc180a1b7dca9c73ee241..0000000000000000000000000000000000000000 --- a/Core/Multilayer/MultiLayerSlicer.cpp +++ /dev/null @@ -1,45 +0,0 @@ -// ************************************************************************** // -// -// BornAgain: simulate and fit scattering at grazing incidence -// -//! @file Core/Multilayer/MultiLayerSlicer.cpp -//! @brief Implements class MultiLayerSlicer. -//! -//! @homepage http://www.bornagainproject.org -//! @license GNU General Public License v3 or higher (see COPYING) -//! @copyright Forschungszentrum Jülich GmbH 2018 -//! @authors Scientific Computing Group at MLZ (see CITATION, AUTHORS) -// -// ************************************************************************** // - -#include "MultiLayerSlicer.h" -#include "MultiLayer.h" -#include "Layer.h" - -#include <sstream> - -MultiLayerSlicer::MultiLayerSlicer(const MultiLayer& multilayer) - : mP_multilayer{multilayer.clone()} -{} - -std::vector<double> MultiLayerSlicer::slicedThicknesses() const -{ - std::vector<double> result; - auto P_sliced = mP_multilayer->cloneSliced(true); - for (unsigned i=0; i<P_sliced->numberOfLayers(); i++) { - result.push_back(P_sliced->layer(i)->thickness()); - } - return result; -} - -std::string MultiLayerSlicer::slicedRepresentation() const -{ - std::ostringstream rep; - auto thicknesses = slicedThicknesses(); - for (unsigned i =0; i<thicknesses.size(); i++) { - rep << "Layer " << i << ", thickness: " << thicknesses[i] << std::endl; - } - return rep.str(); -} - -MultiLayerSlicer::~MultiLayerSlicer() =default; diff --git a/Core/Multilayer/MultiLayerSlicer.h b/Core/Multilayer/MultiLayerSlicer.h deleted file mode 100644 index f6752a5dcc17eee80be92ad45c28a57a1af5372e..0000000000000000000000000000000000000000 --- a/Core/Multilayer/MultiLayerSlicer.h +++ /dev/null @@ -1,41 +0,0 @@ -// ************************************************************************** // -// -// BornAgain: simulate and fit scattering at grazing incidence -// -//! @file Core/Multilayer/MultiLayerSlicer.h -//! @brief Defines class MultiLayerSlicer. -//! -//! @homepage http://www.bornagainproject.org -//! @license GNU General Public License v3 or higher (see COPYING) -//! @copyright Forschungszentrum Jülich GmbH 2018 -//! @authors Scientific Computing Group at MLZ (see CITATION, AUTHORS) -// -// ************************************************************************** // - -#ifndef MULTILAYERSLICER_H -#define MULTILAYERSLICER_H - -#include "WinDllMacros.h" -#include <memory> -#include <string> -#include <vector> - -class MultiLayer; - -//! Helper class to test slicing functionality of MultiLayer -class BA_CORE_API_ MultiLayerSlicer -{ -public: - MultiLayerSlicer(const MultiLayer& multilayer); - ~MultiLayerSlicer(); - - //! Returns thicknesses of slices after slicing - std::vector<double> slicedThicknesses() const; - - //! Returns a string representation of the sliced MultiLayer - std::string slicedRepresentation() const; -private: - std::unique_ptr<MultiLayer> mP_multilayer; -}; - -#endif // MULTILAYERSLICER_H diff --git a/Core/Particle/SlicedFormFactorList.cpp b/Core/Particle/SlicedFormFactorList.cpp index 71b6b565c43c36bdfcef45d3d4c3a094ccaba64a..6686d12aa00ea6f0b609a10686ead293665fa33b 100644 --- a/Core/Particle/SlicedFormFactorList.cpp +++ b/Core/Particle/SlicedFormFactorList.cpp @@ -21,31 +21,15 @@ namespace { -std::pair<size_t, size_t> LayerIndicesLimits(const IParticle& particle, - const MultiLayer& multilayer, size_t ref_layer_index); std::pair<size_t, size_t> SliceIndexSpan(const IParticle& particle, const std::vector<Slice>& slices, double z_ref); size_t TopZToSliceIndex(double z, const std::vector<Slice>& slices); size_t BottomZToSliceIndex(double z, const std::vector<Slice>& slices); double SliceTopZ(size_t i, const std::vector<Slice>& slices); -double ZDifference(const MultiLayer& multilayer, size_t layer_index, size_t ref_layer_index); -ZLimits LayerZLimits(const MultiLayer& multilayer, size_t layer_index); ZLimits SlicesZLimits(const std::vector<Slice>& slices, size_t slice_index); void ScaleRegions(std::vector<HomogeneousRegion>& regions, double factor); } // namespace -SlicedFormFactorList SlicedFormFactorList::CreateSlicedFormFactors(const IParticle& particle, - const MultiLayer& multilayer, - size_t ref_layer_index) -{ - SlicedFormFactorList result; - auto particles = particle.decompose(); - for (auto p_particle : particles) { - result.addParticle(*p_particle, multilayer, ref_layer_index); - } - return result; -} - SlicedFormFactorList SlicedFormFactorList::CreateSlicedFormFactors(const IParticle& particle, const std::vector<Slice>& slices, double z_ref) @@ -58,26 +42,6 @@ SlicedFormFactorList SlicedFormFactorList::CreateSlicedFormFactors(const IPartic return result; } -void SlicedFormFactorList::addParticle(IParticle& particle, const MultiLayer& multilayer, - size_t ref_layer_index) -{ - auto layer_indices = LayerIndicesLimits(particle, multilayer, ref_layer_index); - bool single_layer = (layer_indices.first == layer_indices.second); - for (size_t i = layer_indices.first; i < layer_indices.second + 1; ++i) { - kvector_t translation(0.0, 0.0, -ZDifference(multilayer, i, ref_layer_index)); - particle.translate(translation); - // if particle is contained in this layer, set limits to infinite: - ZLimits limits = single_layer ? ZLimits() : LayerZLimits(multilayer, i); - auto sliced_particle = particle.createSlicedParticle(limits); - m_ff_list.emplace_back(std::move(sliced_particle.mP_slicedff), i); - if (multilayer.layerThickness(i) != 0.0) - ScaleRegions(sliced_particle.m_regions, 1 / multilayer.layerThickness(i)); - m_region_map[i].insert(m_region_map[i].end(), sliced_particle.m_regions.begin(), - sliced_particle.m_regions.end()); - ref_layer_index = i; // particle now has coordinates relative to layer i - } -} - void SlicedFormFactorList::addParticle(IParticle& particle, const std::vector<Slice>& slices, double z_ref) { @@ -120,24 +84,6 @@ std::map<size_t, std::vector<HomogeneousRegion>> SlicedFormFactorList::regionMap namespace { -std::pair<size_t, size_t> LayerIndicesLimits(const IParticle& particle, - const MultiLayer& multilayer, size_t ref_layer_index) -{ - double position_offset = multilayer.layerTopZ(ref_layer_index); - auto bottomTopZ = particle.bottomTopZ(); - double zbottom = bottomTopZ.m_bottom; - double ztop = bottomTopZ.m_top; - double eps = (ztop - zbottom) * 1e-6; // allow for relatively small crossing due to numerical - // approximations (like rotation over 180 degrees) - double zmax = ztop + position_offset - eps; - double zmin = zbottom + position_offset + eps; - size_t top_index = multilayer.topZToLayerIndex(zmax); - size_t bottom_index = multilayer.bottomZToLayerIndex(zmin); - if (top_index > bottom_index) // happens for zero size particles - top_index = bottom_index; - return {top_index, bottom_index}; -} - std::pair<size_t, size_t> SliceIndexSpan(const IParticle& particle, const std::vector<Slice>& slices, double z_ref) { @@ -197,23 +143,6 @@ double SliceTopZ(size_t i, const std::vector<Slice>& slices) return top_z; } -double ZDifference(const MultiLayer& multilayer, size_t layer_index, size_t ref_layer_index) -{ - return multilayer.layerTopZ(layer_index) - multilayer.layerTopZ(ref_layer_index); -} - -ZLimits LayerZLimits(const MultiLayer& multilayer, size_t layer_index) -{ - size_t N = multilayer.numberOfLayers(); - if (N < 2) - return ZLimits{}; - if (layer_index == 0) - return ZLimits({false, 0}, {true, 0}); - if (layer_index == N - 1) - return ZLimits({true, 0}, {false, 0}); - return ZLimits(-multilayer.layerThickness(layer_index), 0.0); -} - ZLimits SlicesZLimits(const std::vector<Slice>& slices, size_t slice_index) { size_t N = slices.size(); diff --git a/Core/Particle/SlicedFormFactorList.h b/Core/Particle/SlicedFormFactorList.h index bfee8fd01046b48495590f6d3ab53f24f9c7fcc9..a357a8f258b03c9d7b4ec0a971deb091e94ce9fd 100644 --- a/Core/Particle/SlicedFormFactorList.h +++ b/Core/Particle/SlicedFormFactorList.h @@ -15,8 +15,8 @@ #ifndef SLICEDFORMFACTORLIST_H #define SLICEDFORMFACTORLIST_H -#include "IFormFactor.h" #include "HomogeneousRegion.h" +#include "IFormFactor.h" #include <map> #include <memory> @@ -37,19 +37,16 @@ public: ~SlicedFormFactorList() = default; static SlicedFormFactorList CreateSlicedFormFactors(const IParticle& particle, - const MultiLayer& multilayer, - size_t ref_layer_index); - static SlicedFormFactorList CreateSlicedFormFactors(const IParticle& particle, - const std::vector<Slice>& slices, double z_ref); + const std::vector<Slice>& slices, + double z_ref); size_t size() const; std::pair<const IFormFactor*, size_t> operator[](size_t index) const; std::map<size_t, std::vector<HomogeneousRegion>> regionMap() const; + private: - void addParticle(IParticle& particle, const MultiLayer& multilayer, - size_t ref_layer_index); void addParticle(IParticle& particle, const std::vector<Slice>& slices, double z_ref); std::vector<std::pair<std::unique_ptr<IFormFactor>, size_t>> m_ff_list; std::map<size_t, std::vector<HomogeneousRegion>> m_region_map; diff --git a/Tests/UnitTests/Core/Sample/MultiLayerTest.cpp b/Tests/UnitTests/Core/Sample/MultiLayerTest.cpp index 024761461d3a045522ed3e5a0da7a20639b2c3fc..8649d0d9eab244abc40297743dd131e857933150 100644 --- a/Tests/UnitTests/Core/Sample/MultiLayerTest.cpp +++ b/Tests/UnitTests/Core/Sample/MultiLayerTest.cpp @@ -75,12 +75,6 @@ TEST_F(MultiLayerTest, LayerThicknesses) EXPECT_EQ(20.0, mLayer.layerThickness(1)); EXPECT_EQ(40.0, mLayer.layerThickness(2)); EXPECT_EQ(0.0, mLayer.layerThickness(3)); - - // check bottomZ value - EXPECT_EQ(0.0, mLayer.layerBottomZ(0)); - EXPECT_EQ(-20.0, mLayer.layerBottomZ(1)); - EXPECT_EQ(-60.0, mLayer.layerBottomZ(2)); - EXPECT_EQ(-60.0, mLayer.layerBottomZ(3)); } TEST_F(MultiLayerTest, CheckAllLayers) @@ -177,105 +171,6 @@ TEST_F(MultiLayerTest, Clone) EXPECT_EQ(layer2.thickness(), mLayerClone->layerThickness(2)); EXPECT_EQ(substrate.thickness(), mLayerClone->layerThickness(3)); - // check bottomZ value - EXPECT_EQ(mLayer.layerBottomZ(0), mLayerClone->layerBottomZ(0)); - EXPECT_EQ(mLayer.layerBottomZ(1), mLayerClone->layerBottomZ(1)); - EXPECT_EQ(mLayer.layerBottomZ(2), mLayerClone->layerBottomZ(2)); - EXPECT_EQ(mLayer.layerBottomZ(3), mLayerClone->layerBottomZ(3)); - - // check individual layer - const Layer* layerCopy0 = mLayerClone->layer(0); - EXPECT_EQ(topLayer.getName(), layerCopy0->getName()); - EXPECT_EQ(topLayer.thickness(), layerCopy0->thickness()); - EXPECT_EQ(topLayer.material()->getName(), layerCopy0->material()->getName()); - - const Layer* layerCopy1 = mLayerClone->layer(1); - EXPECT_EQ(layer1.getName(), layerCopy1->getName()); - EXPECT_EQ(layer1.thickness(), layerCopy1->thickness()); - EXPECT_EQ(layer1.material()->getName(), layerCopy1->material()->getName()); - - const Layer* layerCopy2 = mLayerClone->layer(2); - EXPECT_EQ(layer2.getName(), layerCopy2->getName()); - EXPECT_EQ(layer2.thickness(), layerCopy2->thickness()); - EXPECT_EQ(layer2.material()->getName(), layerCopy2->material()->getName()); - - const Layer* layerCopy3 = mLayerClone->layer(3); - EXPECT_EQ(substrate.getName(), layerCopy3->getName()); - EXPECT_EQ(substrate.thickness(), layerCopy3->thickness()); - EXPECT_EQ(substrate.material()->getName(), layerCopy3->material()->getName()); - - // check interfaces - const LayerInterface* interface0 = mLayerClone->layerInterface(0); - EXPECT_TRUE(nullptr != interface0); - EXPECT_EQ(BornAgain::LayerInterfaceType, interface0->getName()); - EXPECT_EQ(nullptr, interface0->getRoughness()); - EXPECT_EQ(topLayer.material()->getName(), interface0->topLayer()->material()->getName()); - EXPECT_EQ(layer1.material()->getName(), interface0->bottomLayer()->material()->getName()); - - const LayerInterface* interface1 = mLayerClone->layerInterface(1); - EXPECT_TRUE(nullptr != interface1); - EXPECT_EQ(BornAgain::LayerInterfaceType, interface1->getName()); - EXPECT_EQ(nullptr, interface1->getRoughness()); - EXPECT_EQ(layer1.material()->getName(), interface1->topLayer()->material()->getName()); - EXPECT_EQ(layer2.material()->getName(), interface1->bottomLayer()->material()->getName()); - - const LayerInterface* interface2 = mLayerClone->layerInterface(2); - EXPECT_TRUE(nullptr != interface2); - EXPECT_EQ(BornAgain::LayerInterfaceType, interface2->getName()); - EXPECT_EQ(nullptr, interface2->getRoughness()); - EXPECT_EQ(layer2.material()->getName(), interface2->topLayer()->material()->getName()); - EXPECT_EQ(substrate.material()->getName(), interface2->bottomLayer()->material()->getName()); - - // top interface - const LayerInterface* interfaceBottom = mLayerClone->layerTopInterface(1); - EXPECT_TRUE(nullptr != interfaceBottom); - EXPECT_EQ(BornAgain::LayerInterfaceType, interfaceBottom->getName()); - EXPECT_EQ(nullptr, interfaceBottom->getRoughness()); - EXPECT_EQ(topLayer.material()->getName(), interfaceBottom->topLayer()->material()->getName()); - EXPECT_EQ(layer1.material()->getName(), interfaceBottom->bottomLayer()->material()->getName()); - - // Bottom interface - const LayerInterface* interfaceTop = mLayerClone->layerBottomInterface(2); - EXPECT_TRUE(nullptr != interfaceTop); - EXPECT_EQ(BornAgain::LayerInterfaceType, interfaceTop->getName()); - EXPECT_EQ(nullptr, interfaceTop->getRoughness()); - EXPECT_EQ(layer2.material()->getName(), interfaceTop->topLayer()->material()->getName()); - EXPECT_EQ(substrate.material()->getName(), interfaceTop->bottomLayer()->material()->getName()); - - // null interface - const LayerInterface* interfaceTopNull = mLayerClone->layerTopInterface(0); - EXPECT_TRUE(nullptr == interfaceTopNull); - - const LayerInterface* interfaceBottomNull = mLayerClone->layerBottomInterface(3); - EXPECT_TRUE(nullptr == interfaceBottomNull); - - delete mLayerClone; -} - -TEST_F(MultiLayerTest, CloneInvertB) -{ - set_four(); - - MultiLayer* mLayerClone = mLayer.cloneInvertB(); - - // check properties - EXPECT_EQ(BornAgain::MultiLayerType, mLayerClone->getName()); - EXPECT_EQ(0.0, mLayerClone->crossCorrLength()); - EXPECT_EQ(size_t(4), mLayerClone->numberOfLayers()); - EXPECT_EQ(size_t(3), mLayerClone->numberOfInterfaces()); - - // check layer thickness - EXPECT_EQ(topLayer.thickness(), mLayerClone->layerThickness(0)); - EXPECT_EQ(layer1.thickness(), mLayerClone->layerThickness(1)); - EXPECT_EQ(layer2.thickness(), mLayerClone->layerThickness(2)); - EXPECT_EQ(substrate.thickness(), mLayerClone->layerThickness(3)); - - // check bottomZ value - EXPECT_EQ(mLayer.layerBottomZ(0), mLayerClone->layerBottomZ(0)); - EXPECT_EQ(mLayer.layerBottomZ(1), mLayerClone->layerBottomZ(1)); - EXPECT_EQ(mLayer.layerBottomZ(2), mLayerClone->layerBottomZ(2)); - EXPECT_EQ(mLayer.layerBottomZ(3), mLayerClone->layerBottomZ(3)); - // check individual layer const Layer* layerCopy0 = mLayerClone->layer(0); EXPECT_EQ(topLayer.getName(), layerCopy0->getName()); @@ -397,37 +292,6 @@ TEST_F(MultiLayerTest, CloneWithRoughness) delete mLayerClone; } -TEST_F(MultiLayerTest, CloneInvertBWithRoughness) -{ - Layer layer1(iron, 20 * Units::nanometer); - Layer layer2(stone, 5 * Units::nanometer); - - // LayerRoughness(double sigma, double hurstParameter, double lateralCorrLength); - LayerRoughness lr0(-2.1, 7.3, 12.1); - LayerRoughness lr1(1.1, -7.3, 0.1); - - mLayer.addLayer(topLayer); - mLayer.addLayerWithTopRoughness(layer1, lr0); - mLayer.addLayerWithTopRoughness(layer2, lr1); - - MultiLayer* mLayerClone = mLayer.cloneInvertB(); - - const LayerInterface* interface0 = mLayerClone->layerInterface(0); - const LayerInterface* interface1 = mLayerClone->layerInterface(1); - const LayerRoughness* roughness0 = interface0->getRoughness(); - const LayerRoughness* roughness1 = interface1->getRoughness(); - - EXPECT_EQ(-2.1, roughness0->getSigma()); - EXPECT_EQ(7.3, roughness0->getHurstParameter()); - EXPECT_EQ(12.1, roughness0->getLatteralCorrLength()); - - EXPECT_EQ(1.1, roughness1->getSigma()); - EXPECT_EQ(-7.3, roughness1->getHurstParameter()); - EXPECT_EQ(0.1, roughness1->getLatteralCorrLength()); - - delete mLayerClone; -} - TEST_F(MultiLayerTest, WithMagneticMaterial) { kvector_t magnetic_field(0.0, 0.0, 1.0); @@ -465,23 +329,6 @@ TEST_F(MultiLayerTest, CloneWithMagneticMaterial) delete mLayerClone; } -TEST_F(MultiLayerTest, CloneInvertBMagneticMaterial) -{ - kvector_t magnetic_field(0.0, 0.0, 1.0); - Material magMaterial0 = HomogeneousMaterial("MagMat0", 6e-4, 2e-8, magnetic_field); - - Layer layer1(iron, 20 * Units::nanometer); - Layer layer2(magMaterial0, 20 * Units::nanometer); - - mLayer.addLayer(topLayer); - mLayer.addLayer(layer1); - mLayer.addLayer(layer2); - - MultiLayer* mLayerClone = mLayer.cloneInvertB(); - EXPECT_TRUE(mLayerClone->containsMagneticMaterial()); - delete mLayerClone; -} - TEST_F(MultiLayerTest, MultiLayerCompositeTest) { MultiLayer mLayer; @@ -527,38 +374,3 @@ TEST_F(MultiLayerTest, MultiLayerCompositeTest) EXPECT_EQ(double((i + 1) * 10), interface_buffer[i]->bottomLayer()->thickness()); } } - -TEST_F(MultiLayerTest, MultiLayerZtoIndex) -{ - MultiLayer mLayer; - - // index_0 - // ----------------- 0.0 - // index_1 - // ----------------- -10.0 - // index_2 - // ----------------- -30.0 - // index_3 - // ----------------- -60.0 - // index_4 - Layer layer1(air, 10 * Units::nanometer); - Layer layer2(air, 20 * Units::nanometer); - Layer layer3(air, 30 * Units::nanometer); - Layer layer4(air, 0 * Units::nanometer); - mLayer.addLayer(topLayer); - mLayer.addLayer(layer1); - mLayer.addLayer(layer2); - mLayer.addLayer(layer3); - mLayer.addLayer(layer4); - - EXPECT_EQ(size_t(0), mLayer.bottomZToLayerIndex(1.0)); - EXPECT_EQ(size_t(0), mLayer.bottomZToLayerIndex(0.0)); - EXPECT_EQ(size_t(1), mLayer.bottomZToLayerIndex(-1.0)); - EXPECT_EQ(size_t(1), mLayer.bottomZToLayerIndex(-9.0)); - EXPECT_EQ(size_t(1), mLayer.bottomZToLayerIndex(-10.0)); - EXPECT_EQ(size_t(2), mLayer.bottomZToLayerIndex(-11.0)); - EXPECT_EQ(size_t(2), mLayer.bottomZToLayerIndex(-30.0)); - EXPECT_EQ(size_t(3), mLayer.bottomZToLayerIndex(-31.0)); - EXPECT_EQ(size_t(3), mLayer.bottomZToLayerIndex(-60.0)); - EXPECT_EQ(size_t(4), mLayer.bottomZToLayerIndex(-61.0)); -} diff --git a/Wrap/swig/libBornAgainCore.i b/Wrap/swig/libBornAgainCore.i index 9c19bce3bb5963f18028e7b629d96972054695f4..974d4b0520c49438847e4a1825707fa6550726c8 100644 --- a/Wrap/swig/libBornAgainCore.i +++ b/Wrap/swig/libBornAgainCore.i @@ -194,7 +194,6 @@ #include "MathFunctions.h" #include "MesoCrystal.h" #include "MultiLayer.h" -#include "MultiLayerSlicer.h" #include "OffSpecSimulation.h" #include "OutputData.h" #include "ParameterDistribution.h" @@ -448,7 +447,6 @@ %include "MaterialFactoryFuncs.h" %include "MesoCrystal.h" %include "MultiLayer.h" -%include "MultiLayerSlicer.h" %include "OffSpecSimulation.h" %include "IIntensityFunction.h" %include "OutputData.h" diff --git a/auto/Wrap/libBornAgainCore.py b/auto/Wrap/libBornAgainCore.py index 42f2d4e82a92b8f548f0d2466913915d14ff578a..1525f345da4b0a9c456329a415eea086d3f6c6a0 100644 --- a/auto/Wrap/libBornAgainCore.py +++ b/auto/Wrap/libBornAgainCore.py @@ -25386,30 +25386,6 @@ class MultiLayer(ISample): return _libBornAgainCore.MultiLayer_layerInterface(self, i_interface) - def layerTopZ(self, i_layer): - """ - layerTopZ(MultiLayer self, size_t i_layer) -> double - - double MultiLayer::layerTopZ(size_t i_layer) const - - Returns z-coordinate of the layer's bottom. - - """ - return _libBornAgainCore.MultiLayer_layerTopZ(self, i_layer) - - - def layerBottomZ(self, i_layer): - """ - layerBottomZ(MultiLayer self, size_t i_layer) -> double - - double MultiLayer::layerBottomZ(size_t i_layer) const - - Returns z-coordinate of the layer's bottom. - - """ - return _libBornAgainCore.MultiLayer_layerBottomZ(self, i_layer) - - def layerThickness(self, i_layer): """ layerThickness(MultiLayer self, size_t i_layer) -> double @@ -25455,30 +25431,6 @@ class MultiLayer(ISample): return _libBornAgainCore.MultiLayer_layerBottomInterface(self, i_layer) - def layerMaterial(self, i_layer): - """ - layerMaterial(MultiLayer self, size_t i_layer) -> Material - - Material MultiLayer::layerMaterial(size_t i_layer) const - - Returns layer material. - - """ - return _libBornAgainCore.MultiLayer_layerMaterial(self, i_layer) - - - def setLayerMaterial(self, i_layer, material): - """ - setLayerMaterial(MultiLayer self, size_t i_layer, Material material) - - void MultiLayer::setLayerMaterial(size_t i_layer, Material material) - - Changes a layer's material. - - """ - return _libBornAgainCore.MultiLayer_setLayerMaterial(self, i_layer, material) - - def clone(self): """ clone(MultiLayer self) -> MultiLayer @@ -25491,18 +25443,6 @@ class MultiLayer(ISample): return _libBornAgainCore.MultiLayer_clone(self) - def cloneInvertB(self): - """ - cloneInvertB(MultiLayer self) -> MultiLayer - - MultiLayer * MultiLayer::cloneInvertB() const - - Returns a clone with inverted magnetic fields. - - """ - return _libBornAgainCore.MultiLayer_cloneInvertB(self) - - def setCrossCorrLength(self, crossCorrLength): """ setCrossCorrLength(MultiLayer self, double crossCorrLength) @@ -25563,42 +25503,6 @@ class MultiLayer(ISample): return _libBornAgainCore.MultiLayer_indexOfLayer(self, p_layer) - def requiresMatrixRTCoefficients(self): - """ - requiresMatrixRTCoefficients(MultiLayer self) -> bool - - bool MultiLayer::requiresMatrixRTCoefficients() const - - returns true if contains magnetic materials and matrix calculations are required - - """ - return _libBornAgainCore.MultiLayer_requiresMatrixRTCoefficients(self) - - - def bottomZToLayerIndex(self, z_value): - """ - bottomZToLayerIndex(MultiLayer self, double z_value) -> size_t - - size_t MultiLayer::bottomZToLayerIndex(double z_value) const - - returns layer index corresponding to given global z coordinate The top interface position of a layer is considered to belong to the layer above - - """ - return _libBornAgainCore.MultiLayer_bottomZToLayerIndex(self, z_value) - - - def topZToLayerIndex(self, z_value): - """ - topZToLayerIndex(MultiLayer self, double z_value) -> size_t - - size_t MultiLayer::topZToLayerIndex(double z_value) const - - returns layer index corresponding to given global z coordinate The top interface position of a layer is considered to belong to the layer beneath - - """ - return _libBornAgainCore.MultiLayer_topZToLayerIndex(self, z_value) - - def containsMagneticMaterial(self): """ containsMagneticMaterial(MultiLayer self) -> bool @@ -25667,63 +25571,6 @@ class MultiLayer(ISample): MultiLayer_swigregister = _libBornAgainCore.MultiLayer_swigregister MultiLayer_swigregister(MultiLayer) -class MultiLayerSlicer(_object): - """ - - - Helper class to test slicing functionality of MultiLayer. - - C++ includes: MultiLayerSlicer.h - - """ - - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, MultiLayerSlicer, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, MultiLayerSlicer, name) - __repr__ = _swig_repr - - def __init__(self, multilayer): - """ - __init__(MultiLayerSlicer self, MultiLayer multilayer) -> MultiLayerSlicer - - MultiLayerSlicer::MultiLayerSlicer(const MultiLayer &multilayer) - - """ - this = _libBornAgainCore.new_MultiLayerSlicer(multilayer) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _libBornAgainCore.delete_MultiLayerSlicer - __del__ = lambda self: None - - def slicedThicknesses(self): - """ - slicedThicknesses(MultiLayerSlicer self) -> vdouble1d_t - - std::vector< double > MultiLayerSlicer::slicedThicknesses() const - - Returns thicknesses of slices after slicing. - - """ - return _libBornAgainCore.MultiLayerSlicer_slicedThicknesses(self) - - - def slicedRepresentation(self): - """ - slicedRepresentation(MultiLayerSlicer self) -> std::string - - std::string MultiLayerSlicer::slicedRepresentation() const - - Returns a string representation of the sliced MultiLayer. - - """ - return _libBornAgainCore.MultiLayerSlicer_slicedRepresentation(self) - -MultiLayerSlicer_swigregister = _libBornAgainCore.MultiLayerSlicer_swigregister -MultiLayerSlicer_swigregister(MultiLayerSlicer) - class OffSpecSimulation(Simulation2D): """ diff --git a/auto/Wrap/libBornAgainCore_wrap.cpp b/auto/Wrap/libBornAgainCore_wrap.cpp index 3565d1673f2086e85c4115b87b0c685ce737e8d3..288b7c40beee84c4b646f68ffdd68d9988cd4192 100644 --- a/auto/Wrap/libBornAgainCore_wrap.cpp +++ b/auto/Wrap/libBornAgainCore_wrap.cpp @@ -3644,157 +3644,156 @@ namespace Swig { #define SWIGTYPE_p_MillerIndex swig_types[190] #define SWIGTYPE_p_MillerIndexOrientation swig_types[191] #define SWIGTYPE_p_MultiLayer swig_types[192] -#define SWIGTYPE_p_MultiLayerSlicer swig_types[193] -#define SWIGTYPE_p_OffSpecSimulation swig_types[194] -#define SWIGTYPE_p_OutputDataIteratorT_double_OutputDataT_double_t_t swig_types[195] -#define SWIGTYPE_p_OutputDataIteratorT_double_const_OutputDataT_double_t_const_t swig_types[196] -#define SWIGTYPE_p_OutputDataT_CumulativeValue_t swig_types[197] -#define SWIGTYPE_p_OutputDataT_bool_t swig_types[198] -#define SWIGTYPE_p_OutputDataT_double_t swig_types[199] -#define SWIGTYPE_p_ParameterDistribution swig_types[200] -#define SWIGTYPE_p_ParameterPool swig_types[201] -#define SWIGTYPE_p_ParameterSample swig_types[202] -#define SWIGTYPE_p_Particle swig_types[203] -#define SWIGTYPE_p_ParticleComposition swig_types[204] -#define SWIGTYPE_p_ParticleCoreShell swig_types[205] -#define SWIGTYPE_p_ParticleDistribution swig_types[206] -#define SWIGTYPE_p_ParticleLayout swig_types[207] -#define SWIGTYPE_p_ParticleLimits swig_types[208] -#define SWIGTYPE_p_PoissonNoiseBackground swig_types[209] -#define SWIGTYPE_p_Polygon swig_types[210] -#define SWIGTYPE_p_PolygonPrivate swig_types[211] -#define SWIGTYPE_p_PolygonalTopology swig_types[212] -#define SWIGTYPE_p_PolyhedralEdge swig_types[213] -#define SWIGTYPE_p_PolyhedralFace swig_types[214] -#define SWIGTYPE_p_PolyhedralTopology swig_types[215] -#define SWIGTYPE_p_ProgressHandler__Callback_t swig_types[216] -#define SWIGTYPE_p_PyBuilderCallback swig_types[217] -#define SWIGTYPE_p_PyObserverCallback swig_types[218] -#define SWIGTYPE_p_QSpecScan swig_types[219] -#define SWIGTYPE_p_RangedDistribution swig_types[220] -#define SWIGTYPE_p_RangedDistributionCosine swig_types[221] -#define SWIGTYPE_p_RangedDistributionGate swig_types[222] -#define SWIGTYPE_p_RangedDistributionGaussian swig_types[223] -#define SWIGTYPE_p_RangedDistributionLogNormal swig_types[224] -#define SWIGTYPE_p_RangedDistributionLorentz swig_types[225] -#define SWIGTYPE_p_RealLimits swig_types[226] -#define SWIGTYPE_p_RealParameter swig_types[227] -#define SWIGTYPE_p_Rectangle swig_types[228] -#define SWIGTYPE_p_RectangularDetector swig_types[229] -#define SWIGTYPE_p_RectangularPixel swig_types[230] -#define SWIGTYPE_p_RegionOfInterest swig_types[231] -#define SWIGTYPE_p_ResolutionFunction2DGaussian swig_types[232] -#define SWIGTYPE_p_RotationEuler swig_types[233] -#define SWIGTYPE_p_RotationX swig_types[234] -#define SWIGTYPE_p_RotationY swig_types[235] -#define SWIGTYPE_p_RotationZ swig_types[236] -#define SWIGTYPE_p_SafePointerVectorT_IParticle_t swig_types[237] -#define SWIGTYPE_p_SafePointerVectorT_Layer_t swig_types[238] -#define SWIGTYPE_p_SampleBuilderFactory swig_types[239] -#define SWIGTYPE_p_ScanResolution swig_types[240] -#define SWIGTYPE_p_SimpleSelectionRule swig_types[241] -#define SWIGTYPE_p_Simulation swig_types[242] -#define SWIGTYPE_p_Simulation2D swig_types[243] -#define SWIGTYPE_p_SimulationFactory swig_types[244] -#define SWIGTYPE_p_SimulationOptions swig_types[245] -#define SWIGTYPE_p_SimulationResult swig_types[246] -#define SWIGTYPE_p_SlicedParticle swig_types[247] -#define SWIGTYPE_p_SlicingEffects swig_types[248] -#define SWIGTYPE_p_SpecularDetector1D swig_types[249] -#define SWIGTYPE_p_SpecularSimulation swig_types[250] -#define SWIGTYPE_p_SphericalDetector swig_types[251] -#define SWIGTYPE_p_SphericalPixel swig_types[252] -#define SWIGTYPE_p_SquareLattice swig_types[253] -#define SWIGTYPE_p_ThreadInfo swig_types[254] -#define SWIGTYPE_p_Transform3D swig_types[255] -#define SWIGTYPE_p_VariableBinAxis swig_types[256] -#define SWIGTYPE_p_VarianceConstantFunction swig_types[257] -#define SWIGTYPE_p_VarianceSimFunction swig_types[258] -#define SWIGTYPE_p_VerticalLine swig_types[259] -#define SWIGTYPE_p_VonMisesFisherGaussPeakShape swig_types[260] -#define SWIGTYPE_p_VonMisesGaussPeakShape swig_types[261] -#define SWIGTYPE_p_WavevectorInfo swig_types[262] -#define SWIGTYPE_p_ZLimits swig_types[263] -#define SWIGTYPE_p_allocator_type swig_types[264] -#define SWIGTYPE_p_bool swig_types[265] -#define SWIGTYPE_p_char swig_types[266] -#define SWIGTYPE_p_const_iterator swig_types[267] -#define SWIGTYPE_p_const_reference swig_types[268] -#define SWIGTYPE_p_corr_matrix_t swig_types[269] -#define SWIGTYPE_p_difference_type swig_types[270] -#define SWIGTYPE_p_double swig_types[271] -#define SWIGTYPE_p_int swig_types[272] -#define SWIGTYPE_p_iterator swig_types[273] -#define SWIGTYPE_p_key_type swig_types[274] -#define SWIGTYPE_p_long_long swig_types[275] -#define SWIGTYPE_p_mapped_type swig_types[276] -#define SWIGTYPE_p_observer_t swig_types[277] -#define SWIGTYPE_p_p_PyObject swig_types[278] -#define SWIGTYPE_p_parameters_t swig_types[279] -#define SWIGTYPE_p_reference swig_types[280] -#define SWIGTYPE_p_short swig_types[281] -#define SWIGTYPE_p_signed_char swig_types[282] -#define SWIGTYPE_p_size_type swig_types[283] -#define SWIGTYPE_p_std__allocatorT_AxisInfo_t swig_types[284] -#define SWIGTYPE_p_std__allocatorT_BasicVector3DT_double_t_t swig_types[285] -#define SWIGTYPE_p_std__allocatorT_BasicVector3DT_std__complexT_double_t_t_t swig_types[286] -#define SWIGTYPE_p_std__allocatorT_IFormFactor_p_t swig_types[287] -#define SWIGTYPE_p_std__allocatorT_INode_const_p_t swig_types[288] -#define SWIGTYPE_p_std__allocatorT_INode_p_t swig_types[289] -#define SWIGTYPE_p_std__allocatorT_ParameterSample_t swig_types[290] -#define SWIGTYPE_p_std__allocatorT_double_t swig_types[291] -#define SWIGTYPE_p_std__allocatorT_int_t swig_types[292] -#define SWIGTYPE_p_std__allocatorT_std__complexT_double_t_t swig_types[293] -#define SWIGTYPE_p_std__allocatorT_std__pairT_double_double_t_t swig_types[294] -#define SWIGTYPE_p_std__allocatorT_std__pairT_std__string_const_double_t_t swig_types[295] -#define SWIGTYPE_p_std__allocatorT_std__string_t swig_types[296] -#define SWIGTYPE_p_std__allocatorT_std__vectorT_double_std__allocatorT_double_t_t_t swig_types[297] -#define SWIGTYPE_p_std__allocatorT_std__vectorT_int_std__allocatorT_int_t_t_t swig_types[298] -#define SWIGTYPE_p_std__allocatorT_unsigned_long_t swig_types[299] -#define SWIGTYPE_p_std__complexT_double_t swig_types[300] -#define SWIGTYPE_p_std__functionT_IMultiLayerBuilder_pfF_t swig_types[301] -#define SWIGTYPE_p_std__functionT_Simulation_pfF_t swig_types[302] -#define SWIGTYPE_p_std__functionT_void_fF_t swig_types[303] -#define SWIGTYPE_p_std__functionT_void_fSimulationAreaIterator_const_RF_t swig_types[304] -#define SWIGTYPE_p_std__invalid_argument swig_types[305] -#define SWIGTYPE_p_std__lessT_std__string_t swig_types[306] -#define SWIGTYPE_p_std__mapT_std__string_double_std__lessT_std__string_t_std__allocatorT_std__pairT_std__string_const_double_t_t_t swig_types[307] -#define SWIGTYPE_p_std__mapT_std__string_std__string_std__lessT_std__string_t_std__allocatorT_std__pairT_std__string_const_std__string_t_t_t__const_iterator swig_types[308] -#define SWIGTYPE_p_std__pairT_double_double_t swig_types[309] -#define SWIGTYPE_p_std__shared_ptrT_IMultiLayerBuilder_t swig_types[310] -#define SWIGTYPE_p_std__shared_ptrT_IObserver_t swig_types[311] -#define SWIGTYPE_p_std__vectorT_AxesUnitsWrap__AxesUnits_std__allocatorT_AxesUnitsWrap__AxesUnits_t_t swig_types[312] -#define SWIGTYPE_p_std__vectorT_AxisInfo_std__allocatorT_AxisInfo_t_t swig_types[313] -#define SWIGTYPE_p_std__vectorT_BasicVector3DT_double_t_std__allocatorT_BasicVector3DT_double_t_t_t swig_types[314] -#define SWIGTYPE_p_std__vectorT_BasicVector3DT_std__complexT_double_t_t_std__allocatorT_BasicVector3DT_std__complexT_double_t_t_t_t swig_types[315] -#define SWIGTYPE_p_std__vectorT_HomogeneousRegion_std__allocatorT_HomogeneousRegion_t_t swig_types[316] -#define SWIGTYPE_p_std__vectorT_IFormFactor_p_std__allocatorT_IFormFactor_p_t_t swig_types[317] -#define SWIGTYPE_p_std__vectorT_ILayout_const_p_std__allocatorT_ILayout_const_p_t_t swig_types[318] -#define SWIGTYPE_p_std__vectorT_INode_const_p_std__allocatorT_INode_const_p_t_t swig_types[319] -#define SWIGTYPE_p_std__vectorT_INode_p_std__allocatorT_INode_p_t_t swig_types[320] -#define SWIGTYPE_p_std__vectorT_Material_const_p_std__allocatorT_Material_const_p_t_t swig_types[321] -#define SWIGTYPE_p_std__vectorT_ParameterSample_std__allocatorT_ParameterSample_t_t swig_types[322] -#define SWIGTYPE_p_std__vectorT_PolygonalTopology_std__allocatorT_PolygonalTopology_t_t swig_types[323] -#define SWIGTYPE_p_std__vectorT_RealParameter_p_std__allocatorT_RealParameter_p_t_t swig_types[324] -#define SWIGTYPE_p_std__vectorT_SimulationElement_std__allocatorT_SimulationElement_t_t swig_types[325] -#define SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t swig_types[326] -#define SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t swig_types[327] -#define SWIGTYPE_p_std__vectorT_size_t_std__allocatorT_size_t_t_t swig_types[328] -#define SWIGTYPE_p_std__vectorT_std__complexT_double_t_std__allocatorT_std__complexT_double_t_t_t swig_types[329] -#define SWIGTYPE_p_std__vectorT_std__pairT_double_double_t_std__allocatorT_std__pairT_double_double_t_t_t swig_types[330] -#define SWIGTYPE_p_std__vectorT_std__string_std__allocatorT_std__string_t_t swig_types[331] -#define SWIGTYPE_p_std__vectorT_std__vectorT_double_std__allocatorT_double_t_t_std__allocatorT_std__vectorT_double_std__allocatorT_double_t_t_t_t swig_types[332] -#define SWIGTYPE_p_std__vectorT_std__vectorT_int_std__allocatorT_int_t_t_std__allocatorT_std__vectorT_int_std__allocatorT_int_t_t_t_t swig_types[333] -#define SWIGTYPE_p_std__vectorT_unsigned_int_std__allocatorT_unsigned_int_t_t swig_types[334] -#define SWIGTYPE_p_std__vectorT_unsigned_long_std__allocatorT_unsigned_long_t_t swig_types[335] -#define SWIGTYPE_p_swig__SwigPyIterator swig_types[336] -#define SWIGTYPE_p_unsigned_char swig_types[337] -#define SWIGTYPE_p_unsigned_int swig_types[338] -#define SWIGTYPE_p_unsigned_long_long swig_types[339] -#define SWIGTYPE_p_unsigned_short swig_types[340] -#define SWIGTYPE_p_value_type swig_types[341] -static swig_type_info *swig_types[343]; -static swig_module_info swig_module = {swig_types, 342, 0, 0, 0, 0}; +#define SWIGTYPE_p_OffSpecSimulation swig_types[193] +#define SWIGTYPE_p_OutputDataIteratorT_double_OutputDataT_double_t_t swig_types[194] +#define SWIGTYPE_p_OutputDataIteratorT_double_const_OutputDataT_double_t_const_t swig_types[195] +#define SWIGTYPE_p_OutputDataT_CumulativeValue_t swig_types[196] +#define SWIGTYPE_p_OutputDataT_bool_t swig_types[197] +#define SWIGTYPE_p_OutputDataT_double_t swig_types[198] +#define SWIGTYPE_p_ParameterDistribution swig_types[199] +#define SWIGTYPE_p_ParameterPool swig_types[200] +#define SWIGTYPE_p_ParameterSample swig_types[201] +#define SWIGTYPE_p_Particle swig_types[202] +#define SWIGTYPE_p_ParticleComposition swig_types[203] +#define SWIGTYPE_p_ParticleCoreShell swig_types[204] +#define SWIGTYPE_p_ParticleDistribution swig_types[205] +#define SWIGTYPE_p_ParticleLayout swig_types[206] +#define SWIGTYPE_p_ParticleLimits swig_types[207] +#define SWIGTYPE_p_PoissonNoiseBackground swig_types[208] +#define SWIGTYPE_p_Polygon swig_types[209] +#define SWIGTYPE_p_PolygonPrivate swig_types[210] +#define SWIGTYPE_p_PolygonalTopology swig_types[211] +#define SWIGTYPE_p_PolyhedralEdge swig_types[212] +#define SWIGTYPE_p_PolyhedralFace swig_types[213] +#define SWIGTYPE_p_PolyhedralTopology swig_types[214] +#define SWIGTYPE_p_ProgressHandler__Callback_t swig_types[215] +#define SWIGTYPE_p_PyBuilderCallback swig_types[216] +#define SWIGTYPE_p_PyObserverCallback swig_types[217] +#define SWIGTYPE_p_QSpecScan swig_types[218] +#define SWIGTYPE_p_RangedDistribution swig_types[219] +#define SWIGTYPE_p_RangedDistributionCosine swig_types[220] +#define SWIGTYPE_p_RangedDistributionGate swig_types[221] +#define SWIGTYPE_p_RangedDistributionGaussian swig_types[222] +#define SWIGTYPE_p_RangedDistributionLogNormal swig_types[223] +#define SWIGTYPE_p_RangedDistributionLorentz swig_types[224] +#define SWIGTYPE_p_RealLimits swig_types[225] +#define SWIGTYPE_p_RealParameter swig_types[226] +#define SWIGTYPE_p_Rectangle swig_types[227] +#define SWIGTYPE_p_RectangularDetector swig_types[228] +#define SWIGTYPE_p_RectangularPixel swig_types[229] +#define SWIGTYPE_p_RegionOfInterest swig_types[230] +#define SWIGTYPE_p_ResolutionFunction2DGaussian swig_types[231] +#define SWIGTYPE_p_RotationEuler swig_types[232] +#define SWIGTYPE_p_RotationX swig_types[233] +#define SWIGTYPE_p_RotationY swig_types[234] +#define SWIGTYPE_p_RotationZ swig_types[235] +#define SWIGTYPE_p_SafePointerVectorT_IParticle_t swig_types[236] +#define SWIGTYPE_p_SafePointerVectorT_Layer_t swig_types[237] +#define SWIGTYPE_p_SampleBuilderFactory swig_types[238] +#define SWIGTYPE_p_ScanResolution swig_types[239] +#define SWIGTYPE_p_SimpleSelectionRule swig_types[240] +#define SWIGTYPE_p_Simulation swig_types[241] +#define SWIGTYPE_p_Simulation2D swig_types[242] +#define SWIGTYPE_p_SimulationFactory swig_types[243] +#define SWIGTYPE_p_SimulationOptions swig_types[244] +#define SWIGTYPE_p_SimulationResult swig_types[245] +#define SWIGTYPE_p_SlicedParticle swig_types[246] +#define SWIGTYPE_p_SlicingEffects swig_types[247] +#define SWIGTYPE_p_SpecularDetector1D swig_types[248] +#define SWIGTYPE_p_SpecularSimulation swig_types[249] +#define SWIGTYPE_p_SphericalDetector swig_types[250] +#define SWIGTYPE_p_SphericalPixel swig_types[251] +#define SWIGTYPE_p_SquareLattice swig_types[252] +#define SWIGTYPE_p_ThreadInfo swig_types[253] +#define SWIGTYPE_p_Transform3D swig_types[254] +#define SWIGTYPE_p_VariableBinAxis swig_types[255] +#define SWIGTYPE_p_VarianceConstantFunction swig_types[256] +#define SWIGTYPE_p_VarianceSimFunction swig_types[257] +#define SWIGTYPE_p_VerticalLine swig_types[258] +#define SWIGTYPE_p_VonMisesFisherGaussPeakShape swig_types[259] +#define SWIGTYPE_p_VonMisesGaussPeakShape swig_types[260] +#define SWIGTYPE_p_WavevectorInfo swig_types[261] +#define SWIGTYPE_p_ZLimits swig_types[262] +#define SWIGTYPE_p_allocator_type swig_types[263] +#define SWIGTYPE_p_bool swig_types[264] +#define SWIGTYPE_p_char swig_types[265] +#define SWIGTYPE_p_const_iterator swig_types[266] +#define SWIGTYPE_p_const_reference swig_types[267] +#define SWIGTYPE_p_corr_matrix_t swig_types[268] +#define SWIGTYPE_p_difference_type swig_types[269] +#define SWIGTYPE_p_double swig_types[270] +#define SWIGTYPE_p_int swig_types[271] +#define SWIGTYPE_p_iterator swig_types[272] +#define SWIGTYPE_p_key_type swig_types[273] +#define SWIGTYPE_p_long_long swig_types[274] +#define SWIGTYPE_p_mapped_type swig_types[275] +#define SWIGTYPE_p_observer_t swig_types[276] +#define SWIGTYPE_p_p_PyObject swig_types[277] +#define SWIGTYPE_p_parameters_t swig_types[278] +#define SWIGTYPE_p_reference swig_types[279] +#define SWIGTYPE_p_short swig_types[280] +#define SWIGTYPE_p_signed_char swig_types[281] +#define SWIGTYPE_p_size_type swig_types[282] +#define SWIGTYPE_p_std__allocatorT_AxisInfo_t swig_types[283] +#define SWIGTYPE_p_std__allocatorT_BasicVector3DT_double_t_t swig_types[284] +#define SWIGTYPE_p_std__allocatorT_BasicVector3DT_std__complexT_double_t_t_t swig_types[285] +#define SWIGTYPE_p_std__allocatorT_IFormFactor_p_t swig_types[286] +#define SWIGTYPE_p_std__allocatorT_INode_const_p_t swig_types[287] +#define SWIGTYPE_p_std__allocatorT_INode_p_t swig_types[288] +#define SWIGTYPE_p_std__allocatorT_ParameterSample_t swig_types[289] +#define SWIGTYPE_p_std__allocatorT_double_t swig_types[290] +#define SWIGTYPE_p_std__allocatorT_int_t swig_types[291] +#define SWIGTYPE_p_std__allocatorT_std__complexT_double_t_t swig_types[292] +#define SWIGTYPE_p_std__allocatorT_std__pairT_double_double_t_t swig_types[293] +#define SWIGTYPE_p_std__allocatorT_std__pairT_std__string_const_double_t_t swig_types[294] +#define SWIGTYPE_p_std__allocatorT_std__string_t swig_types[295] +#define SWIGTYPE_p_std__allocatorT_std__vectorT_double_std__allocatorT_double_t_t_t swig_types[296] +#define SWIGTYPE_p_std__allocatorT_std__vectorT_int_std__allocatorT_int_t_t_t swig_types[297] +#define SWIGTYPE_p_std__allocatorT_unsigned_long_t swig_types[298] +#define SWIGTYPE_p_std__complexT_double_t swig_types[299] +#define SWIGTYPE_p_std__functionT_IMultiLayerBuilder_pfF_t swig_types[300] +#define SWIGTYPE_p_std__functionT_Simulation_pfF_t swig_types[301] +#define SWIGTYPE_p_std__functionT_void_fF_t swig_types[302] +#define SWIGTYPE_p_std__functionT_void_fSimulationAreaIterator_const_RF_t swig_types[303] +#define SWIGTYPE_p_std__invalid_argument swig_types[304] +#define SWIGTYPE_p_std__lessT_std__string_t swig_types[305] +#define SWIGTYPE_p_std__mapT_std__string_double_std__lessT_std__string_t_std__allocatorT_std__pairT_std__string_const_double_t_t_t swig_types[306] +#define SWIGTYPE_p_std__mapT_std__string_std__string_std__lessT_std__string_t_std__allocatorT_std__pairT_std__string_const_std__string_t_t_t__const_iterator swig_types[307] +#define SWIGTYPE_p_std__pairT_double_double_t swig_types[308] +#define SWIGTYPE_p_std__shared_ptrT_IMultiLayerBuilder_t swig_types[309] +#define SWIGTYPE_p_std__shared_ptrT_IObserver_t swig_types[310] +#define SWIGTYPE_p_std__vectorT_AxesUnitsWrap__AxesUnits_std__allocatorT_AxesUnitsWrap__AxesUnits_t_t swig_types[311] +#define SWIGTYPE_p_std__vectorT_AxisInfo_std__allocatorT_AxisInfo_t_t swig_types[312] +#define SWIGTYPE_p_std__vectorT_BasicVector3DT_double_t_std__allocatorT_BasicVector3DT_double_t_t_t swig_types[313] +#define SWIGTYPE_p_std__vectorT_BasicVector3DT_std__complexT_double_t_t_std__allocatorT_BasicVector3DT_std__complexT_double_t_t_t_t swig_types[314] +#define SWIGTYPE_p_std__vectorT_HomogeneousRegion_std__allocatorT_HomogeneousRegion_t_t swig_types[315] +#define SWIGTYPE_p_std__vectorT_IFormFactor_p_std__allocatorT_IFormFactor_p_t_t swig_types[316] +#define SWIGTYPE_p_std__vectorT_ILayout_const_p_std__allocatorT_ILayout_const_p_t_t swig_types[317] +#define SWIGTYPE_p_std__vectorT_INode_const_p_std__allocatorT_INode_const_p_t_t swig_types[318] +#define SWIGTYPE_p_std__vectorT_INode_p_std__allocatorT_INode_p_t_t swig_types[319] +#define SWIGTYPE_p_std__vectorT_Material_const_p_std__allocatorT_Material_const_p_t_t swig_types[320] +#define SWIGTYPE_p_std__vectorT_ParameterSample_std__allocatorT_ParameterSample_t_t swig_types[321] +#define SWIGTYPE_p_std__vectorT_PolygonalTopology_std__allocatorT_PolygonalTopology_t_t swig_types[322] +#define SWIGTYPE_p_std__vectorT_RealParameter_p_std__allocatorT_RealParameter_p_t_t swig_types[323] +#define SWIGTYPE_p_std__vectorT_SimulationElement_std__allocatorT_SimulationElement_t_t swig_types[324] +#define SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t swig_types[325] +#define SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t swig_types[326] +#define SWIGTYPE_p_std__vectorT_size_t_std__allocatorT_size_t_t_t swig_types[327] +#define SWIGTYPE_p_std__vectorT_std__complexT_double_t_std__allocatorT_std__complexT_double_t_t_t swig_types[328] +#define SWIGTYPE_p_std__vectorT_std__pairT_double_double_t_std__allocatorT_std__pairT_double_double_t_t_t swig_types[329] +#define SWIGTYPE_p_std__vectorT_std__string_std__allocatorT_std__string_t_t swig_types[330] +#define SWIGTYPE_p_std__vectorT_std__vectorT_double_std__allocatorT_double_t_t_std__allocatorT_std__vectorT_double_std__allocatorT_double_t_t_t_t swig_types[331] +#define SWIGTYPE_p_std__vectorT_std__vectorT_int_std__allocatorT_int_t_t_std__allocatorT_std__vectorT_int_std__allocatorT_int_t_t_t_t swig_types[332] +#define SWIGTYPE_p_std__vectorT_unsigned_int_std__allocatorT_unsigned_int_t_t swig_types[333] +#define SWIGTYPE_p_std__vectorT_unsigned_long_std__allocatorT_unsigned_long_t_t swig_types[334] +#define SWIGTYPE_p_swig__SwigPyIterator swig_types[335] +#define SWIGTYPE_p_unsigned_char swig_types[336] +#define SWIGTYPE_p_unsigned_int swig_types[337] +#define SWIGTYPE_p_unsigned_long_long swig_types[338] +#define SWIGTYPE_p_unsigned_short swig_types[339] +#define SWIGTYPE_p_value_type swig_types[340] +static swig_type_info *swig_types[342]; +static swig_module_info swig_module = {swig_types, 341, 0, 0, 0, 0}; #define SWIG_TypeQuery(name) SWIG_TypeQueryModule(&swig_module, &swig_module, name) #define SWIG_MangledTypeQuery(name) SWIG_MangledTypeQueryModule(&swig_module, &swig_module, name) @@ -7330,7 +7329,6 @@ SWIGINTERN void std_vector_Sl_std_pair_Sl_double_Sc_double_Sg__Sg__insert__SWIG_ #include "MathFunctions.h" #include "MesoCrystal.h" #include "MultiLayer.h" -#include "MultiLayerSlicer.h" #include "OffSpecSimulation.h" #include "OutputData.h" #include "ParameterDistribution.h" @@ -107223,68 +107221,6 @@ fail: } -SWIGINTERN PyObject *_wrap_MultiLayer_layerTopZ(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { - PyObject *resultobj = 0; - MultiLayer *arg1 = (MultiLayer *) 0 ; - size_t arg2 ; - void *argp1 = 0 ; - int res1 = 0 ; - size_t val2 ; - int ecode2 = 0 ; - PyObject * obj0 = 0 ; - PyObject * obj1 = 0 ; - double result; - - if (!PyArg_ParseTuple(args,(char *)"OO:MultiLayer_layerTopZ",&obj0,&obj1)) SWIG_fail; - res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_MultiLayer, 0 | 0 ); - if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "MultiLayer_layerTopZ" "', argument " "1"" of type '" "MultiLayer const *""'"); - } - arg1 = reinterpret_cast< MultiLayer * >(argp1); - ecode2 = SWIG_AsVal_size_t(obj1, &val2); - if (!SWIG_IsOK(ecode2)) { - SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "MultiLayer_layerTopZ" "', argument " "2"" of type '" "size_t""'"); - } - arg2 = static_cast< size_t >(val2); - result = (double)((MultiLayer const *)arg1)->layerTopZ(arg2); - resultobj = SWIG_From_double(static_cast< double >(result)); - return resultobj; -fail: - return NULL; -} - - -SWIGINTERN PyObject *_wrap_MultiLayer_layerBottomZ(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { - PyObject *resultobj = 0; - MultiLayer *arg1 = (MultiLayer *) 0 ; - size_t arg2 ; - void *argp1 = 0 ; - int res1 = 0 ; - size_t val2 ; - int ecode2 = 0 ; - PyObject * obj0 = 0 ; - PyObject * obj1 = 0 ; - double result; - - if (!PyArg_ParseTuple(args,(char *)"OO:MultiLayer_layerBottomZ",&obj0,&obj1)) SWIG_fail; - res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_MultiLayer, 0 | 0 ); - if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "MultiLayer_layerBottomZ" "', argument " "1"" of type '" "MultiLayer const *""'"); - } - arg1 = reinterpret_cast< MultiLayer * >(argp1); - ecode2 = SWIG_AsVal_size_t(obj1, &val2); - if (!SWIG_IsOK(ecode2)) { - SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "MultiLayer_layerBottomZ" "', argument " "2"" of type '" "size_t""'"); - } - arg2 = static_cast< size_t >(val2); - result = (double)((MultiLayer const *)arg1)->layerBottomZ(arg2); - resultobj = SWIG_From_double(static_cast< double >(result)); - return resultobj; -fail: - return NULL; -} - - SWIGINTERN PyObject *_wrap_MultiLayer_layerThickness(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; MultiLayer *arg1 = (MultiLayer *) 0 ; @@ -107409,84 +107345,6 @@ fail: } -SWIGINTERN PyObject *_wrap_MultiLayer_layerMaterial(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { - PyObject *resultobj = 0; - MultiLayer *arg1 = (MultiLayer *) 0 ; - size_t arg2 ; - void *argp1 = 0 ; - int res1 = 0 ; - size_t val2 ; - int ecode2 = 0 ; - PyObject * obj0 = 0 ; - PyObject * obj1 = 0 ; - SwigValueWrapper< Material > result; - - if (!PyArg_ParseTuple(args,(char *)"OO:MultiLayer_layerMaterial",&obj0,&obj1)) SWIG_fail; - res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_MultiLayer, 0 | 0 ); - if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "MultiLayer_layerMaterial" "', argument " "1"" of type '" "MultiLayer const *""'"); - } - arg1 = reinterpret_cast< MultiLayer * >(argp1); - ecode2 = SWIG_AsVal_size_t(obj1, &val2); - if (!SWIG_IsOK(ecode2)) { - SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "MultiLayer_layerMaterial" "', argument " "2"" of type '" "size_t""'"); - } - arg2 = static_cast< size_t >(val2); - result = ((MultiLayer const *)arg1)->layerMaterial(arg2); - resultobj = SWIG_NewPointerObj((new Material(static_cast< const Material& >(result))), SWIGTYPE_p_Material, SWIG_POINTER_OWN | 0 ); - return resultobj; -fail: - return NULL; -} - - -SWIGINTERN PyObject *_wrap_MultiLayer_setLayerMaterial(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { - PyObject *resultobj = 0; - MultiLayer *arg1 = (MultiLayer *) 0 ; - size_t arg2 ; - SwigValueWrapper< Material > arg3 ; - void *argp1 = 0 ; - int res1 = 0 ; - size_t val2 ; - int ecode2 = 0 ; - void *argp3 ; - int res3 = 0 ; - PyObject * obj0 = 0 ; - PyObject * obj1 = 0 ; - PyObject * obj2 = 0 ; - - if (!PyArg_ParseTuple(args,(char *)"OOO:MultiLayer_setLayerMaterial",&obj0,&obj1,&obj2)) SWIG_fail; - res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_MultiLayer, 0 | 0 ); - if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "MultiLayer_setLayerMaterial" "', argument " "1"" of type '" "MultiLayer *""'"); - } - arg1 = reinterpret_cast< MultiLayer * >(argp1); - ecode2 = SWIG_AsVal_size_t(obj1, &val2); - if (!SWIG_IsOK(ecode2)) { - SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "MultiLayer_setLayerMaterial" "', argument " "2"" of type '" "size_t""'"); - } - arg2 = static_cast< size_t >(val2); - { - res3 = SWIG_ConvertPtr(obj2, &argp3, SWIGTYPE_p_Material, 0 | 0); - if (!SWIG_IsOK(res3)) { - SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "MultiLayer_setLayerMaterial" "', argument " "3"" of type '" "Material""'"); - } - if (!argp3) { - SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "MultiLayer_setLayerMaterial" "', argument " "3"" of type '" "Material""'"); - } else { - Material * temp = reinterpret_cast< Material * >(argp3); - arg3 = *temp; - if (SWIG_IsNewObj(res3)) delete temp; - } - } - (arg1)->setLayerMaterial(arg2,arg3); - resultobj = SWIG_Py_Void(); - return resultobj; -fail: - return NULL; -} - - SWIGINTERN PyObject *_wrap_MultiLayer_clone(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; MultiLayer *arg1 = (MultiLayer *) 0 ; @@ -107509,28 +107367,6 @@ fail: } -SWIGINTERN PyObject *_wrap_MultiLayer_cloneInvertB(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { - PyObject *resultobj = 0; - MultiLayer *arg1 = (MultiLayer *) 0 ; - void *argp1 = 0 ; - int res1 = 0 ; - PyObject * obj0 = 0 ; - MultiLayer *result = 0 ; - - if (!PyArg_ParseTuple(args,(char *)"O:MultiLayer_cloneInvertB",&obj0)) SWIG_fail; - res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_MultiLayer, 0 | 0 ); - if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "MultiLayer_cloneInvertB" "', argument " "1"" of type '" "MultiLayer const *""'"); - } - arg1 = reinterpret_cast< MultiLayer * >(argp1); - result = (MultiLayer *)((MultiLayer const *)arg1)->cloneInvertB(); - resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_MultiLayer, 0 | 0 ); - return resultobj; -fail: - return NULL; -} - - SWIGINTERN PyObject *_wrap_MultiLayer_setCrossCorrLength(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; MultiLayer *arg1 = (MultiLayer *) 0 ; @@ -107674,90 +107510,6 @@ fail: } -SWIGINTERN PyObject *_wrap_MultiLayer_requiresMatrixRTCoefficients(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { - PyObject *resultobj = 0; - MultiLayer *arg1 = (MultiLayer *) 0 ; - void *argp1 = 0 ; - int res1 = 0 ; - PyObject * obj0 = 0 ; - bool result; - - if (!PyArg_ParseTuple(args,(char *)"O:MultiLayer_requiresMatrixRTCoefficients",&obj0)) SWIG_fail; - res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_MultiLayer, 0 | 0 ); - if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "MultiLayer_requiresMatrixRTCoefficients" "', argument " "1"" of type '" "MultiLayer const *""'"); - } - arg1 = reinterpret_cast< MultiLayer * >(argp1); - result = (bool)((MultiLayer const *)arg1)->requiresMatrixRTCoefficients(); - resultobj = SWIG_From_bool(static_cast< bool >(result)); - return resultobj; -fail: - return NULL; -} - - -SWIGINTERN PyObject *_wrap_MultiLayer_bottomZToLayerIndex(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { - PyObject *resultobj = 0; - MultiLayer *arg1 = (MultiLayer *) 0 ; - double arg2 ; - void *argp1 = 0 ; - int res1 = 0 ; - double val2 ; - int ecode2 = 0 ; - PyObject * obj0 = 0 ; - PyObject * obj1 = 0 ; - size_t result; - - if (!PyArg_ParseTuple(args,(char *)"OO:MultiLayer_bottomZToLayerIndex",&obj0,&obj1)) SWIG_fail; - res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_MultiLayer, 0 | 0 ); - if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "MultiLayer_bottomZToLayerIndex" "', argument " "1"" of type '" "MultiLayer const *""'"); - } - arg1 = reinterpret_cast< MultiLayer * >(argp1); - ecode2 = SWIG_AsVal_double(obj1, &val2); - if (!SWIG_IsOK(ecode2)) { - SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "MultiLayer_bottomZToLayerIndex" "', argument " "2"" of type '" "double""'"); - } - arg2 = static_cast< double >(val2); - result = ((MultiLayer const *)arg1)->bottomZToLayerIndex(arg2); - resultobj = SWIG_From_size_t(static_cast< size_t >(result)); - return resultobj; -fail: - return NULL; -} - - -SWIGINTERN PyObject *_wrap_MultiLayer_topZToLayerIndex(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { - PyObject *resultobj = 0; - MultiLayer *arg1 = (MultiLayer *) 0 ; - double arg2 ; - void *argp1 = 0 ; - int res1 = 0 ; - double val2 ; - int ecode2 = 0 ; - PyObject * obj0 = 0 ; - PyObject * obj1 = 0 ; - size_t result; - - if (!PyArg_ParseTuple(args,(char *)"OO:MultiLayer_topZToLayerIndex",&obj0,&obj1)) SWIG_fail; - res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_MultiLayer, 0 | 0 ); - if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "MultiLayer_topZToLayerIndex" "', argument " "1"" of type '" "MultiLayer const *""'"); - } - arg1 = reinterpret_cast< MultiLayer * >(argp1); - ecode2 = SWIG_AsVal_double(obj1, &val2); - if (!SWIG_IsOK(ecode2)) { - SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "MultiLayer_topZToLayerIndex" "', argument " "2"" of type '" "double""'"); - } - arg2 = static_cast< double >(val2); - result = ((MultiLayer const *)arg1)->topZToLayerIndex(arg2); - resultobj = SWIG_From_size_t(static_cast< size_t >(result)); - return resultobj; -fail: - return NULL; -} - - SWIGINTERN PyObject *_wrap_MultiLayer_containsMagneticMaterial(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; MultiLayer *arg1 = (MultiLayer *) 0 ; @@ -107896,103 +107648,6 @@ SWIGINTERN PyObject *MultiLayer_swigregister(PyObject *SWIGUNUSEDPARM(self), PyO return SWIG_Py_Void(); } -SWIGINTERN PyObject *_wrap_new_MultiLayerSlicer(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { - PyObject *resultobj = 0; - MultiLayer *arg1 = 0 ; - void *argp1 = 0 ; - int res1 = 0 ; - PyObject * obj0 = 0 ; - MultiLayerSlicer *result = 0 ; - - if (!PyArg_ParseTuple(args,(char *)"O:new_MultiLayerSlicer",&obj0)) SWIG_fail; - res1 = SWIG_ConvertPtr(obj0, &argp1, SWIGTYPE_p_MultiLayer, 0 | 0); - if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_MultiLayerSlicer" "', argument " "1"" of type '" "MultiLayer const &""'"); - } - if (!argp1) { - SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_MultiLayerSlicer" "', argument " "1"" of type '" "MultiLayer const &""'"); - } - arg1 = reinterpret_cast< MultiLayer * >(argp1); - result = (MultiLayerSlicer *)new MultiLayerSlicer((MultiLayer const &)*arg1); - resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_MultiLayerSlicer, SWIG_POINTER_NEW | 0 ); - return resultobj; -fail: - return NULL; -} - - -SWIGINTERN PyObject *_wrap_delete_MultiLayerSlicer(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { - PyObject *resultobj = 0; - MultiLayerSlicer *arg1 = (MultiLayerSlicer *) 0 ; - void *argp1 = 0 ; - int res1 = 0 ; - PyObject * obj0 = 0 ; - - if (!PyArg_ParseTuple(args,(char *)"O:delete_MultiLayerSlicer",&obj0)) SWIG_fail; - res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_MultiLayerSlicer, SWIG_POINTER_DISOWN | 0 ); - if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_MultiLayerSlicer" "', argument " "1"" of type '" "MultiLayerSlicer *""'"); - } - arg1 = reinterpret_cast< MultiLayerSlicer * >(argp1); - delete arg1; - resultobj = SWIG_Py_Void(); - return resultobj; -fail: - return NULL; -} - - -SWIGINTERN PyObject *_wrap_MultiLayerSlicer_slicedThicknesses(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { - PyObject *resultobj = 0; - MultiLayerSlicer *arg1 = (MultiLayerSlicer *) 0 ; - void *argp1 = 0 ; - int res1 = 0 ; - PyObject * obj0 = 0 ; - std::vector< double,std::allocator< double > > result; - - if (!PyArg_ParseTuple(args,(char *)"O:MultiLayerSlicer_slicedThicknesses",&obj0)) SWIG_fail; - res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_MultiLayerSlicer, 0 | 0 ); - if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "MultiLayerSlicer_slicedThicknesses" "', argument " "1"" of type '" "MultiLayerSlicer const *""'"); - } - arg1 = reinterpret_cast< MultiLayerSlicer * >(argp1); - result = ((MultiLayerSlicer const *)arg1)->slicedThicknesses(); - resultobj = swig::from(static_cast< std::vector< double,std::allocator< double > > >(result)); - return resultobj; -fail: - return NULL; -} - - -SWIGINTERN PyObject *_wrap_MultiLayerSlicer_slicedRepresentation(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { - PyObject *resultobj = 0; - MultiLayerSlicer *arg1 = (MultiLayerSlicer *) 0 ; - void *argp1 = 0 ; - int res1 = 0 ; - PyObject * obj0 = 0 ; - std::string result; - - if (!PyArg_ParseTuple(args,(char *)"O:MultiLayerSlicer_slicedRepresentation",&obj0)) SWIG_fail; - res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_MultiLayerSlicer, 0 | 0 ); - if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "MultiLayerSlicer_slicedRepresentation" "', argument " "1"" of type '" "MultiLayerSlicer const *""'"); - } - arg1 = reinterpret_cast< MultiLayerSlicer * >(argp1); - result = ((MultiLayerSlicer const *)arg1)->slicedRepresentation(); - resultobj = SWIG_From_std_string(static_cast< std::string >(result)); - return resultobj; -fail: - return NULL; -} - - -SWIGINTERN PyObject *MultiLayerSlicer_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { - PyObject *obj; - if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL; - SWIG_TypeNewClientData(SWIGTYPE_p_MultiLayerSlicer, SWIG_NewClientData(obj)); - return SWIG_Py_Void(); -} - SWIGINTERN PyObject *_wrap_new_OffSpecSimulation__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; OffSpecSimulation *result = 0 ; @@ -137927,22 +137582,6 @@ static PyMethodDef SwigMethods[] = { "Returns layer with given index. \n" "\n" ""}, - { (char *)"MultiLayer_layerTopZ", _wrap_MultiLayer_layerTopZ, METH_VARARGS, (char *)"\n" - "MultiLayer_layerTopZ(MultiLayer self, size_t i_layer) -> double\n" - "\n" - "double MultiLayer::layerTopZ(size_t i_layer) const\n" - "\n" - "Returns z-coordinate of the layer's bottom. \n" - "\n" - ""}, - { (char *)"MultiLayer_layerBottomZ", _wrap_MultiLayer_layerBottomZ, METH_VARARGS, (char *)"\n" - "MultiLayer_layerBottomZ(MultiLayer self, size_t i_layer) -> double\n" - "\n" - "double MultiLayer::layerBottomZ(size_t i_layer) const\n" - "\n" - "Returns z-coordinate of the layer's bottom. \n" - "\n" - ""}, { (char *)"MultiLayer_layerThickness", _wrap_MultiLayer_layerThickness, METH_VARARGS, (char *)"\n" "MultiLayer_layerThickness(MultiLayer self, size_t i_layer) -> double\n" "\n" @@ -137972,22 +137611,6 @@ static PyMethodDef SwigMethods[] = { "Returns pointer to the bottom interface of the layer. \n" "\n" ""}, - { (char *)"MultiLayer_layerMaterial", _wrap_MultiLayer_layerMaterial, METH_VARARGS, (char *)"\n" - "MultiLayer_layerMaterial(MultiLayer self, size_t i_layer) -> Material\n" - "\n" - "Material MultiLayer::layerMaterial(size_t i_layer) const\n" - "\n" - "Returns layer material. \n" - "\n" - ""}, - { (char *)"MultiLayer_setLayerMaterial", _wrap_MultiLayer_setLayerMaterial, METH_VARARGS, (char *)"\n" - "MultiLayer_setLayerMaterial(MultiLayer self, size_t i_layer, Material material)\n" - "\n" - "void MultiLayer::setLayerMaterial(size_t i_layer, Material material)\n" - "\n" - "Changes a layer's material. \n" - "\n" - ""}, { (char *)"MultiLayer_clone", _wrap_MultiLayer_clone, METH_VARARGS, (char *)"\n" "MultiLayer_clone(MultiLayer self) -> MultiLayer\n" "\n" @@ -137996,14 +137619,6 @@ static PyMethodDef SwigMethods[] = { "Returns a clone of multilayer with clones of all layers and recreated interfaces between layers \n" "\n" ""}, - { (char *)"MultiLayer_cloneInvertB", _wrap_MultiLayer_cloneInvertB, METH_VARARGS, (char *)"\n" - "MultiLayer_cloneInvertB(MultiLayer self) -> MultiLayer\n" - "\n" - "MultiLayer * MultiLayer::cloneInvertB() const\n" - "\n" - "Returns a clone with inverted magnetic fields. \n" - "\n" - ""}, { (char *)"MultiLayer_setCrossCorrLength", _wrap_MultiLayer_setCrossCorrLength, METH_VARARGS, (char *)"\n" "MultiLayer_setCrossCorrLength(MultiLayer self, double crossCorrLength)\n" "\n" @@ -138044,30 +137659,6 @@ static PyMethodDef SwigMethods[] = { "returns layer index \n" "\n" ""}, - { (char *)"MultiLayer_requiresMatrixRTCoefficients", _wrap_MultiLayer_requiresMatrixRTCoefficients, METH_VARARGS, (char *)"\n" - "MultiLayer_requiresMatrixRTCoefficients(MultiLayer self) -> bool\n" - "\n" - "bool MultiLayer::requiresMatrixRTCoefficients() const\n" - "\n" - "returns true if contains magnetic materials and matrix calculations are required \n" - "\n" - ""}, - { (char *)"MultiLayer_bottomZToLayerIndex", _wrap_MultiLayer_bottomZToLayerIndex, METH_VARARGS, (char *)"\n" - "MultiLayer_bottomZToLayerIndex(MultiLayer self, double z_value) -> size_t\n" - "\n" - "size_t MultiLayer::bottomZToLayerIndex(double z_value) const\n" - "\n" - "returns layer index corresponding to given global z coordinate The top interface position of a layer is considered to belong to the layer above \n" - "\n" - ""}, - { (char *)"MultiLayer_topZToLayerIndex", _wrap_MultiLayer_topZToLayerIndex, METH_VARARGS, (char *)"\n" - "MultiLayer_topZToLayerIndex(MultiLayer self, double z_value) -> size_t\n" - "\n" - "size_t MultiLayer::topZToLayerIndex(double z_value) const\n" - "\n" - "returns layer index corresponding to given global z coordinate The top interface position of a layer is considered to belong to the layer beneath \n" - "\n" - ""}, { (char *)"MultiLayer_containsMagneticMaterial", _wrap_MultiLayer_containsMagneticMaterial, METH_VARARGS, (char *)"\n" "MultiLayer_containsMagneticMaterial(MultiLayer self) -> bool\n" "\n" @@ -138111,35 +137702,6 @@ static PyMethodDef SwigMethods[] = { "\n" ""}, { (char *)"MultiLayer_swigregister", MultiLayer_swigregister, METH_VARARGS, NULL}, - { (char *)"new_MultiLayerSlicer", _wrap_new_MultiLayerSlicer, METH_VARARGS, (char *)"\n" - "new_MultiLayerSlicer(MultiLayer multilayer) -> MultiLayerSlicer\n" - "\n" - "MultiLayerSlicer::MultiLayerSlicer(const MultiLayer &multilayer)\n" - "\n" - ""}, - { (char *)"delete_MultiLayerSlicer", _wrap_delete_MultiLayerSlicer, METH_VARARGS, (char *)"\n" - "delete_MultiLayerSlicer(MultiLayerSlicer self)\n" - "\n" - "MultiLayerSlicer::~MultiLayerSlicer()\n" - "\n" - ""}, - { (char *)"MultiLayerSlicer_slicedThicknesses", _wrap_MultiLayerSlicer_slicedThicknesses, METH_VARARGS, (char *)"\n" - "MultiLayerSlicer_slicedThicknesses(MultiLayerSlicer self) -> vdouble1d_t\n" - "\n" - "std::vector< double > MultiLayerSlicer::slicedThicknesses() const\n" - "\n" - "Returns thicknesses of slices after slicing. \n" - "\n" - ""}, - { (char *)"MultiLayerSlicer_slicedRepresentation", _wrap_MultiLayerSlicer_slicedRepresentation, METH_VARARGS, (char *)"\n" - "MultiLayerSlicer_slicedRepresentation(MultiLayerSlicer self) -> std::string\n" - "\n" - "std::string MultiLayerSlicer::slicedRepresentation() const\n" - "\n" - "Returns a string representation of the sliced MultiLayer. \n" - "\n" - ""}, - { (char *)"MultiLayerSlicer_swigregister", MultiLayerSlicer_swigregister, METH_VARARGS, NULL}, { (char *)"new_OffSpecSimulation", _wrap_new_OffSpecSimulation, METH_VARARGS, (char *)"\n" "OffSpecSimulation()\n" "OffSpecSimulation(MultiLayer p_sample)\n" @@ -143264,7 +142826,6 @@ static swig_type_info _swigt__p_MesoCrystal = {"_p_MesoCrystal", "MesoCrystal *" static swig_type_info _swigt__p_MillerIndex = {"_p_MillerIndex", "MillerIndex *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_MillerIndexOrientation = {"_p_MillerIndexOrientation", "MillerIndexOrientation *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_MultiLayer = {"_p_MultiLayer", "MultiLayer *", 0, 0, (void*)0, 0}; -static swig_type_info _swigt__p_MultiLayerSlicer = {"_p_MultiLayerSlicer", "MultiLayerSlicer *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_OffSpecSimulation = {"_p_OffSpecSimulation", "OffSpecSimulation *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_OutputDataIteratorT_double_OutputDataT_double_t_t = {"_p_OutputDataIteratorT_double_OutputDataT_double_t_t", "OutputData< double >::iterator *|OutputDataIterator< double,OutputData< double > > *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_OutputDataIteratorT_double_const_OutputDataT_double_t_const_t = {"_p_OutputDataIteratorT_double_const_OutputDataT_double_t_const_t", "OutputDataIterator< double const,OutputData< double > const > *|OutputData< double >::const_iterator *", 0, 0, (void*)0, 0}; @@ -143608,7 +143169,6 @@ static swig_type_info *swig_type_initial[] = { &_swigt__p_MillerIndex, &_swigt__p_MillerIndexOrientation, &_swigt__p_MultiLayer, - &_swigt__p_MultiLayerSlicer, &_swigt__p_OffSpecSimulation, &_swigt__p_OutputDataIteratorT_double_OutputDataT_double_t_t, &_swigt__p_OutputDataIteratorT_double_const_OutputDataT_double_t_const_t, @@ -143952,7 +143512,6 @@ static swig_cast_info _swigc__p_MesoCrystal[] = { {&_swigt__p_MesoCrystal, 0, 0 static swig_cast_info _swigc__p_MillerIndex[] = { {&_swigt__p_MillerIndex, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_MillerIndexOrientation[] = { {&_swigt__p_MillerIndexOrientation, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_MultiLayer[] = { {&_swigt__p_MultiLayer, 0, 0, 0},{0, 0, 0, 0}}; -static swig_cast_info _swigc__p_MultiLayerSlicer[] = { {&_swigt__p_MultiLayerSlicer, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_OffSpecSimulation[] = { {&_swigt__p_OffSpecSimulation, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_OutputDataIteratorT_double_OutputDataT_double_t_t[] = { {&_swigt__p_OutputDataIteratorT_double_OutputDataT_double_t_t, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_OutputDataIteratorT_double_const_OutputDataT_double_t_const_t[] = { {&_swigt__p_OutputDataIteratorT_double_const_OutputDataT_double_t_const_t, 0, 0, 0},{0, 0, 0, 0}}; @@ -144296,7 +143855,6 @@ static swig_cast_info *swig_cast_initial[] = { _swigc__p_MillerIndex, _swigc__p_MillerIndexOrientation, _swigc__p_MultiLayer, - _swigc__p_MultiLayerSlicer, _swigc__p_OffSpecSimulation, _swigc__p_OutputDataIteratorT_double_OutputDataT_double_t_t, _swigc__p_OutputDataIteratorT_double_const_OutputDataT_double_t_const_t,