Source code for molsysmt.third_party.openmm.forces.add_forbidden_z_region

from molsysmt import pyunitwizard as puw
from molsysmt._private.argdigest import arg_digest


[docs] @arg_digest() def add_forbidden_z_region( molecular_system, selection="all", z0="0.0 nm", width="1.0 nm", force_constant="5000 kilojoules_per_mole/nm**2", pbc=False, return_force=False, syntax="MolSysMT", skip_digestion=False, ): """ Adding repulsive boundary restraints preventing particles from entering a z-slab in OpenMM. Parameters ---------- molecular_system : molecular system Molecular system in any supported MolSysMT format. selection : str, list, tuple, or numpy.ndarray, default='all' Selection string or boolean/integer array specifying elements. z0 : object, default='0.0 nm' Argument z0. width : object, default='1.0 nm' Argument width. force_constant : object, default='5000 kilojoules_per_mole/nm**2' Argument force_constant. pbc : bool, default=False Whether to take periodic boundary conditions into account. return_force : object, default=False Argument return_force. syntax : str, default='MolSysMT' Selection syntax used to evaluate `selection` (e.g., 'MolSysMT', 'MDTraj'). skip_digestion : bool, default=False Whether to skip MolSysMT's internal argument digestion mechanism. Returns ------- openmm.CustomExternalForce The added barrier force instance. .. versionadded:: 1.0.0 """ from .add_forbidden_plane_region import add_forbidden_plane_region z0, unit = puw.get_value_and_unit(z0) point = [[0.0, 0.0, z0]] point = puw.quantity(point, unit) return add_forbidden_plane_region( molecular_system, selection=selection, force_constant=force_constant, point=point, normal_vector=[0, 0, 1], width=width, pbc=pbc, return_force=return_force, syntax=syntax, skip_digestion=True, )