From e45418045100df286894e6f4e7ab63a1500f81b9 Mon Sep 17 00:00:00 2001
From: Mikhail Svechnikov <m.svechnikov@fz-juelich.de>
Date: Fri, 9 Aug 2024 16:02:59 +0200
Subject: [PATCH] fix examples

---
 GUI/Model/FromCore/ItemizeSample.cpp          |   2 +-
 GUI/Model/ToCore/SampleToCore.cpp             |   2 +-
 GUI/View/Realspace/RealspaceBuilder.cpp       |   2 +-
 Sample/Interface/AutocorrelationModels.cpp    |  14 +-
 Sample/Interface/AutocorrelationModels.h      |   8 +-
 Sample/Interface/LayerRoughness.cpp           |   2 +-
 Sample/Multilayer/MultiLayer.cpp              |   2 +-
 Sample/StandardSample/FeNiBilayerBuilder.cpp  |   2 +-
 .../StandardSample/MagneticLayersBuilder.cpp  |   2 +-
 .../MultiLayerWithRoughnessBuilder.cpp        |   2 +-
 Sample/StandardSample/ResonatorBuilder.cpp    |   2 +-
 .../ThickAbsorptiveSampleBuilder.cpp          |   2 +-
 Tests/Unit/Sample/LayerRoughnessTest.cpp      |   6 +-
 Tests/Unit/Sample/MultiLayerTest.cpp          |  12 +-
 auto/Examples/fit/specular/Honeycomb_fit.py   |  10 +-
 .../fit/specular/PolarizedSpinAsymmetry.py    |   4 +-
 auto/Examples/fit/specular/Pt_layer_fit.py    |   4 +-
 auto/Examples/fit/specular/TREFF_Ni_film.py   |  10 +-
 .../Examples/scatter2d/CorrelatedRoughness.py |   2 +-
 auto/Examples/scatter2d/FindPeaks.py          |   2 +-
 auto/Examples/scatter2d/RectangularGrating.py |   2 +-
 auto/Examples/scatter2d/RoughAndSpecular.py   |   4 +-
 .../specular/MagneticLayerImperfect.py        |   2 +-
 .../specular/PolarizedSpinAsymmetry.py        |   4 +-
 auto/Examples/specular/RoughnessModel.py      |   2 +-
 .../SpecularSimulationWithRoughness.py        |   2 +-
 auto/Examples/varia/MaterialProfile.py        |   2 +-
 auto/Examples/varia/RoughSurface.py           |   2 +-
 .../fit/specular/Honeycomb_fit.py             |  10 +-
 .../fit/specular/PolarizedSpinAsymmetry.py    |   4 +-
 .../MiniExamples/fit/specular/Pt_layer_fit.py |   4 +-
 .../fit/specular/TREFF_Ni_film.py             |  10 +-
 .../scatter2d/CorrelatedRoughness.py          |   2 +-
 auto/MiniExamples/scatter2d/FindPeaks.py      |   2 +-
 .../scatter2d/RectangularGrating.py           |   2 +-
 .../scatter2d/RoughAndSpecular.py             |   4 +-
 .../specular/MagneticLayerImperfect.py        |   2 +-
 .../specular/PolarizedSpinAsymmetry.py        |   4 +-
 auto/MiniExamples/specular/RoughnessModel.py  |   2 +-
 .../SpecularSimulationWithRoughness.py        |   2 +-
 auto/MiniExamples/varia/MaterialProfile.py    |   2 +-
 auto/MiniExamples/varia/RoughSurface.py       |   2 +-
 auto/Wrap/libBornAgainSample.py               |  62 +--
 auto/Wrap/libBornAgainSample_wrap.cpp         | 416 +++++++++---------
 rawEx/fit/specular/Honeycomb_fit.py           |  10 +-
 rawEx/fit/specular/PolarizedSpinAsymmetry.py  |   4 +-
 rawEx/fit/specular/Pt_layer_fit.py            |   4 +-
 rawEx/fit/specular/TREFF_Ni_film.py           |  10 +-
 rawEx/scatter2d/CorrelatedRoughness.py        |   2 +-
 rawEx/scatter2d/FindPeaks.py                  |   2 +-
 rawEx/scatter2d/RectangularGrating.py         |   2 +-
 rawEx/scatter2d/RoughAndSpecular.py           |   4 +-
 rawEx/specular/MagneticLayerImperfect.py      |   2 +-
 rawEx/specular/PolarizedSpinAsymmetry.py      |   4 +-
 rawEx/specular/RoughnessModel.py              |   2 +-
 .../SpecularSimulationWithRoughness.py        |   2 +-
 rawEx/varia/MaterialProfile.py                |   2 +-
 rawEx/varia/RoughSurface.py                   |   2 +-
 58 files changed, 347 insertions(+), 347 deletions(-)

diff --git a/GUI/Model/FromCore/ItemizeSample.cpp b/GUI/Model/FromCore/ItemizeSample.cpp
index 784d970315c..52fc3c317f3 100644
--- a/GUI/Model/FromCore/ItemizeSample.cpp
+++ b/GUI/Model/FromCore/ItemizeSample.cpp
@@ -309,7 +309,7 @@ void set_Roughness(LayerItem* parent, const LayerInterface* top_interface)
     const AutocorrelationModel* autocorrelation = roughness->autocorrelationModel();
     const InterlayerModel* interlayer = roughness->interlayerModel();
 
