From 0f63a4ac06991274f78b73ccae5afe42c9dcbef6 Mon Sep 17 00:00:00 2001 From: Jonas Landsgesell Date: Thu, 13 Jun 2019 07:45:58 +0200 Subject: [PATCH] up --- src/core/actor/Mmm1dgpuForce.cpp | 11 +++++++++++ src/core/actor/Mmm1dgpuForce.hpp | 2 ++ src/python/espressomd/electrostatics.pxd | 3 +++ src/python/espressomd/electrostatics.pyx | 4 ++++ testsuite/python/mmm1d.py | 20 +++----------------- 5 files changed, 23 insertions(+), 17 deletions(-) diff --git a/src/core/actor/Mmm1dgpuForce.cpp b/src/core/actor/Mmm1dgpuForce.cpp index dbc1ccf47a6..2364c35c169 100644 --- a/src/core/actor/Mmm1dgpuForce.cpp +++ b/src/core/actor/Mmm1dgpuForce.cpp @@ -20,6 +20,7 @@ along with this program. If not, see . #include "EspressoSystemInterface.hpp" #include "communication.hpp" #include "forces.hpp" +#include "energy.hpp" #include "grid.hpp" #ifdef MMM1D_GPU @@ -30,4 +31,14 @@ void Mmm1dgpuForce::check_periodicity() { } } + void Mmm1dgpuForce::activate(){ + forceActors.push_back(this); + energyActors.push_back(this); + } + + void Mmm1dgpuForce::deactivate(){ + forceActors.remove(this); + energyActors.remove(this); + } + #endif diff --git a/src/core/actor/Mmm1dgpuForce.hpp b/src/core/actor/Mmm1dgpuForce.hpp index 09f762090d7..e811ecbd37a 100644 --- a/src/core/actor/Mmm1dgpuForce.hpp +++ b/src/core/actor/Mmm1dgpuForce.hpp @@ -43,6 +43,8 @@ class Mmm1dgpuForce : public Actor { void set_params(mmm1dgpu_real _boxz, mmm1dgpu_real _coulomb_prefactor, mmm1dgpu_real _maxPWerror, mmm1dgpu_real _far_switch_radius, int _bessel_cutoff, bool manual = false); + void activate(); + void deactivate(); private: // CUDA parameters diff --git a/src/python/espressomd/electrostatics.pxd b/src/python/espressomd/electrostatics.pxd index ea50bd4ec8d..9a4ee3406b0 100644 --- a/src/python/espressomd/electrostatics.pxd +++ b/src/python/espressomd/electrostatics.pxd @@ -281,3 +281,6 @@ IF ELECTROSTATICS and MMM1D_GPU: float force_benchmark(SystemInterface & s); void check_periodicity(); + void activate(); + void deactivate(); + diff --git a/src/python/espressomd/electrostatics.pyx b/src/python/espressomd/electrostatics.pyx index 5689e1cfeab..1593ee583b8 100644 --- a/src/python/espressomd/electrostatics.pyx +++ b/src/python/espressomd/electrostatics.pyx @@ -579,6 +579,7 @@ IF ELECTROSTATICS and MMM1D_GPU: self.thisptr = new Mmm1dgpuForce(dereference(self.interface), 0.0, default_params["maxPWerror"]) self.interface.update() self.interface.requestRGpu() + dereference(self.thisptr).activate() def __dealloc__(self): del self.thisptr @@ -633,6 +634,9 @@ IF ELECTROSTATICS and MMM1D_GPU: if self._params["tune"]: self._tune() self._set_params_in_es_core() + + def _deactivate_method(self): + dereference(self.thisptr).deactivate() IF ELECTROSTATICS: cdef class MMM2D(ElectrostaticInteraction): diff --git a/testsuite/python/mmm1d.py b/testsuite/python/mmm1d.py index 33f91c6ec74..645f89343c6 100644 --- a/testsuite/python/mmm1d.py +++ b/testsuite/python/mmm1d.py @@ -44,13 +44,14 @@ class ElectrostaticInteractionsTests(object): allowed_error = 1e-4 def setUp(self): + mmm1d = self.MMM1D(prefactor=1.0, maxPWerror=1e-20) for i in range(self.num_particles): self.system.part.add( pos=[self.pos_x_target[i], self.pos_y_target[i], self.pos_z_target[i]], q=self.q_target[i]) - self.system.actors.add(self.mmm1d) + self.system.actors.add(mmm1d) self.system.integrator.run(steps=0) def tearDown(self): @@ -106,26 +107,11 @@ def test_with_analytical_result(self): @utx.skipIfMissingFeatures(["ELECTROSTATICS", "PARTIAL_PERIODIC", "MMM1D_GPU"]) class MMM1D_GPU_Test(ElectrostaticInteractionsTests, ut.TestCase): - from espressomd.electrostatics import MMM1DGPU -# mmm1d = MMM1DGPU( -# prefactor=1.0, -# maxPWerror=1e-4, -# far_switch_radius=6, -# bessel_cutoff=3, -# tune=False) - mmm1d = MMM1DGPU(prefactor=1.0, maxPWerror=1e-20) - + from espressomd.electrostatics import MMM1D @utx.skipIfMissingFeatures(["ELECTROSTATICS", "PARTIAL_PERIODIC"]) class MMM1D_Test(ElectrostaticInteractionsTests, ut.TestCase): from espressomd.electrostatics import MMM1D -# mmm1d = MMM1D( -# prefactor=1.0, -# maxPWerror=1e-4, -# far_switch_radius=6, -# bessel_cutoff=3, -# tune=False) - mmm1d = MMM1D(prefactor=1, maxPWerror=1e-20) if __name__ == "__main__": ut.main()