From 2e5170e9f595702d25ce390a9e5accf08b97e3eb Mon Sep 17 00:00:00 2001 From: Walter Van Herck <w.van.herck@fz-juelich.de> Date: Mon, 16 Apr 2018 14:06:02 +0200 Subject: [PATCH] Added PyStandard test for finite lattice --- .../InterferenceFunctionFinite2DLattice.h | 3 ++ Core/Export/SampleToPython.cpp | 15 ++++++ .../Python/PyStandard/CMakeLists.txt | 1 + auto/Wrap/libBornAgainCore.py | 10 ++++ auto/Wrap/libBornAgainCore_wrap.cpp | 46 +++++++++++++++++++ 5 files changed, 75 insertions(+) diff --git a/Core/Aggregate/InterferenceFunctionFinite2DLattice.h b/Core/Aggregate/InterferenceFunctionFinite2DLattice.h index b8719b2be42..1b978deda9e 100644 --- a/Core/Aggregate/InterferenceFunctionFinite2DLattice.h +++ b/Core/Aggregate/InterferenceFunctionFinite2DLattice.h @@ -43,6 +43,9 @@ public: double evaluate(const kvector_t q) const final; + unsigned domainSize1() const { return m_size_1; } + unsigned domainSize2() const { return m_size_2; } + void setPositionVariance(double sigma2) { m_sigma2 = sigma2; } double positionVariance() const { return m_sigma2; } diff --git a/Core/Export/SampleToPython.cpp b/Core/Export/SampleToPython.cpp index 8ba52c502db..4ecee8a69d5 100644 --- a/Core/Export/SampleToPython.cpp +++ b/Core/Export/SampleToPython.cpp @@ -418,6 +418,21 @@ std::string SampleToPython::defineInterferenceFunctions() const << argumentList(pdf) << ")\n" << indent() << it->second << ".setDecayFunction(" << it->second << "_pdf)\n"; + if (p_lattice_2d->integrationOverXi() == true) + result << indent() << it->second << ".setIntegrationOverXi(True)\n"; + } else if (auto p_lattice_2d + = dynamic_cast<const InterferenceFunctionFinite2DLattice*>(interference)) { + const Lattice2D& lattice = p_lattice_2d->lattice(); + result << indent() << it->second << " = ba.InterferenceFunctionFinite2DLattice(" + << printNm(lattice.length1()) << ", " << printNm(lattice.length2()) << ", " + << printDegrees(lattice.latticeAngle()) << ", " + << printDegrees(lattice.rotationAngle()) << ", " + << p_lattice_2d->domainSize1() << ", " << p_lattice_2d->domainSize2() << ")\n"; + + if (p_lattice_2d->positionVariance()>0.0) { + result << indent() << it->second << ".setPositionVariance(" + << p_lattice_2d->positionVariance() << ")\n"; + } if (p_lattice_2d->integrationOverXi() == true) result << indent() << it->second << ".setIntegrationOverXi(True)\n"; } else if (auto p_para_2d diff --git a/Tests/Functional/Python/PyStandard/CMakeLists.txt b/Tests/Functional/Python/PyStandard/CMakeLists.txt index 4ffcbc28211..bd7aa6e8563 100644 --- a/Tests/Functional/Python/PyStandard/CMakeLists.txt +++ b/Tests/Functional/Python/PyStandard/CMakeLists.txt @@ -45,6 +45,7 @@ set(test_cases RotatedCylinder RotatedPyramids RotatedSquareLattice + FiniteSquareLattice SimulationWithMasks SquareLattice TransformBox diff --git a/auto/Wrap/libBornAgainCore.py b/auto/Wrap/libBornAgainCore.py index 0354d18b8f3..4f34f4aa3a0 100644 --- a/auto/Wrap/libBornAgainCore.py +++ b/auto/Wrap/libBornAgainCore.py @@ -21553,6 +21553,16 @@ class InterferenceFunctionFinite2DLattice(IInterferenceFunction): return _libBornAgainCore.InterferenceFunctionFinite2DLattice_evaluate(self, q) + def domainSize1(self): + """domainSize1(InterferenceFunctionFinite2DLattice self) -> unsigned int""" + return _libBornAgainCore.InterferenceFunctionFinite2DLattice_domainSize1(self) + + + def domainSize2(self): + """domainSize2(InterferenceFunctionFinite2DLattice self) -> unsigned int""" + return _libBornAgainCore.InterferenceFunctionFinite2DLattice_domainSize2(self) + + def setPositionVariance(self, sigma2): """ setPositionVariance(InterferenceFunctionFinite2DLattice self, double sigma2) diff --git a/auto/Wrap/libBornAgainCore_wrap.cpp b/auto/Wrap/libBornAgainCore_wrap.cpp index 66e72fa5626..3f019121edb 100644 --- a/auto/Wrap/libBornAgainCore_wrap.cpp +++ b/auto/Wrap/libBornAgainCore_wrap.cpp @@ -93973,6 +93973,50 @@ fail: } +SWIGINTERN PyObject *_wrap_InterferenceFunctionFinite2DLattice_domainSize1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + InterferenceFunctionFinite2DLattice *arg1 = (InterferenceFunctionFinite2DLattice *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + unsigned int result; + + if (!PyArg_ParseTuple(args,(char *)"O:InterferenceFunctionFinite2DLattice_domainSize1",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_InterferenceFunctionFinite2DLattice, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "InterferenceFunctionFinite2DLattice_domainSize1" "', argument " "1"" of type '" "InterferenceFunctionFinite2DLattice const *""'"); + } + arg1 = reinterpret_cast< InterferenceFunctionFinite2DLattice * >(argp1); + result = (unsigned int)((InterferenceFunctionFinite2DLattice const *)arg1)->domainSize1(); + resultobj = SWIG_From_unsigned_SS_int(static_cast< unsigned int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_InterferenceFunctionFinite2DLattice_domainSize2(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + InterferenceFunctionFinite2DLattice *arg1 = (InterferenceFunctionFinite2DLattice *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + unsigned int result; + + if (!PyArg_ParseTuple(args,(char *)"O:InterferenceFunctionFinite2DLattice_domainSize2",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_InterferenceFunctionFinite2DLattice, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "InterferenceFunctionFinite2DLattice_domainSize2" "', argument " "1"" of type '" "InterferenceFunctionFinite2DLattice const *""'"); + } + arg1 = reinterpret_cast< InterferenceFunctionFinite2DLattice * >(argp1); + result = (unsigned int)((InterferenceFunctionFinite2DLattice const *)arg1)->domainSize2(); + resultobj = SWIG_From_unsigned_SS_int(static_cast< unsigned int >(result)); + return resultobj; +fail: + return NULL; +} + + SWIGINTERN PyObject *_wrap_InterferenceFunctionFinite2DLattice_setPositionVariance(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; InterferenceFunctionFinite2DLattice *arg1 = (InterferenceFunctionFinite2DLattice *) 0 ; @@ -127185,6 +127229,8 @@ static PyMethodDef SwigMethods[] = { "Evaluates the interference function for a given wavevector transfer (only the real x and y components are relevant) \n" "\n" ""}, + { (char *)"InterferenceFunctionFinite2DLattice_domainSize1", _wrap_InterferenceFunctionFinite2DLattice_domainSize1, METH_VARARGS, (char *)"InterferenceFunctionFinite2DLattice_domainSize1(InterferenceFunctionFinite2DLattice self) -> unsigned int"}, + { (char *)"InterferenceFunctionFinite2DLattice_domainSize2", _wrap_InterferenceFunctionFinite2DLattice_domainSize2, METH_VARARGS, (char *)"InterferenceFunctionFinite2DLattice_domainSize2(InterferenceFunctionFinite2DLattice self) -> unsigned int"}, { (char *)"InterferenceFunctionFinite2DLattice_setPositionVariance", _wrap_InterferenceFunctionFinite2DLattice_setPositionVariance, METH_VARARGS, (char *)"\n" "InterferenceFunctionFinite2DLattice_setPositionVariance(InterferenceFunctionFinite2DLattice self, double sigma2)\n" "\n" -- GitLab