-    if (const auto* autocorrItem = dynamic_cast<const BasicAutoCorr*>(autocorrelation)) {
+    if (const auto* autocorrItem = dynamic_cast<const K_CorrelationModel*>(autocorrelation)) {
         auto* br = new BasicRoughnessItem(autocorrItem->sigma(), autocorrItem->hurst(),
                                           autocorrItem->lateralCorrLength());
         set_InterlayerModel(br, interlayer);
diff --git a/GUI/Model/ToCore/SampleToCore.cpp b/GUI/Model/ToCore/SampleToCore.cpp
index b8c0e789391..2e22bd2d6fd 100644
--- a/GUI/Model/ToCore/SampleToCore.cpp
+++ b/GUI/Model/ToCore/SampleToCore.cpp
@@ -126,7 +126,7 @@ std::unique_ptr<MultiLayer> GUI::ToCore::itemToSample(const SampleItem& sampleIt
         std::unique_ptr<AutocorrelationModel> autocorrelation;
 
         if (const auto* br = dynamic_cast<const BasicRoughnessItem*>(roughItem))
-            autocorrelation = std::make_unique<BasicAutoCorr>(
+            autocorrelation = std::make_unique<K_CorrelationModel>(
                 br->sigma().dVal(), br->hurst().dVal(), br->lateralCorrelationLength().dVal());
         else
             ASSERT_NEVER;
diff --git a/GUI/View/Realspace/RealspaceBuilder.cpp b/GUI/View/Realspace/RealspaceBuilder.cpp
index edc770e64dd..bd7b48ac7e5 100644
--- a/GUI/View/Realspace/RealspaceBuilder.cpp
+++ b/GUI/View/Realspace/RealspaceBuilder.cpp
@@ -102,7 +102,7 @@ std::unique_ptr<const double2d_t> layerRoughnessMap(const LayerItem& layerItem,
         interlayer = roughItem->certainInterlayerModel()->createModel();
 
     if (const auto* br = dynamic_cast<const BasicRoughnessItem*>(roughItem))
-        autocorrelation = std::make_unique<BasicAutoCorr>(br->sigma().dVal(), br->hurst().dVal(),
+        autocorrelation = std::make_unique<K_CorrelationModel>(br->sigma().dVal(), br->hurst().dVal(),
                                                           br->lateralCorrelationLength().dVal());
 
     auto roughness = LayerRoughness(autocorrelation.get(), interlayer.get());
diff --git a/Sample/Interface/AutocorrelationModels.cpp b/Sample/Interface/AutocorrelationModels.cpp
index d8c5adfb66e..6c2099bf7ca 100644
--- a/Sample/Interface/AutocorrelationModels.cpp
+++ b/Sample/Interface/AutocorrelationModels.cpp
@@ -24,7 +24,7 @@ using std::numbers::pi;
 //! @param hurstParameter: hurst parameter which describes how jagged the interface,
 //! dimensionless [0.0, 1.0], where 0.0 gives more spikes, 1.0 more smoothness
 //! @param lateralCorrLength: lateral correlation length of the roughness in nanometers
-BasicAutoCorr::BasicAutoCorr(double sigma, double hurst, double lateralCorrLength)
+K_CorrelationModel::K_CorrelationModel(double sigma, double hurst, double lateralCorrLength)
     : m_sigma(sigma)
     , m_hurst_parameter(hurst)
     , m_lateral_corr_length(lateralCorrLength)
@@ -32,12 +32,12 @@ BasicAutoCorr::BasicAutoCorr(double sigma, double hurst, double lateralCorrLengt
     validateOrThrow();
 }
 
-BasicAutoCorr* BasicAutoCorr::clone() const
+K_CorrelationModel* K_CorrelationModel::clone() const
 {
-    return new BasicAutoCorr(m_sigma, m_hurst_parameter, m_lateral_corr_length);
+    return new K_CorrelationModel(m_sigma, m_hurst_parameter, m_lateral_corr_length);
 }
 
-std::string BasicAutoCorr::validate() const
+std::string K_CorrelationModel::validate() const
 {
     std::vector<std::string> errs;
     requestGe0(errs, m_sigma, "sigma");
@@ -51,7 +51,7 @@ std::string BasicAutoCorr::validate() const
     return "";
 }
 
-std::string BasicAutoCorr::pythonArguments() const
+std::string K_CorrelationModel::pythonArguments() const
 {
     return Py::Fmt::printArguments({{m_sigma, parDefs()[0].unit},
                                     {m_hurst_parameter, parDefs()[1].unit},
@@ -62,7 +62,7 @@ std::string BasicAutoCorr::pythonArguments() const
 //! Fourier transform of the correlation function of the roughness profile.
 //!
 //! Based on Palasantzas, Phys Rev B, 48, 14472 (1993)
-double BasicAutoCorr::spectralFunction(const R3& k) const
+double K_CorrelationModel::spectralFunction(const R3& k) const
 {
     ASSERT(m_validated);
     double H = m_hurst_parameter;
@@ -72,7 +72,7 @@ double BasicAutoCorr::spectralFunction(const R3& k) const
 }
 
 //! Correlation function of the roughness profile
-double BasicAutoCorr::corrFunction(const R3& k) const
+double K_CorrelationModel::corrFunction(const R3& k) const
 {
     ASSERT(m_validated);
     double H = m_hurst_parameter;
diff --git a/Sample/Interface/AutocorrelationModels.h b/Sample/Interface/AutocorrelationModels.h
index 83634b3b770..5d23589d681 100644
--- a/Sample/Interface/AutocorrelationModels.h
+++ b/Sample/Interface/AutocorrelationModels.h
@@ -35,11 +35,11 @@ public:
 
 //! Based on the article "X-ray reflection and transmission by rough surfaces"
 //! by D. K. G. de Boer, Physical Review B 51, 5297 (1995)
-class BasicAutoCorr : public AutocorrelationModel {
+class K_CorrelationModel : public AutocorrelationModel {
 public:
-    BasicAutoCorr(double sigma = 0, double hurst = 0, double lateralCorrLength = 0);
-    BasicAutoCorr* clone() const override;
-    std::string className() const override { return "BasicAutoCorr"; }
+    K_CorrelationModel(double sigma = 0, double hurst = 0, double lateralCorrLength = 0);
+    K_CorrelationModel* clone() const override;
+    std::string className() const override { return "K_CorrelationModel"; }
     std::vector<ParaMeta> parDefs() const final
     {
         return {{"Sigma", "nm"}, {"Hurst", ""}, {"CorrLength", "nm"}};
diff --git a/Sample/Interface/LayerRoughness.cpp b/Sample/Interface/LayerRoughness.cpp
index c427d37f065..51c3f39c639 100644
--- a/Sample/Interface/LayerRoughness.cpp
+++ b/Sample/Interface/LayerRoughness.cpp
@@ -39,7 +39,7 @@ std::vector<const INode*> LayerRoughness::nodeChildren() const
 
 bool LayerRoughness::showInScriptOrGui() const
 {
-    if (auto autocorrelation = dynamic_cast<const BasicAutoCorr*>(autocorrelationModel()))
+    if (auto autocorrelation = dynamic_cast<const K_CorrelationModel*>(autocorrelationModel()))
         if (autocorrelation->sigma() == 0)
             return false;
 
diff --git a/Sample/Multilayer/MultiLayer.cpp b/Sample/Multilayer/MultiLayer.cpp
index 8378fe89c1c..d60d7350e9b 100644
--- a/Sample/Multilayer/MultiLayer.cpp
+++ b/Sample/Multilayer/MultiLayer.cpp
@@ -74,7 +74,7 @@ void MultiLayer::addLayerExec(const Layer& layer, const LayerRoughness* roughnes
         if (roughness)
             new_roughness = roughness->clone();
         else {
-            BasicAutoCorr autocorrelation(0, 0, 0);
+            K_CorrelationModel autocorrelation(0, 0, 0);
             ErfInterlayer interlayer;
             new_roughness = new LayerRoughness(&autocorrelation, &interlayer);
         }
diff --git a/Sample/StandardSample/FeNiBilayerBuilder.cpp b/Sample/StandardSample/FeNiBilayerBuilder.cpp
index b7f84828b92..fcfbaf66481 100644
--- a/Sample/StandardSample/FeNiBilayerBuilder.cpp
+++ b/Sample/StandardSample/FeNiBilayerBuilder.cpp
@@ -113,7 +113,7 @@ std::unique_ptr<MultiLayer> FeNiBilayer::constructSample()
     Layer l_Fe{m_Fe, thicknessFe};
     Layer l_Ni{m_Ni, thicknessNi};
 
-    BasicAutoCorr autocorrelation(sigmaRoughness);
+    K_CorrelationModel autocorrelation(sigmaRoughness);
     LayerRoughness roughness{&autocorrelation, interlayerModel.get()};
     result->addLayer(Layer{m_ambient});
 
diff --git a/Sample/StandardSample/MagneticLayersBuilder.cpp b/Sample/StandardSample/MagneticLayersBuilder.cpp
index 77713010dbb..f74b33047f6 100644
--- a/Sample/StandardSample/MagneticLayersBuilder.cpp
+++ b/Sample/StandardSample/MagneticLayersBuilder.cpp
@@ -136,7 +136,7 @@ ExemplarySamples::createSimpleMagneticRotationWithRoughness(const std::string& r
     Material substrate_material = RefractiveMaterial("Substrate", 7e-6, 2e-8, substr_field);
     Material layer_material = RefractiveMaterial("MagLayer", 6e-4, 2e-8, layer_field);
 
-    BasicAutoCorr autocorrelation(sigmaRoughness);
+    K_CorrelationModel autocorrelation(sigmaRoughness);
     auto roughness = LayerRoughness(&autocorrelation, interlayerModel.get());
 
     Layer vacuum_layer(vacuum_material);
diff --git a/Sample/StandardSample/MultiLayerWithRoughnessBuilder.cpp b/Sample/StandardSample/MultiLayerWithRoughnessBuilder.cpp
index fca63d79620..63bfe1e8bc8 100644
--- a/Sample/StandardSample/MultiLayerWithRoughnessBuilder.cpp
+++ b/Sample/StandardSample/MultiLayerWithRoughnessBuilder.cpp
@@ -38,7 +38,7 @@ MultiLayer* createMultiLayerWithInterlayerModel(const InterlayerModel* interlaye
     Layer partB_layer(part_b_material, thicknessB);
     Layer substrate_layer(substrate_material, 0);
 
-    BasicAutoCorr autocorrelation(sigma, hurst, lateralCorrLength);
+    K_CorrelationModel autocorrelation(sigma, hurst, lateralCorrLength);
     LayerRoughness roughness(&autocorrelation, interlayerModel);
 
     auto* sample = new MultiLayer;
diff --git a/Sample/StandardSample/ResonatorBuilder.cpp b/Sample/StandardSample/ResonatorBuilder.cpp
index e865fbfce18..6fe606159de 100644
--- a/Sample/StandardSample/ResonatorBuilder.cpp
+++ b/Sample/StandardSample/ResonatorBuilder.cpp
@@ -36,7 +36,7 @@ MultiLayer* ExemplarySamples::createResonator(double ti_thickness)
     Layer l_Pt(m_Pt, 32.0);
     Layer l_D2O(m_D2O);
 
-    BasicAutoCorr autocorrelation(2.0, 0.8, 1e4);
+    K_CorrelationModel autocorrelation(2.0, 0.8, 1e4);
     TanhInterlayer interlayer;
     LayerRoughness roughness(&autocorrelation, &interlayer);
 
diff --git a/Sample/StandardSample/ThickAbsorptiveSampleBuilder.cpp b/Sample/StandardSample/ThickAbsorptiveSampleBuilder.cpp
index 8fac70db2cf..576115dc5ed 100644
--- a/Sample/StandardSample/ThickAbsorptiveSampleBuilder.cpp
+++ b/Sample/StandardSample/ThickAbsorptiveSampleBuilder.cpp
@@ -29,7 +29,7 @@ MultiLayer* ExemplarySamples::createThickAbsorptiveSample()
     Layer vacuum_layer_2(vacuum_material, 10.0);
     Layer substrate_layer(si_material);
 
-    BasicAutoCorr autocorrelation(5.0, 0.5, 10.0);
+    K_CorrelationModel autocorrelation(5.0, 0.5, 10.0);
     ErfInterlayer interlayer;
     LayerRoughness rough(&autocorrelation, &interlayer);
 
diff --git a/Tests/Unit/Sample/LayerRoughnessTest.cpp b/Tests/Unit/Sample/LayerRoughnessTest.cpp
index a9a39018e31..796ce07ed70 100644
--- a/Tests/Unit/Sample/LayerRoughnessTest.cpp
+++ b/Tests/Unit/Sample/LayerRoughnessTest.cpp
@@ -5,13 +5,13 @@
 // test clone LayerRoughness
 TEST(LayerRoughness, LayerRoughnessClone)
 {
-    BasicAutoCorr originalAutocorrelation(3.1, 0.2, 3.3);
+    K_CorrelationModel originalAutocorrelation(3.1, 0.2, 3.3);
     ErfInterlayer interlayer;
     LayerRoughness original(&originalAutocorrelation, &interlayer);
 
     LayerRoughness* clone = original.clone();
-    const BasicAutoCorr* cloneAC =
-        dynamic_cast<const BasicAutoCorr*>(clone->autocorrelationModel());
+    const K_CorrelationModel* cloneAC =
+        dynamic_cast<const K_CorrelationModel*>(clone->autocorrelationModel());
 
     EXPECT_TRUE(cloneAC);
     EXPECT_EQ(cloneAC->sigma(), originalAutocorrelation.sigma());
diff --git a/Tests/Unit/Sample/MultiLayerTest.cpp b/Tests/Unit/Sample/MultiLayerTest.cpp
index 83654fcb59c..0a186b3890b 100644
--- a/Tests/Unit/Sample/MultiLayerTest.cpp
+++ b/Tests/Unit/Sample/MultiLayerTest.cpp
@@ -138,7 +138,7 @@ TEST_F(MultiLayerTest, Clone)
 
 TEST_F(MultiLayerTest, WithRoughness)
 {
-    BasicAutoCorr autocorrelation(1.1, .3, 0.1);
+    K_CorrelationModel autocorrelation(1.1, .3, 0.1);
     ErfInterlayer interlayer;
     LayerRoughness lr(&autocorrelation, &interlayer);
     mLayer.addLayer(topLayer);
@@ -152,7 +152,7 @@ TEST_F(MultiLayerTest, WithRoughness)
     const LayerRoughness* roughness1 = interface1->roughness();
 
     EXPECT_TRUE(roughness0);
-    auto* roughness0_AC = dynamic_cast<const BasicAutoCorr*>(roughness0->autocorrelationModel());
+    auto* roughness0_AC = dynamic_cast<const K_CorrelationModel*>(roughness0->autocorrelationModel());
     EXPECT_TRUE(roughness0_AC);
 
     EXPECT_EQ(1.1, roughness0->sigma());
@@ -167,9 +167,9 @@ TEST_F(MultiLayerTest, CloneWithRoughness)
 {
     ErfInterlayer interlayer;
 
-    BasicAutoCorr autocorrelation0(2.1, .3, 12.1);
+    K_CorrelationModel autocorrelation0(2.1, .3, 12.1);
     LayerRoughness lr0(&autocorrelation0, &interlayer);
-    BasicAutoCorr autocorrelation1(1.1, .3, 0.1);
+    K_CorrelationModel autocorrelation1(1.1, .3, 0.1);
     LayerRoughness lr1(&autocorrelation1, &interlayer);
 
     auto magnetization = R3{0., 1e8, 0.};
@@ -190,14 +190,14 @@ TEST_F(MultiLayerTest, CloneWithRoughness)
     EXPECT_TRUE(roughness0);
     EXPECT_TRUE(roughness1);
 
-    auto* roughness0_AC = dynamic_cast<const BasicAutoCorr*>(roughness0->autocorrelationModel());
+    auto* roughness0_AC = dynamic_cast<const K_CorrelationModel*>(roughness0->autocorrelationModel());
     EXPECT_TRUE(roughness0_AC);
 
     EXPECT_EQ(2.1, roughness0->sigma());
     EXPECT_EQ(.3, roughness0_AC->hurst());
     EXPECT_EQ(12.1, roughness0_AC->lateralCorrLength());
 
-    auto* roughness1_AC = dynamic_cast<const BasicAutoCorr*>(roughness1->autocorrelationModel());
+    auto* roughness1_AC = dynamic_cast<const K_CorrelationModel*>(roughness1->autocorrelationModel());
     EXPECT_TRUE(roughness1_AC);
 
     EXPECT_EQ(1.1, roughness1->sigma());
diff --git a/auto/Examples/fit/specular/Honeycomb_fit.py b/auto/Examples/fit/specular/Honeycomb_fit.py
index e3ef755a8c8..f62a42b33da 100755
--- a/auto/Examples/fit/specular/Honeycomb_fit.py
+++ b/auto/Examples/fit/specular/Honeycomb_fit.py
@@ -50,11 +50,11 @@ def get_sample(P, sign, T):
 
     interlayer_model = ba.ErfInterlayer()
     
-    rPyOx_autocorr = ba.BasicAutoCorr(P["rPyOx"]*angstrom)
-    rPy2_autocorr = ba.BasicAutoCorr(P["rPy2"]*angstrom)
-    rPy1_autocorr = ba.BasicAutoCorr(P["rPy1"]*angstrom)
-    rSiO2_autocorr = ba.BasicAutoCorr(P["rSiO2"]*angstrom)
-    rSi_autocorr = ba.BasicAutoCorr(P["rSi"]*angstrom)
+    rPyOx_autocorr = ba.K_CorrelationModel(P["rPyOx"]*angstrom)
+    rPy2_autocorr = ba.K_CorrelationModel(P["rPy2"]*angstrom)
+    rPy1_autocorr = ba.K_CorrelationModel(P["rPy1"]*angstrom)
+    rSiO2_autocorr = ba.K_CorrelationModel(P["rSiO2"]*angstrom)
+    rSi_autocorr = ba.K_CorrelationModel(P["rSi"]*angstrom)
     
     rPyOx = ba.LayerRoughness(rPyOx_autocorr, interlayer_model)
     rPy2 = ba.LayerRoughness(rPy2_autocorr, interlayer_model)
diff --git a/auto/Examples/fit/specular/PolarizedSpinAsymmetry.py b/auto/Examples/fit/specular/PolarizedSpinAsymmetry.py
index 4e6ff9bcdea..ca6102c5a01 100755
--- a/auto/Examples/fit/specular/PolarizedSpinAsymmetry.py
+++ b/auto/Examples/fit/specular/PolarizedSpinAsymmetry.py
@@ -50,8 +50,8 @@ def get_sample(P):
     layer = ba.Layer(material_layer, P["t_Mafo"]*angstrom)
     substrate_layer = ba.Layer(material_substrate)
 
-    r_Mafo_autocorr = ba.BasicAutoCorr(P["r_Mafo"]*angstrom)
-    r_substrate_autocorr = ba.BasicAutoCorr(P["r_Mao"]*angstrom)
+    r_Mafo_autocorr = ba.K_CorrelationModel(P["r_Mafo"]*angstrom)
+    r_substrate_autocorr = ba.K_CorrelationModel(P["r_Mao"]*angstrom)
 
     interlayer = ba.TanhInterlayer()
 
diff --git a/auto/Examples/fit/specular/Pt_layer_fit.py b/auto/Examples/fit/specular/Pt_layer_fit.py
index 89837d2ebb7..2b2a968f534 100755
--- a/auto/Examples/fit/specular/Pt_layer_fit.py
+++ b/auto/Examples/fit/specular/Pt_layer_fit.py
@@ -33,8 +33,8 @@ def get_sample(P):
 
     interlayer = ba.TanhInterlayer()
 
-    si_autocorr = ba.BasicAutoCorr(P["r_si/nm"])
-    pt_autocorr = ba.BasicAutoCorr(P["r_pt/nm"])
+    si_autocorr = ba.K_CorrelationModel(P["r_si/nm"])
+    pt_autocorr = ba.K_CorrelationModel(P["r_pt/nm"])
 
     r_si = ba.LayerRoughness(si_autocorr, interlayer)
     r_pt = ba.LayerRoughness(pt_autocorr, interlayer)
diff --git a/auto/Examples/fit/specular/TREFF_Ni_film.py b/auto/Examples/fit/specular/TREFF_Ni_film.py
index b35eac8bb27..40be6d27766 100755
--- a/auto/Examples/fit/specular/TREFF_Ni_film.py
+++ b/auto/Examples/fit/specular/TREFF_Ni_film.py
@@ -25,15 +25,15 @@ def get_sample(P):
 
     # Layers and interfaces
     layer_Ni = ba.Layer(material_Ni_58, P["thickness"])
-    
+
     interlayer = ba.TanhInterlayer()
 
-    Ni_autocorr = ba.BasicAutoCorr(P["sigma_Ni"])
+    Ni_autocorr = ba.K_CorrelationModel(P["sigma_Ni"])
     roughness_Ni = ba.LayerRoughness(Ni_autocorr, interlayer)
-    
+
     substrate = ba.Layer(material_SiO2)  
-    
-    sub_autocorr = ba.BasicAutoCorr(P["sigma_Substrate"])
+
+    sub_autocorr = ba.K_CorrelationModel(P["sigma_Substrate"])
     roughness_Substrate = ba.LayerRoughness(sub_autocorr, interlayer)
 
     sample = ba.MultiLayer()
diff --git a/auto/Examples/scatter2d/CorrelatedRoughness.py b/auto/Examples/scatter2d/CorrelatedRoughness.py
index 5fbb40e401b..f5b84991873 100755
--- a/auto/Examples/scatter2d/CorrelatedRoughness.py
+++ b/auto/Examples/scatter2d/CorrelatedRoughness.py
@@ -23,7 +23,7 @@ def get_sample():
     l_substrate = ba.Layer(material_substrate)
 
     sigma, hurst, corrLength = 1*nm, 0.3, 5*nm
-    autocorr = ba.BasicAutoCorr(sigma, hurst, corrLength)
+    autocorr = ba.K_CorrelationModel(sigma, hurst, corrLength)
     interlayer = ba.TanhInterlayer()
     roughness = ba.LayerRoughness(autocorr, interlayer)
 
diff --git a/auto/Examples/scatter2d/FindPeaks.py b/auto/Examples/scatter2d/FindPeaks.py
index 2fe1c739c9f..93c29484e30 100755
--- a/auto/Examples/scatter2d/FindPeaks.py
+++ b/auto/Examples/scatter2d/FindPeaks.py
@@ -42,7 +42,7 @@ def get_sample(lattice_rotation_angle=0*deg):
     substrate_layer = ba.Layer(material_si)
 
     sigma, hurst, corrLength = 5*nm, 0.5, 10*nm
-    autocorr = ba.BasicAutoCorr(sigma, hurst, corrLength)
+    autocorr = ba.K_CorrelationModel(sigma, hurst, corrLength)
     interlayer = ba.TanhInterlayer()
     roughness = ba.LayerRoughness(autocorr, interlayer)
 
diff --git a/auto/Examples/scatter2d/RectangularGrating.py b/auto/Examples/scatter2d/RectangularGrating.py
index 4a7297a5594..1dbfa36cfa2 100755
--- a/auto/Examples/scatter2d/RectangularGrating.py
+++ b/auto/Examples/scatter2d/RectangularGrating.py
@@ -41,7 +41,7 @@ def get_sample(lattice_rotation_angle=0*deg):
     substrate_layer = ba.Layer(material_si)
 
     sigma, hurst, corrLength = 5*nm, 0.5, 10*nm
-    autocorr = ba.BasicAutoCorr(sigma, hurst, corrLength)
+    autocorr = ba.K_CorrelationModel(sigma, hurst, corrLength)
     interlayer = ba.TanhInterlayer()
     roughness = ba.LayerRoughness(autocorr, interlayer)
 
diff --git a/auto/Examples/scatter2d/RoughAndSpecular.py b/auto/Examples/scatter2d/RoughAndSpecular.py
index 0778ea50877..dad1e464f02 100755
--- a/auto/Examples/scatter2d/RoughAndSpecular.py
+++ b/auto/Examples/scatter2d/RoughAndSpecular.py
@@ -10,8 +10,8 @@ def get_sample():
     material_Vacuum = ba.RefractiveMaterial("Vacuum", 0.0, 0.0)
 
     # Define roughness
-    autocorr_1 = ba.BasicAutoCorr(1.1, 0.3, 5*nm)
-    autocorr_2 = ba.BasicAutoCorr(2.3, 0.3, 5*nm)
+    autocorr_1 = ba.K_CorrelationModel(1.1, 0.3, 5*nm)
+    autocorr_2 = ba.K_CorrelationModel(2.3, 0.3, 5*nm)
     
     interlayer = ba.TanhInterlayer()
 
diff --git a/auto/Examples/specular/MagneticLayerImperfect.py b/auto/Examples/specular/MagneticLayerImperfect.py
index d6ca94819b8..24b412f6434 100755
--- a/auto/Examples/specular/MagneticLayerImperfect.py
+++ b/auto/Examples/specular/MagneticLayerImperfect.py
@@ -26,7 +26,7 @@ def get_sample():
     layer_Fe = ba.Layer(material_Fe, 1000*angstrom)
     layer_substrate = ba.Layer(material_substrate)
 
-    autocorr = ba.BasicAutoCorr(20*angstrom)
+    autocorr = ba.K_CorrelationModel(20*angstrom)
     interlayer = ba.TanhInterlayer()
     roughness = ba.LayerRoughness(autocorr, interlayer)
 
diff --git a/auto/Examples/specular/PolarizedSpinAsymmetry.py b/auto/Examples/specular/PolarizedSpinAsymmetry.py
index 57680c65be1..a0f392c42d9 100755
--- a/auto/Examples/specular/PolarizedSpinAsymmetry.py
+++ b/auto/Examples/specular/PolarizedSpinAsymmetry.py
@@ -50,8 +50,8 @@ def get_sample(P):
     layer = ba.Layer(material_layer, P["t_Mafo"]*angstrom)
     substrate_layer = ba.Layer(material_substrate)
 
-    r_Mafo_autocorr = ba.BasicAutoCorr(P["r_Mafo"]*angstrom)
-    r_sub_autocorr = ba.BasicAutoCorr(P["r_Mao"]*angstrom)
+    r_Mafo_autocorr = ba.K_CorrelationModel(P["r_Mafo"]*angstrom)
+    r_sub_autocorr = ba.K_CorrelationModel(P["r_Mao"]*angstrom)
 
     interlayer = ba.TanhInterlayer()
 
diff --git a/auto/Examples/specular/RoughnessModel.py b/auto/Examples/specular/RoughnessModel.py
index 2b995d66174..3499183989d 100755
--- a/auto/Examples/specular/RoughnessModel.py
+++ b/auto/Examples/specular/RoughnessModel.py
@@ -23,7 +23,7 @@ def get_sample(interlayer):
     substrate_layer = ba.Layer(material_substrate)
 
     # Roughness
-    autocorr = ba.BasicAutoCorr(10*angstrom)
+    autocorr = ba.K_CorrelationModel(10*angstrom)
     roughness = ba.LayerRoughness(autocorr, interlayer)
 
     # create sample
diff --git a/auto/Examples/specular/SpecularSimulationWithRoughness.py b/auto/Examples/specular/SpecularSimulationWithRoughness.py
index 01e63bf7554..6b218579050 100755
--- a/auto/Examples/specular/SpecularSimulationWithRoughness.py
+++ b/auto/Examples/specular/SpecularSimulationWithRoughness.py
@@ -21,7 +21,7 @@ def get_sample():
     ni_layer = ba.Layer(material_ni, 70*angstrom)
     substrate_layer = ba.Layer(material_substrate)
 
-    autocorr = ba.BasicAutoCorr(1*nm)
+    autocorr = ba.K_CorrelationModel(1*nm)
     interlayer = ba.TanhInterlayer()
     roughness = ba.LayerRoughness(autocorr, interlayer)
 
diff --git a/auto/Examples/varia/MaterialProfile.py b/auto/Examples/varia/MaterialProfile.py
index 39c2b59333b..4cb069973f9 100755
--- a/auto/Examples/varia/MaterialProfile.py
+++ b/auto/Examples/varia/MaterialProfile.py
@@ -30,7 +30,7 @@ def get_sample():
     sample = ba.MultiLayer()
     sample.addLayer(ambient_layer)
     
-    autocorr = ba.BasicAutoCorr(5*angstrom, 0.5, 10*angstrom)
+    autocorr = ba.K_CorrelationModel(5*angstrom, 0.5, 10*angstrom)
     interlayer = ba.TanhInterlayer()
     roughness = ba.LayerRoughness(autocorr, interlayer)
     
diff --git a/auto/Examples/varia/RoughSurface.py b/auto/Examples/varia/RoughSurface.py
index eceeb32667d..b3ec241822e 100755
--- a/auto/Examples/varia/RoughSurface.py
+++ b/auto/Examples/varia/RoughSurface.py
@@ -54,7 +54,7 @@ X_points = 512
 Y_points = 512
 
 # create roughness model
-autocorr = ba.BasicAutoCorr(sigma, alpha, xi)
+autocorr = ba.K_CorrelationModel(sigma, alpha, xi)
 height_distribution = ba.ErfInterlayer()
 roughness = ba.LayerRoughness(autocorr, height_distribution)
 
diff --git a/auto/MiniExamples/fit/specular/Honeycomb_fit.py b/auto/MiniExamples/fit/specular/Honeycomb_fit.py
index ea0b934a99d..7e35316290c 100755
--- a/auto/MiniExamples/fit/specular/Honeycomb_fit.py
+++ b/auto/MiniExamples/fit/specular/Honeycomb_fit.py
@@ -50,11 +50,11 @@ def get_sample(P, sign, T):
 
     interlayer_model = ba.ErfInterlayer()
     
-    rPyOx_autocorr = ba.BasicAutoCorr(P["rPyOx"]*angstrom)
-    rPy2_autocorr = ba.BasicAutoCorr(P["rPy2"]*angstrom)
-    rPy1_autocorr = ba.BasicAutoCorr(P["rPy1"]*angstrom)
-    rSiO2_autocorr = ba.BasicAutoCorr(P["rSiO2"]*angstrom)
-    rSi_autocorr = ba.BasicAutoCorr(P["rSi"]*angstrom)
+    rPyOx_autocorr = ba.K_CorrelationModel(P["rPyOx"]*angstrom)
+    rPy2_autocorr = ba.K_CorrelationModel(P["rPy2"]*angstrom)
+    rPy1_autocorr = ba.K_CorrelationModel(P["rPy1"]*angstrom)
+    rSiO2_autocorr = ba.K_CorrelationModel(P["rSiO2"]*angstrom)
+    rSi_autocorr = ba.K_CorrelationModel(P["rSi"]*angstrom)
     
     rPyOx = ba.LayerRoughness(rPyOx_autocorr, interlayer_model)
     rPy2 = ba.LayerRoughness(rPy2_autocorr, interlayer_model)
diff --git a/auto/MiniExamples/fit/specular/PolarizedSpinAsymmetry.py b/auto/MiniExamples/fit/specular/PolarizedSpinAsymmetry.py
index 5f62b17f151..cad7f9d760b 100755
--- a/auto/MiniExamples/fit/specular/PolarizedSpinAsymmetry.py
+++ b/auto/MiniExamples/fit/specular/PolarizedSpinAsymmetry.py
@@ -50,8 +50,8 @@ def get_sample(P):
     layer = ba.Layer(material_layer, P["t_Mafo"]*angstrom)
     substrate_layer = ba.Layer(material_substrate)
 
-    r_Mafo_autocorr = ba.BasicAutoCorr(P["r_Mafo"]*angstrom)
-    r_substrate_autocorr = ba.BasicAutoCorr(P["r_Mao"]*angstrom)
+    r_Mafo_autocorr = ba.K_CorrelationModel(P["r_Mafo"]*angstrom)
+    r_substrate_autocorr = ba.K_CorrelationModel(P["r_Mao"]*angstrom)
 
     interlayer = ba.TanhInterlayer()
 
diff --git a/auto/MiniExamples/fit/specular/Pt_layer_fit.py b/auto/MiniExamples/fit/specular/Pt_layer_fit.py
index d2d6e371121..fbd04c33939 100755
--- a/auto/MiniExamples/fit/specular/Pt_layer_fit.py
+++ b/auto/MiniExamples/fit/specular/Pt_layer_fit.py
@@ -33,8 +33,8 @@ def get_sample(P):
 
     interlayer = ba.TanhInterlayer()
 
-    si_autocorr = ba.BasicAutoCorr(P["r_si/nm"])
-    pt_autocorr = ba.BasicAutoCorr(P["r_pt/nm"])
+    si_autocorr = ba.K_CorrelationModel(P["r_si/nm"])
+    pt_autocorr = ba.K_CorrelationModel(P["r_pt/nm"])
 
     r_si = ba.LayerRoughness(si_autocorr, interlayer)
     r_pt = ba.LayerRoughness(pt_autocorr, interlayer)
diff --git a/auto/MiniExamples/fit/specular/TREFF_Ni_film.py b/auto/MiniExamples/fit/specular/TREFF_Ni_film.py
index 1fb5259df2d..7d77e6f2850 100755
--- a/auto/MiniExamples/fit/specular/TREFF_Ni_film.py
+++ b/auto/MiniExamples/fit/specular/TREFF_Ni_film.py
@@ -25,15 +25,15 @@ def get_sample(P):
 
     # Layers and interfaces
     layer_Ni = ba.Layer(material_Ni_58, P["thickness"])
-    
+
     interlayer = ba.TanhInterlayer()
 
-    Ni_autocorr = ba.BasicAutoCorr(P["sigma_Ni"])
+    Ni_autocorr = ba.K_CorrelationModel(P["sigma_Ni"])
     roughness_Ni = ba.LayerRoughness(Ni_autocorr, interlayer)
-    
+
     substrate = ba.Layer(material_SiO2)  
-    
-    sub_autocorr = ba.BasicAutoCorr(P["sigma_Substrate"])
+
+    sub_autocorr = ba.K_CorrelationModel(P["sigma_Substrate"])
     roughness_Substrate = ba.LayerRoughness(sub_autocorr, interlayer)
 
     sample = ba.MultiLayer()
diff --git a/auto/MiniExamples/scatter2d/CorrelatedRoughness.py b/auto/MiniExamples/scatter2d/CorrelatedRoughness.py
index 5ad1dcd1571..d5daf8a7168 100755
--- a/auto/MiniExamples/scatter2d/CorrelatedRoughness.py
+++ b/auto/MiniExamples/scatter2d/CorrelatedRoughness.py
@@ -23,7 +23,7 @@ def get_sample():
     l_substrate = ba.Layer(material_substrate)
 
     sigma, hurst, corrLength = 1*nm, 0.3, 5*nm
-    autocorr = ba.BasicAutoCorr(sigma, hurst, corrLength)
+    autocorr = ba.K_CorrelationModel(sigma, hurst, corrLength)
     interlayer = ba.TanhInterlayer()
     roughness = ba.LayerRoughness(autocorr, interlayer)
 
diff --git a/auto/MiniExamples/scatter2d/FindPeaks.py b/auto/MiniExamples/scatter2d/FindPeaks.py
index 1e49a1f76c0..b124e7e0f16 100755
--- a/auto/MiniExamples/scatter2d/FindPeaks.py
+++ b/auto/MiniExamples/scatter2d/FindPeaks.py
@@ -42,7 +42,7 @@ def get_sample(lattice_rotation_angle=0*deg):
     substrate_layer = ba.Layer(material_si)
 
     sigma, hurst, corrLength = 5*nm, 0.5, 10*nm
-    autocorr = ba.BasicAutoCorr(sigma, hurst, corrLength)
+    autocorr = ba.K_CorrelationModel(sigma, hurst, corrLength)
     interlayer = ba.TanhInterlayer()
     roughness = ba.LayerRoughness(autocorr, interlayer)
 
diff --git a/auto/MiniExamples/scatter2d/RectangularGrating.py b/auto/MiniExamples/scatter2d/RectangularGrating.py
index 0517cbbacd9..4ccb9f97507 100755
--- a/auto/MiniExamples/scatter2d/RectangularGrating.py
+++ b/auto/MiniExamples/scatter2d/RectangularGrating.py
@@ -41,7 +41,7 @@ def get_sample(lattice_rotation_angle=0*deg):
     substrate_layer = ba.Layer(material_si)
 
     sigma, hurst, corrLength = 5*nm, 0.5, 10*nm
-    autocorr = ba.BasicAutoCorr(sigma, hurst, corrLength)
+    autocorr = ba.K_CorrelationModel(sigma, hurst, corrLength)
     interlayer = ba.TanhInterlayer()
     roughness = ba.LayerRoughness(autocorr, interlayer)
 
diff --git a/auto/MiniExamples/scatter2d/RoughAndSpecular.py b/auto/MiniExamples/scatter2d/RoughAndSpecular.py
index 168a4f13dd8..20db1e0261d 100755
--- a/auto/MiniExamples/scatter2d/RoughAndSpecular.py
+++ b/auto/MiniExamples/scatter2d/RoughAndSpecular.py
@@ -10,8 +10,8 @@ def get_sample():
     material_Vacuum = ba.RefractiveMaterial("Vacuum", 0.0, 0.0)
 
     # Define roughness
-    autocorr_1 = ba.BasicAutoCorr(1.1, 0.3, 5*nm)
-    autocorr_2 = ba.BasicAutoCorr(2.3, 0.3, 5*nm)
+    autocorr_1 = ba.K_CorrelationModel(1.1, 0.3, 5*nm)
+    autocorr_2 = ba.K_CorrelationModel(2.3, 0.3, 5*nm)
     
     interlayer = ba.TanhInterlayer()
 
diff --git a/auto/MiniExamples/specular/MagneticLayerImperfect.py b/auto/MiniExamples/specular/MagneticLayerImperfect.py
index d6ca94819b8..24b412f6434 100755
--- a/auto/MiniExamples/specular/MagneticLayerImperfect.py
+++ b/auto/MiniExamples/specular/MagneticLayerImperfect.py
@@ -26,7 +26,7 @@ def get_sample():
     layer_Fe = ba.Layer(material_Fe, 1000*angstrom)
     layer_substrate = ba.Layer(material_substrate)
 
-    autocorr = ba.BasicAutoCorr(20*angstrom)
+    autocorr = ba.K_CorrelationModel(20*angstrom)
     interlayer = ba.TanhInterlayer()
     roughness = ba.LayerRoughness(autocorr, interlayer)
 
diff --git a/auto/MiniExamples/specular/PolarizedSpinAsymmetry.py b/auto/MiniExamples/specular/PolarizedSpinAsymmetry.py
index 1c80d957292..146b153ec83 100755
--- a/auto/MiniExamples/specular/PolarizedSpinAsymmetry.py
+++ b/auto/MiniExamples/specular/PolarizedSpinAsymmetry.py
@@ -50,8 +50,8 @@ def get_sample(P):
     layer = ba.Layer(material_layer, P["t_Mafo"]*angstrom)
     substrate_layer = ba.Layer(material_substrate)
 
-    r_Mafo_autocorr = ba.BasicAutoCorr(P["r_Mafo"]*angstrom)
-    r_sub_autocorr = ba.BasicAutoCorr(P["r_Mao"]*angstrom)
+    r_Mafo_autocorr = ba.K_CorrelationModel(P["r_Mafo"]*angstrom)
+    r_sub_autocorr = ba.K_CorrelationModel(P["r_Mao"]*angstrom)
 
     interlayer = ba.TanhInterlayer()
 
diff --git a/auto/MiniExamples/specular/RoughnessModel.py b/auto/MiniExamples/specular/RoughnessModel.py
index 3d585c05d02..1065577cd90 100755
--- a/auto/MiniExamples/specular/RoughnessModel.py
+++ b/auto/MiniExamples/specular/RoughnessModel.py
@@ -23,7 +23,7 @@ def get_sample(interlayer):
     substrate_layer = ba.Layer(material_substrate)
 
     # Roughness
-    autocorr = ba.BasicAutoCorr(10*angstrom)
+    autocorr = ba.K_CorrelationModel(10*angstrom)
     roughness = ba.LayerRoughness(autocorr, interlayer)
 
     # create sample
diff --git a/auto/MiniExamples/specular/SpecularSimulationWithRoughness.py b/auto/MiniExamples/specular/SpecularSimulationWithRoughness.py
index 9f30fcb9cb3..112e9ee15c8 100755
--- a/auto/MiniExamples/specular/SpecularSimulationWithRoughness.py
+++ b/auto/MiniExamples/specular/SpecularSimulationWithRoughness.py
@@ -21,7 +21,7 @@ def get_sample():
     ni_layer = ba.Layer(material_ni, 70*angstrom)
     substrate_layer = ba.Layer(material_substrate)
 
-    autocorr = ba.BasicAutoCorr(1*nm)
+    autocorr = ba.K_CorrelationModel(1*nm)
     interlayer = ba.TanhInterlayer()
     roughness = ba.LayerRoughness(autocorr, interlayer)
 
diff --git a/auto/MiniExamples/varia/MaterialProfile.py b/auto/MiniExamples/varia/MaterialProfile.py
index 39c2b59333b..4cb069973f9 100755
--- a/auto/MiniExamples/varia/MaterialProfile.py
+++ b/auto/MiniExamples/varia/MaterialProfile.py
@@ -30,7 +30,7 @@ def get_sample():
     sample = ba.MultiLayer()
     sample.addLayer(ambient_layer)
     
-    autocorr = ba.BasicAutoCorr(5*angstrom, 0.5, 10*angstrom)
+    autocorr = ba.K_CorrelationModel(5*angstrom, 0.5, 10*angstrom)
     interlayer = ba.TanhInterlayer()
     roughness = ba.LayerRoughness(autocorr, interlayer)
     
diff --git a/auto/MiniExamples/varia/RoughSurface.py b/auto/MiniExamples/varia/RoughSurface.py
index 3b8bc3a4779..bb970b8b044 100755
--- a/auto/MiniExamples/varia/RoughSurface.py
+++ b/auto/MiniExamples/varia/RoughSurface.py
@@ -54,7 +54,7 @@ X_points = 10
 Y_points = 10
 
 # create roughness model
-autocorr = ba.BasicAutoCorr(sigma, alpha, xi)
+autocorr = ba.K_CorrelationModel(sigma, alpha, xi)
 height_distribution = ba.ErfInterlayer()
 roughness = ba.LayerRoughness(autocorr, height_distribution)
 
diff --git a/auto/Wrap/libBornAgainSample.py b/auto/Wrap/libBornAgainSample.py
index 73ab3e51571..ae5d6ac1165 100644
--- a/auto/Wrap/libBornAgainSample.py
+++ b/auto/Wrap/libBornAgainSample.py
@@ -4337,67 +4337,67 @@ class AutocorrelationModel(libBornAgainBase.ICloneable, libBornAgainParam.INode)
 
 # Register AutocorrelationModel in _libBornAgainSample:
 _libBornAgainSample.AutocorrelationModel_swigregister(AutocorrelationModel)
-class BasicAutoCorr(AutocorrelationModel):
-    r"""Proxy of C++ BasicAutoCorr class."""
+class K_CorrelationModel(AutocorrelationModel):
+    r"""Proxy of C++ K_CorrelationModel class."""
 
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
     __repr__ = _swig_repr
 
     def __init__(self, sigma=0, hurst=0, lateralCorrLength=0):
-        r"""__init__(BasicAutoCorr self, double sigma=0, double hurst=0, double lateralCorrLength=0) -> BasicAutoCorr"""
-        _libBornAgainSample.BasicAutoCorr_swiginit(self, _libBornAgainSample.new_BasicAutoCorr(sigma, hurst, lateralCorrLength))
+        r"""__init__(K_CorrelationModel self, double sigma=0, double hurst=0, double lateralCorrLength=0) -> K_CorrelationModel"""
+        _libBornAgainSample.K_CorrelationModel_swiginit(self, _libBornAgainSample.new_K_CorrelationModel(sigma, hurst, lateralCorrLength))
 
     def clone(self):
-        r"""clone(BasicAutoCorr self) -> BasicAutoCorr"""
-        return _libBornAgainSample.BasicAutoCorr_clone(self)
+        r"""clone(K_CorrelationModel self) -> K_CorrelationModel"""
+        return _libBornAgainSample.K_CorrelationModel_clone(self)
 
     def className(self):
-        r"""className(BasicAutoCorr self) -> std::string"""
-        return _libBornAgainSample.BasicAutoCorr_className(self)
+        r"""className(K_CorrelationModel self) -> std::string"""
+        return _libBornAgainSample.K_CorrelationModel_className(self)
 
     def parDefs(self):
-        r"""parDefs(BasicAutoCorr self) -> std::vector< ParaMeta,std::allocator< ParaMeta > >"""
-        return _libBornAgainSample.BasicAutoCorr_parDefs(self)
+        r"""parDefs(K_CorrelationModel self) -> std::vector< ParaMeta,std::allocator< ParaMeta > >"""
+        return _libBornAgainSample.K_CorrelationModel_parDefs(self)
 
     def validate(self):
-        r"""validate(BasicAutoCorr self) -> std::string"""
-        return _libBornAgainSample.BasicAutoCorr_validate(self)
+        r"""validate(K_CorrelationModel self) -> std::string"""
+        return _libBornAgainSample.K_CorrelationModel_validate(self)
 
     def spectralFunction(self, k):
-        r"""spectralFunction(BasicAutoCorr self, R3 k) -> double"""
-        return _libBornAgainSample.BasicAutoCorr_spectralFunction(self, k)
+        r"""spectralFunction(K_CorrelationModel self, R3 k) -> double"""
+        return _libBornAgainSample.K_CorrelationModel_spectralFunction(self, k)
 
     def corrFunction(self, k):
-        r"""corrFunction(BasicAutoCorr self, R3 k) -> double"""
-        return _libBornAgainSample.BasicAutoCorr_corrFunction(self, k)
+        r"""corrFunction(K_CorrelationModel self, R3 k) -> double"""
+        return _libBornAgainSample.K_CorrelationModel_corrFunction(self, k)
 
     def setSigma(self, sigma):
-        r"""setSigma(BasicAutoCorr self, double sigma)"""
-        return _libBornAgainSample.BasicAutoCorr_setSigma(self, sigma)
+        r"""setSigma(K_CorrelationModel self, double sigma)"""
+        return _libBornAgainSample.K_CorrelationModel_setSigma(self, sigma)
 
     def sigma(self):
-        r"""sigma(BasicAutoCorr self) -> double"""
-        return _libBornAgainSample.BasicAutoCorr_sigma(self)
+        r"""sigma(K_CorrelationModel self) -> double"""
+        return _libBornAgainSample.K_CorrelationModel_sigma(self)
 
     def setHurstParameter(self, hurstParameter):
-        r"""setHurstParameter(BasicAutoCorr self, double hurstParameter)"""
-        return _libBornAgainSample.BasicAutoCorr_setHurstParameter(self, hurstParameter)
+        r"""setHurstParameter(K_CorrelationModel self, double hurstParameter)"""
+        return _libBornAgainSample.K_CorrelationModel_setHurstParameter(self, hurstParameter)
 
     def hurst(self):
-        r"""hurst(BasicAutoCorr self) -> double"""
-        return _libBornAgainSample.BasicAutoCorr_hurst(self)
+        r"""hurst(K_CorrelationModel self) -> double"""
+        return _libBornAgainSample.K_CorrelationModel_hurst(self)
 
     def setLatteralCorrLength(self, lateralCorrLen):
-        r"""setLatteralCorrLength(BasicAutoCorr self, double lateralCorrLen)"""
-        return _libBornAgainSample.BasicAutoCorr_setLatteralCorrLength(self, lateralCorrLen)
+        r"""setLatteralCorrLength(K_CorrelationModel self, double lateralCorrLen)"""
+        return _libBornAgainSample.K_CorrelationModel_setLatteralCorrLength(self, lateralCorrLen)
 
     def lateralCorrLength(self):
-        r"""lateralCorrLength(BasicAutoCorr self) -> double"""
-        return _libBornAgainSample.BasicAutoCorr_lateralCorrLength(self)
-    __swig_destroy__ = _libBornAgainSample.delete_BasicAutoCorr
+        r"""lateralCorrLength(K_CorrelationModel self) -> double"""
+        return _libBornAgainSample.K_CorrelationModel_lateralCorrLength(self)
+    __swig_destroy__ = _libBornAgainSample.delete_K_CorrelationModel
 
-# Register BasicAutoCorr in _libBornAgainSample:
-_libBornAgainSample.BasicAutoCorr_swigregister(BasicAutoCorr)
+# Register K_CorrelationModel in _libBornAgainSample:
+_libBornAgainSample.K_CorrelationModel_swigregister(K_CorrelationModel)
 class InterlayerModel(libBornAgainBase.ICloneable, libBornAgainParam.INode):
     r"""Proxy of C++ InterlayerModel class."""
 
diff --git a/auto/Wrap/libBornAgainSample_wrap.cpp b/auto/Wrap/libBornAgainSample_wrap.cpp
index 572a30e688d..2e086c100c4 100644
--- a/auto/Wrap/libBornAgainSample_wrap.cpp
+++ b/auto/Wrap/libBornAgainSample_wrap.cpp
@@ -3648,59 +3648,59 @@ namespace Swig {
 #define SWIGTYPE_p_AutocorrelationModel swig_types[0]
 #define SWIGTYPE_p_BarGauss swig_types[1]
 #define SWIGTYPE_p_BarLorentz swig_types[2]
-#define SWIGTYPE_p_BasicAutoCorr swig_types[3]
-#define SWIGTYPE_p_BasicLattice2D swig_types[4]
-#define SWIGTYPE_p_Bipyramid4 swig_types[5]
-#define SWIGTYPE_p_Box swig_types[6]
-#define SWIGTYPE_p_CantellatedCube swig_types[7]
-#define SWIGTYPE_p_Compound swig_types[8]
-#define SWIGTYPE_p_Cone swig_types[9]
-#define SWIGTYPE_p_CoreAndShell swig_types[10]
-#define SWIGTYPE_p_CosineRippleBox swig_types[11]
-#define SWIGTYPE_p_CosineRippleGauss swig_types[12]
-#define SWIGTYPE_p_CosineRippleLorentz swig_types[13]
-#define SWIGTYPE_p_Crystal swig_types[14]
-#define SWIGTYPE_p_Cylinder swig_types[15]
-#define SWIGTYPE_p_Dodecahedron swig_types[16]
-#define SWIGTYPE_p_EllipsoidalCylinder swig_types[17]
-#define SWIGTYPE_p_ErfInterlayer swig_types[18]
-#define SWIGTYPE_p_FuzzySphere swig_types[19]
-#define SWIGTYPE_p_GaussFisherPeakShape swig_types[20]
-#define SWIGTYPE_p_GaussSphere swig_types[21]
-#define SWIGTYPE_p_HemiEllipsoid swig_types[22]
-#define SWIGTYPE_p_HexagonalLattice2D swig_types[23]
-#define SWIGTYPE_p_HorizontalCylinder swig_types[24]
-#define SWIGTYPE_p_ICloneable swig_types[25]
-#define SWIGTYPE_p_ICosineRipple swig_types[26]
-#define SWIGTYPE_p_IFormfactor swig_types[27]
-#define SWIGTYPE_p_IFormfactorPolyhedron swig_types[28]
-#define SWIGTYPE_p_IFormfactorPrism swig_types[29]
-#define SWIGTYPE_p_IInterference swig_types[30]
-#define SWIGTYPE_p_IMaterialImpl swig_types[31]
-#define SWIGTYPE_p_INode swig_types[32]
-#define SWIGTYPE_p_IParticle swig_types[33]
-#define SWIGTYPE_p_IPeakShape swig_types[34]
-#define SWIGTYPE_p_IProfile1D swig_types[35]
-#define SWIGTYPE_p_IProfile2D swig_types[36]
-#define SWIGTYPE_p_IProfileRectangularRipple swig_types[37]
-#define SWIGTYPE_p_IProfileRipple swig_types[38]
-#define SWIGTYPE_p_IRotation swig_types[39]
-#define SWIGTYPE_p_ISampleNode swig_types[40]
-#define SWIGTYPE_p_ISawtoothRipple swig_types[41]
-#define SWIGTYPE_p_ISelectionRule swig_types[42]
-#define SWIGTYPE_p_Icosahedron swig_types[43]
-#define SWIGTYPE_p_IdentityRotation swig_types[44]
-#define SWIGTYPE_p_Interference1DLattice swig_types[45]
-#define SWIGTYPE_p_Interference2DLattice swig_types[46]
-#define SWIGTYPE_p_Interference2DParacrystal swig_types[47]
-#define SWIGTYPE_p_Interference2DSuperLattice swig_types[48]
-#define SWIGTYPE_p_InterferenceFinite2DLattice swig_types[49]
-#define SWIGTYPE_p_InterferenceHardDisk swig_types[50]
-#define SWIGTYPE_p_InterferenceNone swig_types[51]
-#define SWIGTYPE_p_InterferenceRadialParacrystal swig_types[52]
-#define SWIGTYPE_p_InterlayerModel swig_types[53]
-#define SWIGTYPE_p_IsotropicGaussPeakShape swig_types[54]
-#define SWIGTYPE_p_IsotropicLorentzPeakShape swig_types[55]
+#define SWIGTYPE_p_BasicLattice2D swig_types[3]
+#define SWIGTYPE_p_Bipyramid4 swig_types[4]
+#define SWIGTYPE_p_Box swig_types[5]
+#define SWIGTYPE_p_CantellatedCube swig_types[6]
+#define SWIGTYPE_p_Compound swig_types[7]
+#define SWIGTYPE_p_Cone swig_types[8]
+#define SWIGTYPE_p_CoreAndShell swig_types[9]
+#define SWIGTYPE_p_CosineRippleBox swig_types[10]
+#define SWIGTYPE_p_CosineRippleGauss swig_types[11]
+#define SWIGTYPE_p_CosineRippleLorentz swig_types[12]
+#define SWIGTYPE_p_Crystal swig_types[13]
+#define SWIGTYPE_p_Cylinder swig_types[14]
+#define SWIGTYPE_p_Dodecahedron swig_types[15]
+#define SWIGTYPE_p_EllipsoidalCylinder swig_types[16]
+#define SWIGTYPE_p_ErfInterlayer swig_types[17]
+#define SWIGTYPE_p_FuzzySphere swig_types[18]
+#define SWIGTYPE_p_GaussFisherPeakShape swig_types[19]
+#define SWIGTYPE_p_GaussSphere swig_types[20]
+#define SWIGTYPE_p_HemiEllipsoid swig_types[21]
+#define SWIGTYPE_p_HexagonalLattice2D swig_types[22]
+#define SWIGTYPE_p_HorizontalCylinder swig_types[23]
+#define SWIGTYPE_p_ICloneable swig_types[24]
+#define SWIGTYPE_p_ICosineRipple swig_types[25]
+#define SWIGTYPE_p_IFormfactor swig_types[26]
+#define SWIGTYPE_p_IFormfactorPolyhedron swig_types[27]
+#define SWIGTYPE_p_IFormfactorPrism swig_types[28]
+#define SWIGTYPE_p_IInterference swig_types[29]
+#define SWIGTYPE_p_IMaterialImpl swig_types[30]
+#define SWIGTYPE_p_INode swig_types[31]
+#define SWIGTYPE_p_IParticle swig_types[32]
+#define SWIGTYPE_p_IPeakShape swig_types[33]
+#define SWIGTYPE_p_IProfile1D swig_types[34]
+#define SWIGTYPE_p_IProfile2D swig_types[35]
+#define SWIGTYPE_p_IProfileRectangularRipple swig_types[36]
+#define SWIGTYPE_p_IProfileRipple swig_types[37]
+#define SWIGTYPE_p_IRotation swig_types[38]
+#define SWIGTYPE_p_ISampleNode swig_types[39]
+#define SWIGTYPE_p_ISawtoothRipple swig_types[40]
+#define SWIGTYPE_p_ISelectionRule swig_types[41]
+#define SWIGTYPE_p_Icosahedron swig_types[42]
+#define SWIGTYPE_p_IdentityRotation swig_types[43]
+#define SWIGTYPE_p_Interference1DLattice swig_types[44]
+#define SWIGTYPE_p_Interference2DLattice swig_types[45]
+#define SWIGTYPE_p_Interference2DParacrystal swig_types[46]
+#define SWIGTYPE_p_Interference2DSuperLattice swig_types[47]
+#define SWIGTYPE_p_InterferenceFinite2DLattice swig_types[48]
+#define SWIGTYPE_p_InterferenceHardDisk swig_types[49]
+#define SWIGTYPE_p_InterferenceNone swig_types[50]
+#define SWIGTYPE_p_InterferenceRadialParacrystal swig_types[51]
+#define SWIGTYPE_p_InterlayerModel swig_types[52]
+#define SWIGTYPE_p_IsotropicGaussPeakShape swig_types[53]
+#define SWIGTYPE_p_IsotropicLorentzPeakShape swig_types[54]
+#define SWIGTYPE_p_K_CorrelationModel swig_types[55]
 #define SWIGTYPE_p_Lattice2D swig_types[56]
 #define SWIGTYPE_p_Lattice2D__ReciprocalBases swig_types[57]
 #define SWIGTYPE_p_Lattice3D swig_types[58]
@@ -52112,7 +52112,7 @@ SWIGINTERN PyObject *AutocorrelationModel_swigregister(PyObject *SWIGUNUSEDPARM(
   return SWIG_Py_Void();
 }
 
-SWIGINTERN PyObject *_wrap_new_BasicAutoCorr__SWIG_0(PyObject *self, Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_new_K_CorrelationModel__SWIG_0(PyObject *self, Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   double arg1 ;
   double arg2 ;
@@ -52123,28 +52123,28 @@ SWIGINTERN PyObject *_wrap_new_BasicAutoCorr__SWIG_0(PyObject *self, Py_ssize_t
   int ecode2 = 0 ;
   double val3 ;
   int ecode3 = 0 ;
-  BasicAutoCorr *result = 0 ;
+  K_CorrelationModel *result = 0 ;
   
   (void)self;
   if ((nobjs < 3) || (nobjs > 3)) SWIG_fail;
   ecode1 = SWIG_AsVal_double(swig_obj[0], &val1);
   if (!SWIG_IsOK(ecode1)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_BasicAutoCorr" "', argument " "1"" of type '" "double""'");
+    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_K_CorrelationModel" "', argument " "1"" of type '" "double""'");
   } 
   arg1 = static_cast< double >(val1);
   ecode2 = SWIG_AsVal_double(swig_obj[1], &val2);
   if (!SWIG_IsOK(ecode2)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_BasicAutoCorr" "', argument " "2"" of type '" "double""'");
+    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_K_CorrelationModel" "', argument " "2"" of type '" "double""'");
   } 
   arg2 = static_cast< double >(val2);
   ecode3 = SWIG_AsVal_double(swig_obj[2], &val3);
   if (!SWIG_IsOK(ecode3)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_BasicAutoCorr" "', argument " "3"" of type '" "double""'");
+    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_K_CorrelationModel" "', argument " "3"" of type '" "double""'");
   } 
   arg3 = static_cast< double >(val3);
   {
     try {
-      result = (BasicAutoCorr *)new BasicAutoCorr(arg1,arg2,arg3);
+      result = (K_CorrelationModel *)new K_CorrelationModel(arg1,arg2,arg3);
     } catch (const std::exception& ex) {
       // message shown in the Python interpreter
       const std::string msg {
@@ -52153,14 +52153,14 @@ SWIGINTERN PyObject *_wrap_new_BasicAutoCorr__SWIG_0(PyObject *self, Py_ssize_t
       SWIG_exception(SWIG_RuntimeError, msg.c_str());
     }
   }
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_BasicAutoCorr, SWIG_POINTER_NEW |  0 );
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_K_CorrelationModel, SWIG_POINTER_NEW |  0 );
   return resultobj;
 fail:
   return NULL;
 }
 
 
-SWIGINTERN PyObject *_wrap_new_BasicAutoCorr__SWIG_1(PyObject *self, Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_new_K_CorrelationModel__SWIG_1(PyObject *self, Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   double arg1 ;
   double arg2 ;
@@ -52168,23 +52168,23 @@ SWIGINTERN PyObject *_wrap_new_BasicAutoCorr__SWIG_1(PyObject *self, Py_ssize_t
   int ecode1 = 0 ;
   double val2 ;
   int ecode2 = 0 ;
-  BasicAutoCorr *result = 0 ;
+  K_CorrelationModel *result = 0 ;
   
   (void)self;
   if ((nobjs < 2) || (nobjs > 2)) SWIG_fail;
   ecode1 = SWIG_AsVal_double(swig_obj[0], &val1);
   if (!SWIG_IsOK(ecode1)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_BasicAutoCorr" "', argument " "1"" of type '" "double""'");
+    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_K_CorrelationModel" "', argument " "1"" of type '" "double""'");
   } 
   arg1 = static_cast< double >(val1);
   ecode2 = SWIG_AsVal_double(swig_obj[1], &val2);
   if (!SWIG_IsOK(ecode2)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_BasicAutoCorr" "', argument " "2"" of type '" "double""'");
+    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_K_CorrelationModel" "', argument " "2"" of type '" "double""'");
   } 
   arg2 = static_cast< double >(val2);
   {
     try {
-      result = (BasicAutoCorr *)new BasicAutoCorr(arg1,arg2);
+      result = (K_CorrelationModel *)new K_CorrelationModel(arg1,arg2);
     } catch (const std::exception& ex) {
       // message shown in the Python interpreter
       const std::string msg {
@@ -52193,30 +52193,30 @@ SWIGINTERN PyObject *_wrap_new_BasicAutoCorr__SWIG_1(PyObject *self, Py_ssize_t
       SWIG_exception(SWIG_RuntimeError, msg.c_str());
     }
   }
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_BasicAutoCorr, SWIG_POINTER_NEW |  0 );
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_K_CorrelationModel, SWIG_POINTER_NEW |  0 );
   return resultobj;
 fail:
   return NULL;
 }
 
 
-SWIGINTERN PyObject *_wrap_new_BasicAutoCorr__SWIG_2(PyObject *self, Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_new_K_CorrelationModel__SWIG_2(PyObject *self, Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   double arg1 ;
   double val1 ;
   int ecode1 = 0 ;
-  BasicAutoCorr *result = 0 ;
+  K_CorrelationModel *result = 0 ;
   
   (void)self;
   if ((nobjs < 1) || (nobjs > 1)) SWIG_fail;
   ecode1 = SWIG_AsVal_double(swig_obj[0], &val1);
   if (!SWIG_IsOK(ecode1)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_BasicAutoCorr" "', argument " "1"" of type '" "double""'");
+    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_K_CorrelationModel" "', argument " "1"" of type '" "double""'");
   } 
   arg1 = static_cast< double >(val1);
   {
     try {
-      result = (BasicAutoCorr *)new BasicAutoCorr(arg1);
+      result = (K_CorrelationModel *)new K_CorrelationModel(arg1);
     } catch (const std::exception& ex) {
       // message shown in the Python interpreter
       const std::string msg {
@@ -52225,22 +52225,22 @@ SWIGINTERN PyObject *_wrap_new_BasicAutoCorr__SWIG_2(PyObject *self, Py_ssize_t
       SWIG_exception(SWIG_RuntimeError, msg.c_str());
     }
   }
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_BasicAutoCorr, SWIG_POINTER_NEW |  0 );
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_K_CorrelationModel, SWIG_POINTER_NEW |  0 );
   return resultobj;
 fail:
   return NULL;
 }
 
 
-SWIGINTERN PyObject *_wrap_new_BasicAutoCorr__SWIG_3(PyObject *self, Py_ssize_t nobjs, PyObject **SWIGUNUSEDPARM(swig_obj)) {
+SWIGINTERN PyObject *_wrap_new_K_CorrelationModel__SWIG_3(PyObject *self, Py_ssize_t nobjs, PyObject **SWIGUNUSEDPARM(swig_obj)) {
   PyObject *resultobj = 0;
-  BasicAutoCorr *result = 0 ;
+  K_CorrelationModel *result = 0 ;
   
   (void)self;
   if ((nobjs < 0) || (nobjs > 0)) SWIG_fail;
   {
     try {
-      result = (BasicAutoCorr *)new BasicAutoCorr();
+      result = (K_CorrelationModel *)new K_CorrelationModel();
     } catch (const std::exception& ex) {
       // message shown in the Python interpreter
       const std::string msg {
@@ -52249,23 +52249,23 @@ SWIGINTERN PyObject *_wrap_new_BasicAutoCorr__SWIG_3(PyObject *self, Py_ssize_t
       SWIG_exception(SWIG_RuntimeError, msg.c_str());
     }
   }
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_BasicAutoCorr, SWIG_POINTER_NEW |  0 );
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_K_CorrelationModel, SWIG_POINTER_NEW |  0 );
   return resultobj;
 fail:
   return NULL;
 }
 
 
-SWIGINTERN PyObject *_wrap_new_BasicAutoCorr(PyObject *self, PyObject *args) {
+SWIGINTERN PyObject *_wrap_new_K_CorrelationModel(PyObject *self, PyObject *args) {
   Py_ssize_t argc;
   PyObject *argv[4] = {
     0
   };
   
-  if (!(argc = SWIG_Python_UnpackTuple(args, "new_BasicAutoCorr", 0, 3, argv))) SWIG_fail;
+  if (!(argc = SWIG_Python_UnpackTuple(args, "new_K_CorrelationModel", 0, 3, argv))) SWIG_fail;
   --argc;
   if (argc == 0) {
-    return _wrap_new_BasicAutoCorr__SWIG_3(self, argc, argv);
+    return _wrap_new_K_CorrelationModel__SWIG_3(self, argc, argv);
   }
   if (argc == 1) {
     int _v = 0;
@@ -52274,7 +52274,7 @@ SWIGINTERN PyObject *_wrap_new_BasicAutoCorr(PyObject *self, PyObject *args) {
       _v = SWIG_CheckState(res);
     }
     if (_v) {
-      return _wrap_new_BasicAutoCorr__SWIG_2(self, argc, argv);
+      return _wrap_new_K_CorrelationModel__SWIG_2(self, argc, argv);
     }
   }
   if (argc == 2) {
@@ -52289,7 +52289,7 @@ SWIGINTERN PyObject *_wrap_new_BasicAutoCorr(PyObject *self, PyObject *args) {
         _v = SWIG_CheckState(res);
       }
       if (_v) {
-        return _wrap_new_BasicAutoCorr__SWIG_1(self, argc, argv);
+        return _wrap_new_K_CorrelationModel__SWIG_1(self, argc, argv);
       }
     }
   }
@@ -52310,42 +52310,42 @@ SWIGINTERN PyObject *_wrap_new_BasicAutoCorr(PyObject *self, PyObject *args) {
           _v = SWIG_CheckState(res);
         }
         if (_v) {
-          return _wrap_new_BasicAutoCorr__SWIG_0(self, argc, argv);
+          return _wrap_new_K_CorrelationModel__SWIG_0(self, argc, argv);
         }
       }
     }
   }
   
 fail:
-  SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'new_BasicAutoCorr'.\n"
+  SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'new_K_CorrelationModel'.\n"
     "  Possible C/C++ prototypes are:\n"
-    "    BasicAutoCorr::BasicAutoCorr(double,double,double)\n"
-    "    BasicAutoCorr::BasicAutoCorr(double,double)\n"
-    "    BasicAutoCorr::BasicAutoCorr(double)\n"
-    "    BasicAutoCorr::BasicAutoCorr()\n");
+    "    K_CorrelationModel::K_CorrelationModel(double,double,double)\n"
+    "    K_CorrelationModel::K_CorrelationModel(double,double)\n"
+    "    K_CorrelationModel::K_CorrelationModel(double)\n"
+    "    K_CorrelationModel::K_CorrelationModel()\n");
   return 0;
 }
 
 
-SWIGINTERN PyObject *_wrap_BasicAutoCorr_clone(PyObject *self, PyObject *args) {
+SWIGINTERN PyObject *_wrap_K_CorrelationModel_clone(PyObject *self, PyObject *args) {
   PyObject *resultobj = 0;
-  BasicAutoCorr *arg1 = (BasicAutoCorr *) 0 ;
+  K_CorrelationModel *arg1 = (K_CorrelationModel *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject *swig_obj[1] ;
-  BasicAutoCorr *result = 0 ;
+  K_CorrelationModel *result = 0 ;
   
   (void)self;
   if (!args) SWIG_fail;
   swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_BasicAutoCorr, 0 |  0 );
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_K_CorrelationModel, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "BasicAutoCorr_clone" "', argument " "1"" of type '" "BasicAutoCorr const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "K_CorrelationModel_clone" "', argument " "1"" of type '" "K_CorrelationModel const *""'"); 
   }
-  arg1 = reinterpret_cast< BasicAutoCorr * >(argp1);
+  arg1 = reinterpret_cast< K_CorrelationModel * >(argp1);
   {
     try {
-      result = (BasicAutoCorr *)((BasicAutoCorr const *)arg1)->clone();
+      result = (K_CorrelationModel *)((K_CorrelationModel const *)arg1)->clone();
     } catch (const std::exception& ex) {
       // message shown in the Python interpreter
       const std::string msg {
@@ -52354,16 +52354,16 @@ SWIGINTERN PyObject *_wrap_BasicAutoCorr_clone(PyObject *self, PyObject *args) {
       SWIG_exception(SWIG_RuntimeError, msg.c_str());
     }
   }
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_BasicAutoCorr, 0 |  0 );
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_K_CorrelationModel, 0 |  0 );
   return resultobj;
 fail:
   return NULL;
 }
 
 
-SWIGINTERN PyObject *_wrap_BasicAutoCorr_className(PyObject *self, PyObject *args) {
+SWIGINTERN PyObject *_wrap_K_CorrelationModel_className(PyObject *self, PyObject *args) {
   PyObject *resultobj = 0;
-  BasicAutoCorr *arg1 = (BasicAutoCorr *) 0 ;
+  K_CorrelationModel *arg1 = (K_CorrelationModel *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject *swig_obj[1] ;
@@ -52372,14 +52372,14 @@ SWIGINTERN PyObject *_wrap_BasicAutoCorr_className(PyObject *self, PyObject *arg
   (void)self;
   if (!args) SWIG_fail;
   swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_BasicAutoCorr, 0 |  0 );
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_K_CorrelationModel, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "BasicAutoCorr_className" "', argument " "1"" of type '" "BasicAutoCorr const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "K_CorrelationModel_className" "', argument " "1"" of type '" "K_CorrelationModel const *""'"); 
   }
-  arg1 = reinterpret_cast< BasicAutoCorr * >(argp1);
+  arg1 = reinterpret_cast< K_CorrelationModel * >(argp1);
   {
     try {
-      result = ((BasicAutoCorr const *)arg1)->className();
+      result = ((K_CorrelationModel const *)arg1)->className();
     } catch (const std::exception& ex) {
       // message shown in the Python interpreter
       const std::string msg {
@@ -52395,9 +52395,9 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_BasicAutoCorr_parDefs(PyObject *self, PyObject *args) {
+SWIGINTERN PyObject *_wrap_K_CorrelationModel_parDefs(PyObject *self, PyObject *args) {
   PyObject *resultobj = 0;
-  BasicAutoCorr *arg1 = (BasicAutoCorr *) 0 ;
+  K_CorrelationModel *arg1 = (K_CorrelationModel *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject *swig_obj[1] ;
@@ -52406,14 +52406,14 @@ SWIGINTERN PyObject *_wrap_BasicAutoCorr_parDefs(PyObject *self, PyObject *args)
   (void)self;
   if (!args) SWIG_fail;
   swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_BasicAutoCorr, 0 |  0 );
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_K_CorrelationModel, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "BasicAutoCorr_parDefs" "', argument " "1"" of type '" "BasicAutoCorr const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "K_CorrelationModel_parDefs" "', argument " "1"" of type '" "K_CorrelationModel const *""'"); 
   }
-  arg1 = reinterpret_cast< BasicAutoCorr * >(argp1);
+  arg1 = reinterpret_cast< K_CorrelationModel * >(argp1);
   {
     try {
-      result = ((BasicAutoCorr const *)arg1)->parDefs();
+      result = ((K_CorrelationModel const *)arg1)->parDefs();
     } catch (const std::exception& ex) {
       // message shown in the Python interpreter
       const std::string msg {
@@ -52429,9 +52429,9 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_BasicAutoCorr_validate(PyObject *self, PyObject *args) {
+SWIGINTERN PyObject *_wrap_K_CorrelationModel_validate(PyObject *self, PyObject *args) {
   PyObject *resultobj = 0;
-  BasicAutoCorr *arg1 = (BasicAutoCorr *) 0 ;
+  K_CorrelationModel *arg1 = (K_CorrelationModel *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject *swig_obj[1] ;
@@ -52440,14 +52440,14 @@ SWIGINTERN PyObject *_wrap_BasicAutoCorr_validate(PyObject *self, PyObject *args
   (void)self;
   if (!args) SWIG_fail;
   swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_BasicAutoCorr, 0 |  0 );
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_K_CorrelationModel, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "BasicAutoCorr_validate" "', argument " "1"" of type '" "BasicAutoCorr const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "K_CorrelationModel_validate" "', argument " "1"" of type '" "K_CorrelationModel const *""'"); 
   }
-  arg1 = reinterpret_cast< BasicAutoCorr * >(argp1);
+  arg1 = reinterpret_cast< K_CorrelationModel * >(argp1);
   {
     try {
-      result = ((BasicAutoCorr const *)arg1)->validate();
+      result = ((K_CorrelationModel const *)arg1)->validate();
     } catch (const std::exception& ex) {
       // message shown in the Python interpreter
       const std::string msg {
@@ -52463,9 +52463,9 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_BasicAutoCorr_spectralFunction(PyObject *self, PyObject *args) {
+SWIGINTERN PyObject *_wrap_K_CorrelationModel_spectralFunction(PyObject *self, PyObject *args) {
   PyObject *resultobj = 0;
-  BasicAutoCorr *arg1 = (BasicAutoCorr *) 0 ;
+  K_CorrelationModel *arg1 = (K_CorrelationModel *) 0 ;
   R3 *arg2 = 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
@@ -52475,23 +52475,23 @@ SWIGINTERN PyObject *_wrap_BasicAutoCorr_spectralFunction(PyObject *self, PyObje
   double result;
   
   (void)self;
-  if (!SWIG_Python_UnpackTuple(args, "BasicAutoCorr_spectralFunction", 2, 2, swig_obj)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_BasicAutoCorr, 0 |  0 );
+  if (!SWIG_Python_UnpackTuple(args, "K_CorrelationModel_spectralFunction", 2, 2, swig_obj)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_K_CorrelationModel, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "BasicAutoCorr_spectralFunction" "', argument " "1"" of type '" "BasicAutoCorr const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "K_CorrelationModel_spectralFunction" "', argument " "1"" of type '" "K_CorrelationModel const *""'"); 
   }
-  arg1 = reinterpret_cast< BasicAutoCorr * >(argp1);
+  arg1 = reinterpret_cast< K_CorrelationModel * >(argp1);
   res2 = SWIG_ConvertPtr(swig_obj[1], &argp2, SWIGTYPE_p_Vec3T_double_t,  0  | 0);
   if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "BasicAutoCorr_spectralFunction" "', argument " "2"" of type '" "R3 const &""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "K_CorrelationModel_spectralFunction" "', argument " "2"" of type '" "R3 const &""'"); 
   }
   if (!argp2) {
-    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "BasicAutoCorr_spectralFunction" "', argument " "2"" of type '" "R3 const &""'"); 
+    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "K_CorrelationModel_spectralFunction" "', argument " "2"" of type '" "R3 const &""'"); 
   }
   arg2 = reinterpret_cast< R3 * >(argp2);
   {
     try {
-      result = (double)((BasicAutoCorr const *)arg1)->spectralFunction((R3 const &)*arg2);
+      result = (double)((K_CorrelationModel const *)arg1)->spectralFunction((R3 const &)*arg2);
     } catch (const std::exception& ex) {
       // message shown in the Python interpreter
       const std::string msg {
@@ -52507,9 +52507,9 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_BasicAutoCorr_corrFunction(PyObject *self, PyObject *args) {
+SWIGINTERN PyObject *_wrap_K_CorrelationModel_corrFunction(PyObject *self, PyObject *args) {
   PyObject *resultobj = 0;
-  BasicAutoCorr *arg1 = (BasicAutoCorr *) 0 ;
+  K_CorrelationModel *arg1 = (K_CorrelationModel *) 0 ;
   R3 *arg2 = 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
@@ -52519,23 +52519,23 @@ SWIGINTERN PyObject *_wrap_BasicAutoCorr_corrFunction(PyObject *self, PyObject *
   double result;
   
   (void)self;
-  if (!SWIG_Python_UnpackTuple(args, "BasicAutoCorr_corrFunction", 2, 2, swig_obj)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_BasicAutoCorr, 0 |  0 );
+  if (!SWIG_Python_UnpackTuple(args, "K_CorrelationModel_corrFunction", 2, 2, swig_obj)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_K_CorrelationModel, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "BasicAutoCorr_corrFunction" "', argument " "1"" of type '" "BasicAutoCorr const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "K_CorrelationModel_corrFunction" "', argument " "1"" of type '" "K_CorrelationModel const *""'"); 
   }
-  arg1 = reinterpret_cast< BasicAutoCorr * >(argp1);
+  arg1 = reinterpret_cast< K_CorrelationModel * >(argp1);
   res2 = SWIG_ConvertPtr(swig_obj[1], &argp2, SWIGTYPE_p_Vec3T_double_t,  0  | 0);
   if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "BasicAutoCorr_corrFunction" "', argument " "2"" of type '" "R3 const &""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "K_CorrelationModel_corrFunction" "', argument " "2"" of type '" "R3 const &""'"); 
   }
   if (!argp2) {
-    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "BasicAutoCorr_corrFunction" "', argument " "2"" of type '" "R3 const &""'"); 
+    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "K_CorrelationModel_corrFunction" "', argument " "2"" of type '" "R3 const &""'"); 
   }
   arg2 = reinterpret_cast< R3 * >(argp2);
   {
     try {
-      result = (double)((BasicAutoCorr const *)arg1)->corrFunction((R3 const &)*arg2);
+      result = (double)((K_CorrelationModel const *)arg1)->corrFunction((R3 const &)*arg2);
     } catch (const std::exception& ex) {
       // message shown in the Python interpreter
       const std::string msg {
@@ -52551,9 +52551,9 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_BasicAutoCorr_setSigma(PyObject *self, PyObject *args) {
+SWIGINTERN PyObject *_wrap_K_CorrelationModel_setSigma(PyObject *self, PyObject *args) {
   PyObject *resultobj = 0;
-  BasicAutoCorr *arg1 = (BasicAutoCorr *) 0 ;
+  K_CorrelationModel *arg1 = (K_CorrelationModel *) 0 ;
   double arg2 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
@@ -52562,15 +52562,15 @@ SWIGINTERN PyObject *_wrap_BasicAutoCorr_setSigma(PyObject *self, PyObject *args
   PyObject *swig_obj[2] ;
   
   (void)self;
-  if (!SWIG_Python_UnpackTuple(args, "BasicAutoCorr_setSigma", 2, 2, swig_obj)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_BasicAutoCorr, 0 |  0 );
+  if (!SWIG_Python_UnpackTuple(args, "K_CorrelationModel_setSigma", 2, 2, swig_obj)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_K_CorrelationModel, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "BasicAutoCorr_setSigma" "', argument " "1"" of type '" "BasicAutoCorr *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "K_CorrelationModel_setSigma" "', argument " "1"" of type '" "K_CorrelationModel *""'"); 
   }
-  arg1 = reinterpret_cast< BasicAutoCorr * >(argp1);
+  arg1 = reinterpret_cast< K_CorrelationModel * >(argp1);
   ecode2 = SWIG_AsVal_double(swig_obj[1], &val2);
   if (!SWIG_IsOK(ecode2)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "BasicAutoCorr_setSigma" "', argument " "2"" of type '" "double""'");
+    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "K_CorrelationModel_setSigma" "', argument " "2"" of type '" "double""'");
   } 
   arg2 = static_cast< double >(val2);
   {
@@ -52591,9 +52591,9 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_BasicAutoCorr_sigma(PyObject *self, PyObject *args) {
+SWIGINTERN PyObject *_wrap_K_CorrelationModel_sigma(PyObject *self, PyObject *args) {
   PyObject *resultobj = 0;
-  BasicAutoCorr *arg1 = (BasicAutoCorr *) 0 ;
+  K_CorrelationModel *arg1 = (K_CorrelationModel *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject *swig_obj[1] ;
@@ -52602,14 +52602,14 @@ SWIGINTERN PyObject *_wrap_BasicAutoCorr_sigma(PyObject *self, PyObject *args) {
   (void)self;
   if (!args) SWIG_fail;
   swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_BasicAutoCorr, 0 |  0 );
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_K_CorrelationModel, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "BasicAutoCorr_sigma" "', argument " "1"" of type '" "BasicAutoCorr const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "K_CorrelationModel_sigma" "', argument " "1"" of type '" "K_CorrelationModel const *""'"); 
   }
-  arg1 = reinterpret_cast< BasicAutoCorr * >(argp1);
+  arg1 = reinterpret_cast< K_CorrelationModel * >(argp1);
   {
     try {
-      result = (double)((BasicAutoCorr const *)arg1)->sigma();
+      result = (double)((K_CorrelationModel const *)arg1)->sigma();
     } catch (const std::exception& ex) {
       // message shown in the Python interpreter
       const std::string msg {
@@ -52625,9 +52625,9 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_BasicAutoCorr_setHurstParameter(PyObject *self, PyObject *args) {
+SWIGINTERN PyObject *_wrap_K_CorrelationModel_setHurstParameter(PyObject *self, PyObject *args) {
   PyObject *resultobj = 0;
-  BasicAutoCorr *arg1 = (BasicAutoCorr *) 0 ;
+  K_CorrelationModel *arg1 = (K_CorrelationModel *) 0 ;
   double arg2 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
@@ -52636,15 +52636,15 @@ SWIGINTERN PyObject *_wrap_BasicAutoCorr_setHurstParameter(PyObject *self, PyObj
   PyObject *swig_obj[2] ;
   
   (void)self;
-  if (!SWIG_Python_UnpackTuple(args, "BasicAutoCorr_setHurstParameter", 2, 2, swig_obj)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_BasicAutoCorr, 0 |  0 );
+  if (!SWIG_Python_UnpackTuple(args, "K_CorrelationModel_setHurstParameter", 2, 2, swig_obj)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_K_CorrelationModel, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "BasicAutoCorr_setHurstParameter" "', argument " "1"" of type '" "BasicAutoCorr *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "K_CorrelationModel_setHurstParameter" "', argument " "1"" of type '" "K_CorrelationModel *""'"); 
   }
-  arg1 = reinterpret_cast< BasicAutoCorr * >(argp1);
+  arg1 = reinterpret_cast< K_CorrelationModel * >(argp1);
   ecode2 = SWIG_AsVal_double(swig_obj[1], &val2);
   if (!SWIG_IsOK(ecode2)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "BasicAutoCorr_setHurstParameter" "', argument " "2"" of type '" "double""'");
+    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "K_CorrelationModel_setHurstParameter" "', argument " "2"" of type '" "double""'");
   } 
   arg2 = static_cast< double >(val2);
   {
@@ -52665,9 +52665,9 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_BasicAutoCorr_hurst(PyObject *self, PyObject *args) {
+SWIGINTERN PyObject *_wrap_K_CorrelationModel_hurst(PyObject *self, PyObject *args) {
   PyObject *resultobj = 0;
-  BasicAutoCorr *arg1 = (BasicAutoCorr *) 0 ;
+  K_CorrelationModel *arg1 = (K_CorrelationModel *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject *swig_obj[1] ;
@@ -52676,14 +52676,14 @@ SWIGINTERN PyObject *_wrap_BasicAutoCorr_hurst(PyObject *self, PyObject *args) {
   (void)self;
   if (!args) SWIG_fail;
   swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_BasicAutoCorr, 0 |  0 );
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_K_CorrelationModel, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "BasicAutoCorr_hurst" "', argument " "1"" of type '" "BasicAutoCorr const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "K_CorrelationModel_hurst" "', argument " "1"" of type '" "K_CorrelationModel const *""'"); 
   }
-  arg1 = reinterpret_cast< BasicAutoCorr * >(argp1);
+  arg1 = reinterpret_cast< K_CorrelationModel * >(argp1);
   {
     try {
-      result = (double)((BasicAutoCorr const *)arg1)->hurst();
+      result = (double)((K_CorrelationModel const *)arg1)->hurst();
     } catch (const std::exception& ex) {
       // message shown in the Python interpreter
       const std::string msg {
@@ -52699,9 +52699,9 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_BasicAutoCorr_setLatteralCorrLength(PyObject *self, PyObject *args) {
+SWIGINTERN PyObject *_wrap_K_CorrelationModel_setLatteralCorrLength(PyObject *self, PyObject *args) {
   PyObject *resultobj = 0;
-  BasicAutoCorr *arg1 = (BasicAutoCorr *) 0 ;
+  K_CorrelationModel *arg1 = (K_CorrelationModel *) 0 ;
   double arg2 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
@@ -52710,15 +52710,15 @@ SWIGINTERN PyObject *_wrap_BasicAutoCorr_setLatteralCorrLength(PyObject *self, P
   PyObject *swig_obj[2] ;
   
   (void)self;
-  if (!SWIG_Python_UnpackTuple(args, "BasicAutoCorr_setLatteralCorrLength", 2, 2, swig_obj)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_BasicAutoCorr, 0 |  0 );
+  if (!SWIG_Python_UnpackTuple(args, "K_CorrelationModel_setLatteralCorrLength", 2, 2, swig_obj)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_K_CorrelationModel, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "BasicAutoCorr_setLatteralCorrLength" "', argument " "1"" of type '" "BasicAutoCorr *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "K_CorrelationModel_setLatteralCorrLength" "', argument " "1"" of type '" "K_CorrelationModel *""'"); 
   }
-  arg1 = reinterpret_cast< BasicAutoCorr * >(argp1);
+  arg1 = reinterpret_cast< K_CorrelationModel * >(argp1);
   ecode2 = SWIG_AsVal_double(swig_obj[1], &val2);
   if (!SWIG_IsOK(ecode2)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "BasicAutoCorr_setLatteralCorrLength" "', argument " "2"" of type '" "double""'");
+    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "K_CorrelationModel_setLatteralCorrLength" "', argument " "2"" of type '" "double""'");
   } 
   arg2 = static_cast< double >(val2);
   {
@@ -52739,9 +52739,9 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_BasicAutoCorr_lateralCorrLength(PyObject *self, PyObject *args) {
+SWIGINTERN PyObject *_wrap_K_CorrelationModel_lateralCorrLength(PyObject *self, PyObject *args) {
   PyObject *resultobj = 0;
-  BasicAutoCorr *arg1 = (BasicAutoCorr *) 0 ;
+  K_CorrelationModel *arg1 = (K_CorrelationModel *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject *swig_obj[1] ;
@@ -52750,14 +52750,14 @@ SWIGINTERN PyObject *_wrap_BasicAutoCorr_lateralCorrLength(PyObject *self, PyObj
   (void)self;
   if (!args) SWIG_fail;
   swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_BasicAutoCorr, 0 |  0 );
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_K_CorrelationModel, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "BasicAutoCorr_lateralCorrLength" "', argument " "1"" of type '" "BasicAutoCorr const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "K_CorrelationModel_lateralCorrLength" "', argument " "1"" of type '" "K_CorrelationModel const *""'"); 
   }
-  arg1 = reinterpret_cast< BasicAutoCorr * >(argp1);
+  arg1 = reinterpret_cast< K_CorrelationModel * >(argp1);
   {
     try {
-      result = (double)((BasicAutoCorr const *)arg1)->lateralCorrLength();
+      result = (double)((K_CorrelationModel const *)arg1)->lateralCorrLength();
     } catch (const std::exception& ex) {
       // message shown in the Python interpreter
       const std::string msg {
@@ -52773,9 +52773,9 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_delete_BasicAutoCorr(PyObject *self, PyObject *args) {
+SWIGINTERN PyObject *_wrap_delete_K_CorrelationModel(PyObject *self, PyObject *args) {
   PyObject *resultobj = 0;
-  BasicAutoCorr *arg1 = (BasicAutoCorr *) 0 ;
+  K_CorrelationModel *arg1 = (K_CorrelationModel *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject *swig_obj[1] ;
@@ -52783,11 +52783,11 @@ SWIGINTERN PyObject *_wrap_delete_BasicAutoCorr(PyObject *self, PyObject *args)
   (void)self;
   if (!args) SWIG_fail;
   swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_BasicAutoCorr, SWIG_POINTER_DISOWN |  0 );
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_K_CorrelationModel, SWIG_POINTER_DISOWN |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_BasicAutoCorr" "', argument " "1"" of type '" "BasicAutoCorr *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_K_CorrelationModel" "', argument " "1"" of type '" "K_CorrelationModel *""'"); 
   }
-  arg1 = reinterpret_cast< BasicAutoCorr * >(argp1);
+  arg1 = reinterpret_cast< K_CorrelationModel * >(argp1);
   {
     try {
       delete arg1;
@@ -52806,14 +52806,14 @@ fail:
 }
 
 
-SWIGINTERN PyObject *BasicAutoCorr_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *K_CorrelationModel_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
   if (!SWIG_Python_UnpackTuple(args, "swigregister", 1, 1, &obj)) return NULL;
-  SWIG_TypeNewClientData(SWIGTYPE_p_BasicAutoCorr, SWIG_NewClientData(obj));
+  SWIG_TypeNewClientData(SWIGTYPE_p_K_CorrelationModel, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
 
-SWIGINTERN PyObject *BasicAutoCorr_swiginit(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *K_CorrelationModel_swiginit(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   return SWIG_Python_InitShadowInstance(args);
 }
 
@@ -73549,22 +73549,22 @@ static PyMethodDef SwigMethods[] = {
 	 { "AutocorrelationModel_corrFunction", _wrap_AutocorrelationModel_corrFunction, METH_VARARGS, "AutocorrelationModel_corrFunction(AutocorrelationModel self, R3 k) -> double"},
 	 { "delete_AutocorrelationModel", _wrap_delete_AutocorrelationModel, METH_O, "delete_AutocorrelationModel(AutocorrelationModel self)"},
 	 { "AutocorrelationModel_swigregister", AutocorrelationModel_swigregister, METH_O, NULL},
-	 { "new_BasicAutoCorr", _wrap_new_BasicAutoCorr, METH_VARARGS, "BasicAutoCorr(double sigma=0, double hurst=0, double lateralCorrLength=0)"},
-	 { "BasicAutoCorr_clone", _wrap_BasicAutoCorr_clone, METH_O, "BasicAutoCorr_clone(BasicAutoCorr self) -> BasicAutoCorr"},
-	 { "BasicAutoCorr_className", _wrap_BasicAutoCorr_className, METH_O, "BasicAutoCorr_className(BasicAutoCorr self) -> std::string"},
-	 { "BasicAutoCorr_parDefs", _wrap_BasicAutoCorr_parDefs, METH_O, "BasicAutoCorr_parDefs(BasicAutoCorr self) -> std::vector< ParaMeta,std::allocator< ParaMeta > >"},
-	 { "BasicAutoCorr_validate", _wrap_BasicAutoCorr_validate, METH_O, "BasicAutoCorr_validate(BasicAutoCorr self) -> std::string"},
-	 { "BasicAutoCorr_spectralFunction", _wrap_BasicAutoCorr_spectralFunction, METH_VARARGS, "BasicAutoCorr_spectralFunction(BasicAutoCorr self, R3 k) -> double"},
-	 { "BasicAutoCorr_corrFunction", _wrap_BasicAutoCorr_corrFunction, METH_VARARGS, "BasicAutoCorr_corrFunction(BasicAutoCorr self, R3 k) -> double"},
-	 { "BasicAutoCorr_setSigma", _wrap_BasicAutoCorr_setSigma, METH_VARARGS, "BasicAutoCorr_setSigma(BasicAutoCorr self, double sigma)"},
-	 { "BasicAutoCorr_sigma", _wrap_BasicAutoCorr_sigma, METH_O, "BasicAutoCorr_sigma(BasicAutoCorr self) -> double"},
-	 { "BasicAutoCorr_setHurstParameter", _wrap_BasicAutoCorr_setHurstParameter, METH_VARARGS, "BasicAutoCorr_setHurstParameter(BasicAutoCorr self, double hurstParameter)"},
-	 { "BasicAutoCorr_hurst", _wrap_BasicAutoCorr_hurst, METH_O, "BasicAutoCorr_hurst(BasicAutoCorr self) -> double"},
-	 { "BasicAutoCorr_setLatteralCorrLength", _wrap_BasicAutoCorr_setLatteralCorrLength, METH_VARARGS, "BasicAutoCorr_setLatteralCorrLength(BasicAutoCorr self, double lateralCorrLen)"},
-	 { "BasicAutoCorr_lateralCorrLength", _wrap_BasicAutoCorr_lateralCorrLength, METH_O, "BasicAutoCorr_lateralCorrLength(BasicAutoCorr self) -> double"},
-	 { "delete_BasicAutoCorr", _wrap_delete_BasicAutoCorr, METH_O, "delete_BasicAutoCorr(BasicAutoCorr self)"},
-	 { "BasicAutoCorr_swigregister", BasicAutoCorr_swigregister, METH_O, NULL},
-	 { "BasicAutoCorr_swiginit", BasicAutoCorr_swiginit, METH_VARARGS, NULL},
+	 { "new_K_CorrelationModel", _wrap_new_K_CorrelationModel, METH_VARARGS, "K_CorrelationModel(double sigma=0, double hurst=0, double lateralCorrLength=0)"},
+	 { "K_CorrelationModel_clone", _wrap_K_CorrelationModel_clone, METH_O, "K_CorrelationModel_clone(K_CorrelationModel self) -> K_CorrelationModel"},
+	 { "K_CorrelationModel_className", _wrap_K_CorrelationModel_className, METH_O, "K_CorrelationModel_className(K_CorrelationModel self) -> std::string"},
+	 { "K_CorrelationModel_parDefs", _wrap_K_CorrelationModel_parDefs, METH_O, "K_CorrelationModel_parDefs(K_CorrelationModel self) -> std::vector< ParaMeta,std::allocator< ParaMeta > >"},
+	 { "K_CorrelationModel_validate", _wrap_K_CorrelationModel_validate, METH_O, "K_CorrelationModel_validate(K_CorrelationModel self) -> std::string"},
+	 { "K_CorrelationModel_spectralFunction", _wrap_K_CorrelationModel_spectralFunction, METH_VARARGS, "K_CorrelationModel_spectralFunction(K_CorrelationModel self, R3 k) -> double"},
+	 { "K_CorrelationModel_corrFunction", _wrap_K_CorrelationModel_corrFunction, METH_VARARGS, "K_CorrelationModel_corrFunction(K_CorrelationModel self, R3 k) -> double"},
+	 { "K_CorrelationModel_setSigma", _wrap_K_CorrelationModel_setSigma, METH_VARARGS, "K_CorrelationModel_setSigma(K_CorrelationModel self, double sigma)"},
+	 { "K_CorrelationModel_sigma", _wrap_K_CorrelationModel_sigma, METH_O, "K_CorrelationModel_sigma(K_CorrelationModel self) -> double"},
+	 { "K_CorrelationModel_setHurstParameter", _wrap_K_CorrelationModel_setHurstParameter, METH_VARARGS, "K_CorrelationModel_setHurstParameter(K_CorrelationModel self, double hurstParameter)"},
+	 { "K_CorrelationModel_hurst", _wrap_K_CorrelationModel_hurst, METH_O, "K_CorrelationModel_hurst(K_CorrelationModel self) -> double"},
+	 { "K_CorrelationModel_setLatteralCorrLength", _wrap_K_CorrelationModel_setLatteralCorrLength, METH_VARARGS, "K_CorrelationModel_setLatteralCorrLength(K_CorrelationModel self, double lateralCorrLen)"},
+	 { "K_CorrelationModel_lateralCorrLength", _wrap_K_CorrelationModel_lateralCorrLength, METH_O, "K_CorrelationModel_lateralCorrLength(K_CorrelationModel self) -> double"},
+	 { "delete_K_CorrelationModel", _wrap_delete_K_CorrelationModel, METH_O, "delete_K_CorrelationModel(K_CorrelationModel self)"},
+	 { "K_CorrelationModel_swigregister", K_CorrelationModel_swigregister, METH_O, NULL},
+	 { "K_CorrelationModel_swiginit", K_CorrelationModel_swiginit, METH_VARARGS, NULL},
 	 { "InterlayerModel_clone", _wrap_InterlayerModel_clone, METH_O, "InterlayerModel_clone(InterlayerModel self) -> InterlayerModel"},
 	 { "InterlayerModel_transient", _wrap_InterlayerModel_transient, METH_VARARGS, "InterlayerModel_transient(InterlayerModel self, double x, double sigma) -> double"},
 	 { "InterlayerModel_distribution", _wrap_InterlayerModel_distribution, METH_VARARGS, "InterlayerModel_distribution(InterlayerModel self, double x, double sigma) -> double"},
@@ -74198,8 +74198,8 @@ static PyMethodDef SwigMethods[] = {
 
 /* -------- TYPE CONVERSION AND EQUIVALENCE RULES (BEGIN) -------- */
 
-static void *_p_BasicAutoCorrTo_p_AutocorrelationModel(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((AutocorrelationModel *)  ((BasicAutoCorr *) x));
+static void *_p_K_CorrelationModelTo_p_AutocorrelationModel(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((AutocorrelationModel *)  ((K_CorrelationModel *) x));
 }
 static void *_p_AutocorrelationModelTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *)  ((AutocorrelationModel *) x));
@@ -74210,9 +74210,6 @@ static void *_p_BarGaussTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory))
 static void *_p_BarLorentzTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *) (ISampleNode *)(IFormfactor *)(IProfileRipple *)(IProfileRectangularRipple *) ((BarLorentz *) x));
 }
-static void *_p_BasicAutoCorrTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((ICloneable *) (AutocorrelationModel *) ((BasicAutoCorr *) x));
-}
 static void *_p_BasicLattice2DTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *) (Lattice2D *) ((BasicLattice2D *) x));
 }
@@ -74357,6 +74354,9 @@ static void *_p_IsotropicGaussPeakShapeTo_p_ICloneable(void *x, int *SWIGUNUSEDP
 static void *_p_IsotropicLorentzPeakShapeTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *) (IPeakShape *) ((IsotropicLorentzPeakShape *) x));
 }
+static void *_p_K_CorrelationModelTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((ICloneable *) (AutocorrelationModel *) ((K_CorrelationModel *) x));
+}
 static void *_p_Lattice2DTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *)  ((Lattice2D *) x));
 }
@@ -74717,9 +74717,6 @@ static void *_p_BarGaussTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
 static void *_p_BarLorentzTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INode *) (ISampleNode *)(IFormfactor *)(IProfileRipple *)(IProfileRectangularRipple *) ((BarLorentz *) x));
 }
-static void *_p_BasicAutoCorrTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INode *) (AutocorrelationModel *) ((BasicAutoCorr *) x));
-}
 static void *_p_BasicLattice2DTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INode *) (Lattice2D *) ((BasicLattice2D *) x));
 }
@@ -74864,6 +74861,9 @@ static void *_p_IsotropicGaussPeakShapeTo_p_INode(void *x, int *SWIGUNUSEDPARM(n
 static void *_p_IsotropicLorentzPeakShapeTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INode *) (IPeakShape *) ((IsotropicLorentzPeakShape *) x));
 }
+static void *_p_K_CorrelationModelTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INode *) (AutocorrelationModel *) ((K_CorrelationModel *) x));
+}
 static void *_p_Lattice2DTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INode *)  ((Lattice2D *) x));
 }
@@ -75305,7 +75305,6 @@ static void *_p_SquareLattice2DTo_p_Lattice2D(void *x, int *SWIGUNUSEDPARM(newme
 static swig_type_info _swigt__p_AutocorrelationModel = {"_p_AutocorrelationModel", "AutocorrelationModel *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_BarGauss = {"_p_BarGauss", "BarGauss *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_BarLorentz = {"_p_BarLorentz", "BarLorentz *", 0, 0, (void*)0, 0};
-static swig_type_info _swigt__p_BasicAutoCorr = {"_p_BasicAutoCorr", "BasicAutoCorr *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_BasicLattice2D = {"_p_BasicLattice2D", "BasicLattice2D *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_Bipyramid4 = {"_p_Bipyramid4", "Bipyramid4 *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_Box = {"_p_Box", "Box *", 0, 0, (void*)0, 0};
@@ -75358,6 +75357,7 @@ static swig_type_info _swigt__p_InterferenceRadialParacrystal = {"_p_Interferenc
 static swig_type_info _swigt__p_InterlayerModel = {"_p_InterlayerModel", "InterlayerModel *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_IsotropicGaussPeakShape = {"_p_IsotropicGaussPeakShape", "IsotropicGaussPeakShape *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_IsotropicLorentzPeakShape = {"_p_IsotropicLorentzPeakShape", "IsotropicLorentzPeakShape *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_K_CorrelationModel = {"_p_K_CorrelationModel", "K_CorrelationModel *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_Lattice2D = {"_p_Lattice2D", "Lattice2D *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_Lattice2D__ReciprocalBases = {"_p_Lattice2D__ReciprocalBases", "Lattice2D::ReciprocalBases *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_Lattice3D = {"_p_Lattice3D", "Lattice3D *", 0, 0, (void*)0, 0};
@@ -75470,7 +75470,6 @@ static swig_type_info *swig_type_initial[] = {
   &_swigt__p_AutocorrelationModel,
   &_swigt__p_BarGauss,
   &_swigt__p_BarLorentz,
-  &_swigt__p_BasicAutoCorr,
   &_swigt__p_BasicLattice2D,
   &_swigt__p_Bipyramid4,
   &_swigt__p_Box,
@@ -75523,6 +75522,7 @@ static swig_type_info *swig_type_initial[] = {
   &_swigt__p_InterlayerModel,
   &_swigt__p_IsotropicGaussPeakShape,
   &_swigt__p_IsotropicLorentzPeakShape,
+  &_swigt__p_K_CorrelationModel,
   &_swigt__p_Lattice2D,
   &_swigt__p_Lattice2D__ReciprocalBases,
   &_swigt__p_Lattice3D,
@@ -75632,10 +75632,9 @@ static swig_type_info *swig_type_initial[] = {
   &_swigt__p_value_type,
 };
 
-static swig_cast_info _swigc__p_AutocorrelationModel[] = {  {&_swigt__p_AutocorrelationModel, 0, 0, 0},  {&_swigt__p_BasicAutoCorr, _p_BasicAutoCorrTo_p_AutocorrelationModel, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_AutocorrelationModel[] = {  {&_swigt__p_AutocorrelationModel, 0, 0, 0},  {&_swigt__p_K_CorrelationModel, _p_K_CorrelationModelTo_p_AutocorrelationModel, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_BarGauss[] = {  {&_swigt__p_BarGauss, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_BarLorentz[] = {  {&_swigt__p_BarLorentz, 0, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_BasicAutoCorr[] = {  {&_swigt__p_BasicAutoCorr, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_BasicLattice2D[] = {  {&_swigt__p_BasicLattice2D, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_Bipyramid4[] = {  {&_swigt__p_Bipyramid4, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_Box[] = {  {&_swigt__p_Box, 0, 0, 0},{0, 0, 0, 0}};
@@ -75657,14 +75656,14 @@ static swig_cast_info _swigc__p_GaussSphere[] = {  {&_swigt__p_GaussSphere, 0, 0
 static swig_cast_info _swigc__p_HemiEllipsoid[] = {  {&_swigt__p_HemiEllipsoid, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_HexagonalLattice2D[] = {  {&_swigt__p_HexagonalLattice2D, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_HorizontalCylinder[] = {  {&_swigt__p_HorizontalCylinder, 0, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_ICloneable[] = {  {&_swigt__p_ICloneable, 0, 0, 0},  {&_swigt__p_AutocorrelationModel, _p_AutocorrelationModelTo_p_ICloneable, 0, 0},  {&_swigt__p_BarGauss, _p_BarGaussTo_p_ICloneable, 0, 0},  {&_swigt__p_BarLorentz, _p_BarLorentzTo_p_ICloneable, 0, 0},  {&_swigt__p_BasicAutoCorr, _p_BasicAutoCorrTo_p_ICloneable, 0, 0},  {&_swigt__p_BasicLattice2D, _p_BasicLattice2DTo_p_ICloneable, 0, 0},  {&_swigt__p_Bipyramid4, _p_Bipyramid4To_p_ICloneable, 0, 0},  {&_swigt__p_Box, _p_BoxTo_p_ICloneable, 0, 0},  {&_swigt__p_CantellatedCube, _p_CantellatedCubeTo_p_ICloneable, 0, 0},  {&_swigt__p_Compound, _p_CompoundTo_p_ICloneable, 0, 0},  {&_swigt__p_Cone, _p_ConeTo_p_ICloneable, 0, 0},  {&_swigt__p_CoreAndShell, _p_CoreAndShellTo_p_ICloneable, 0, 0},  {&_swigt__p_CosineRippleBox, _p_CosineRippleBoxTo_p_ICloneable, 0, 0},  {&_swigt__p_CosineRippleGauss, _p_CosineRippleGaussTo_p_ICloneable, 0, 0},  {&_swigt__p_CosineRippleLorentz, _p_CosineRippleLorentzTo_p_ICloneable, 0, 0},  {&_swigt__p_Crystal, _p_CrystalTo_p_ICloneable, 0, 0},  {&_swigt__p_Cylinder, _p_CylinderTo_p_ICloneable, 0, 0},  {&_swigt__p_Dodecahedron, _p_DodecahedronTo_p_ICloneable, 0, 0},  {&_swigt__p_EllipsoidalCylinder, _p_EllipsoidalCylinderTo_p_ICloneable, 0, 0},  {&_swigt__p_ErfInterlayer, _p_ErfInterlayerTo_p_ICloneable, 0, 0},  {&_swigt__p_FuzzySphere, _p_FuzzySphereTo_p_ICloneable, 0, 0},  {&_swigt__p_GaussFisherPeakShape, _p_GaussFisherPeakShapeTo_p_ICloneable, 0, 0},  {&_swigt__p_GaussSphere, _p_GaussSphereTo_p_ICloneable, 0, 0},  {&_swigt__p_HemiEllipsoid, _p_HemiEllipsoidTo_p_ICloneable, 0, 0},  {&_swigt__p_HexagonalLattice2D, _p_HexagonalLattice2DTo_p_ICloneable, 0, 0},  {&_swigt__p_HorizontalCylinder, _p_HorizontalCylinderTo_p_ICloneable, 0, 0},  {&_swigt__p_ICosineRipple, _p_ICosineRippleTo_p_ICloneable, 0, 0},  {&_swigt__p_IFormfactor, _p_IFormfactorTo_p_ICloneable, 0, 0},  {&_swigt__p_IFormfactorPolyhedron, _p_IFormfactorPolyhedronTo_p_ICloneable, 0, 0},  {&_swigt__p_IFormfactorPrism, _p_IFormfactorPrismTo_p_ICloneable, 0, 0},  {&_swigt__p_IInterference, _p_IInterferenceTo_p_ICloneable, 0, 0},  {&_swigt__p_IParticle, _p_IParticleTo_p_ICloneable, 0, 0},  {&_swigt__p_IPeakShape, _p_IPeakShapeTo_p_ICloneable, 0, 0},  {&_swigt__p_IProfile1D, _p_IProfile1DTo_p_ICloneable, 0, 0},  {&_swigt__p_IProfile2D, _p_IProfile2DTo_p_ICloneable, 0, 0},  {&_swigt__p_IProfileRectangularRipple, _p_IProfileRectangularRippleTo_p_ICloneable, 0, 0},  {&_swigt__p_IProfileRipple, _p_IProfileRippleTo_p_ICloneable, 0, 0},  {&_swigt__p_IRotation, _p_IRotationTo_p_ICloneable, 0, 0},  {&_swigt__p_ISampleNode, _p_ISampleNodeTo_p_ICloneable, 0, 0},  {&_swigt__p_ISawtoothRipple, _p_ISawtoothRippleTo_p_ICloneable, 0, 0},  {&_swigt__p_Icosahedron, _p_IcosahedronTo_p_ICloneable, 0, 0},  {&_swigt__p_IdentityRotation, _p_IdentityRotationTo_p_ICloneable, 0, 0},  {&_swigt__p_Interference1DLattice, _p_Interference1DLatticeTo_p_ICloneable, 0, 0},  {&_swigt__p_Interference2DLattice, _p_Interference2DLatticeTo_p_ICloneable, 0, 0},  {&_swigt__p_Interference2DParacrystal, _p_Interference2DParacrystalTo_p_ICloneable, 0, 0},  {&_swigt__p_Interference2DSuperLattice, _p_Interference2DSuperLatticeTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFinite2DLattice, _p_InterferenceFinite2DLatticeTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceHardDisk, _p_InterferenceHardDiskTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceNone, _p_InterferenceNoneTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceRadialParacrystal, _p_InterferenceRadialParacrystalTo_p_ICloneable, 0, 0},  {&_swigt__p_InterlayerModel, _p_InterlayerModelTo_p_ICloneable, 0, 0},  {&_swigt__p_IsotropicGaussPeakShape, _p_IsotropicGaussPeakShapeTo_p_ICloneable, 0, 0},  {&_swigt__p_IsotropicLorentzPeakShape, _p_IsotropicLorentzPeakShapeTo_p_ICloneable, 0, 0},  {&_swigt__p_Lattice2D, _p_Lattice2DTo_p_ICloneable, 0, 0},  {&_swigt__p_Layer, _p_LayerTo_p_ICloneable, 0, 0},  {&_swigt__p_LayerRoughness, _p_LayerRoughnessTo_p_ICloneable, 0, 0},  {&_swigt__p_LongBoxGauss, _p_LongBoxGaussTo_p_ICloneable, 0, 0},  {&_swigt__p_LongBoxLorentz, _p_LongBoxLorentzTo_p_ICloneable, 0, 0},  {&_swigt__p_LorentzFisherPeakShape, _p_LorentzFisherPeakShapeTo_p_ICloneable, 0, 0},  {&_swigt__p_Mesocrystal, _p_MesocrystalTo_p_ICloneable, 0, 0},  {&_swigt__p_MisesFisherGaussPeakShape, _p_MisesFisherGaussPeakShapeTo_p_ICloneable, 0, 0},  {&_swigt__p_MisesGaussPeakShape, _p_MisesGaussPeakShapeTo_p_ICloneable, 0, 0},  {&_swigt__p_MultiLayer, _p_MultiLayerTo_p_ICloneable, 0, 0},  {&_swigt__p_Particle, _p_ParticleTo_p_ICloneable, 0, 0},  {&_swigt__p_ParticleLayout, _p_ParticleLayoutTo_p_ICloneable, 0, 0},  {&_swigt__p_PlatonicOctahedron, _p_PlatonicOctahedronTo_p_ICloneable, 0, 0},  {&_swigt__p_PlatonicTetrahedron, _p_PlatonicTetrahedronTo_p_ICloneable, 0, 0},  {&_swigt__p_Prism3, _p_Prism3To_p_ICloneable, 0, 0},  {&_swigt__p_Prism6, _p_Prism6To_p_ICloneable, 0, 0},  {&_swigt__p_Profile1DCauchy, _p_Profile1DCauchyTo_p_ICloneable, 0, 0},  {&_swigt__p_Profile1DCosine, _p_Profile1DCosineTo_p_ICloneable, 0, 0},  {&_swigt__p_Profile1DGate, _p_Profile1DGateTo_p_ICloneable, 0, 0},  {&_swigt__p_Profile1DGauss, _p_Profile1DGaussTo_p_ICloneable, 0, 0},  {&_swigt__p_Profile1DTriangle, _p_Profile1DTriangleTo_p_ICloneable, 0, 0},  {&_swigt__p_Profile1DVoigt, _p_Profile1DVoigtTo_p_ICloneable, 0, 0},  {&_swigt__p_Profile2DCauchy, _p_Profile2DCauchyTo_p_ICloneable, 0, 0},  {&_swigt__p_Profile2DCone, _p_Profile2DConeTo_p_ICloneable, 0, 0},  {&_swigt__p_Profile2DGate, _p_Profile2DGateTo_p_ICloneable, 0, 0},  {&_swigt__p_Profile2DGauss, _p_Profile2DGaussTo_p_ICloneable, 0, 0},  {&_swigt__p_Profile2DVoigt, _p_Profile2DVoigtTo_p_ICloneable, 0, 0},  {&_swigt__p_Pyramid2, _p_Pyramid2To_p_ICloneable, 0, 0},  {&_swigt__p_Pyramid3, _p_Pyramid3To_p_ICloneable, 0, 0},  {&_swigt__p_Pyramid4, _p_Pyramid4To_p_ICloneable, 0, 0},  {&_swigt__p_Pyramid6, _p_Pyramid6To_p_ICloneable, 0, 0},  {&_swigt__p_RotationEuler, _p_RotationEulerTo_p_ICloneable, 0, 0},  {&_swigt__p_RotationX, _p_RotationXTo_p_ICloneable, 0, 0},  {&_swigt__p_RotationY, _p_RotationYTo_p_ICloneable, 0, 0},  {&_swigt__p_RotationZ, _p_RotationZTo_p_ICloneable, 0, 0},  {&_swigt__p_SawtoothRippleBox, _p_SawtoothRippleBoxTo_p_ICloneable, 0, 0},  {&_swigt__p_SawtoothRippleGauss, _p_SawtoothRippleGaussTo_p_ICloneable, 0, 0},  {&_swigt__p_SawtoothRippleLorentz, _p_SawtoothRippleLorentzTo_p_ICloneable, 0, 0},  {&_swigt__p_Sphere, _p_SphereTo_p_ICloneable, 0, 0},  {&_swigt__p_Spheroid, _p_SpheroidTo_p_ICloneable, 0, 0},  {&_swigt__p_SquareLattice2D, _p_SquareLattice2DTo_p_ICloneable, 0, 0},  {&_swigt__p_TanhInterlayer, _p_TanhInterlayerTo_p_ICloneable, 0, 0},  {&_swigt__p_TruncatedCube, _p_TruncatedCubeTo_p_ICloneable, 0, 0},  {&_swigt__p_TruncatedSphere, _p_TruncatedSphereTo_p_ICloneable, 0, 0},  {&_swigt__p_TruncatedSpheroid, _p_TruncatedSpheroidTo_p_ICloneable, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_ICloneable[] = {  {&_swigt__p_ICloneable, 0, 0, 0},  {&_swigt__p_AutocorrelationModel, _p_AutocorrelationModelTo_p_ICloneable, 0, 0},  {&_swigt__p_BarGauss, _p_BarGaussTo_p_ICloneable, 0, 0},  {&_swigt__p_BarLorentz, _p_BarLorentzTo_p_ICloneable, 0, 0},  {&_swigt__p_BasicLattice2D, _p_BasicLattice2DTo_p_ICloneable, 0, 0},  {&_swigt__p_Bipyramid4, _p_Bipyramid4To_p_ICloneable, 0, 0},  {&_swigt__p_Box, _p_BoxTo_p_ICloneable, 0, 0},  {&_swigt__p_CantellatedCube, _p_CantellatedCubeTo_p_ICloneable, 0, 0},  {&_swigt__p_Compound, _p_CompoundTo_p_ICloneable, 0, 0},  {&_swigt__p_Cone, _p_ConeTo_p_ICloneable, 0, 0},  {&_swigt__p_CoreAndShell, _p_CoreAndShellTo_p_ICloneable, 0, 0},  {&_swigt__p_CosineRippleBox, _p_CosineRippleBoxTo_p_ICloneable, 0, 0},  {&_swigt__p_CosineRippleGauss, _p_CosineRippleGaussTo_p_ICloneable, 0, 0},  {&_swigt__p_CosineRippleLorentz, _p_CosineRippleLorentzTo_p_ICloneable, 0, 0},  {&_swigt__p_Crystal, _p_CrystalTo_p_ICloneable, 0, 0},  {&_swigt__p_Cylinder, _p_CylinderTo_p_ICloneable, 0, 0},  {&_swigt__p_Dodecahedron, _p_DodecahedronTo_p_ICloneable, 0, 0},  {&_swigt__p_EllipsoidalCylinder, _p_EllipsoidalCylinderTo_p_ICloneable, 0, 0},  {&_swigt__p_ErfInterlayer, _p_ErfInterlayerTo_p_ICloneable, 0, 0},  {&_swigt__p_FuzzySphere, _p_FuzzySphereTo_p_ICloneable, 0, 0},  {&_swigt__p_GaussFisherPeakShape, _p_GaussFisherPeakShapeTo_p_ICloneable, 0, 0},  {&_swigt__p_GaussSphere, _p_GaussSphereTo_p_ICloneable, 0, 0},  {&_swigt__p_HemiEllipsoid, _p_HemiEllipsoidTo_p_ICloneable, 0, 0},  {&_swigt__p_HexagonalLattice2D, _p_HexagonalLattice2DTo_p_ICloneable, 0, 0},  {&_swigt__p_HorizontalCylinder, _p_HorizontalCylinderTo_p_ICloneable, 0, 0},  {&_swigt__p_ICosineRipple, _p_ICosineRippleTo_p_ICloneable, 0, 0},  {&_swigt__p_IFormfactor, _p_IFormfactorTo_p_ICloneable, 0, 0},  {&_swigt__p_IFormfactorPolyhedron, _p_IFormfactorPolyhedronTo_p_ICloneable, 0, 0},  {&_swigt__p_IFormfactorPrism, _p_IFormfactorPrismTo_p_ICloneable, 0, 0},  {&_swigt__p_IInterference, _p_IInterferenceTo_p_ICloneable, 0, 0},  {&_swigt__p_IParticle, _p_IParticleTo_p_ICloneable, 0, 0},  {&_swigt__p_IPeakShape, _p_IPeakShapeTo_p_ICloneable, 0, 0},  {&_swigt__p_IProfile1D, _p_IProfile1DTo_p_ICloneable, 0, 0},  {&_swigt__p_IProfile2D, _p_IProfile2DTo_p_ICloneable, 0, 0},  {&_swigt__p_IProfileRectangularRipple, _p_IProfileRectangularRippleTo_p_ICloneable, 0, 0},  {&_swigt__p_IProfileRipple, _p_IProfileRippleTo_p_ICloneable, 0, 0},  {&_swigt__p_IRotation, _p_IRotationTo_p_ICloneable, 0, 0},  {&_swigt__p_ISampleNode, _p_ISampleNodeTo_p_ICloneable, 0, 0},  {&_swigt__p_ISawtoothRipple, _p_ISawtoothRippleTo_p_ICloneable, 0, 0},  {&_swigt__p_Icosahedron, _p_IcosahedronTo_p_ICloneable, 0, 0},  {&_swigt__p_IdentityRotation, _p_IdentityRotationTo_p_ICloneable, 0, 0},  {&_swigt__p_Interference1DLattice, _p_Interference1DLatticeTo_p_ICloneable, 0, 0},  {&_swigt__p_Interference2DLattice, _p_Interference2DLatticeTo_p_ICloneable, 0, 0},  {&_swigt__p_Interference2DParacrystal, _p_Interference2DParacrystalTo_p_ICloneable, 0, 0},  {&_swigt__p_Interference2DSuperLattice, _p_Interference2DSuperLatticeTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFinite2DLattice, _p_InterferenceFinite2DLatticeTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceHardDisk, _p_InterferenceHardDiskTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceNone, _p_InterferenceNoneTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceRadialParacrystal, _p_InterferenceRadialParacrystalTo_p_ICloneable, 0, 0},  {&_swigt__p_InterlayerModel, _p_InterlayerModelTo_p_ICloneable, 0, 0},  {&_swigt__p_IsotropicGaussPeakShape, _p_IsotropicGaussPeakShapeTo_p_ICloneable, 0, 0},  {&_swigt__p_IsotropicLorentzPeakShape, _p_IsotropicLorentzPeakShapeTo_p_ICloneable, 0, 0},  {&_swigt__p_K_CorrelationModel, _p_K_CorrelationModelTo_p_ICloneable, 0, 0},  {&_swigt__p_Lattice2D, _p_Lattice2DTo_p_ICloneable, 0, 0},  {&_swigt__p_Layer, _p_LayerTo_p_ICloneable, 0, 0},  {&_swigt__p_LayerRoughness, _p_LayerRoughnessTo_p_ICloneable, 0, 0},  {&_swigt__p_LongBoxGauss, _p_LongBoxGaussTo_p_ICloneable, 0, 0},  {&_swigt__p_LongBoxLorentz, _p_LongBoxLorentzTo_p_ICloneable, 0, 0},  {&_swigt__p_LorentzFisherPeakShape, _p_LorentzFisherPeakShapeTo_p_ICloneable, 0, 0},  {&_swigt__p_Mesocrystal, _p_MesocrystalTo_p_ICloneable, 0, 0},  {&_swigt__p_MisesFisherGaussPeakShape, _p_MisesFisherGaussPeakShapeTo_p_ICloneable, 0, 0},  {&_swigt__p_MisesGaussPeakShape, _p_MisesGaussPeakShapeTo_p_ICloneable, 0, 0},  {&_swigt__p_MultiLayer, _p_MultiLayerTo_p_ICloneable, 0, 0},  {&_swigt__p_Particle, _p_ParticleTo_p_ICloneable, 0, 0},  {&_swigt__p_ParticleLayout, _p_ParticleLayoutTo_p_ICloneable, 0, 0},  {&_swigt__p_PlatonicOctahedron, _p_PlatonicOctahedronTo_p_ICloneable, 0, 0},  {&_swigt__p_PlatonicTetrahedron, _p_PlatonicTetrahedronTo_p_ICloneable, 0, 0},  {&_swigt__p_Prism3, _p_Prism3To_p_ICloneable, 0, 0},  {&_swigt__p_Prism6, _p_Prism6To_p_ICloneable, 0, 0},  {&_swigt__p_Profile1DCauchy, _p_Profile1DCauchyTo_p_ICloneable, 0, 0},  {&_swigt__p_Profile1DCosine, _p_Profile1DCosineTo_p_ICloneable, 0, 0},  {&_swigt__p_Profile1DGate, _p_Profile1DGateTo_p_ICloneable, 0, 0},  {&_swigt__p_Profile1DGauss, _p_Profile1DGaussTo_p_ICloneable, 0, 0},  {&_swigt__p_Profile1DTriangle, _p_Profile1DTriangleTo_p_ICloneable, 0, 0},  {&_swigt__p_Profile1DVoigt, _p_Profile1DVoigtTo_p_ICloneable, 0, 0},  {&_swigt__p_Profile2DCauchy, _p_Profile2DCauchyTo_p_ICloneable, 0, 0},  {&_swigt__p_Profile2DCone, _p_Profile2DConeTo_p_ICloneable, 0, 0},  {&_swigt__p_Profile2DGate, _p_Profile2DGateTo_p_ICloneable, 0, 0},  {&_swigt__p_Profile2DGauss, _p_Profile2DGaussTo_p_ICloneable, 0, 0},  {&_swigt__p_Profile2DVoigt, _p_Profile2DVoigtTo_p_ICloneable, 0, 0},  {&_swigt__p_Pyramid2, _p_Pyramid2To_p_ICloneable, 0, 0},  {&_swigt__p_Pyramid3, _p_Pyramid3To_p_ICloneable, 0, 0},  {&_swigt__p_Pyramid4, _p_Pyramid4To_p_ICloneable, 0, 0},  {&_swigt__p_Pyramid6, _p_Pyramid6To_p_ICloneable, 0, 0},  {&_swigt__p_RotationEuler, _p_RotationEulerTo_p_ICloneable, 0, 0},  {&_swigt__p_RotationX, _p_RotationXTo_p_ICloneable, 0, 0},  {&_swigt__p_RotationY, _p_RotationYTo_p_ICloneable, 0, 0},  {&_swigt__p_RotationZ, _p_RotationZTo_p_ICloneable, 0, 0},  {&_swigt__p_SawtoothRippleBox, _p_SawtoothRippleBoxTo_p_ICloneable, 0, 0},  {&_swigt__p_SawtoothRippleGauss, _p_SawtoothRippleGaussTo_p_ICloneable, 0, 0},  {&_swigt__p_SawtoothRippleLorentz, _p_SawtoothRippleLorentzTo_p_ICloneable, 0, 0},  {&_swigt__p_Sphere, _p_SphereTo_p_ICloneable, 0, 0},  {&_swigt__p_Spheroid, _p_SpheroidTo_p_ICloneable, 0, 0},  {&_swigt__p_SquareLattice2D, _p_SquareLattice2DTo_p_ICloneable, 0, 0},  {&_swigt__p_TanhInterlayer, _p_TanhInterlayerTo_p_ICloneable, 0, 0},  {&_swigt__p_TruncatedCube, _p_TruncatedCubeTo_p_ICloneable, 0, 0},  {&_swigt__p_TruncatedSphere, _p_TruncatedSphereTo_p_ICloneable, 0, 0},  {&_swigt__p_TruncatedSpheroid, _p_TruncatedSpheroidTo_p_ICloneable, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_ICosineRipple[] = {  {&_swigt__p_ICosineRipple, 0, 0, 0},  {&_swigt__p_CosineRippleBox, _p_CosineRippleBoxTo_p_ICosineRipple, 0, 0},  {&_swigt__p_CosineRippleGauss, _p_CosineRippleGaussTo_p_ICosineRipple, 0, 0},  {&_swigt__p_CosineRippleLorentz, _p_CosineRippleLorentzTo_p_ICosineRipple, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IFormfactor[] = {  {&_swigt__p_IFormfactor, 0, 0, 0},  {&_swigt__p_BarGauss, _p_BarGaussTo_p_IFormfactor, 0, 0},  {&_swigt__p_BarLorentz, _p_BarLorentzTo_p_IFormfactor, 0, 0},  {&_swigt__p_Bipyramid4, _p_Bipyramid4To_p_IFormfactor, 0, 0},  {&_swigt__p_Box, _p_BoxTo_p_IFormfactor, 0, 0},  {&_swigt__p_CantellatedCube, _p_CantellatedCubeTo_p_IFormfactor, 0, 0},  {&_swigt__p_Cone, _p_ConeTo_p_IFormfactor, 0, 0},  {&_swigt__p_CosineRippleBox, _p_CosineRippleBoxTo_p_IFormfactor, 0, 0},  {&_swigt__p_CosineRippleGauss, _p_CosineRippleGaussTo_p_IFormfactor, 0, 0},  {&_swigt__p_CosineRippleLorentz, _p_CosineRippleLorentzTo_p_IFormfactor, 0, 0},  {&_swigt__p_Cylinder, _p_CylinderTo_p_IFormfactor, 0, 0},  {&_swigt__p_Dodecahedron, _p_DodecahedronTo_p_IFormfactor, 0, 0},  {&_swigt__p_EllipsoidalCylinder, _p_EllipsoidalCylinderTo_p_IFormfactor, 0, 0},  {&_swigt__p_FuzzySphere, _p_FuzzySphereTo_p_IFormfactor, 0, 0},  {&_swigt__p_GaussSphere, _p_GaussSphereTo_p_IFormfactor, 0, 0},  {&_swigt__p_HemiEllipsoid, _p_HemiEllipsoidTo_p_IFormfactor, 0, 0},  {&_swigt__p_HorizontalCylinder, _p_HorizontalCylinderTo_p_IFormfactor, 0, 0},  {&_swigt__p_ICosineRipple, _p_ICosineRippleTo_p_IFormfactor, 0, 0},  {&_swigt__p_IFormfactorPolyhedron, _p_IFormfactorPolyhedronTo_p_IFormfactor, 0, 0},  {&_swigt__p_IFormfactorPrism, _p_IFormfactorPrismTo_p_IFormfactor, 0, 0},  {&_swigt__p_IProfileRectangularRipple, _p_IProfileRectangularRippleTo_p_IFormfactor, 0, 0},  {&_swigt__p_IProfileRipple, _p_IProfileRippleTo_p_IFormfactor, 0, 0},  {&_swigt__p_ISawtoothRipple, _p_ISawtoothRippleTo_p_IFormfactor, 0, 0},  {&_swigt__p_Icosahedron, _p_IcosahedronTo_p_IFormfactor, 0, 0},  {&_swigt__p_LongBoxGauss, _p_LongBoxGaussTo_p_IFormfactor, 0, 0},  {&_swigt__p_LongBoxLorentz, _p_LongBoxLorentzTo_p_IFormfactor, 0, 0},  {&_swigt__p_PlatonicOctahedron, _p_PlatonicOctahedronTo_p_IFormfactor, 0, 0},  {&_swigt__p_PlatonicTetrahedron, _p_PlatonicTetrahedronTo_p_IFormfactor, 0, 0},  {&_swigt__p_Prism3, _p_Prism3To_p_IFormfactor, 0, 0},  {&_swigt__p_Prism6, _p_Prism6To_p_IFormfactor, 0, 0},  {&_swigt__p_Pyramid2, _p_Pyramid2To_p_IFormfactor, 0, 0},  {&_swigt__p_Pyramid3, _p_Pyramid3To_p_IFormfactor, 0, 0},  {&_swigt__p_Pyramid4, _p_Pyramid4To_p_IFormfactor, 0, 0},  {&_swigt__p_Pyramid6, _p_Pyramid6To_p_IFormfactor, 0, 0},  {&_swigt__p_SawtoothRippleBox, _p_SawtoothRippleBoxTo_p_IFormfactor, 0, 0},  {&_swigt__p_SawtoothRippleGauss, _p_SawtoothRippleGaussTo_p_IFormfactor, 0, 0},  {&_swigt__p_SawtoothRippleLorentz, _p_SawtoothRippleLorentzTo_p_IFormfactor, 0, 0},  {&_swigt__p_Sphere, _p_SphereTo_p_IFormfactor, 0, 0},  {&_swigt__p_Spheroid, _p_SpheroidTo_p_IFormfactor, 0, 0},  {&_swigt__p_TruncatedCube, _p_TruncatedCubeTo_p_IFormfactor, 0, 0},  {&_swigt__p_TruncatedSphere, _p_TruncatedSphereTo_p_IFormfactor, 0, 0},  {&_swigt__p_TruncatedSpheroid, _p_TruncatedSpheroidTo_p_IFormfactor, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IFormfactorPolyhedron[] = {  {&_swigt__p_IFormfactorPolyhedron, 0, 0, 0},  {&_swigt__p_Bipyramid4, _p_Bipyramid4To_p_IFormfactorPolyhedron, 0, 0},  {&_swigt__p_Box, _p_BoxTo_p_IFormfactorPolyhedron, 0, 0},  {&_swigt__p_CantellatedCube, _p_CantellatedCubeTo_p_IFormfactorPolyhedron, 0, 0},  {&_swigt__p_Dodecahedron, _p_DodecahedronTo_p_IFormfactorPolyhedron, 0, 0},  {&_swigt__p_IFormfactorPrism, _p_IFormfactorPrismTo_p_IFormfactorPolyhedron, 0, 0},  {&_swigt__p_Icosahedron, _p_IcosahedronTo_p_IFormfactorPolyhedron, 0, 0},  {&_swigt__p_PlatonicOctahedron, _p_PlatonicOctahedronTo_p_IFormfactorPolyhedron, 0, 0},  {&_swigt__p_PlatonicTetrahedron, _p_PlatonicTetrahedronTo_p_IFormfactorPolyhedron, 0, 0},  {&_swigt__p_Prism3, _p_Prism3To_p_IFormfactorPolyhedron, 0, 0},  {&_swigt__p_Prism6, _p_Prism6To_p_IFormfactorPolyhedron, 0, 0},  {&_swigt__p_Pyramid2, _p_Pyramid2To_p_IFormfactorPolyhedron, 0, 0},  {&_swigt__p_Pyramid3, _p_Pyramid3To_p_IFormfactorPolyhedron, 0, 0},  {&_swigt__p_Pyramid4, _p_Pyramid4To_p_IFormfactorPolyhedron, 0, 0},  {&_swigt__p_Pyramid6, _p_Pyramid6To_p_IFormfactorPolyhedron, 0, 0},  {&_swigt__p_TruncatedCube, _p_TruncatedCubeTo_p_IFormfactorPolyhedron, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IFormfactorPrism[] = {  {&_swigt__p_IFormfactorPrism, 0, 0, 0},  {&_swigt__p_Box, _p_BoxTo_p_IFormfactorPrism, 0, 0},  {&_swigt__p_Prism3, _p_Prism3To_p_IFormfactorPrism, 0, 0},  {&_swigt__p_Prism6, _p_Prism6To_p_IFormfactorPrism, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IInterference[] = {  {&_swigt__p_IInterference, 0, 0, 0},  {&_swigt__p_Interference1DLattice, _p_Interference1DLatticeTo_p_IInterference, 0, 0},  {&_swigt__p_Interference2DLattice, _p_Interference2DLatticeTo_p_IInterference, 0, 0},  {&_swigt__p_Interference2DParacrystal, _p_Interference2DParacrystalTo_p_IInterference, 0, 0},  {&_swigt__p_Interference2DSuperLattice, _p_Interference2DSuperLatticeTo_p_IInterference, 0, 0},  {&_swigt__p_InterferenceFinite2DLattice, _p_InterferenceFinite2DLatticeTo_p_IInterference, 0, 0},  {&_swigt__p_InterferenceHardDisk, _p_InterferenceHardDiskTo_p_IInterference, 0, 0},  {&_swigt__p_InterferenceNone, _p_InterferenceNoneTo_p_IInterference, 0, 0},  {&_swigt__p_InterferenceRadialParacrystal, _p_InterferenceRadialParacrystalTo_p_IInterference, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IMaterialImpl[] = {  {&_swigt__p_IMaterialImpl, 0, 0, 0},  {&_swigt__p_MaterialBySLDImpl, _p_MaterialBySLDImplTo_p_IMaterialImpl, 0, 0},  {&_swigt__p_RefractiveMaterialImpl, _p_RefractiveMaterialImplTo_p_IMaterialImpl, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_INode[] = {  {&_swigt__p_INode, 0, 0, 0},  {&_swigt__p_AutocorrelationModel, _p_AutocorrelationModelTo_p_INode, 0, 0},  {&_swigt__p_BarGauss, _p_BarGaussTo_p_INode, 0, 0},  {&_swigt__p_BarLorentz, _p_BarLorentzTo_p_INode, 0, 0},  {&_swigt__p_BasicAutoCorr, _p_BasicAutoCorrTo_p_INode, 0, 0},  {&_swigt__p_BasicLattice2D, _p_BasicLattice2DTo_p_INode, 0, 0},  {&_swigt__p_Bipyramid4, _p_Bipyramid4To_p_INode, 0, 0},  {&_swigt__p_Box, _p_BoxTo_p_INode, 0, 0},  {&_swigt__p_CantellatedCube, _p_CantellatedCubeTo_p_INode, 0, 0},  {&_swigt__p_Compound, _p_CompoundTo_p_INode, 0, 0},  {&_swigt__p_Cone, _p_ConeTo_p_INode, 0, 0},  {&_swigt__p_CoreAndShell, _p_CoreAndShellTo_p_INode, 0, 0},  {&_swigt__p_CosineRippleBox, _p_CosineRippleBoxTo_p_INode, 0, 0},  {&_swigt__p_CosineRippleGauss, _p_CosineRippleGaussTo_p_INode, 0, 0},  {&_swigt__p_CosineRippleLorentz, _p_CosineRippleLorentzTo_p_INode, 0, 0},  {&_swigt__p_Crystal, _p_CrystalTo_p_INode, 0, 0},  {&_swigt__p_Cylinder, _p_CylinderTo_p_INode, 0, 0},  {&_swigt__p_Dodecahedron, _p_DodecahedronTo_p_INode, 0, 0},  {&_swigt__p_EllipsoidalCylinder, _p_EllipsoidalCylinderTo_p_INode, 0, 0},  {&_swigt__p_ErfInterlayer, _p_ErfInterlayerTo_p_INode, 0, 0},  {&_swigt__p_FuzzySphere, _p_FuzzySphereTo_p_INode, 0, 0},  {&_swigt__p_GaussFisherPeakShape, _p_GaussFisherPeakShapeTo_p_INode, 0, 0},  {&_swigt__p_GaussSphere, _p_GaussSphereTo_p_INode, 0, 0},  {&_swigt__p_HemiEllipsoid, _p_HemiEllipsoidTo_p_INode, 0, 0},  {&_swigt__p_HexagonalLattice2D, _p_HexagonalLattice2DTo_p_INode, 0, 0},  {&_swigt__p_HorizontalCylinder, _p_HorizontalCylinderTo_p_INode, 0, 0},  {&_swigt__p_ICosineRipple, _p_ICosineRippleTo_p_INode, 0, 0},  {&_swigt__p_IFormfactor, _p_IFormfactorTo_p_INode, 0, 0},  {&_swigt__p_IFormfactorPolyhedron, _p_IFormfactorPolyhedronTo_p_INode, 0, 0},  {&_swigt__p_IFormfactorPrism, _p_IFormfactorPrismTo_p_INode, 0, 0},  {&_swigt__p_IInterference, _p_IInterferenceTo_p_INode, 0, 0},  {&_swigt__p_IParticle, _p_IParticleTo_p_INode, 0, 0},  {&_swigt__p_IPeakShape, _p_IPeakShapeTo_p_INode, 0, 0},  {&_swigt__p_IProfile1D, _p_IProfile1DTo_p_INode, 0, 0},  {&_swigt__p_IProfile2D, _p_IProfile2DTo_p_INode, 0, 0},  {&_swigt__p_IProfileRectangularRipple, _p_IProfileRectangularRippleTo_p_INode, 0, 0},  {&_swigt__p_IProfileRipple, _p_IProfileRippleTo_p_INode, 0, 0},  {&_swigt__p_IRotation, _p_IRotationTo_p_INode, 0, 0},  {&_swigt__p_ISampleNode, _p_ISampleNodeTo_p_INode, 0, 0},  {&_swigt__p_ISawtoothRipple, _p_ISawtoothRippleTo_p_INode, 0, 0},  {&_swigt__p_Icosahedron, _p_IcosahedronTo_p_INode, 0, 0},  {&_swigt__p_IdentityRotation, _p_IdentityRotationTo_p_INode, 0, 0},  {&_swigt__p_Interference1DLattice, _p_Interference1DLatticeTo_p_INode, 0, 0},  {&_swigt__p_Interference2DLattice, _p_Interference2DLatticeTo_p_INode, 0, 0},  {&_swigt__p_Interference2DParacrystal, _p_Interference2DParacrystalTo_p_INode, 0, 0},  {&_swigt__p_Interference2DSuperLattice, _p_Interference2DSuperLatticeTo_p_INode, 0, 0},  {&_swigt__p_InterferenceFinite2DLattice, _p_InterferenceFinite2DLatticeTo_p_INode, 0, 0},  {&_swigt__p_InterferenceHardDisk, _p_InterferenceHardDiskTo_p_INode, 0, 0},  {&_swigt__p_InterferenceNone, _p_InterferenceNoneTo_p_INode, 0, 0},  {&_swigt__p_InterferenceRadialParacrystal, _p_InterferenceRadialParacrystalTo_p_INode, 0, 0},  {&_swigt__p_InterlayerModel, _p_InterlayerModelTo_p_INode, 0, 0},  {&_swigt__p_IsotropicGaussPeakShape, _p_IsotropicGaussPeakShapeTo_p_INode, 0, 0},  {&_swigt__p_IsotropicLorentzPeakShape, _p_IsotropicLorentzPeakShapeTo_p_INode, 0, 0},  {&_swigt__p_Lattice2D, _p_Lattice2DTo_p_INode, 0, 0},  {&_swigt__p_Lattice3D, _p_Lattice3DTo_p_INode, 0, 0},  {&_swigt__p_Layer, _p_LayerTo_p_INode, 0, 0},  {&_swigt__p_LayerRoughness, _p_LayerRoughnessTo_p_INode, 0, 0},  {&_swigt__p_LongBoxGauss, _p_LongBoxGaussTo_p_INode, 0, 0},  {&_swigt__p_LongBoxLorentz, _p_LongBoxLorentzTo_p_INode, 0, 0},  {&_swigt__p_LorentzFisherPeakShape, _p_LorentzFisherPeakShapeTo_p_INode, 0, 0},  {&_swigt__p_Mesocrystal, _p_MesocrystalTo_p_INode, 0, 0},  {&_swigt__p_MisesFisherGaussPeakShape, _p_MisesFisherGaussPeakShapeTo_p_INode, 0, 0},  {&_swigt__p_MisesGaussPeakShape, _p_MisesGaussPeakShapeTo_p_INode, 0, 0},  {&_swigt__p_MultiLayer, _p_MultiLayerTo_p_INode, 0, 0},  {&_swigt__p_Particle, _p_ParticleTo_p_INode, 0, 0},  {&_swigt__p_ParticleLayout, _p_ParticleLayoutTo_p_INode, 0, 0},  {&_swigt__p_PlatonicOctahedron, _p_PlatonicOctahedronTo_p_INode, 0, 0},  {&_swigt__p_PlatonicTetrahedron, _p_PlatonicTetrahedronTo_p_INode, 0, 0},  {&_swigt__p_Prism3, _p_Prism3To_p_INode, 0, 0},  {&_swigt__p_Prism6, _p_Prism6To_p_INode, 0, 0},  {&_swigt__p_Profile1DCauchy, _p_Profile1DCauchyTo_p_INode, 0, 0},  {&_swigt__p_Profile1DCosine, _p_Profile1DCosineTo_p_INode, 0, 0},  {&_swigt__p_Profile1DGate, _p_Profile1DGateTo_p_INode, 0, 0},  {&_swigt__p_Profile1DGauss, _p_Profile1DGaussTo_p_INode, 0, 0},  {&_swigt__p_Profile1DTriangle, _p_Profile1DTriangleTo_p_INode, 0, 0},  {&_swigt__p_Profile1DVoigt, _p_Profile1DVoigtTo_p_INode, 0, 0},  {&_swigt__p_Profile2DCauchy, _p_Profile2DCauchyTo_p_INode, 0, 0},  {&_swigt__p_Profile2DCone, _p_Profile2DConeTo_p_INode, 0, 0},  {&_swigt__p_Profile2DGate, _p_Profile2DGateTo_p_INode, 0, 0},  {&_swigt__p_Profile2DGauss, _p_Profile2DGaussTo_p_INode, 0, 0},  {&_swigt__p_Profile2DVoigt, _p_Profile2DVoigtTo_p_INode, 0, 0},  {&_swigt__p_Pyramid2, _p_Pyramid2To_p_INode, 0, 0},  {&_swigt__p_Pyramid3, _p_Pyramid3To_p_INode, 0, 0},  {&_swigt__p_Pyramid4, _p_Pyramid4To_p_INode, 0, 0},  {&_swigt__p_Pyramid6, _p_Pyramid6To_p_INode, 0, 0},  {&_swigt__p_RotationEuler, _p_RotationEulerTo_p_INode, 0, 0},  {&_swigt__p_RotationX, _p_RotationXTo_p_INode, 0, 0},  {&_swigt__p_RotationY, _p_RotationYTo_p_INode, 0, 0},  {&_swigt__p_RotationZ, _p_RotationZTo_p_INode, 0, 0},  {&_swigt__p_SawtoothRippleBox, _p_SawtoothRippleBoxTo_p_INode, 0, 0},  {&_swigt__p_SawtoothRippleGauss, _p_SawtoothRippleGaussTo_p_INode, 0, 0},  {&_swigt__p_SawtoothRippleLorentz, _p_SawtoothRippleLorentzTo_p_INode, 0, 0},  {&_swigt__p_Sphere, _p_SphereTo_p_INode, 0, 0},  {&_swigt__p_Spheroid, _p_SpheroidTo_p_INode, 0, 0},  {&_swigt__p_SquareLattice2D, _p_SquareLattice2DTo_p_INode, 0, 0},  {&_swigt__p_TanhInterlayer, _p_TanhInterlayerTo_p_INode, 0, 0},  {&_swigt__p_TruncatedCube, _p_TruncatedCubeTo_p_INode, 0, 0},  {&_swigt__p_TruncatedSphere, _p_TruncatedSphereTo_p_INode, 0, 0},  {&_swigt__p_TruncatedSpheroid, _p_TruncatedSpheroidTo_p_INode, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_INode[] = {  {&_swigt__p_INode, 0, 0, 0},  {&_swigt__p_AutocorrelationModel, _p_AutocorrelationModelTo_p_INode, 0, 0},  {&_swigt__p_BarGauss, _p_BarGaussTo_p_INode, 0, 0},  {&_swigt__p_BarLorentz, _p_BarLorentzTo_p_INode, 0, 0},  {&_swigt__p_BasicLattice2D, _p_BasicLattice2DTo_p_INode, 0, 0},  {&_swigt__p_Bipyramid4, _p_Bipyramid4To_p_INode, 0, 0},  {&_swigt__p_Box, _p_BoxTo_p_INode, 0, 0},  {&_swigt__p_CantellatedCube, _p_CantellatedCubeTo_p_INode, 0, 0},  {&_swigt__p_Compound, _p_CompoundTo_p_INode, 0, 0},  {&_swigt__p_Cone, _p_ConeTo_p_INode, 0, 0},  {&_swigt__p_CoreAndShell, _p_CoreAndShellTo_p_INode, 0, 0},  {&_swigt__p_CosineRippleBox, _p_CosineRippleBoxTo_p_INode, 0, 0},  {&_swigt__p_CosineRippleGauss, _p_CosineRippleGaussTo_p_INode, 0, 0},  {&_swigt__p_CosineRippleLorentz, _p_CosineRippleLorentzTo_p_INode, 0, 0},  {&_swigt__p_Crystal, _p_CrystalTo_p_INode, 0, 0},  {&_swigt__p_Cylinder, _p_CylinderTo_p_INode, 0, 0},  {&_swigt__p_Dodecahedron, _p_DodecahedronTo_p_INode, 0, 0},  {&_swigt__p_EllipsoidalCylinder, _p_EllipsoidalCylinderTo_p_INode, 0, 0},  {&_swigt__p_ErfInterlayer, _p_ErfInterlayerTo_p_INode, 0, 0},  {&_swigt__p_FuzzySphere, _p_FuzzySphereTo_p_INode, 0, 0},  {&_swigt__p_GaussFisherPeakShape, _p_GaussFisherPeakShapeTo_p_INode, 0, 0},  {&_swigt__p_GaussSphere, _p_GaussSphereTo_p_INode, 0, 0},  {&_swigt__p_HemiEllipsoid, _p_HemiEllipsoidTo_p_INode, 0, 0},  {&_swigt__p_HexagonalLattice2D, _p_HexagonalLattice2DTo_p_INode, 0, 0},  {&_swigt__p_HorizontalCylinder, _p_HorizontalCylinderTo_p_INode, 0, 0},  {&_swigt__p_ICosineRipple, _p_ICosineRippleTo_p_INode, 0, 0},  {&_swigt__p_IFormfactor, _p_IFormfactorTo_p_INode, 0, 0},  {&_swigt__p_IFormfactorPolyhedron, _p_IFormfactorPolyhedronTo_p_INode, 0, 0},  {&_swigt__p_IFormfactorPrism, _p_IFormfactorPrismTo_p_INode, 0, 0},  {&_swigt__p_IInterference, _p_IInterferenceTo_p_INode, 0, 0},  {&_swigt__p_IParticle, _p_IParticleTo_p_INode, 0, 0},  {&_swigt__p_IPeakShape, _p_IPeakShapeTo_p_INode, 0, 0},  {&_swigt__p_IProfile1D, _p_IProfile1DTo_p_INode, 0, 0},  {&_swigt__p_IProfile2D, _p_IProfile2DTo_p_INode, 0, 0},  {&_swigt__p_IProfileRectangularRipple, _p_IProfileRectangularRippleTo_p_INode, 0, 0},  {&_swigt__p_IProfileRipple, _p_IProfileRippleTo_p_INode, 0, 0},  {&_swigt__p_IRotation, _p_IRotationTo_p_INode, 0, 0},  {&_swigt__p_ISampleNode, _p_ISampleNodeTo_p_INode, 0, 0},  {&_swigt__p_ISawtoothRipple, _p_ISawtoothRippleTo_p_INode, 0, 0},  {&_swigt__p_Icosahedron, _p_IcosahedronTo_p_INode, 0, 0},  {&_swigt__p_IdentityRotation, _p_IdentityRotationTo_p_INode, 0, 0},  {&_swigt__p_Interference1DLattice, _p_Interference1DLatticeTo_p_INode, 0, 0},  {&_swigt__p_Interference2DLattice, _p_Interference2DLatticeTo_p_INode, 0, 0},  {&_swigt__p_Interference2DParacrystal, _p_Interference2DParacrystalTo_p_INode, 0, 0},  {&_swigt__p_Interference2DSuperLattice, _p_Interference2DSuperLatticeTo_p_INode, 0, 0},  {&_swigt__p_InterferenceFinite2DLattice, _p_InterferenceFinite2DLatticeTo_p_INode, 0, 0},  {&_swigt__p_InterferenceHardDisk, _p_InterferenceHardDiskTo_p_INode, 0, 0},  {&_swigt__p_InterferenceNone, _p_InterferenceNoneTo_p_INode, 0, 0},  {&_swigt__p_InterferenceRadialParacrystal, _p_InterferenceRadialParacrystalTo_p_INode, 0, 0},  {&_swigt__p_InterlayerModel, _p_InterlayerModelTo_p_INode, 0, 0},  {&_swigt__p_IsotropicGaussPeakShape, _p_IsotropicGaussPeakShapeTo_p_INode, 0, 0},  {&_swigt__p_IsotropicLorentzPeakShape, _p_IsotropicLorentzPeakShapeTo_p_INode, 0, 0},  {&_swigt__p_K_CorrelationModel, _p_K_CorrelationModelTo_p_INode, 0, 0},  {&_swigt__p_Lattice2D, _p_Lattice2DTo_p_INode, 0, 0},  {&_swigt__p_Lattice3D, _p_Lattice3DTo_p_INode, 0, 0},  {&_swigt__p_Layer, _p_LayerTo_p_INode, 0, 0},  {&_swigt__p_LayerRoughness, _p_LayerRoughnessTo_p_INode, 0, 0},  {&_swigt__p_LongBoxGauss, _p_LongBoxGaussTo_p_INode, 0, 0},  {&_swigt__p_LongBoxLorentz, _p_LongBoxLorentzTo_p_INode, 0, 0},  {&_swigt__p_LorentzFisherPeakShape, _p_LorentzFisherPeakShapeTo_p_INode, 0, 0},  {&_swigt__p_Mesocrystal, _p_MesocrystalTo_p_INode, 0, 0},  {&_swigt__p_MisesFisherGaussPeakShape, _p_MisesFisherGaussPeakShapeTo_p_INode, 0, 0},  {&_swigt__p_MisesGaussPeakShape, _p_MisesGaussPeakShapeTo_p_INode, 0, 0},  {&_swigt__p_MultiLayer, _p_MultiLayerTo_p_INode, 0, 0},  {&_swigt__p_Particle, _p_ParticleTo_p_INode, 0, 0},  {&_swigt__p_ParticleLayout, _p_ParticleLayoutTo_p_INode, 0, 0},  {&_swigt__p_PlatonicOctahedron, _p_PlatonicOctahedronTo_p_INode, 0, 0},  {&_swigt__p_PlatonicTetrahedron, _p_PlatonicTetrahedronTo_p_INode, 0, 0},  {&_swigt__p_Prism3, _p_Prism3To_p_INode, 0, 0},  {&_swigt__p_Prism6, _p_Prism6To_p_INode, 0, 0},  {&_swigt__p_Profile1DCauchy, _p_Profile1DCauchyTo_p_INode, 0, 0},  {&_swigt__p_Profile1DCosine, _p_Profile1DCosineTo_p_INode, 0, 0},  {&_swigt__p_Profile1DGate, _p_Profile1DGateTo_p_INode, 0, 0},  {&_swigt__p_Profile1DGauss, _p_Profile1DGaussTo_p_INode, 0, 0},  {&_swigt__p_Profile1DTriangle, _p_Profile1DTriangleTo_p_INode, 0, 0},  {&_swigt__p_Profile1DVoigt, _p_Profile1DVoigtTo_p_INode, 0, 0},  {&_swigt__p_Profile2DCauchy, _p_Profile2DCauchyTo_p_INode, 0, 0},  {&_swigt__p_Profile2DCone, _p_Profile2DConeTo_p_INode, 0, 0},  {&_swigt__p_Profile2DGate, _p_Profile2DGateTo_p_INode, 0, 0},  {&_swigt__p_Profile2DGauss, _p_Profile2DGaussTo_p_INode, 0, 0},  {&_swigt__p_Profile2DVoigt, _p_Profile2DVoigtTo_p_INode, 0, 0},  {&_swigt__p_Pyramid2, _p_Pyramid2To_p_INode, 0, 0},  {&_swigt__p_Pyramid3, _p_Pyramid3To_p_INode, 0, 0},  {&_swigt__p_Pyramid4, _p_Pyramid4To_p_INode, 0, 0},  {&_swigt__p_Pyramid6, _p_Pyramid6To_p_INode, 0, 0},  {&_swigt__p_RotationEuler, _p_RotationEulerTo_p_INode, 0, 0},  {&_swigt__p_RotationX, _p_RotationXTo_p_INode, 0, 0},  {&_swigt__p_RotationY, _p_RotationYTo_p_INode, 0, 0},  {&_swigt__p_RotationZ, _p_RotationZTo_p_INode, 0, 0},  {&_swigt__p_SawtoothRippleBox, _p_SawtoothRippleBoxTo_p_INode, 0, 0},  {&_swigt__p_SawtoothRippleGauss, _p_SawtoothRippleGaussTo_p_INode, 0, 0},  {&_swigt__p_SawtoothRippleLorentz, _p_SawtoothRippleLorentzTo_p_INode, 0, 0},  {&_swigt__p_Sphere, _p_SphereTo_p_INode, 0, 0},  {&_swigt__p_Spheroid, _p_SpheroidTo_p_INode, 0, 0},  {&_swigt__p_SquareLattice2D, _p_SquareLattice2DTo_p_INode, 0, 0},  {&_swigt__p_TanhInterlayer, _p_TanhInterlayerTo_p_INode, 0, 0},  {&_swigt__p_TruncatedCube, _p_TruncatedCubeTo_p_INode, 0, 0},  {&_swigt__p_TruncatedSphere, _p_TruncatedSphereTo_p_INode, 0, 0},  {&_swigt__p_TruncatedSpheroid, _p_TruncatedSpheroidTo_p_INode, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IParticle[] = {  {&_swigt__p_IParticle, 0, 0, 0},  {&_swigt__p_Compound, _p_CompoundTo_p_IParticle, 0, 0},  {&_swigt__p_CoreAndShell, _p_CoreAndShellTo_p_IParticle, 0, 0},  {&_swigt__p_Mesocrystal, _p_MesocrystalTo_p_IParticle, 0, 0},  {&_swigt__p_Particle, _p_ParticleTo_p_IParticle, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IPeakShape[] = {  {&_swigt__p_IPeakShape, 0, 0, 0},  {&_swigt__p_GaussFisherPeakShape, _p_GaussFisherPeakShapeTo_p_IPeakShape, 0, 0},  {&_swigt__p_IsotropicGaussPeakShape, _p_IsotropicGaussPeakShapeTo_p_IPeakShape, 0, 0},  {&_swigt__p_IsotropicLorentzPeakShape, _p_IsotropicLorentzPeakShapeTo_p_IPeakShape, 0, 0},  {&_swigt__p_LorentzFisherPeakShape, _p_LorentzFisherPeakShapeTo_p_IPeakShape, 0, 0},  {&_swigt__p_MisesFisherGaussPeakShape, _p_MisesFisherGaussPeakShapeTo_p_IPeakShape, 0, 0},  {&_swigt__p_MisesGaussPeakShape, _p_MisesGaussPeakShapeTo_p_IPeakShape, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IProfile1D[] = {  {&_swigt__p_IProfile1D, 0, 0, 0},  {&_swigt__p_Profile1DCauchy, _p_Profile1DCauchyTo_p_IProfile1D, 0, 0},  {&_swigt__p_Profile1DCosine, _p_Profile1DCosineTo_p_IProfile1D, 0, 0},  {&_swigt__p_Profile1DGate, _p_Profile1DGateTo_p_IProfile1D, 0, 0},  {&_swigt__p_Profile1DGauss, _p_Profile1DGaussTo_p_IProfile1D, 0, 0},  {&_swigt__p_Profile1DTriangle, _p_Profile1DTriangleTo_p_IProfile1D, 0, 0},  {&_swigt__p_Profile1DVoigt, _p_Profile1DVoigtTo_p_IProfile1D, 0, 0},{0, 0, 0, 0}};
@@ -75688,6 +75687,7 @@ static swig_cast_info _swigc__p_InterferenceRadialParacrystal[] = {  {&_swigt__p
 static swig_cast_info _swigc__p_InterlayerModel[] = {  {&_swigt__p_InterlayerModel, 0, 0, 0},  {&_swigt__p_ErfInterlayer, _p_ErfInterlayerTo_p_InterlayerModel, 0, 0},  {&_swigt__p_TanhInterlayer, _p_TanhInterlayerTo_p_InterlayerModel, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IsotropicGaussPeakShape[] = {  {&_swigt__p_IsotropicGaussPeakShape, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IsotropicLorentzPeakShape[] = {  {&_swigt__p_IsotropicLorentzPeakShape, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_K_CorrelationModel[] = {  {&_swigt__p_K_CorrelationModel, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_Lattice2D[] = {  {&_swigt__p_Lattice2D, 0, 0, 0},  {&_swigt__p_BasicLattice2D, _p_BasicLattice2DTo_p_Lattice2D, 0, 0},  {&_swigt__p_HexagonalLattice2D, _p_HexagonalLattice2DTo_p_Lattice2D, 0, 0},  {&_swigt__p_SquareLattice2D, _p_SquareLattice2DTo_p_Lattice2D, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_Lattice2D__ReciprocalBases[] = {  {&_swigt__p_Lattice2D__ReciprocalBases, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_Lattice3D[] = {  {&_swigt__p_Lattice3D, 0, 0, 0},{0, 0, 0, 0}};
@@ -75800,7 +75800,6 @@ static swig_cast_info *swig_cast_initial[] = {
   _swigc__p_AutocorrelationModel,
   _swigc__p_BarGauss,
   _swigc__p_BarLorentz,
-  _swigc__p_BasicAutoCorr,
   _swigc__p_BasicLattice2D,
   _swigc__p_Bipyramid4,
   _swigc__p_Box,
@@ -75853,6 +75852,7 @@ static swig_cast_info *swig_cast_initial[] = {
   _swigc__p_InterlayerModel,
   _swigc__p_IsotropicGaussPeakShape,
   _swigc__p_IsotropicLorentzPeakShape,
+  _swigc__p_K_CorrelationModel,
   _swigc__p_Lattice2D,
   _swigc__p_Lattice2D__ReciprocalBases,
   _swigc__p_Lattice3D,
diff --git a/rawEx/fit/specular/Honeycomb_fit.py b/rawEx/fit/specular/Honeycomb_fit.py
index 8c3855a003c..9fb9abb6758 100755
--- a/rawEx/fit/specular/Honeycomb_fit.py
+++ b/rawEx/fit/specular/Honeycomb_fit.py
@@ -50,11 +50,11 @@ def get_sample(P, sign, T):
 
     interlayer_model = ba.ErfInterlayer()
     
-    rPyOx_autocorr = ba.BasicAutoCorr(P["rPyOx"]*angstrom)
-    rPy2_autocorr = ba.BasicAutoCorr(P["rPy2"]*angstrom)
-    rPy1_autocorr = ba.BasicAutoCorr(P["rPy1"]*angstrom)
-    rSiO2_autocorr = ba.BasicAutoCorr(P["rSiO2"]*angstrom)
-    rSi_autocorr = ba.BasicAutoCorr(P["rSi"]*angstrom)
+    rPyOx_autocorr = ba.K_CorrelationModel(P["rPyOx"]*angstrom)
+    rPy2_autocorr = ba.K_CorrelationModel(P["rPy2"]*angstrom)
+    rPy1_autocorr = ba.K_CorrelationModel(P["rPy1"]*angstrom)
+    rSiO2_autocorr = ba.K_CorrelationModel(P["rSiO2"]*angstrom)
+    rSi_autocorr = ba.K_CorrelationModel(P["rSi"]*angstrom)
     
     rPyOx = ba.LayerRoughness(rPyOx_autocorr, interlayer_model)
     rPy2 = ba.LayerRoughness(rPy2_autocorr, interlayer_model)
diff --git a/rawEx/fit/specular/PolarizedSpinAsymmetry.py b/rawEx/fit/specular/PolarizedSpinAsymmetry.py
index 38c8c12a151..bd75c69a0d5 100755
--- a/rawEx/fit/specular/PolarizedSpinAsymmetry.py
+++ b/rawEx/fit/specular/PolarizedSpinAsymmetry.py
@@ -50,8 +50,8 @@ def get_sample(P):
     layer = ba.Layer(material_layer, P["t_Mafo"]*angstrom)
     substrate_layer = ba.Layer(material_substrate)
 
-    r_Mafo_autocorr = ba.BasicAutoCorr(P["r_Mafo"]*angstrom)
-    r_substrate_autocorr = ba.BasicAutoCorr(P["r_Mao"]*angstrom)
+    r_Mafo_autocorr = ba.K_CorrelationModel(P["r_Mafo"]*angstrom)
+    r_substrate_autocorr = ba.K_CorrelationModel(P["r_Mao"]*angstrom)
 
     interlayer = ba.TanhInterlayer()
 
diff --git a/rawEx/fit/specular/Pt_layer_fit.py b/rawEx/fit/specular/Pt_layer_fit.py
index ac477b7114e..456075ec6c5 100755
--- a/rawEx/fit/specular/Pt_layer_fit.py
+++ b/rawEx/fit/specular/Pt_layer_fit.py
@@ -33,8 +33,8 @@ def get_sample(P):
 
     interlayer = ba.TanhInterlayer()
 
-    si_autocorr = ba.BasicAutoCorr(P["r_si/nm"])
-    pt_autocorr = ba.BasicAutoCorr(P["r_pt/nm"])
+    si_autocorr = ba.K_CorrelationModel(P["r_si/nm"])
+    pt_autocorr = ba.K_CorrelationModel(P["r_pt/nm"])
 
     r_si = ba.LayerRoughness(si_autocorr, interlayer)
     r_pt = ba.LayerRoughness(pt_autocorr, interlayer)
diff --git a/rawEx/fit/specular/TREFF_Ni_film.py b/rawEx/fit/specular/TREFF_Ni_film.py
index 5f7f7a3d3e0..d453b1d76f6 100755
--- a/rawEx/fit/specular/TREFF_Ni_film.py
+++ b/rawEx/fit/specular/TREFF_Ni_film.py
@@ -25,15 +25,15 @@ def get_sample(P):
 
     # Layers and interfaces
     layer_Ni = ba.Layer(material_Ni_58, P["thickness"])
-    
+
     interlayer = ba.TanhInterlayer()
 
-    Ni_autocorr = ba.BasicAutoCorr(P["sigma_Ni"])
+    Ni_autocorr = ba.K_CorrelationModel(P["sigma_Ni"])
     roughness_Ni = ba.LayerRoughness(Ni_autocorr, interlayer)
-    
+
     substrate = ba.Layer(material_SiO2)  
-    
-    sub_autocorr = ba.BasicAutoCorr(P["sigma_Substrate"])
+
+    sub_autocorr = ba.K_CorrelationModel(P["sigma_Substrate"])
     roughness_Substrate = ba.LayerRoughness(sub_autocorr, interlayer)
 
     sample = ba.MultiLayer()
diff --git a/rawEx/scatter2d/CorrelatedRoughness.py b/rawEx/scatter2d/CorrelatedRoughness.py
index 1dc37e5fd6f..e97f3678aad 100755
--- a/rawEx/scatter2d/CorrelatedRoughness.py
+++ b/rawEx/scatter2d/CorrelatedRoughness.py
@@ -23,7 +23,7 @@ def get_sample():
     l_substrate = ba.Layer(material_substrate)
 
     sigma, hurst, corrLength = 1*nm, 0.3, 5*nm
-    autocorr = ba.BasicAutoCorr(sigma, hurst, corrLength)
+    autocorr = ba.K_CorrelationModel(sigma, hurst, corrLength)
     interlayer = ba.TanhInterlayer()
     roughness = ba.LayerRoughness(autocorr, interlayer)
 
diff --git a/rawEx/scatter2d/FindPeaks.py b/rawEx/scatter2d/FindPeaks.py
index 32cfd1b5a7c..2ceca69ddc6 100755
--- a/rawEx/scatter2d/FindPeaks.py
+++ b/rawEx/scatter2d/FindPeaks.py
@@ -42,7 +42,7 @@ def get_sample(lattice_rotation_angle=0*deg):
     substrate_layer = ba.Layer(material_si)
 
     sigma, hurst, corrLength = 5*nm, 0.5, 10*nm
-    autocorr = ba.BasicAutoCorr(sigma, hurst, corrLength)
+    autocorr = ba.K_CorrelationModel(sigma, hurst, corrLength)
     interlayer = ba.TanhInterlayer()
     roughness = ba.LayerRoughness(autocorr, interlayer)
 
diff --git a/rawEx/scatter2d/RectangularGrating.py b/rawEx/scatter2d/RectangularGrating.py
index 73aa566f5c6..8f28310abd8 100755
--- a/rawEx/scatter2d/RectangularGrating.py
+++ b/rawEx/scatter2d/RectangularGrating.py
@@ -41,7 +41,7 @@ def get_sample(lattice_rotation_angle=0*deg):
     substrate_layer = ba.Layer(material_si)
 
     sigma, hurst, corrLength = 5*nm, 0.5, 10*nm
-    autocorr = ba.BasicAutoCorr(sigma, hurst, corrLength)
+    autocorr = ba.K_CorrelationModel(sigma, hurst, corrLength)
     interlayer = ba.TanhInterlayer()
     roughness = ba.LayerRoughness(autocorr, interlayer)
 
diff --git a/rawEx/scatter2d/RoughAndSpecular.py b/rawEx/scatter2d/RoughAndSpecular.py
index cd5c2743247..a8d88961577 100755
--- a/rawEx/scatter2d/RoughAndSpecular.py
+++ b/rawEx/scatter2d/RoughAndSpecular.py
@@ -10,8 +10,8 @@ def get_sample():
     material_Vacuum = ba.RefractiveMaterial("Vacuum", 0.0, 0.0)
 
     # Define roughness
-    autocorr_1 = ba.BasicAutoCorr(1.1, 0.3, 5*nm)
-    autocorr_2 = ba.BasicAutoCorr(2.3, 0.3, 5*nm)
+    autocorr_1 = ba.K_CorrelationModel(1.1, 0.3, 5*nm)
+    autocorr_2 = ba.K_CorrelationModel(2.3, 0.3, 5*nm)
     
     interlayer = ba.TanhInterlayer()
 
diff --git a/rawEx/specular/MagneticLayerImperfect.py b/rawEx/specular/MagneticLayerImperfect.py
index d6ca94819b8..24b412f6434 100755
--- a/rawEx/specular/MagneticLayerImperfect.py
+++ b/rawEx/specular/MagneticLayerImperfect.py
@@ -26,7 +26,7 @@ def get_sample():
     layer_Fe = ba.Layer(material_Fe, 1000*angstrom)
     layer_substrate = ba.Layer(material_substrate)
 
-    autocorr = ba.BasicAutoCorr(20*angstrom)
+    autocorr = ba.K_CorrelationModel(20*angstrom)
     interlayer = ba.TanhInterlayer()
     roughness = ba.LayerRoughness(autocorr, interlayer)
 
diff --git a/rawEx/specular/PolarizedSpinAsymmetry.py b/rawEx/specular/PolarizedSpinAsymmetry.py
index cc786ceafcd..c209821b1f7 100755
--- a/rawEx/specular/PolarizedSpinAsymmetry.py
+++ b/rawEx/specular/PolarizedSpinAsymmetry.py
@@ -50,8 +50,8 @@ def get_sample(P):
     layer = ba.Layer(material_layer, P["t_Mafo"]*angstrom)
     substrate_layer = ba.Layer(material_substrate)
 
-    r_Mafo_autocorr = ba.BasicAutoCorr(P["r_Mafo"]*angstrom)
-    r_sub_autocorr = ba.BasicAutoCorr(P["r_Mao"]*angstrom)
+    r_Mafo_autocorr = ba.K_CorrelationModel(P["r_Mafo"]*angstrom)
+    r_sub_autocorr = ba.K_CorrelationModel(P["r_Mao"]*angstrom)
 
     interlayer = ba.TanhInterlayer()
 
diff --git a/rawEx/specular/RoughnessModel.py b/rawEx/specular/RoughnessModel.py
index 95c263c38e0..513dbe71258 100755
--- a/rawEx/specular/RoughnessModel.py
+++ b/rawEx/specular/RoughnessModel.py
@@ -23,7 +23,7 @@ def get_sample(interlayer):
     substrate_layer = ba.Layer(material_substrate)
 
     # Roughness
-    autocorr = ba.BasicAutoCorr(10*angstrom)
+    autocorr = ba.K_CorrelationModel(10*angstrom)
     roughness = ba.LayerRoughness(autocorr, interlayer)
 
     # create sample
diff --git a/rawEx/specular/SpecularSimulationWithRoughness.py b/rawEx/specular/SpecularSimulationWithRoughness.py
index 5284943a3fa..0bfd1934037 100755
--- a/rawEx/specular/SpecularSimulationWithRoughness.py
+++ b/rawEx/specular/SpecularSimulationWithRoughness.py
@@ -21,7 +21,7 @@ def get_sample():
     ni_layer = ba.Layer(material_ni, 70*angstrom)
     substrate_layer = ba.Layer(material_substrate)
 
-    autocorr = ba.BasicAutoCorr(1*nm)
+    autocorr = ba.K_CorrelationModel(1*nm)
     interlayer = ba.TanhInterlayer()
     roughness = ba.LayerRoughness(autocorr, interlayer)
 
diff --git a/rawEx/varia/MaterialProfile.py b/rawEx/varia/MaterialProfile.py
index 39c2b59333b..4cb069973f9 100755
--- a/rawEx/varia/MaterialProfile.py
+++ b/rawEx/varia/MaterialProfile.py
@@ -30,7 +30,7 @@ def get_sample():
     sample = ba.MultiLayer()
     sample.addLayer(ambient_layer)
     
-    autocorr = ba.BasicAutoCorr(5*angstrom, 0.5, 10*angstrom)
+    autocorr = ba.K_CorrelationModel(5*angstrom, 0.5, 10*angstrom)
     interlayer = ba.TanhInterlayer()
     roughness = ba.LayerRoughness(autocorr, interlayer)
     
diff --git a/rawEx/varia/RoughSurface.py b/rawEx/varia/RoughSurface.py
index e1921cf5a5f..ea832c30ddd 100755
--- a/rawEx/varia/RoughSurface.py
+++ b/rawEx/varia/RoughSurface.py
@@ -54,7 +54,7 @@ X_points = <%= sm ? 10 : 512 %>
 Y_points = <%= sm ? 10 : 512 %>
 
 # create roughness model
-autocorr = ba.BasicAutoCorr(sigma, alpha, xi)
+autocorr = ba.K_CorrelationModel(sigma, alpha, xi)
 height_distribution = ba.ErfInterlayer()
 roughness = ba.LayerRoughness(autocorr, height_distribution)
 
-- 
GitLab