Bond stretching¶
Overview
Bonds impose connected forces on specific pairs of particles to model chemical bonds. The bonds are specified in XML format configuration file with the format:
<bond>
bond_type(str) particle_i(int) particle_j(int)
...
</bond>
By themselves, bonds do nothing. Only when you specify a bond force in script(i.e. BondForceHarmonic
), are forces actually calculated between the listed particles.
|
|
Harmonic bond potential¶
Description:
\begin{eqnarray*} V_{\mathrm{bond}}(r) = \frac{1}{2}k\left( r - r_{0} \right)^{2} \end{eqnarray*}Coefficients:
\(k\) - spring constant
k
(in units of energy/distance^2)\(r_0\) - equilibrium length
r0
(in distance units)
- class BondForceHarmonic(all_info)¶
The constructor of harmonic bond interaction object.
- Parameters:
all_info (AllInfo) – The system information.
- setParams(string type, float k, float r0)¶
specifies the bond interaction parameters with bond type, spring constant, and equilibrium length.
Example:
bondforce = gala.BondForceHarmonic(all_info) bondforce.setParams('polymer', 1250.000, 0.470) app.add(bondforce)
FENE bond potential¶
Description:
\begin{eqnarray*} V_{\mathrm{bond}}(r)=-\frac{1}{2}k {r_{m}}^{2}\log \left[ 1-\frac{\left(r - r_{0} -\Delta \right)^{2}}{r_{m}^{2}} \right] \end{eqnarray*} \begin{eqnarray*} V_{\mathrm{WCA}}(r)=&4 \epsilon \left[ \left( \frac{\sigma }{r-\Delta } \right)^{12}-\left( \frac{\sigma }{r-\Delta } \right)^{6} \right] + \epsilon & ,(r - \Delta)<\sigma^{1/6} \\ = & 0 & ,(r - \Delta) \ge \sigma^{1/6} \\ \end{eqnarray*}Coefficients:
\(k\) - attractive force strength
k
(in units of energy/distance^2)\(r_0\) - equilibrium length
r0
(in distance units) - optional: defaults to 0.0\(r_m\) - maximum bond length
rm
(in distance units)\(\epsilon\) - epsilon (in energy units)
\(\sigma\) - sigma (in distance units)
\(\Delta = (d_{i} + d_{j})/2 - 1.0\) - (in distance units); \(d_{i}\) and \(d_{j}\) are the diameter of particle \(i\) and \(j\) which can be input from XML file.
- Note:
\(\Delta\) only will be considered (default value is 0.0) by calling the function
setConsiderDiameter(True)
- class BondForceFENE(all_info)¶
The constructor of FENE bond interaction object.
- Parameters:
all_info (AllInfo) – The system information.
- setParams(string type, float k, float rm)¶
specifies the FENE bond force parameters with bond type, spring constant, and the maximum length of the bond.
- setParams(string type, float k, float rm, float r0)¶
specifies the FENE bond force parameters with bond type, spring constant, maximum length, and equilibrium length.
- setParams(string type, float k, float rm, float epsilon, float sigma)¶
specifies the FENE+WCA bond parameters with bond type, spring constant, maximum length of the bond, epsilon, sigma (the latter two parameters for WCA force between two bonded particles ).
- setConsiderDiameter(bool con_dia)¶
the diameter of particles will be considered or not
Example:
bondforcefene = gala.BondForceFENE(all_info) bondforcefene.setParams('polymer', 10, 1.2) app.add(bondforcefene)
Polynominal bond potential¶
Description:
\begin{eqnarray*} V_{\mathrm{bond}}(r)=k_{1}\left( r - r_{0} \right)^{2}+k_{2}\left( r - r_{0} \right)^{4} \end{eqnarray*}Coefficients:
\(k_1\) - spring constant
k1
(in units of energy/distance^2)\(k_2\) - spring constant
k2
(in units of energy/distance^4)\(r_0\) - equilibrium length
r0
(in distance units)
- class BondForcePolynomial(all_info)¶
The constructor of polynomial bond interaction object.
- Parameters:
all_info (AllInfo) – The system information.
- setParams(string type, float k1, float k2, float r0)¶
specifies the polynomial bond force parameters with bond type, spring constant k1, spring constant k2, and equilibrium bond length r0.
Example:
bondforce_polynomial = gala.BondForcePolynomial(all_info) bondforce_polynomial.setParams('polymer', 10.0, 100.0, 1.2) app.add(bondforce_polynomial)
Morse bond potential¶
Description:
\begin{eqnarray*} V_{\mathrm{bond}}(r)=&k\left[ 1-e^{-\alpha \left( r-r_{0} \right)} \right]^{2} & r < r_{\mathrm{m}} \\ = & 0 & r \ge r_{\mathrm{m}} \\ \end{eqnarray*}Coefficients:
\(k\) - well depth
k
(in units of energy)\(\alpha\) - controls the ‘width’ of the potential
alpha
(he smaller \(\alpha\) is, the larger the well)\(r_0\) - equilibrium length
r0
(in distance units)\(r_m\) - maximum interaction range
rm
(in distance units)
- class BondForceMorse(all_info)¶
The constructor of Morse bond interaction object.
- Parameters:
all_info (AllInfo) – The system information.
- setParams(string name, float k, float alpha, float r0, float rm)¶
specifies the Morse bond force parameters with bond type, spring constant, alpha controls the ‘width’ of the potential, equilibrium bond length, maximum interaction range.
Example:
bondforce_morse = gala.BondForceMorse(all_info) bondforce_morse.setParams('polymer', 10.0, 1.0, 1.0, 2.0) app.add(bondforce_morse)