diff --git a/solvers/NBody/mobility.h b/solvers/NBody/mobility.h index e4f1bfa..6ead265 100644 --- a/solvers/NBody/mobility.h +++ b/solvers/NBody/mobility.h @@ -30,8 +30,8 @@ class NBody : public libmobility::Mobility { real wallHeight; // location of the wall in z // Batched functionality configuration - int Nbatch; - int NperBatch; + int Nbatch = -1; + int NperBatch = -1; std::mt19937 rng; diff --git a/solvers/PSE/mobility.h b/solvers/PSE/mobility.h index 02e8749..aba0601 100644 --- a/solvers/PSE/mobility.h +++ b/solvers/PSE/mobility.h @@ -4,6 +4,7 @@ #include "extra/uammd_interface.h" #include #include +#include #include #include @@ -50,7 +51,8 @@ class PSE : public libmobility::Mobility { } struct PSEParameters { - real psi, Lx, Ly, Lz, shearStrain; + real psi, Lx, Ly, Lz; + std::optional shearStrain = std::nullopt; }; void setParametersPSE(PSEParameters i_par) { @@ -58,7 +60,7 @@ class PSE : public libmobility::Mobility { psepar.Lx = i_par.Lx; psepar.Ly = i_par.Ly; psepar.Lz = i_par.Lz; - psepar.shearStrain = i_par.shearStrain; + psepar.shearStrain = i_par.shearStrain ? i_par.shearStrain.value() : 0.0; } void setPositions(device_span ipositions) override { diff --git a/solvers/PSE/python_wrapper.cu b/solvers/PSE/python_wrapper.cu index 7922373..0bc0342 100644 --- a/solvers/PSE/python_wrapper.cu +++ b/solvers/PSE/python_wrapper.cu @@ -31,12 +31,12 @@ This module will only accept periodic boundary conditions in the three direction )pbdoc"; MOBILITY_PYTHONIFY_WITH_EXTRA_CODE( - PSE, - solver.def( - "setParameters", - [](PSE &self, real psi, real Lx, real Ly, real Lz, real shearStrain) { - self.setParametersPSE({psi, Lx, Ly, Lz, shearStrain}); - }, - docstringSetParameters, "psi"_a, "Lx"_a, "Ly"_a, "Lz"_a, - "shearStrain"_a); + PSE, solver.def( + "setParameters", + [](PSE &self, real psi, real Lx, real Ly, real Lz, + std::optional shearStrain) { + self.setParametersPSE({psi, Lx, Ly, Lz, shearStrain}); + }, + docstringSetParameters, "psi"_a, "Lx"_a, "Ly"_a, "Lz"_a, + "shearStrain"_a = std::nullopt); , docstring); diff --git a/tests/test_initialization.py b/tests/test_initialization.py index 93a7b12..d82b77e 100644 --- a/tests/test_initialization.py +++ b/tests/test_initialization.py @@ -62,6 +62,24 @@ def test_nbody_default_parameters(): solver.setPositions(positions) +def test_pse_no_shear(): + solver = PSE("periodic", "periodic", "periodic") + solver.setParameters(psi=1.0, Lx=10.0, Ly=10.0, Lz=10.0) + solver.initialize(hydrodynamicRadius=1.0, viscosity=1.0) + + +# NBody should use default alg and all particles in one batch if no params set +def test_nbody_no_params(): + solver = NBody("open", "open", "open") + solver.initialize( + viscosity=1.0, + hydrodynamicRadius=1.5, + ) + positions = np.random.rand(10, 3) + solver.setPositions(positions) + mf, _ = solver.Mdot(positions) + + @pytest.mark.parametrize( ("NBatch", "NperBatch", "numberParticles"), [