+-------------+ Subset(...) <-------> | MDMin(...) | | +------------+ | +-------------+ | | Atom(...) | | | | Atom(...) | | | +------------+ | | Atom(...) | | Atom(...) | | . | | . | | | +------------------+ +-------------+ ListOfAtoms(...)<-------> | Dacapo(...) | +-------------+
a = Atom(...) m = ListOfAtoms([a, ...], ...) c = Dacapo(...) m.SetCalculator(c) c.Calculate()
Introduction The simplest form of a filter is a wrapper around a ListOfAtoms object. The filter object will only implement the methods of the ListOfAtoms interface that are needed (some ListOfAtoms methods are filtered out).
A typical use case will look like this:
+-------------+ +--------+ +----------+ | ListOfAtoms |<----| Filter |<----| Dynamics | +-------------+ +--------+ +----------+
and in Python this would be:
m = ListOfAtoms(...) s = Filter(m, ...) d = Dynamics(s, ...)
Filters are used for imposing constraints and for the Nudged Elastic Band method.