diff --git a/GUI/Model/FromCore/ItemizeSample.cpp b/GUI/Model/FromCore/ItemizeSample.cpp index 4fb6d6653ed1d0f53cc67919dafe2225db31b790..8bf1f3a8c10b3a079e8b49b08a21d4e148e50acc 100644 --- a/GUI/Model/FromCore/ItemizeSample.cpp +++ b/GUI/Model/FromCore/ItemizeSample.cpp @@ -328,9 +328,9 @@ void set_Roughness(LayerItem* parent, const LayerInterface* top_interface) set_CrosscorrelationModel(k_corr, crosscorrelation); parent->roughnessSelection().setCertainItem(k_corr); } else if (const auto* autocorrItem = dynamic_cast<const LinearGrowthModel*>(autocorrelation)) { - auto* k_corr = new LinearGrowthRoughnessItem(autocorrItem->clusterVolume(), - autocorrItem->damp1(), autocorrItem->damp2(), - autocorrItem->damp3(), autocorrItem->damp4()); + auto* k_corr = new LinearGrowthRoughnessItem( + autocorrItem->clusterVolume(), autocorrItem->damp1(), autocorrItem->damp2(), + autocorrItem->damp3(), autocorrItem->damp4(), autocorrItem->maxSpatialFrequency()); set_InterlayerModel(k_corr, interlayer); // external crosscorrelation model is not needed here parent->roughnessSelection().setCertainItem(k_corr); diff --git a/GUI/Model/Sample/RoughnessItems.cpp b/GUI/Model/Sample/RoughnessItems.cpp index 13151947213010fdd665da7a074b52599b0e1e5b..00d28df2779a99c75706b8840119def714045fa3 100644 --- a/GUI/Model/Sample/RoughnessItems.cpp +++ b/GUI/Model/Sample/RoughnessItems.cpp @@ -139,7 +139,9 @@ DoubleProperties K_CorrelationRoughnessItem::roughnessProperties() //------------------------------------------------------------------------------------------------ LinearGrowthRoughnessItem::LinearGrowthRoughnessItem(double cluster_volume, double damp1, - double damp2, double damp3, double damp4) + double damp2, double damp3, double damp4, + double max_spat_frequency) + : RoughnessItem(max_spat_frequency) { m_cluster_volume.init("Cluster volume (nm^3)", "Volume of cluster or particle arriving at a surface during deposition", @@ -193,5 +195,15 @@ void LinearGrowthRoughnessItem::readFrom(QXmlStreamReader* r) std::unique_ptr<AutocorrelationModel> LinearGrowthRoughnessItem::createModel() const { return std::make_unique<LinearGrowthModel>(m_cluster_volume.dVal(), m_damp1.dVal(), - m_damp2.dVal(), m_damp3.dVal(), m_damp4.dVal()); + m_damp2.dVal(), m_damp3.dVal(), m_damp4.dVal(), + m_max_spatial_frequency.dVal()); +} + +DoubleProperties LinearGrowthRoughnessItem::roughnessProperties() +{ + DoubleProperties result = {&m_cluster_volume, &m_damp1, &m_damp2, &m_damp3, &m_damp4}; + const auto base_pars = RoughnessItem::roughnessProperties(); + for (const auto base_par : base_pars) + result.push_back(base_par); + return result; } diff --git a/GUI/Model/Sample/RoughnessItems.h b/GUI/Model/Sample/RoughnessItems.h index 90c121537fdd99e802c898f61594759bcef09f00..45602d182f27387ecf1ca3e1515e9c0c41c58830 100644 --- a/GUI/Model/Sample/RoughnessItems.h +++ b/GUI/Model/Sample/RoughnessItems.h @@ -74,16 +74,13 @@ private: class LinearGrowthRoughnessItem : public RoughnessItem { public: LinearGrowthRoughnessItem(double cluster_volume, double damp1, double damp2, double damp3, - double damp4); + double damp4, double max_spat_frequency); void writeTo(QXmlStreamWriter* w) const override; void readFrom(QXmlStreamReader* r) override; std::unique_ptr<AutocorrelationModel> createModel() const override; - DoubleProperties roughnessProperties() override - { - return {&m_cluster_volume, &m_damp1, &m_damp2, &m_damp3, &m_damp4}; - } + DoubleProperties roughnessProperties() override; private: DoubleProperty m_cluster_volume; diff --git a/GUI/View/Sample/RoughnessForm.cpp b/GUI/View/Sample/RoughnessForm.cpp index 50e1fe76e42c9e24a735614b283e7daa3b01a1d0..dc579d29ac9728eb430e6e053767be8980ef6a3c 100644 --- a/GUI/View/Sample/RoughnessForm.cpp +++ b/GUI/View/Sample/RoughnessForm.cpp @@ -75,7 +75,7 @@ void RoughnessForm::createRoughnessWidgets() RoughnessItem* roughness = m_rs.certainItem(); if (auto* rsi = dynamic_cast<K_CorrelationRoughnessItem*>(roughness)) { - m_layout->addGroupOfValues("Lateral parameters", rsi->roughnessProperties()); + m_layout->addGroupOfValues("Parameters", rsi->roughnessProperties()); m_layout->addSelection(roughness->interlayerModelSelection()); if (!m_is_bottom_layer) m_layout->addSelection(roughness->crossrorrModelSelection()); @@ -84,7 +84,7 @@ void RoughnessForm::createRoughnessWidgets() m_layout->addRow(new QLabel( "The growth model cannot be used for the substrate. Please select another model.")); } else { - m_layout->addGroupOfValues("Growth parameters", rsi->roughnessProperties()); + m_layout->addGroupOfValues("Parameters", rsi->roughnessProperties()); m_layout->addSelection(roughness->interlayerModelSelection()); } } diff --git a/Sample/Interface/AutocorrelationModels.cpp b/Sample/Interface/AutocorrelationModels.cpp index 01d38b35ddfeb1cd73749c7133a512e51b5bb0f6..7cb67bd82aa04795eadee0e37ff1c9f961c94b79 100644 --- a/Sample/Interface/AutocorrelationModels.cpp +++ b/Sample/Interface/AutocorrelationModels.cpp @@ -101,6 +101,7 @@ double K_CorrelationModel::spectralFunction(const R3& q) const const double Qpar2 = q.magxy2(); if (Qpar2 > 4 * pi * pi * m_max_spatial_frequency * m_max_spatial_frequency) return 0; + const double H = m_hurst_parameter; const double clength2 = m_lateral_corr_length * m_lateral_corr_length; return 4.0 * pi * H * m_sigma * m_sigma * clength2 * std::pow(1 + Qpar2 * clength2, -1 - H); @@ -117,8 +118,9 @@ double K_CorrelationModel::rms() const //------------------------------------------------------------------------------------------------- LinearGrowthModel::LinearGrowthModel(double particle_volume, double damp1, double damp2, - double damp3, double damp4) - : m_cluster_volume(particle_volume) + double damp3, double damp4, double maxSpatFrequency) + : AutocorrelationModel(maxSpatFrequency) + , m_cluster_volume(particle_volume) , m_damp1(damp1) , m_damp2(damp2) , m_damp3(damp3) @@ -129,12 +131,13 @@ LinearGrowthModel::LinearGrowthModel(double particle_volume, double damp1, doubl LinearGrowthModel* LinearGrowthModel::clone() const { - return new LinearGrowthModel(m_cluster_volume, m_damp1, m_damp2, m_damp3, m_damp4); + return new LinearGrowthModel(m_cluster_volume, m_damp1, m_damp2, m_damp3, m_damp4, + m_max_spatial_frequency); } std::string LinearGrowthModel::validate() const { - std::vector<std::string> errs; + std::vector<std::string> errs = AutocorrelationModel::validationErrs(); requestGe0(errs, m_cluster_volume, "particleVolume"); requestGe0(errs, m_damp1, "dampingExp1"); requestGe0(errs, m_damp2, "dampingExp2"); @@ -148,11 +151,15 @@ std::string LinearGrowthModel::validate() const std::vector<ParaMeta> LinearGrowthModel::parDefs() const { - return {{"Particle volume", "nm^3"}, - {"Damping 1", ""}, - {"Damping 2", "nm"}, - {"Damping 3", "nm^2"}, - {"Damping 4", "nm^3"}}; + std::vector<ParaMeta> result = {{"Particle volume", "nm^3"}, + {"Damping 1", ""}, + {"Damping 2", "nm"}, + {"Damping 3", "nm^2"}, + {"Damping 4", "nm^3"}}; + + const auto base_pars = AutocorrelationModel::parDefs(); + result.insert(result.end(), base_pars.begin(), base_pars.end()); + return result; } std::string LinearGrowthModel::pythonArguments() const @@ -161,12 +168,13 @@ std::string LinearGrowthModel::pythonArguments() const {m_damp1, parDefs()[1].unit}, {m_damp2, parDefs()[2].unit}, {m_damp3, parDefs()[3].unit}, - {m_damp4, parDefs()[4].unit}}); + {m_damp4, parDefs()[4].unit}}) + + ", " + AutocorrelationModel::pythonArguments(); + ; } -double LinearGrowthModel::damping(const R3& q) const +double LinearGrowthModel::damping(double Qpar) const { - const double Qpar = q.magxy(); return m_damp1 * Qpar + m_damp2 * std::pow(Qpar, 2) + m_damp3 * std::pow(Qpar, 3) + m_damp4 * std::pow(Qpar, 4); } @@ -175,19 +183,27 @@ double LinearGrowthModel::spectralFunction(double spectrum_below, double thickne const R3& q) const { ASSERT(m_validated); - const double damp = damping(q); + const double Qpar = q.magxy(); + + const double damp = damping(Qpar); if (damp == 0 || thickness == 0) return spectrum_below; const double exponent = std::exp(-damp * thickness); - return spectrum_below * exponent + m_cluster_volume * (1. - exponent * exponent) / 2 / damp; + const double inherited_spectrum = spectrum_below * exponent; + + if (Qpar > 2 * pi * m_max_spatial_frequency) + return inherited_spectrum; + + return inherited_spectrum + m_cluster_volume * (1. - exponent * exponent) / 2 / damp; } double LinearGrowthModel::crosscorrSpectrum(double spectrum_below, double thickness, const R3& q) const { ASSERT(m_validated); - const double damp = damping(q); + const double Qpar = q.magxy(); + const double damp = damping(Qpar); if (damp == 0 || thickness == 0) return spectrum_below; @@ -201,7 +217,7 @@ double LinearGrowthModel::spectralFunction(const R3&) const return 0; } -double LinearGrowthModel::sigma() const +double LinearGrowthModel::rms() const { // TODO return 0; diff --git a/Sample/Interface/AutocorrelationModels.h b/Sample/Interface/AutocorrelationModels.h index 8425e5a2d5134d8beb2296dca09c931d427a3b2d..2a9e2b380b3a0601ecfd08771fa0b28133a19ae9 100644 --- a/Sample/Interface/AutocorrelationModels.h +++ b/Sample/Interface/AutocorrelationModels.h @@ -23,7 +23,11 @@ class AutocorrelationModel : public ICloneable, public INode { public: AutocorrelationModel* clone() const override = 0; + + //! Returns rms of roughness virtual double rms() const = 0; + + //! Returns power spectral density of the surface roughness virtual double spectralFunction(const R3& k) const = 0; void setMaxSpatialFrequency(double val) { m_max_spatial_frequency = val; } @@ -53,10 +57,7 @@ public: std::string className() const override { return "K_CorrelationModel"; } std::vector<ParaMeta> parDefs() const final; std::string validate() const override; - - //! Returns power spectral density of the surface roughness double spectralFunction(const R3& q) const override; - double rms() const override; //! Sets rms of roughness @@ -91,7 +92,7 @@ private: class LinearGrowthModel : public AutocorrelationModel { public: LinearGrowthModel(double particle_volume, double damp1, double damp2, double damp3, - double damp4); + double damp4, double maxSpatFrequency = 0.5); LinearGrowthModel* clone() const override; std::string className() const override { return "LinearGrowthModel"; } std::vector<ParaMeta> parDefs() const final; @@ -103,8 +104,7 @@ public: double crosscorrSpectrum(double spectrum_below, double thickness, const R3& q) const; - //! Returns rms of roughness - double sigma() const override; + double rms() const override; void setClusterVolume(double particle_volume) { m_cluster_volume = particle_volume; } double clusterVolume() const { return m_cluster_volume; } @@ -126,7 +126,7 @@ public: #endif private: - double damping(const R3& q) const; + double damping(double Qpar) const; double m_cluster_volume; //!< volume of particles, incoming to the surface during growth double m_damp1; //!< damping exponent for spatial frequency raised to the power of 1 diff --git a/Sample/Interface/CrosscorrelationModels.h b/Sample/Interface/CrosscorrelationModels.h index 8b28799714bb141df2831e802434999d1f98f66b..f8452e77711f0ebf3e63f54d238f96304ffbb26e 100644 --- a/Sample/Interface/CrosscorrelationModels.h +++ b/Sample/Interface/CrosscorrelationModels.h @@ -39,8 +39,8 @@ public: SpatialFrequencyCrosscorrelation* clone() const override; std::string className() const override { return "SpatialFrequencyCrosscorrelation"; } std::string validate() const override; - double crosscorrSpectrum(double rms_up, double rms_low, double spectrum_up, - double spectrum_low, double thickness, const R3& qvec) const; + double crosscorrSpectrum(double rms_up, double rms_low, double spectrum_up, double spectrum_low, + double thickness, const R3& qvec) const; std::vector<ParaMeta> parDefs() const override { return {{"BaseCrosscorrDepth", "nm"}, {"BaseSpatialFrequency", "1/nm"}, {"Power", ""}}; diff --git a/Sim/Computation/RoughMultiLayerContribution.cpp b/Sim/Computation/RoughMultiLayerContribution.cpp index 091e474fa958aefdb6fde2414f60a9f8a15d6474..38e3657cc44e87c72302903630ceb165de10a77c 100644 --- a/Sim/Computation/RoughMultiLayerContribution.cpp +++ b/Sim/Computation/RoughMultiLayerContribution.cpp @@ -153,10 +153,10 @@ double Compute::roughMultiLayerContribution(const ReSample& re_sample, const Dif const double thickness = roughStack[j].hig() - roughStack[j + 1].hig(); if (auto* spat_freq_cc = dynamic_cast<const SpatialFrequencyCrosscorrelation*>( roughStack[j].topRoughness()->crosscorrelationModel())) { - const double sigma_up = roughStack[j].topRoughness()->sigma(); - const double sigma_low = roughStack[j + 1].topRoughness()->sigma(); + const double rms_up = roughStack[j].topRoughness()->rms(); + const double rms_low = roughStack[j + 1].topRoughness()->rms(); crosscorr_with_interface_below[j] = spat_freq_cc->crosscorrSpectrum( - sigma_up, sigma_low, spectrum[j], spectrum[j + 1], thickness, q); + rms_up, rms_low, spectrum[j], spectrum[j + 1], thickness, q); } else if (auto* lin_growth_autocorr = dynamic_cast<const LinearGrowthModel*>( roughStack[j].topRoughness()->autocorrelationModel())) { crosscorr_with_interface_below[j] = diff --git a/auto/Wrap/libBornAgainSample.py b/auto/Wrap/libBornAgainSample.py index ce9513fa283a9fc42ad7dfb7eeb6525fbff8e43d..edd7a3ee023cbf70832ed8d1ecae66e2658ecdfe 100644 --- a/auto/Wrap/libBornAgainSample.py +++ b/auto/Wrap/libBornAgainSample.py @@ -4333,7 +4333,6 @@ class AutocorrelationModel(libBornAgainBase.ICloneable, libBornAgainParam.INode) def spectralFunction(self, k): r"""spectralFunction(AutocorrelationModel self, R3 k) -> double""" return _libBornAgainSample.AutocorrelationModel_spectralFunction(self, k) -<<<<<<< HEAD def setMaxSpatialFrequency(self, val): r"""setMaxSpatialFrequency(AutocorrelationModel self, double val)""" @@ -4346,8 +4345,6 @@ class AutocorrelationModel(libBornAgainBase.ICloneable, libBornAgainParam.INode) def parDefs(self): r"""parDefs(AutocorrelationModel self) -> std::vector< ParaMeta,std::allocator< ParaMeta > >""" return _libBornAgainSample.AutocorrelationModel_parDefs(self) -======= ->>>>>>> 40c60d9aa0 (update roughMultiLayerContribution) __swig_destroy__ = _libBornAgainSample.delete_AutocorrelationModel # Register AutocorrelationModel in _libBornAgainSample: @@ -4419,9 +4416,9 @@ class LinearGrowthModel(AutocorrelationModel): thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag") __repr__ = _swig_repr - def __init__(self, particle_volume, damp1, damp2, damp3, damp4): - r"""__init__(LinearGrowthModel self, double particle_volume, double damp1, double damp2, double damp3, double damp4) -> LinearGrowthModel""" - _libBornAgainSample.LinearGrowthModel_swiginit(self, _libBornAgainSample.new_LinearGrowthModel(particle_volume, damp1, damp2, damp3, damp4)) + def __init__(self, particle_volume, damp1, damp2, damp3, damp4, maxSpatFrequency=0.5): + r"""__init__(LinearGrowthModel self, double particle_volume, double damp1, double damp2, double damp3, double damp4, double maxSpatFrequency=0.5) -> LinearGrowthModel""" + _libBornAgainSample.LinearGrowthModel_swiginit(self, _libBornAgainSample.new_LinearGrowthModel(particle_volume, damp1, damp2, damp3, damp4, maxSpatFrequency)) def clone(self): r"""clone(LinearGrowthModel self) -> LinearGrowthModel""" @@ -4450,9 +4447,9 @@ class LinearGrowthModel(AutocorrelationModel): r"""crosscorrSpectrum(LinearGrowthModel self, double spectrum_below, double thickness, R3 q) -> double""" return _libBornAgainSample.LinearGrowthModel_crosscorrSpectrum(self, spectrum_below, thickness, q) - def sigma(self): - r"""sigma(LinearGrowthModel self) -> double""" - return _libBornAgainSample.LinearGrowthModel_sigma(self) + def rms(self): + r"""rms(LinearGrowthModel self) -> double""" + return _libBornAgainSample.LinearGrowthModel_rms(self) def setClusterVolume(self, particle_volume): r"""setClusterVolume(LinearGrowthModel self, double particle_volume)""" @@ -4629,9 +4626,9 @@ class SpatialFrequencyCrosscorrelation(CrosscorrelationModel): r"""validate(SpatialFrequencyCrosscorrelation self) -> std::string""" return _libBornAgainSample.SpatialFrequencyCrosscorrelation_validate(self) - def crosscorrSpectrum(self, sigma_up, sigma_low, spectrum_up, spectrum_low, thickness, qvec): - r"""crosscorrSpectrum(SpatialFrequencyCrosscorrelation self, double sigma_up, double sigma_low, double spectrum_up, double spectrum_low, double thickness, R3 qvec) -> double""" - return _libBornAgainSample.SpatialFrequencyCrosscorrelation_crosscorrSpectrum(self, sigma_up, sigma_low, spectrum_up, spectrum_low, thickness, qvec) + def crosscorrSpectrum(self, rms_up, rms_low, spectrum_up, spectrum_low, thickness, qvec): + r"""crosscorrSpectrum(SpatialFrequencyCrosscorrelation self, double rms_up, double rms_low, double spectrum_up, double spectrum_low, double thickness, R3 qvec) -> double""" + return _libBornAgainSample.SpatialFrequencyCrosscorrelation_crosscorrSpectrum(self, rms_up, rms_low, spectrum_up, spectrum_low, thickness, qvec) def parDefs(self): r"""parDefs(SpatialFrequencyCrosscorrelation self) -> std::vector< ParaMeta,std::allocator< ParaMeta > >""" diff --git a/auto/Wrap/libBornAgainSample_wrap.cpp b/auto/Wrap/libBornAgainSample_wrap.cpp index 0a1d7b14b68c66bdf59e88420baf3407ac6dc85f..ef5a821e7ecce3904ee2fae97188774b20be3157 100644 --- a/auto/Wrap/libBornAgainSample_wrap.cpp +++ b/auto/Wrap/libBornAgainSample_wrap.cpp @@ -52164,7 +52164,6 @@ fail: } -<<<<<<< HEAD SWIGINTERN PyObject *_wrap_AutocorrelationModel_setMaxSpatialFrequency(PyObject *self, PyObject *args) { PyObject *resultobj = 0; AutocorrelationModel *arg1 = (AutocorrelationModel *) 0 ; @@ -52273,8 +52272,6 @@ fail: } -======= ->>>>>>> 40c60d9aa0 (update roughMultiLayerContribution) SWIGINTERN PyObject *_wrap_delete_AutocorrelationModel(PyObject *self, PyObject *args) { PyObject *resultobj = 0; AutocorrelationModel *arg1 = (AutocorrelationModel *) 0 ; @@ -53095,7 +53092,79 @@ SWIGINTERN PyObject *K_CorrelationModel_swiginit(PyObject *SWIGUNUSEDPARM(self), return SWIG_Python_InitShadowInstance(args); } -SWIGINTERN PyObject *_wrap_new_LinearGrowthModel(PyObject *self, PyObject *args) { +SWIGINTERN PyObject *_wrap_new_LinearGrowthModel__SWIG_0(PyObject *self, Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + double arg1 ; + double arg2 ; + double arg3 ; + double arg4 ; + double arg5 ; + double arg6 ; + double val1 ; + int ecode1 = 0 ; + double val2 ; + int ecode2 = 0 ; + double val3 ; + int ecode3 = 0 ; + double val4 ; + int ecode4 = 0 ; + double val5 ; + int ecode5 = 0 ; + double val6 ; + int ecode6 = 0 ; + LinearGrowthModel *result = 0 ; + + (void)self; + if ((nobjs < 6) || (nobjs > 6)) SWIG_fail; + ecode1 = SWIG_AsVal_double(swig_obj[0], &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_LinearGrowthModel" "', 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_LinearGrowthModel" "', 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_LinearGrowthModel" "', argument " "3"" of type '" "double""'"); + } + arg3 = static_cast< double >(val3); + ecode4 = SWIG_AsVal_double(swig_obj[3], &val4); + if (!SWIG_IsOK(ecode4)) { + SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "new_LinearGrowthModel" "', argument " "4"" of type '" "double""'"); + } + arg4 = static_cast< double >(val4); + ecode5 = SWIG_AsVal_double(swig_obj[4], &val5); + if (!SWIG_IsOK(ecode5)) { + SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "new_LinearGrowthModel" "', argument " "5"" of type '" "double""'"); + } + arg5 = static_cast< double >(val5); + ecode6 = SWIG_AsVal_double(swig_obj[5], &val6); + if (!SWIG_IsOK(ecode6)) { + SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "new_LinearGrowthModel" "', argument " "6"" of type '" "double""'"); + } + arg6 = static_cast< double >(val6); + { + try { + result = (LinearGrowthModel *)new LinearGrowthModel(arg1,arg2,arg3,arg4,arg5,arg6); + } catch (const std::exception& ex) { + // message shown in the Python interpreter + const std::string msg { + "BornAgain C++ Exception: " + std::string(ex.what()) + }; + SWIG_exception(SWIG_RuntimeError, msg.c_str()); + } + } + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_LinearGrowthModel, SWIG_POINTER_NEW | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_new_LinearGrowthModel__SWIG_1(PyObject *self, Py_ssize_t nobjs, PyObject **swig_obj) { PyObject *resultobj = 0; double arg1 ; double arg2 ; @@ -53112,11 +53181,10 @@ SWIGINTERN PyObject *_wrap_new_LinearGrowthModel(PyObject *self, PyObject *args) int ecode4 = 0 ; double val5 ; int ecode5 = 0 ; - PyObject *swig_obj[5] ; LinearGrowthModel *result = 0 ; (void)self; - if (!SWIG_Python_UnpackTuple(args, "new_LinearGrowthModel", 5, 5, swig_obj)) SWIG_fail; + if ((nobjs < 5) || (nobjs > 5)) SWIG_fail; ecode1 = SWIG_AsVal_double(swig_obj[0], &val1); if (!SWIG_IsOK(ecode1)) { SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_LinearGrowthModel" "', argument " "1"" of type '" "double""'"); @@ -53160,6 +53228,98 @@ fail: } +SWIGINTERN PyObject *_wrap_new_LinearGrowthModel(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[7] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "new_LinearGrowthModel", 0, 6, argv))) SWIG_fail; + --argc; + if (argc == 5) { + int _v = 0; + { + int res = SWIG_AsVal_double(argv[0], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + { + int res = SWIG_AsVal_double(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + { + int res = SWIG_AsVal_double(argv[2], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + { + int res = SWIG_AsVal_double(argv[3], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + { + int res = SWIG_AsVal_double(argv[4], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_new_LinearGrowthModel__SWIG_1(self, argc, argv); + } + } + } + } + } + } + if (argc == 6) { + int _v = 0; + { + int res = SWIG_AsVal_double(argv[0], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + { + int res = SWIG_AsVal_double(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + { + int res = SWIG_AsVal_double(argv[2], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + { + int res = SWIG_AsVal_double(argv[3], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + { + int res = SWIG_AsVal_double(argv[4], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + { + int res = SWIG_AsVal_double(argv[5], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_new_LinearGrowthModel__SWIG_0(self, argc, argv); + } + } + } + } + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'new_LinearGrowthModel'.\n" + " Possible C/C++ prototypes are:\n" + " LinearGrowthModel::LinearGrowthModel(double,double,double,double,double,double)\n" + " LinearGrowthModel::LinearGrowthModel(double,double,double,double,double)\n"); + return 0; +} + + SWIGINTERN PyObject *_wrap_LinearGrowthModel_clone(PyObject *self, PyObject *args) { PyObject *resultobj = 0; LinearGrowthModel *arg1 = (LinearGrowthModel *) 0 ; @@ -53514,7 +53674,7 @@ fail: } -SWIGINTERN PyObject *_wrap_LinearGrowthModel_sigma(PyObject *self, PyObject *args) { +SWIGINTERN PyObject *_wrap_LinearGrowthModel_rms(PyObject *self, PyObject *args) { PyObject *resultobj = 0; LinearGrowthModel *arg1 = (LinearGrowthModel *) 0 ; void *argp1 = 0 ; @@ -53527,12 +53687,12 @@ SWIGINTERN PyObject *_wrap_LinearGrowthModel_sigma(PyObject *self, PyObject *arg swig_obj[0] = args; res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_LinearGrowthModel, 0 | 0 ); if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "LinearGrowthModel_sigma" "', argument " "1"" of type '" "LinearGrowthModel const *""'"); + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "LinearGrowthModel_rms" "', argument " "1"" of type '" "LinearGrowthModel const *""'"); } arg1 = reinterpret_cast< LinearGrowthModel * >(argp1); { try { - result = (double)((LinearGrowthModel const *)arg1)->sigma(); + result = (double)((LinearGrowthModel const *)arg1)->rms(); } catch (const std::exception& ex) { // message shown in the Python interpreter const std::string msg { @@ -75395,12 +75555,9 @@ static PyMethodDef SwigMethods[] = { { "AutocorrelationModel_clone", _wrap_AutocorrelationModel_clone, METH_O, "AutocorrelationModel_clone(AutocorrelationModel self) -> AutocorrelationModel"}, { "AutocorrelationModel_rms", _wrap_AutocorrelationModel_rms, METH_O, "AutocorrelationModel_rms(AutocorrelationModel self) -> double"}, { "AutocorrelationModel_spectralFunction", _wrap_AutocorrelationModel_spectralFunction, METH_VARARGS, "AutocorrelationModel_spectralFunction(AutocorrelationModel self, R3 k) -> double"}, -<<<<<<< HEAD { "AutocorrelationModel_setMaxSpatialFrequency", _wrap_AutocorrelationModel_setMaxSpatialFrequency, METH_VARARGS, "AutocorrelationModel_setMaxSpatialFrequency(AutocorrelationModel self, double val)"}, { "AutocorrelationModel_maxSpatialFrequency", _wrap_AutocorrelationModel_maxSpatialFrequency, METH_O, "AutocorrelationModel_maxSpatialFrequency(AutocorrelationModel self) -> double"}, { "AutocorrelationModel_parDefs", _wrap_AutocorrelationModel_parDefs, METH_O, "AutocorrelationModel_parDefs(AutocorrelationModel self) -> std::vector< ParaMeta,std::allocator< ParaMeta > >"}, -======= ->>>>>>> 40c60d9aa0 (update roughMultiLayerContribution) { "delete_AutocorrelationModel", _wrap_delete_AutocorrelationModel, METH_O, "delete_AutocorrelationModel(AutocorrelationModel self)"}, { "AutocorrelationModel_swigregister", AutocorrelationModel_swigregister, METH_O, NULL}, { "new_K_CorrelationModel", _wrap_new_K_CorrelationModel, METH_VARARGS, "K_CorrelationModel(double sigma=0, double hurst=0.7, double lateralCorrLength=25, double maxSpatFrequency=0.5)"}, @@ -75419,7 +75576,7 @@ static PyMethodDef SwigMethods[] = { { "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}, - { "new_LinearGrowthModel", _wrap_new_LinearGrowthModel, METH_VARARGS, "new_LinearGrowthModel(double particle_volume, double damp1, double damp2, double damp3, double damp4) -> LinearGrowthModel"}, + { "new_LinearGrowthModel", _wrap_new_LinearGrowthModel, METH_VARARGS, "LinearGrowthModel(double particle_volume, double damp1, double damp2, double damp3, double damp4, double maxSpatFrequency=0.5)"}, { "LinearGrowthModel_clone", _wrap_LinearGrowthModel_clone, METH_O, "LinearGrowthModel_clone(LinearGrowthModel self) -> LinearGrowthModel"}, { "LinearGrowthModel_className", _wrap_LinearGrowthModel_className, METH_O, "LinearGrowthModel_className(LinearGrowthModel self) -> std::string"}, { "LinearGrowthModel_parDefs", _wrap_LinearGrowthModel_parDefs, METH_O, "LinearGrowthModel_parDefs(LinearGrowthModel self) -> std::vector< ParaMeta,std::allocator< ParaMeta > >"}, @@ -75429,7 +75586,7 @@ static PyMethodDef SwigMethods[] = { "LinearGrowthModel_spectralFunction(LinearGrowthModel self, R3 q) -> double\n" ""}, { "LinearGrowthModel_crosscorrSpectrum", _wrap_LinearGrowthModel_crosscorrSpectrum, METH_VARARGS, "LinearGrowthModel_crosscorrSpectrum(LinearGrowthModel self, double spectrum_below, double thickness, R3 q) -> double"}, - { "LinearGrowthModel_sigma", _wrap_LinearGrowthModel_sigma, METH_O, "LinearGrowthModel_sigma(LinearGrowthModel self) -> double"}, + { "LinearGrowthModel_rms", _wrap_LinearGrowthModel_rms, METH_O, "LinearGrowthModel_rms(LinearGrowthModel self) -> double"}, { "LinearGrowthModel_setClusterVolume", _wrap_LinearGrowthModel_setClusterVolume, METH_VARARGS, "LinearGrowthModel_setClusterVolume(LinearGrowthModel self, double particle_volume)"}, { "LinearGrowthModel_clusterVolume", _wrap_LinearGrowthModel_clusterVolume, METH_O, "LinearGrowthModel_clusterVolume(LinearGrowthModel self) -> double"}, { "LinearGrowthModel_setDamp1", _wrap_LinearGrowthModel_setDamp1, METH_VARARGS, "LinearGrowthModel_setDamp1(LinearGrowthModel self, double damp1)"}, @@ -75474,7 +75631,7 @@ static PyMethodDef SwigMethods[] = { { "SpatialFrequencyCrosscorrelation_clone", _wrap_SpatialFrequencyCrosscorrelation_clone, METH_O, "SpatialFrequencyCrosscorrelation_clone(SpatialFrequencyCrosscorrelation self) -> SpatialFrequencyCrosscorrelation"}, { "SpatialFrequencyCrosscorrelation_className", _wrap_SpatialFrequencyCrosscorrelation_className, METH_O, "SpatialFrequencyCrosscorrelation_className(SpatialFrequencyCrosscorrelation self) -> std::string"}, { "SpatialFrequencyCrosscorrelation_validate", _wrap_SpatialFrequencyCrosscorrelation_validate, METH_O, "SpatialFrequencyCrosscorrelation_validate(SpatialFrequencyCrosscorrelation self) -> std::string"}, - { "SpatialFrequencyCrosscorrelation_crosscorrSpectrum", _wrap_SpatialFrequencyCrosscorrelation_crosscorrSpectrum, METH_VARARGS, "SpatialFrequencyCrosscorrelation_crosscorrSpectrum(SpatialFrequencyCrosscorrelation self, double sigma_up, double sigma_low, double spectrum_up, double spectrum_low, double thickness, R3 qvec) -> double"}, + { "SpatialFrequencyCrosscorrelation_crosscorrSpectrum", _wrap_SpatialFrequencyCrosscorrelation_crosscorrSpectrum, METH_VARARGS, "SpatialFrequencyCrosscorrelation_crosscorrSpectrum(SpatialFrequencyCrosscorrelation self, double rms_up, double rms_low, double spectrum_up, double spectrum_low, double thickness, R3 qvec) -> double"}, { "SpatialFrequencyCrosscorrelation_parDefs", _wrap_SpatialFrequencyCrosscorrelation_parDefs, METH_O, "SpatialFrequencyCrosscorrelation_parDefs(SpatialFrequencyCrosscorrelation self) -> std::vector< ParaMeta,std::allocator< ParaMeta > >"}, { "SpatialFrequencyCrosscorrelation_baseCrossCorrDepth", _wrap_SpatialFrequencyCrosscorrelation_baseCrossCorrDepth, METH_O, "SpatialFrequencyCrosscorrelation_baseCrossCorrDepth(SpatialFrequencyCrosscorrelation self) -> double"}, { "SpatialFrequencyCrosscorrelation_baseSpatialFrequency", _wrap_SpatialFrequencyCrosscorrelation_baseSpatialFrequency, METH_O, "SpatialFrequencyCrosscorrelation_baseSpatialFrequency(SpatialFrequencyCrosscorrelation self) -> double"},