diff --git a/Core/Simulation/ISimulation.h b/Core/Simulation/ISimulation.h index f6e235e9951110a7be5ff3460563a77a383c9bc6..90ce97bd4579cc022e3d9275a31b44a1dc2a0e6c 100644 --- a/Core/Simulation/ISimulation.h +++ b/Core/Simulation/ISimulation.h @@ -12,8 +12,8 @@ // // ************************************************************************** // -#ifndef BORNAGAIN_CORE_SIMULATION_SIMULATION_H -#define BORNAGAIN_CORE_SIMULATION_SIMULATION_H +#ifndef BORNAGAIN_CORE_SIMULATION_ISIMULATION_H +#define BORNAGAIN_CORE_SIMULATION_ISIMULATION_H #include "Core/Computation/ProgressHandler.h" #include "Device/Detector/IDetector2D.h" @@ -156,4 +156,4 @@ private: std::unique_ptr<IBackground> m_background; }; -#endif // BORNAGAIN_CORE_SIMULATION_SIMULATION_H +#endif // BORNAGAIN_CORE_SIMULATION_ISIMULATION_H diff --git a/Core/Simulation/ISimulation2D.h b/Core/Simulation/ISimulation2D.h index 3f777ec175b2ad058ced8cead774c0a4e69bb34b..43e67d278ddb5f7aab4f34ff447bb8a1ff5fb0da 100644 --- a/Core/Simulation/ISimulation2D.h +++ b/Core/Simulation/ISimulation2D.h @@ -12,8 +12,8 @@ // // ************************************************************************** // -#ifndef BORNAGAIN_CORE_SIMULATION_SIMULATION2D_H -#define BORNAGAIN_CORE_SIMULATION_SIMULATION2D_H +#ifndef BORNAGAIN_CORE_SIMULATION_ISIMULATION2D_H +#define BORNAGAIN_CORE_SIMULATION_ISIMULATION2D_H #include "Core/Simulation/ISimulation.h" @@ -100,4 +100,4 @@ private: std::unique_ptr<DetectorContext> m_detector_context; }; -#endif // BORNAGAIN_CORE_SIMULATION_SIMULATION2D_H +#endif // BORNAGAIN_CORE_SIMULATION_ISIMULATION2D_H diff --git a/Examples/Demos/simul_demo_cyl_SSCA.py b/Examples/Demos/simul_demo_cyl_SSCA.py index 9e1db66fa4574f519769accc165b75dea99e8a2d..e469a40df3d7a1ca65df3be7abd8453930cfc2ac 100644 --- a/Examples/Demos/simul_demo_cyl_SSCA.py +++ b/Examples/Demos/simul_demo_cyl_SSCA.py @@ -1,5 +1,5 @@ ''' -ISimulation demo: Size Space Coupling Approximation +Simulation demo: Size Space Coupling Approximation ''' import numpy diff --git a/Examples/Demos/simul_demo_cylsphere.py b/Examples/Demos/simul_demo_cylsphere.py index 462e8d121d956bef0fde4fd37b8df79924d66015..1b7f60f258aa464c60d38ec027dae0aa15e1ee6c 100644 --- a/Examples/Demos/simul_demo_cylsphere.py +++ b/Examples/Demos/simul_demo_cylsphere.py @@ -1,5 +1,5 @@ ''' -ISimulation demo: Cylinder and/or sphere on substrate +Simulation demo: Cylinder and/or sphere on substrate ''' import numpy diff --git a/Examples/Demos/simul_demo_lattice1.py b/Examples/Demos/simul_demo_lattice1.py index d6a84612439eb26caded52dd404e9036bada5be0..7b433807041b314e360380f93b8df4bfa4b63c35 100644 --- a/Examples/Demos/simul_demo_lattice1.py +++ b/Examples/Demos/simul_demo_lattice1.py @@ -1,5 +1,5 @@ ''' -ISimulation demo: 2d lattice structure of particles +Simulation demo: 2d lattice structure of particles ''' import numpy diff --git a/Examples/Demos/simul_demo_lattice2.py b/Examples/Demos/simul_demo_lattice2.py index d1e0c1f3e76728d2627d7f0df0da42b085cfb2a4..67b89d1f7ce838f39800bcc9fbe467e62c5bf34c 100644 --- a/Examples/Demos/simul_demo_lattice2.py +++ b/Examples/Demos/simul_demo_lattice2.py @@ -1,5 +1,5 @@ ''' -ISimulation demo: Cylinder form factor without interference +Simulation demo: Cylinder form factor without interference ''' import numpy diff --git a/Examples/Demos/simul_demo_movie.py b/Examples/Demos/simul_demo_movie.py index c842fa970442ece15bb734112d2059d2e9cab48d..dfb7de2e43d6de760e40bb5df3ff1bd33f0a081e 100644 --- a/Examples/Demos/simul_demo_movie.py +++ b/Examples/Demos/simul_demo_movie.py @@ -1,5 +1,5 @@ ''' -ISimulation demo: movie of growing particles on substrate +Simulation demo: movie of growing particles on substrate ''' import os, sys diff --git a/Examples/Demos/simul_demo_movie2.py b/Examples/Demos/simul_demo_movie2.py index 7f31249da581d5221c1def033a4442b8ab38ffc4..72b73ae6537c23914c12b09ff4e64321fba7f3c8 100644 --- a/Examples/Demos/simul_demo_movie2.py +++ b/Examples/Demos/simul_demo_movie2.py @@ -1,5 +1,5 @@ ''' -ISimulation demo: make movie +Simulation demo: make movie ''' import os, sys diff --git a/Examples/Demos/simul_demo_movie3.py b/Examples/Demos/simul_demo_movie3.py index 1ba3c36bfd0e15b8065c4f579bb6fe6dc299ba7f..0037480b61ed8e0b5de18e734746005381e4d40b 100644 --- a/Examples/Demos/simul_demo_movie3.py +++ b/Examples/Demos/simul_demo_movie3.py @@ -1,5 +1,5 @@ ''' -ISimulation demo: Size Space Coupling Approximation +Simulation demo: Size Space Coupling Approximation ''' import os, sys diff --git a/Examples/python/fitting/ex03_ExtendedExamples/specular/RealLifeReflectometryFitting.py b/Examples/python/fitting/ex03_ExtendedExamples/specular/RealLifeReflectometryFitting.py index 5ef8ce8d8e379f3a57f2401ce94aa05039be3e14..5ac85e84fd6f10383fa96e01117f031c0f58b436 100644 --- a/Examples/python/fitting/ex03_ExtendedExamples/specular/RealLifeReflectometryFitting.py +++ b/Examples/python/fitting/ex03_ExtendedExamples/specular/RealLifeReflectometryFitting.py @@ -257,7 +257,7 @@ def plot_result(sim_result, ref_result, bin_start=0, bin_end=-1): ylabel = "Intensity" plt.xlabel(xlabel, fontsize=16) plt.ylabel(ylabel, fontsize=16) - plt.legend(['Experimental data', 'ISimulation', 'Reference'], + plt.legend(['Experimental data', 'Simulation', 'Reference'], loc='upper right', fontsize=16) plt.show() diff --git a/Examples/python/simulation/ex03_InterferenceFunctions/Interference1DLattice.py b/Examples/python/simulation/ex03_InterferenceFunctions/Interference1DLattice.py index 4015a974f7c4e9a7f15dd2875fd4c205b9443e6f..20d98c6b4fdc6287278d2bc48918a24617afd82d 100644 --- a/Examples/python/simulation/ex03_InterferenceFunctions/Interference1DLattice.py +++ b/Examples/python/simulation/ex03_InterferenceFunctions/Interference1DLattice.py @@ -1,5 +1,5 @@ """ -ISimulation of grating using very long boxes and 1D lattice. +Simulation of grating using very long boxes and 1D lattice. Monte-carlo integration is used to get rid of large-particle form factor oscillations. """ diff --git a/Examples/python/simulation/ex03_InterferenceFunctions/RectangularGrating.py b/Examples/python/simulation/ex03_InterferenceFunctions/RectangularGrating.py index d4443ce01dd0770f52d7a134a32355c30fe7d636..b3765dcbcdede787317c8be2efb1dcdd68132ba2 100644 --- a/Examples/python/simulation/ex03_InterferenceFunctions/RectangularGrating.py +++ b/Examples/python/simulation/ex03_InterferenceFunctions/RectangularGrating.py @@ -1,5 +1,5 @@ """ -ISimulation of grating using very long boxes and 1D lattice. +Simulation of grating using very long boxes and 1D lattice. Monte-carlo integration is used to get rid of large-particle form factor oscillations. """ diff --git a/Examples/python/simulation/ex04_ComplexShapes/ParticlesCrossingInterface.py b/Examples/python/simulation/ex04_ComplexShapes/ParticlesCrossingInterface.py index ee16b973c928e20b88b918a5f55a7915396b2ca3..c9cb50390a330e13f640388143418b8ba25a9b1c 100644 --- a/Examples/python/simulation/ex04_ComplexShapes/ParticlesCrossingInterface.py +++ b/Examples/python/simulation/ex04_ComplexShapes/ParticlesCrossingInterface.py @@ -7,7 +7,7 @@ with the difference, that z-position of particles is adjusted to move them sligh down from vacuum layer and to make them cross substrate/air interface. Note: -1) ISimulation kernel automatically detects particles crossing interface and +1) Simulation kernel automatically detects particles crossing interface and adjusts calculations accordingly. 2) Particle crossing interface requires more time to simulate. diff --git a/Examples/python/simulation/ex05_BeamAndDetector/RectangularDetector.py b/Examples/python/simulation/ex05_BeamAndDetector/RectangularDetector.py index 8c2f94a2d9fa7fb9f27dee75a127721b24507048..7bf9045b8811932c7fe99c611ccec180435f0348 100644 --- a/Examples/python/simulation/ex05_BeamAndDetector/RectangularDetector.py +++ b/Examples/python/simulation/ex05_BeamAndDetector/RectangularDetector.py @@ -1,5 +1,5 @@ """ -ISimulation with rectangular detector. Pilatus3-1M detector is used as an example. +Simulation with rectangular detector. Pilatus3-1M detector is used as an example. Results will be compared against simulation with spherical detector. """ import numpy diff --git a/Examples/python/simulation/ex06_Reflectometry/PolarizedSpinAsymmetry.py b/Examples/python/simulation/ex06_Reflectometry/PolarizedSpinAsymmetry.py index 8d6d72c5e38e32fb39bc89b2f441c9c11189e560..6a6e15442313e458d2435ed8b85f56f3d433ceb4 100644 --- a/Examples/python/simulation/ex06_Reflectometry/PolarizedSpinAsymmetry.py +++ b/Examples/python/simulation/ex06_Reflectometry/PolarizedSpinAsymmetry.py @@ -41,7 +41,7 @@ RhoMconst = 2.910429812376859e-12 #################################################################### -# Create Sample and ISimulation # +# Create Sample and Simulation # #################################################################### diff --git a/Examples/python/simulation/ex06_Reflectometry/PolarizedSpinAsymmetryFit.py b/Examples/python/simulation/ex06_Reflectometry/PolarizedSpinAsymmetryFit.py index f7af21c3dc79e42b45dd4d07ecd7af25f320f633..3e193e00606552d88ffb3580cf3a031964e6d6a1 100644 --- a/Examples/python/simulation/ex06_Reflectometry/PolarizedSpinAsymmetryFit.py +++ b/Examples/python/simulation/ex06_Reflectometry/PolarizedSpinAsymmetryFit.py @@ -41,7 +41,7 @@ RhoMconst = 2.910429812376859e-12 #################################################################### -# Create Sample and ISimulation # +# Create Sample and Simulation # #################################################################### diff --git a/Examples/python/simulation/ex07_Miscellaneous/FindPeaks.py b/Examples/python/simulation/ex07_Miscellaneous/FindPeaks.py index 9fc5a724805545dbf9168dc0e33744bbedcca3f2..67e819af38a7e163a3ddec33c1b5550762edf7e8 100644 --- a/Examples/python/simulation/ex07_Miscellaneous/FindPeaks.py +++ b/Examples/python/simulation/ex07_Miscellaneous/FindPeaks.py @@ -1,5 +1,5 @@ """ -ISimulation of grating using very long boxes and 1D lattice. +Simulation of grating using very long boxes and 1D lattice. Monte-carlo integration is used to get rid of large-particle form factor oscillations. """ diff --git a/Examples/python/simulation/ex07_Miscellaneous/MagneticSpheres.py b/Examples/python/simulation/ex07_Miscellaneous/MagneticSpheres.py index 55aef6b1b08b31ef698abef9ef4c845f30e00d5f..a1a126cb466cdf9d95b32aaa5eacbf9f25932418 100644 --- a/Examples/python/simulation/ex07_Miscellaneous/MagneticSpheres.py +++ b/Examples/python/simulation/ex07_Miscellaneous/MagneticSpheres.py @@ -1,5 +1,5 @@ """ -ISimulation demo: magnetic spheres in substrate +Simulation demo: magnetic spheres in substrate """ import bornagain as ba from bornagain import deg, angstrom, nm diff --git a/Sample/Aggregate/InterferenceFunction3DLattice.cpp b/Sample/Aggregate/InterferenceFunction3DLattice.cpp index 80a1e165a50f8e872d3997db694bb2083aada1d7..73188ec40c4b33dd124915de7cf730466a248890 100644 --- a/Sample/Aggregate/InterferenceFunction3DLattice.cpp +++ b/Sample/Aggregate/InterferenceFunction3DLattice.cpp @@ -13,7 +13,7 @@ // ************************************************************************** // #include "Sample/Aggregate/InterferenceFunction3DLattice.h" -#include "Base/Types/Exceptions.h" +#include "Base/Utils/Assert.h" #include "Sample/Correlations/IPeakShape.h" #include <algorithm> @@ -57,9 +57,7 @@ void InterferenceFunction3DLattice::onChange() double InterferenceFunction3DLattice::iff_without_dw(const kvector_t q) const { - if (!m_peak_shape) - throw std::runtime_error("InterferenceFunction3DLattice::evaluate: " - "no peak shape defined"); + ASSERT(m_peak_shape); kvector_t center = q; double radius = 2.1 * m_rec_radius; double inner_radius = 0.0; @@ -69,12 +67,11 @@ double InterferenceFunction3DLattice::iff_without_dw(const kvector_t q) const radius += q.mag(); } auto rec_vectors = m_lattice.reciprocalLatticeVectorsWithinRadius(center, radius); + double result = 0.0; - for (const auto& q_rec : rec_vectors) { - if (!(q_rec.mag() < inner_radius)) { + for (const auto& q_rec : rec_vectors) + if (!(q_rec.mag() < inner_radius)) result += m_peak_shape->evaluate(q, q_rec); - } - } return result; } diff --git a/Sample/Correlations/IPeakShape.cpp b/Sample/Correlations/IPeakShape.cpp index 65aabb7b4f272ef6e0ab01b54821d24574f04609..e1fbdb85be05331725c38a9405d66de2090cbba2 100644 --- a/Sample/Correlations/IPeakShape.cpp +++ b/Sample/Correlations/IPeakShape.cpp @@ -158,16 +158,16 @@ GaussFisherPeakShape* GaussFisherPeakShape::clone() const double GaussFisherPeakShape::evaluate(const kvector_t q, const kvector_t q_lattice_point) const { - double q_r = q.mag(); - double q_lat_r = q_lattice_point.mag(); - double dq2 = (q_r - q_lat_r) * (q_r - q_lat_r); + const double q_r = q.mag(); + const double q_lat_r = q_lattice_point.mag(); + const double dq2 = (q_r - q_lat_r) * (q_r - q_lat_r); if (q_lat_r == 0.0) return m_max_intensity * Gauss3D(dq2, m_radial_size); - double norm_factor = m_radial_size / std::sqrt(M_TWOPI); - double radial_part = norm_factor * std::exp(-dq2 * m_radial_size * m_radial_size / 2.0); + const double norm_factor = m_radial_size / std::sqrt(M_TWOPI); + const double radial_part = norm_factor * std::exp(-dq2 * m_radial_size * m_radial_size / 2.0); double angular_part = 1.0; if (q_r * q_lat_r > 0.0) { - double dot_norm = q.dot(q_lattice_point) / q_r / q_lat_r; + const double dot_norm = q.dot(q_lattice_point) / q_r / q_lat_r; angular_part = FisherDistribution(dot_norm, m_kappa) / (q_r * q_r); } return m_max_intensity * radial_part * angular_part; @@ -192,15 +192,15 @@ LorentzFisherPeakShape* LorentzFisherPeakShape::clone() const double LorentzFisherPeakShape::evaluate(const kvector_t q, const kvector_t q_lattice_point) const { - double q_r = q.mag(); - double q_lat_r = q_lattice_point.mag(); - double dq2 = (q_r - q_lat_r) * (q_r - q_lat_r); + const double q_r = q.mag(); + const double q_lat_r = q_lattice_point.mag(); + const double dq2 = (q_r - q_lat_r) * (q_r - q_lat_r); if (q_lat_r == 0.0) return m_max_intensity * Cauchy3D(dq2, m_radial_size); - double radial_part = m_radial_size / (1.0 + dq2 * m_radial_size * m_radial_size) / M_PI; + const double radial_part = m_radial_size / (1.0 + dq2 * m_radial_size * m_radial_size) / M_PI; double angular_part = 1.0; if (q_r * q_lat_r > 0.0) { - double dot_norm = q.dot(q_lattice_point) / q_r / q_lat_r; + const double dot_norm = q.dot(q_lattice_point) / q_r / q_lat_r; angular_part = FisherDistribution(dot_norm, m_kappa) / (q_r * q_r); } return m_max_intensity * radial_part * angular_part; @@ -232,20 +232,20 @@ MisesFisherGaussPeakShape* MisesFisherGaussPeakShape::clone() const double MisesFisherGaussPeakShape::evaluate(const kvector_t q, const kvector_t q_lattice_point) const { // radial part - double q_r = q.mag(); - double q_lat_r = q_lattice_point.mag(); - double dq2 = (q_r - q_lat_r) * (q_r - q_lat_r); + const double q_r = q.mag(); + const double q_lat_r = q_lattice_point.mag(); + const double dq2 = (q_r - q_lat_r) * (q_r - q_lat_r); if (q_lat_r == 0.0 || q_r == 0.0) return m_max_intensity * Gauss3D(dq2, m_radial_size); - double norm_factor = m_radial_size / std::sqrt(M_TWOPI); - double radial_part = norm_factor * std::exp(-dq2 * m_radial_size * m_radial_size / 2.0); + const double norm_factor = m_radial_size / std::sqrt(M_TWOPI); + const double radial_part = norm_factor * std::exp(-dq2 * m_radial_size * m_radial_size / 2.0); // angular part m_uy = m_zenith.cross(q_lattice_point); kvector_t zxq = m_zenith.cross(q); m_up = q_lattice_point.unit(); if (m_uy.mag2() <= 0.0 || zxq.mag2() <= 0.0) { - double x = q.unit().dot(m_up); - double angular_part = FisherDistribution(x, m_kappa_1); + const double x = q.unit().dot(m_up); + const double angular_part = FisherDistribution(x, m_kappa_1); return m_max_intensity * radial_part * angular_part; } m_uy = m_uy.unit(); @@ -253,9 +253,9 @@ double MisesFisherGaussPeakShape::evaluate(const kvector_t q, const kvector_t q_ kvector_t q_ortho = q - q.dot(m_zenith) * m_zenith; m_phi = std::acos(q_ortho.unit().dot(m_ux)); m_theta = std::acos(q.unit().dot(m_zenith)); - double pre_1 = FisherPrefactor(m_kappa_1); - double pre_2 = MisesPrefactor(m_kappa_2); - double integral = RealIntegrator().integrate( + const double pre_1 = FisherPrefactor(m_kappa_1); + const double pre_2 = MisesPrefactor(m_kappa_2); + const double integral = RealIntegrator().integrate( [&](double phi) -> double { return integrand(phi); }, 0.0, M_TWOPI); return m_max_intensity * radial_part * pre_1 * pre_2 * integral; } @@ -264,9 +264,9 @@ double MisesFisherGaussPeakShape::integrand(double phi) const { kvector_t u_q = std::sin(m_theta) * std::cos(phi) * m_ux + std::sin(m_theta) * std::sin(phi) * m_uy + std::cos(m_theta) * m_zenith; - double fisher = std::exp(m_kappa_1 * (u_q.dot(m_up) - 1.0)); - double vonmises = std::exp(m_kappa_2 * (std::cos(m_phi - phi) - 1.0)); - return fisher * vonmises; + const double fisher = std::exp(m_kappa_1 * (u_q.dot(m_up) - 1.0)); + const double mises = std::exp(m_kappa_2 * (std::cos(m_phi - phi) - 1.0)); + return fisher * mises; } // ************************************************************************** // @@ -294,7 +294,7 @@ double MisesGaussPeakShape::evaluate(const kvector_t q, const kvector_t q_lattic m_uy = m_zenith.cross(q_lattice_point); kvector_t zxq = m_zenith.cross(q); if (m_uy.mag2() <= 0.0 || zxq.mag2() <= 0.0) { - double dq2 = (q - q_lattice_point).mag2(); + const double dq2 = (q - q_lattice_point).mag2(); return m_max_intensity * Gauss3D(dq2, m_radial_size); } m_qr = q.mag(); @@ -304,8 +304,8 @@ double MisesGaussPeakShape::evaluate(const kvector_t q, const kvector_t q_lattic kvector_t q_ortho = q - q.dot(m_zenith) * m_zenith; m_phi = std::acos(q_ortho.unit().dot(m_ux)); m_theta = std::acos(q.unit().dot(m_zenith)); - double pre = MisesPrefactor(m_kappa); - double integral = RealIntegrator().integrate( + const double pre = MisesPrefactor(m_kappa); + const double integral = RealIntegrator().integrate( [&](double phi) -> double { return integrand(phi); }, 0.0, M_TWOPI); return m_max_intensity * pre * integral; } @@ -315,8 +315,8 @@ double MisesGaussPeakShape::integrand(double phi) const kvector_t q_rot = m_qr * (std::sin(m_theta) * std::cos(phi) * m_ux + std::sin(m_theta) * std::sin(phi) * m_uy + std::cos(m_theta) * m_zenith); - double dq2 = (q_rot - m_p).mag2(); - double gauss = Gauss3D(dq2, m_radial_size); - double vonmises = std::exp(m_kappa * (std::cos(m_phi - phi) - 1.0)); - return gauss * vonmises; + const double dq2 = (q_rot - m_p).mag2(); + const double gauss = Gauss3D(dq2, m_radial_size); + const double mises = std::exp(m_kappa * (std::cos(m_phi - phi) - 1.0)); + return gauss * mises; } diff --git a/Sample/Lattice/ILatticeOrientation.cpp b/Sample/Lattice/ILatticeOrientation.cpp index db239c6a3dd97495eb7a9a3c2fe87d73ce442bd4..212d83c6eb839f9c61a8c968b8107f7358b85126 100644 --- a/Sample/Lattice/ILatticeOrientation.cpp +++ b/Sample/Lattice/ILatticeOrientation.cpp @@ -56,7 +56,7 @@ void MillerIndexOrientation::usePrimitiveLattice(const Lattice& lattice) lattice.getBasisVectorC()); } -Transform3D MillerIndexOrientation::transformationMatrix() const +Transform3D MillerIndexOrientation::transformation() const { auto dir_1 = m_prim_lattice.getMillerDirection(m_ind1.h, m_ind1.k, m_ind1.l); auto dir_2 = m_prim_lattice.getMillerDirection(m_ind2.h, m_ind2.k, m_ind2.l); diff --git a/Sample/Lattice/ILatticeOrientation.h b/Sample/Lattice/ILatticeOrientation.h index 75b8d14a36ab41b48200381c2ed1df4d6065e306..9b6c519627265a018bf809a760d2a14bc4d1a823 100644 --- a/Sample/Lattice/ILatticeOrientation.h +++ b/Sample/Lattice/ILatticeOrientation.h @@ -18,6 +18,9 @@ #include "Base/Vector/Transform3D.h" #include "Sample/Lattice/Lattice.h" +//! Pure virtual base of classes that specify a lattice orientation. +//! Currently only inherited by MillerIndexOrientation. + class ILatticeOrientation { public: @@ -27,7 +30,7 @@ public: virtual void usePrimitiveLattice(const Lattice& lattice) = 0; - virtual Transform3D transformationMatrix() const = 0; + virtual Transform3D transformation() const = 0; }; //! A direction in reciprocal space, specified by double-valued indices hkl. @@ -54,7 +57,7 @@ public: void usePrimitiveLattice(const Lattice& lattice) override; - Transform3D transformationMatrix() const override; + Transform3D transformation() const override; private: bool checkAlignment() const; diff --git a/Sample/Lattice/Lattice.cpp b/Sample/Lattice/Lattice.cpp index 7e413749b5745fd2a7fbc9ba53cb9174a74756d2..3192afb274ba08673803bfe0ade556f8bd235cd6 100644 --- a/Sample/Lattice/Lattice.cpp +++ b/Sample/Lattice/Lattice.cpp @@ -59,7 +59,7 @@ Lattice::~Lattice() delete m_selection_rule; } -Lattice Lattice::createTransformedLattice(const Transform3D& transform) const +Lattice Lattice::transformed(const Transform3D& transform) const { kvector_t a1 = transform.transformed(m_a); kvector_t a2 = transform.transformed(m_b); diff --git a/Sample/Lattice/Lattice.h b/Sample/Lattice/Lattice.h index 64a6b3f0f0d9a884cb63a00a940f598a4f1c5764..ab640a2a1959228f266d784c3c25eb19b544e1d7 100644 --- a/Sample/Lattice/Lattice.h +++ b/Sample/Lattice/Lattice.h @@ -35,7 +35,7 @@ public: void accept(INodeVisitor* visitor) const override { visitor->visit(this); } //! Creates transformed lattice - Lattice createTransformedLattice(const Transform3D& transform) const; + Lattice transformed(const Transform3D& transform) const; //! Initializes cached data void initialize() const; diff --git a/Sample/Lattice/LatticeUtils.cpp b/Sample/Lattice/LatticeUtils.cpp index 79568358765afa91d7aa4b457eaa106fdd2b81e6..d1fd9a8b02d1b4eb98b2b3cb946e8c0046234e38 100644 --- a/Sample/Lattice/LatticeUtils.cpp +++ b/Sample/Lattice/LatticeUtils.cpp @@ -18,30 +18,30 @@ Lattice LatticeUtils::createFCCLattice(double lattice_constant, const ILatticeOrientation& orientation) { - Lattice prim_cubic = Lattice::createCubicLattice(1.0); + const Lattice prim_cubic = Lattice::createCubicLattice(1.0); std::unique_ptr<ILatticeOrientation> P_orientation(orientation.clone()); P_orientation->usePrimitiveLattice(prim_cubic); - auto rotation = P_orientation->transformationMatrix(); - Lattice fcc = Lattice::createFCCLattice(lattice_constant); - return fcc.createTransformedLattice(rotation); + const Transform3D trafo = P_orientation->transformation(); + const Lattice fcc = Lattice::createFCCLattice(lattice_constant); + return fcc.transformed(trafo); } Lattice LatticeUtils::createHCPLattice(double a, double c, const ILatticeOrientation& orientation) { - Lattice prim_hexagonal = Lattice::createHexagonalLattice(1.0, c / a); + const Lattice prim_hexagonal = Lattice::createHexagonalLattice(1.0, c / a); std::unique_ptr<ILatticeOrientation> P_orientation(orientation.clone()); P_orientation->usePrimitiveLattice(prim_hexagonal); - auto rotation = P_orientation->transformationMatrix(); - Lattice hcp = Lattice::createHCPLattice(a, c); - return hcp.createTransformedLattice(rotation); + const Transform3D trafo = P_orientation->transformation(); + const Lattice hcp = Lattice::createHCPLattice(a, c); + return hcp.transformed(trafo); } Lattice LatticeUtils::createBCTLattice(double a, double c, const ILatticeOrientation& orientation) { - Lattice prim_tetragonal = Lattice::createTetragonalLattice(1.0, c / a); + const Lattice prim_tetragonal = Lattice::createTetragonalLattice(1.0, c / a); std::unique_ptr<ILatticeOrientation> P_orientation(orientation.clone()); P_orientation->usePrimitiveLattice(prim_tetragonal); - auto rotation = P_orientation->transformationMatrix(); - Lattice hcp = Lattice::createBCTLattice(a, c); - return hcp.createTransformedLattice(rotation); + const Transform3D trafo = P_orientation->transformation(); + const Lattice hcp = Lattice::createBCTLattice(a, c); + return hcp.transformed(trafo); } diff --git a/Sample/Particle/Crystal.cpp b/Sample/Particle/Crystal.cpp index 9f539cd1ddda262368cf386840d7a9ea329df6e6..5d68e28fbbd837d514a4b55368086b22b864d701 100644 --- a/Sample/Particle/Crystal.cpp +++ b/Sample/Particle/Crystal.cpp @@ -72,7 +72,7 @@ std::vector<HomogeneousRegion> Crystal::homogeneousRegions() const Lattice Crystal::transformedLattice(const IRotation* p_rotation) const { if (p_rotation) - return m_lattice.createTransformedLattice(p_rotation->getTransform3D()); + return m_lattice.transformed(p_rotation->getTransform3D()); else return m_lattice; } diff --git a/Tests/Functional/Python/PyCore/sliced_composition.py b/Tests/Functional/Python/PyCore/sliced_composition.py index 854044511732518748d416b2c08dcfb8758d8b2b..a4e9b46bd8509b02709dfeb9057d0b475c70a00d 100644 --- a/Tests/Functional/Python/PyCore/sliced_composition.py +++ b/Tests/Functional/Python/PyCore/sliced_composition.py @@ -85,8 +85,8 @@ class SlicedSpheresTest(unittest.TestCase): def testComposition(self): """ Compares two simulation intended to provide identical results. - ISimulation #1: spherical particle on top of substrate - ISimulation #2: spherical composition on top of substrate, where top and bottom are made of same material + Simulation #1: spherical particle on top of substrate + Simulation #2: spherical composition on top of substrate, where top and bottom are made of same material """ # spherical particle @@ -104,8 +104,8 @@ class SlicedSpheresTest(unittest.TestCase): def testCompositionBuilds(self): """ Compares two simulation intended to provide identical results. - ISimulation #1: spherical particle composition on top of substrate - ISimulation #2: same, but made using rotation + Simulation #1: spherical particle composition on top of substrate + Simulation #2: same, but made using rotation """ composition = self.get_composition(mParticle, mSubstrate) @@ -123,8 +123,8 @@ class SlicedSpheresTest(unittest.TestCase): def testInvisibleComposition(self): """ Compares two simulation intended to provide identical results. - ISimulation #1: no particles at all - ISimulation #2: spherical composition on top of substrate crossing the interface + Simulation #1: no particles at all + Simulation #2: spherical composition on top of substrate crossing the interface Bottom part of composition is made of substrate material, top part from vacuum layer material """ @@ -145,8 +145,8 @@ class SlicedSpheresTest(unittest.TestCase): def testSlicedComposition(self): """ Compares two simulation intended to provide identical results. - ISimulation #1: spherical particle on top of substrate - ISimulation #2: spherical composition on top of substrate, where top and bottom are made of same material + Simulation #1: spherical particle on top of substrate + Simulation #2: spherical composition on top of substrate, where top and bottom are made of same material Both particles are inserted in vacuum layer with shift to go below interface """ @@ -169,8 +169,8 @@ class SlicedSpheresTest(unittest.TestCase): def testSphericalCupOnTopOfSubstrate(self): """ Compares two simulation intended to provide identical results. - ISimulation #1: truncated sphere on top of substrate. - ISimulation #2: spherical particle composition crossing the interface. + Simulation #1: truncated sphere on top of substrate. + Simulation #2: spherical particle composition crossing the interface. Bottom part of composition is made from substrate material. both cases should look like a truncated sphere on top of substrate. """ diff --git a/Tests/Functional/Python/PyCore/sliced_spheres.py b/Tests/Functional/Python/PyCore/sliced_spheres.py index 0542b2d5c986043b603794692f9c9108e475f971..1195f1df170735d0ded43919fc0ce1a8cbafbb3b 100644 --- a/Tests/Functional/Python/PyCore/sliced_spheres.py +++ b/Tests/Functional/Python/PyCore/sliced_spheres.py @@ -47,8 +47,8 @@ class SlicedSpheresTest(unittest.TestCase): def testSphericalCupOnTopOfSubstrate(self): """ Compares two simulation intended to provide identical results. - ISimulation #1: truncated sphere on top of substrate. - ISimulation #2: spherical particle crossing the interface. + Simulation #1: truncated sphere on top of substrate. + Simulation #2: spherical particle crossing the interface. Both particles are made of same material as substrate. From scattering point of view, both cases should look like a truncated sphere on top of substrate. """ @@ -95,8 +95,8 @@ class SlicedSpheresTest(unittest.TestCase): def testSpheresCrossingInterface(self): """ Compares two simulation intended to provide identical results. - ISimulation #1: full sphere inserted in vacuum layer to cross interface - ISimulation #2: full sphere inserted in substrate layer to cross interface + Simulation #1: full sphere inserted in vacuum layer to cross interface + Simulation #2: full sphere inserted in substrate layer to cross interface Both spheres are made of same material. """ mParticle = ba.HomogeneousMaterial("Ag", 1.245e-5, 5.419e-7) diff --git a/Tests/UnitTests/Core/Sample/LatticeTest.cpp b/Tests/UnitTests/Core/Sample/LatticeTest.cpp index 96dbe38768082474f9f295182a896b57c06f1c6d..4ffd2473a22787d7ca4a5fb63a304ad6efa0fe13 100644 --- a/Tests/UnitTests/Core/Sample/LatticeTest.cpp +++ b/Tests/UnitTests/Core/Sample/LatticeTest.cpp @@ -75,7 +75,7 @@ TEST_F(LatticeTest, transformTest) // use rotation by 90 degrees around z axis as a transformation Transform3D tr = Transform3D::createRotateZ(M_TWOPI / 4); - Lattice ltr = l1.createTransformedLattice(tr); + Lattice ltr = l1.transformed(tr); // use EXPECT_NEAR as transform (matrix multiplication) uses double value for rotation angle // e.g. Rotating the vector (1,0,0) by 2*PI about z would give something like (0.99999,0,0) diff --git a/Wrap/python/plot_utils.py b/Wrap/python/plot_utils.py index 4f45e6bbf40b35120c39f7e7eed38f3d5e99bd23..f0161beb3932617d752e82b5c95678dcaae8b078 100644 --- a/Wrap/python/plot_utils.py +++ b/Wrap/python/plot_utils.py @@ -29,7 +29,7 @@ label_fontsize = 16 def get_axes_limits(result, units): """ Returns axes range as expected by pyplot.imshow. - :param result: SimulationResult object from a ISimulation + :param result: SimulationResult object from a Simulation :param units: units to use :return: axes ranges as a flat list """ @@ -73,7 +73,7 @@ def translate_axis_label(label): def get_axes_labels(result, units): """ Returns axes range as expected by pyplot.imshow. - :param result: SimulationResult object from a ISimulation + :param result: SimulationResult object from a Simulation :param units: units to use :return: axes ranges as a flat list """ diff --git a/auto/Wrap/doxygenSample.i b/auto/Wrap/doxygenSample.i index a948f8eb0275c39971ff9bd65976651fd4f93837..bedb5409bc49fa109285d649b9529c9b58781506 100644 --- a/auto/Wrap/doxygenSample.i +++ b/auto/Wrap/doxygenSample.i @@ -3640,7 +3640,12 @@ Calculates the intensity for scalar particles/interactions. // File: classILatticeOrientation.xml -%feature("docstring") ILatticeOrientation ""; +%feature("docstring") ILatticeOrientation " + +Pure virtual base of classes that specify a lattice orientation. Currently only inherited by MillerIndexOrientation. + +C++ includes: ILatticeOrientation.h +"; %feature("docstring") ILatticeOrientation::~ILatticeOrientation "ILatticeOrientation::~ILatticeOrientation() "; @@ -3651,7 +3656,7 @@ Calculates the intensity for scalar particles/interactions. %feature("docstring") ILatticeOrientation::usePrimitiveLattice "virtual void ILatticeOrientation::usePrimitiveLattice(const Lattice &lattice)=0 "; -%feature("docstring") ILatticeOrientation::transformationMatrix "virtual Transform3D ILatticeOrientation::transformationMatrix() const =0 +%feature("docstring") ILatticeOrientation::transformation "virtual Transform3D ILatticeOrientation::transformation() const =0 "; @@ -4898,7 +4903,7 @@ C++ includes: Lattice.h %feature("docstring") Lattice::accept "void Lattice::accept(INodeVisitor *visitor) const override "; -%feature("docstring") Lattice::createTransformedLattice "Lattice Lattice::createTransformedLattice(const Transform3D &transform) const +%feature("docstring") Lattice::transformed "Lattice Lattice::transformed(const Transform3D &transform) const Creates transformed lattice. "; @@ -5853,7 +5858,7 @@ This constructor is best explained by an example. Arguments QX, (1,1,0), QY, (0, %feature("docstring") MillerIndexOrientation::usePrimitiveLattice "void MillerIndexOrientation::usePrimitiveLattice(const Lattice &lattice) override "; -%feature("docstring") MillerIndexOrientation::transformationMatrix "Transform3D MillerIndexOrientation::transformationMatrix() const override +%feature("docstring") MillerIndexOrientation::transformation "Transform3D MillerIndexOrientation::transformation() const override "; diff --git a/auto/Wrap/libBornAgainSample.py b/auto/Wrap/libBornAgainSample.py index 3c6988c5fda786e0333741bb43737b8e301be141..697a6fd0aba96c9639ebc86253b405b0c74ff293 100644 --- a/auto/Wrap/libBornAgainSample.py +++ b/auto/Wrap/libBornAgainSample.py @@ -11382,7 +11382,14 @@ class FormFactorSphereLogNormalRadius(IFormFactorBorn): _libBornAgainSample.FormFactorSphereLogNormalRadius_swigregister(FormFactorSphereLogNormalRadius) class ILatticeOrientation(object): - r"""Proxy of C++ ILatticeOrientation class.""" + r""" + + + Pure virtual base of classes that specify a lattice orientation. Currently only inherited by MillerIndexOrientation. + + C++ includes: ILatticeOrientation.h + + """ thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag") @@ -11407,13 +11414,13 @@ class ILatticeOrientation(object): """ return _libBornAgainSample.ILatticeOrientation_usePrimitiveLattice(self, lattice) - def transformationMatrix(self): + def transformation(self): r""" - transformationMatrix(ILatticeOrientation self) -> Transform3D - virtual Transform3D ILatticeOrientation::transformationMatrix() const =0 + transformation(ILatticeOrientation self) -> Transform3D + virtual Transform3D ILatticeOrientation::transformation() const =0 """ - return _libBornAgainSample.ILatticeOrientation_transformationMatrix(self) + return _libBornAgainSample.ILatticeOrientation_transformation(self) # Register ILatticeOrientation in _libBornAgainSample: _libBornAgainSample.ILatticeOrientation_swigregister(ILatticeOrientation) @@ -11492,13 +11499,13 @@ class MillerIndexOrientation(ILatticeOrientation): """ return _libBornAgainSample.MillerIndexOrientation_usePrimitiveLattice(self, lattice) - def transformationMatrix(self): + def transformation(self): r""" - transformationMatrix(MillerIndexOrientation self) -> Transform3D - Transform3D MillerIndexOrientation::transformationMatrix() const override + transformation(MillerIndexOrientation self) -> Transform3D + Transform3D MillerIndexOrientation::transformation() const override """ - return _libBornAgainSample.MillerIndexOrientation_transformationMatrix(self) + return _libBornAgainSample.MillerIndexOrientation_transformation(self) # Register MillerIndexOrientation in _libBornAgainSample: _libBornAgainSample.MillerIndexOrientation_swigregister(MillerIndexOrientation) @@ -11612,15 +11619,15 @@ class Lattice(libBornAgainParam.INode): """ return _libBornAgainSample.Lattice_accept(self, visitor) - def createTransformedLattice(self, transform): + def transformed(self, transform): r""" - createTransformedLattice(Lattice self, Transform3D const & transform) -> Lattice - Lattice Lattice::createTransformedLattice(const Transform3D &transform) const + transformed(Lattice self, Transform3D const & transform) -> Lattice + Lattice Lattice::transformed(const Transform3D &transform) const Creates transformed lattice. """ - return _libBornAgainSample.Lattice_createTransformedLattice(self, transform) + return _libBornAgainSample.Lattice_transformed(self, transform) def initialize(self): r""" diff --git a/auto/Wrap/libBornAgainSample_wrap.cpp b/auto/Wrap/libBornAgainSample_wrap.cpp index b4b7786a4ee479f798afaf55032573558cb1154d..4360cb94ec10271257bf6cb5c0f5567935c4ed37 100644 --- a/auto/Wrap/libBornAgainSample_wrap.cpp +++ b/auto/Wrap/libBornAgainSample_wrap.cpp @@ -67868,7 +67868,7 @@ fail: } -SWIGINTERN PyObject *_wrap_ILatticeOrientation_transformationMatrix(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { +SWIGINTERN PyObject *_wrap_ILatticeOrientation_transformation(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; ILatticeOrientation *arg1 = (ILatticeOrientation *) 0 ; void *argp1 = 0 ; @@ -67880,10 +67880,10 @@ SWIGINTERN PyObject *_wrap_ILatticeOrientation_transformationMatrix(PyObject *SW swig_obj[0] = args; res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_ILatticeOrientation, 0 | 0 ); if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ILatticeOrientation_transformationMatrix" "', argument " "1"" of type '" "ILatticeOrientation const *""'"); + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ILatticeOrientation_transformation" "', argument " "1"" of type '" "ILatticeOrientation const *""'"); } arg1 = reinterpret_cast< ILatticeOrientation * >(argp1); - result = ((ILatticeOrientation const *)arg1)->transformationMatrix(); + result = ((ILatticeOrientation const *)arg1)->transformation(); resultobj = SWIG_NewPointerObj((new Transform3D(static_cast< const Transform3D& >(result))), SWIGTYPE_p_Transform3D, SWIG_POINTER_OWN | 0 ); return resultobj; fail: @@ -68264,7 +68264,7 @@ fail: } -SWIGINTERN PyObject *_wrap_MillerIndexOrientation_transformationMatrix(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { +SWIGINTERN PyObject *_wrap_MillerIndexOrientation_transformation(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; MillerIndexOrientation *arg1 = (MillerIndexOrientation *) 0 ; void *argp1 = 0 ; @@ -68276,10 +68276,10 @@ SWIGINTERN PyObject *_wrap_MillerIndexOrientation_transformationMatrix(PyObject swig_obj[0] = args; res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_MillerIndexOrientation, 0 | 0 ); if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "MillerIndexOrientation_transformationMatrix" "', argument " "1"" of type '" "MillerIndexOrientation const *""'"); + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "MillerIndexOrientation_transformation" "', argument " "1"" of type '" "MillerIndexOrientation const *""'"); } arg1 = reinterpret_cast< MillerIndexOrientation * >(argp1); - result = ((MillerIndexOrientation const *)arg1)->transformationMatrix(); + result = ((MillerIndexOrientation const *)arg1)->transformation(); resultobj = SWIG_NewPointerObj((new Transform3D(static_cast< const Transform3D& >(result))), SWIGTYPE_p_Transform3D, SWIG_POINTER_OWN | 0 ); return resultobj; fail: @@ -68713,7 +68713,7 @@ fail: } -SWIGINTERN PyObject *_wrap_Lattice_createTransformedLattice(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { +SWIGINTERN PyObject *_wrap_Lattice_transformed(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; Lattice *arg1 = (Lattice *) 0 ; Transform3D *arg2 = 0 ; @@ -68724,21 +68724,21 @@ SWIGINTERN PyObject *_wrap_Lattice_createTransformedLattice(PyObject *SWIGUNUSED PyObject *swig_obj[2] ; SwigValueWrapper< Lattice > result; - if (!SWIG_Python_UnpackTuple(args, "Lattice_createTransformedLattice", 2, 2, swig_obj)) SWIG_fail; + if (!SWIG_Python_UnpackTuple(args, "Lattice_transformed", 2, 2, swig_obj)) SWIG_fail; res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_Lattice, 0 | 0 ); if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Lattice_createTransformedLattice" "', argument " "1"" of type '" "Lattice const *""'"); + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Lattice_transformed" "', argument " "1"" of type '" "Lattice const *""'"); } arg1 = reinterpret_cast< Lattice * >(argp1); res2 = SWIG_ConvertPtr(swig_obj[1], &argp2, SWIGTYPE_p_Transform3D, 0 | 0); if (!SWIG_IsOK(res2)) { - SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Lattice_createTransformedLattice" "', argument " "2"" of type '" "Transform3D const &""'"); + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Lattice_transformed" "', argument " "2"" of type '" "Transform3D const &""'"); } if (!argp2) { - SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Lattice_createTransformedLattice" "', argument " "2"" of type '" "Transform3D const &""'"); + SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Lattice_transformed" "', argument " "2"" of type '" "Transform3D const &""'"); } arg2 = reinterpret_cast< Transform3D * >(argp2); - result = ((Lattice const *)arg1)->createTransformedLattice((Transform3D const &)*arg2); + result = ((Lattice const *)arg1)->transformed((Transform3D const &)*arg2); resultobj = SWIG_NewPointerObj((new Lattice(static_cast< const Lattice& >(result))), SWIGTYPE_p_Lattice, SWIG_POINTER_OWN | 0 ); return resultobj; fail: @@ -76881,9 +76881,9 @@ static PyMethodDef SwigMethods[] = { "virtual void ILatticeOrientation::usePrimitiveLattice(const Lattice &lattice)=0\n" "\n" ""}, - { "ILatticeOrientation_transformationMatrix", _wrap_ILatticeOrientation_transformationMatrix, METH_O, "\n" - "ILatticeOrientation_transformationMatrix(ILatticeOrientation self) -> Transform3D\n" - "virtual Transform3D ILatticeOrientation::transformationMatrix() const =0\n" + { "ILatticeOrientation_transformation", _wrap_ILatticeOrientation_transformation, METH_O, "\n" + "ILatticeOrientation_transformation(ILatticeOrientation self) -> Transform3D\n" + "virtual Transform3D ILatticeOrientation::transformation() const =0\n" "\n" ""}, { "ILatticeOrientation_swigregister", ILatticeOrientation_swigregister, METH_O, NULL}, @@ -76923,9 +76923,9 @@ static PyMethodDef SwigMethods[] = { "void MillerIndexOrientation::usePrimitiveLattice(const Lattice &lattice) override\n" "\n" ""}, - { "MillerIndexOrientation_transformationMatrix", _wrap_MillerIndexOrientation_transformationMatrix, METH_O, "\n" - "MillerIndexOrientation_transformationMatrix(MillerIndexOrientation self) -> Transform3D\n" - "Transform3D MillerIndexOrientation::transformationMatrix() const override\n" + { "MillerIndexOrientation_transformation", _wrap_MillerIndexOrientation_transformation, METH_O, "\n" + "MillerIndexOrientation_transformation(MillerIndexOrientation self) -> Transform3D\n" + "Transform3D MillerIndexOrientation::transformation() const override\n" "\n" ""}, { "MillerIndexOrientation_swigregister", MillerIndexOrientation_swigregister, METH_O, NULL}, @@ -76985,9 +76985,9 @@ static PyMethodDef SwigMethods[] = { "void Lattice::accept(INodeVisitor *visitor) const override\n" "\n" ""}, - { "Lattice_createTransformedLattice", _wrap_Lattice_createTransformedLattice, METH_VARARGS, "\n" - "Lattice_createTransformedLattice(Lattice self, Transform3D const & transform) -> Lattice\n" - "Lattice Lattice::createTransformedLattice(const Transform3D &transform) const\n" + { "Lattice_transformed", _wrap_Lattice_transformed, METH_VARARGS, "\n" + "Lattice_transformed(Lattice self, Transform3D const & transform) -> Lattice\n" + "Lattice Lattice::transformed(const Transform3D &transform) const\n" "\n" "Creates transformed lattice. \n" "\n"