You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The bond python class isn't working with plugins because it is missing the string that let's you redefine where the module is implemented, see pair python class for reference. The fix should be fairly simple, see attached python snippet with proposed changes for the bond class.
I am happy to supply a bug fix.
Script
classBond(Force):
"""Base class bond force. `Bond` is the base class for all bond forces. Warning: This class should not be instantiated by users. The class can be used for `isinstance` or `issubclass` checks. """def__init__(self):
super().__init__()
def_attach_hook(self):
"""Create the c++ mirror class."""ifisinstance(self._simulation.device, hoomd.device.CPU):
cpp_cls=getattr(_md, self._cpp_class_name)
else:
cpp_cls=getattr(_md, self._cpp_class_name+"GPU")
self._cpp_obj=cpp_cls(self._simulation.state._cpp_sys_def)
changedto:
classBond(Force):
"""Base class bond force. `Bond` is the base class for all bond forces. Warning: This class should not be instantiated by users. The class can be used for `isinstance` or `issubclass` checks. """# Module where the C++ class is defined. Reassign this when developing an# external plugin._ext_module=_mddef__init__(self):
super().__init__()
def_attach_hook(self):
"""Create the c++ mirror class."""ifisinstance(self._simulation.device, hoomd.device.CPU):
cpp_cls=getattr(self._ext_module, self._cpp_class_name)
else:
cpp_cls=getattr(self._ext_module, self._cpp_class_name+"GPU")
self._cpp_obj=cpp_cls(self._simulation.state._cpp_sys_def)
Input files
No response
Output
When developing a plugin with a new bond potential, it will compile but then not correctly find it, i.e when wanting to use or import "plugin_name.bond.BondPotentialName" it will instead look for "hoomd.bond.BondPotentialName". The simple inclusion of "_ext_module = _md" that can be overwritten by the plugin fixes this issue.
Expected output
Plugins should be able to develop bond potentials the same way as pair potentials.
Platform
CPU, GPU, Linux, macOS
Installation method
Compiled from source
HOOMD-blue version
4.0.1
Python version
3.10
The text was updated successfully, but these errors were encountered:
Thank you for reporting this. I would welcome a pull request implementing the _ext_module solution. Could you do the same for angles, dihedrals, impropers, and special pairs for completeness?
Description
The bond python class isn't working with plugins because it is missing the string that let's you redefine where the module is implemented, see pair python class for reference. The fix should be fairly simple, see attached python snippet with proposed changes for the bond class.
I am happy to supply a bug fix.
Script
Input files
No response
Output
When developing a plugin with a new bond potential, it will compile but then not correctly find it, i.e when wanting to use or import "plugin_name.bond.BondPotentialName" it will instead look for "hoomd.bond.BondPotentialName". The simple inclusion of "_ext_module = _md" that can be overwritten by the plugin fixes this issue.
Expected output
Plugins should be able to develop bond potentials the same way as pair potentials.
Platform
CPU, GPU, Linux, macOS
Installation method
Compiled from source
HOOMD-blue version
4.0.1
Python version
3.10
The text was updated successfully, but these errors were encountered: