Source code for espressomd.pair_criteria
#
# Copyright (C) 2010-2026 The ESPResSo project
#
# This file is part of ESPResSo.
#
# ESPResSo is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# ESPResSo is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
from .script_interface import ScriptInterfaceHelper, script_interface_register
from .particle_data import ParticleHandle
class _PairCriterion(ScriptInterfaceHelper):
def decide(self, p1, p2):
"""Makes a decision based on the two particles specified.
Parameters
----------
p1, p2 : :obj:`espressomd.particle_data.ParticleHandle` or :obj:`int` containing the particle id.
Particle pair.
"""
id1 = None
id2 = None
if isinstance(p1, ParticleHandle) and isinstance(p2, ParticleHandle):
id1 = p1.id
id2 = p2.id
elif isinstance(p1, int) and isinstance(p2, int):
id1 = p1
id2 = p2
else:
raise ValueError(
"arguments must be instances of int or ParticleHandle")
return self.call_method("decide", id1=id1, id2=id2)
[docs]
@script_interface_register
class DistanceCriterion(_PairCriterion):
"""
Pair criterion returning true, if particles are closer than a cutoff.
Periodic boundaries are treated via minimum image convention.
The following parameters can be passed to the constructor, changed via
``set_params()`` and retrieved via ``get_params()``.
Parameters
----------
cut_off : :obj:`float`
distance cutoff for the criterion
"""
_so_name = "PairCriteria::DistanceCriterion"
_so_creation_policy = "LOCAL"
[docs]
@script_interface_register
class EnergyCriterion(_PairCriterion):
"""
Pair criterion returning true, if the short-range energy between the
particles is greater or equal to the cutoff.
Be aware that the short-range energy contains the short-range part of
dipolar and electrostatic interactions, but not the long-range part.
The following parameters can be passed to the constructor, changed via
``set_params()`` and retrieved via ``get_params()``.
Parameters
----------
cut_off : :obj:`float`
energy cutoff for the criterion
"""
_so_name = "PairCriteria::EnergyCriterion"
_so_creation_policy = "LOCAL"
[docs]
@script_interface_register
class BondCriterion(_PairCriterion):
"""
Pair criterion returning true, if a pair bond of a given type exists
between the particles.
The following parameters can be passed to the constructor, changed via
``set_params()`` and retrieved via ``get_params()``.
Parameters
----------
bond_type : :obj:`int`
numeric type of the bond
"""
_so_name = "PairCriteria::BondCriterion"
_so_creation_policy = "LOCAL"