md.bond
Overview
Constructs the bond potential. |
|
Bond potential that adds FENE to a WCA repulsive potential. |
|
Harmonic bond potential. |
|
Tabulated bond potential. |
|
Tethering bond potential. |
Details
Bond potentials.
- class hoomd.md.bond.Bond
Bases:
hoomd.md.force.Force
Constructs the bond potential.
Note
Bond
is the base class for all bond potentials. Users should not instantiate this class directly.
- class hoomd.md.bond.FENEWCA
Bases:
hoomd.md.bond.Bond
Bond potential that adds FENE to a WCA repulsive potential.
FENEWCA
computes the energy and force from the FENE and WCA potentials between the two particles in each defined bond:\[V(r) = - \frac{1}{2} k r_0^2 \ln \left( 1 - \left( \frac{r - \Delta}{r_0} \right)^2 \right) + V_{\mathrm{WCA}}(r)\]where
\begin{eqnarray*} V_{\mathrm{WCA}}(r) = & 4 \varepsilon \left[ \left( \frac{\sigma}{r - \Delta} \right)^{12} - \left( \frac{\sigma}{r - \Delta} \right)^{6} \right] + \varepsilon; & r-\Delta < 2^{\frac{1}{6}}\sigma\\ = & 0; & r-\Delta \ge 2^{\frac{1}{6}}\sigma \end{eqnarray*}, \(r\) is the distance from one particle to the other in the bond, \(k\) is the attractive force strength, \(r_0\) is the size of the bond, \(\varepsilon\) is the repulsive interaction energy, and \(sigma\) is the repulsive interaction width.
- params
The parameter of the FENE potential bonds. The dictionary has the following keys:
k
(float
, required) - attractive force strength \(k\) \([\mathrm{energy} \cdot \mathrm{length}^{-2}]\).r0
(float
, required) - size parameter \(r_0\) \([\mathrm{length}]\).epsilon
(float
, required) - repulsive force strength \(\varepsilon\) \([\mathrm{energy}]\).sigma
(float
, required) - repulsive force interaction width \(\sigma\) \([\mathrm{length}]\).delta
(float
, required) - radial shift \(\Delta\) \([\mathrm{length}]\).
- Type
TypeParameter[
bond type
, dict]
Examples:
fenewca = bond.FENEWCA() fenewca.params['A-A'] = dict(k=3.0, r0=2.38, epsilon=1.0, sigma=1.0, delta=0.0) fenewca.params['A-B'] = dict(k=10.0, r0=1.0, epsilon=0.8, sigma=1.2, delta=0.0)
- class hoomd.md.bond.Harmonic
Bases:
hoomd.md.bond.Bond
Harmonic bond potential.
Harmonic
specifies a harmonic potential energy between the two particles in each defined bond.\[V(r) = \frac{1}{2} k \left( r - r_0 \right)^2\]where \(r\) is the distance from one particle to the other in the bond.
- params
The parameter of the harmonic bonds for each particle type. The dictionary has the following keys:
k
(float
, required) - potential constant \([\mathrm{energy} \cdot \mathrm{length}^{-2}]\)r0
(float
, required) - rest length \([\mathrm{length}]\)
- Type
TypeParameter[
bond type
, dict]
Examples:
harmonic = bond.Harmonic() harmonic.params['polymer'] = dict(k=3.0, r0=2.38) harmonic.params['backbone'] = dict(k=10.0, r0=1.0)
- class hoomd.md.bond.Table(width)
Bases:
hoomd.md.bond.Bond
Tabulated bond potential.
- Parameters
width (int) – Number of points in the table.
Table
computes a user-defined potential and force between the two particles in each bond.Note
For potentials that diverge near r=0, to set r_min to a non-zero value.
The force \(\vec{F}\) is:
\begin{eqnarray*} \vec{F}(\vec{r}) = & 0; & r < r_{\mathrm{min}} \\ = & F_\mathrm{table}(r)\hat{r}; & r_{\mathrm{min}} \le r < r_{\mathrm{max}} \\ = & 0; & r \ge r_{\mathrm{max}} \\ \end{eqnarray*}and the potential \(V(r)\) is:
\begin{eqnarray*} V(r) = & 0; & r < r_{\mathrm{min}} \\ = & V_\mathrm{table}(r); & r_{\mathrm{min}} \le r < r_{\mathrm{max}} \\ = & 0; & r \ge r_{\mathrm{max}} \\ \end{eqnarray*}where \(\vec{r}\) is the vector pointing from one particle to the other in the bond.
Warning
Bonds that stretch to a length \(r \ge r_{\mathrm{max}}\) result in an error.
Provide \(F_\mathrm{table}(r)\) and \(V_\mathrm{table}(r)\) on evenly spaced grid points points between \(r_{\mathrm{min}}\) and \(r_{\mathrm{max}}\).
Table
linearly interpolates values when \(r\) lies between grid points and between the last grid point and \(r=r_{\mathrm{max}}\). The force must be specificed commensurate with the potential: \(F = -\frac{\partial V}{\partial r}\).- params
The potential parameters. The dictionary has the following keys:
r_min
(float
, required) - the minimum distance to apply the tabulated potential, corresponding to the first element of the energy and force arrays \([\mathrm{length}]\).r_max
(float
, required) - the minimum distance to apply the tabulated potential, corresponding to the first element of the energy and force arrays \([\mathrm{length}]\).V
((width,)numpy.ndarray
offloat
, required) - the tabulated energy values \([\mathrm{energy}]\). Must have a size equal towidth
.F
((width,)numpy.ndarray
offloat
, required) - the tabulated force values \([\mathrm{force}]\). Must have a size equal towidth
.
- Type
TypeParameter
[bond type
,dict
]
- class hoomd.md.bond.Tether
Bases:
hoomd.md.bond.Bond
Tethering bond potential.
Tether
specifies a Tethering potential energy between two particles in each defined bond.The tethered network is described in Refs. Gompper, G. & Kroll, D. M. Statistical Mechanics of Membranes and Surfaces 2nd edn (eds Nelson, D. R. et al.) 359-426 (World Scientific, 2004) and Noguchi, H. & Gompper, G., Phys. Rev. E 72 011901 (2005).
\[V(r) = V_{\mathrm{att}}(r) + V_{\mathrm{rep}}(r)\]where \(r\) is the distance from one particle to the other in the bond.
\begin{eqnarray*} V_{\mathrm{att}}(r) = & k_b \frac{exp(1/(l_{c0}-r)}{l_{max}-r}; & r > l_{c0}\\ = & 0; & r \leq l_{c0} \end{eqnarray*}\[\begin{split}\begin{eqnarray*} V_{\mathrm{rep}}(r) = & k_b \frac{exp(1/(r-l_{c1})}{r-l_{min}}; & r < l_{c1}\\ = & 0; & r \ge l_{c1} \end{eqnarray*}\end{split}\]\[l_{min} < l_{c1} < l_{c0} < l_{max}\]- params
The parameter of the Tethering potential bonds. The dictionary has the following keys:
k_b
(float
, required) - bond stiffness \([\mathrm{energy}]\)l_min
(float
, required) - minimum bond length \([\mathrm{length}]\)l_c1
(float
, required) - cutoff distance of repulsive part \([\mathrm{length}]\)l_c0
(float
, required) - cutoff distance of attractive part \([\mathrm{length}]\)l_max
(float
, required) - maximum bond length \([\mathrm{length}]\)
- Type
TypeParameter[
bond type
, dict]
Examples:
bond_potential = bond.Tether() bond_potential.params['tether'] = dict(k_b=10.0, l_min=0.9, l_c1=1.2, l_c0=1.8, l_max=2.1)