pyPRISM.omega.DiscreteKoyama module¶
-
class
pyPRISM.omega.DiscreteKoyama.
DiscreteKoyama
(sigma, l, length, lp)[source]¶ Bases:
pyPRISM.omega.Omega.Omega
Semi-flexible Koyama-based intra-molecular correlation function
Mathematial Definition
\[\hat{\omega}(k) = \frac{\sin(Bk)}{Bk}\exp(-A^2k^2)\]\[A^2 = \frac{\langle r_{\alpha,\beta}^2 \rangle (1-C)}{6}\]\[B^2 = C \langle r_{\alpha,\beta}^2 \rangle\]\[C^2 = \frac{1}{2}\left(5-3\frac{ \langle r_{\alpha,\beta}^4 \rangle}{ \langle r_{\alpha,\beta}^2 \rangle}\right)\]Variable Definitions
- \(\hat{\omega}(k)\)
- intra-molecular correlation function at wavenumber \(k\)
- \(\langle r_{\alpha,\beta}^2 \rangle\)
- second moment of the distance distribution between sites \(\alpha\) and \(\beta\). Please see equation (17) of the Reference [1] cited below for the mathematical representation.
- \(\langle r_{\alpha,\beta}^4 \rangle\)
- fourth moment of the distance distribution between sites \(\alpha\) and \(\beta\). Please see equations (18-24) of the reference cited below for the mathematical representation.
Description
The discrete Koyama \(\hat{\omega}(k)\) was developed to represent a wormlike chain with semiflexibility. This scheme interpolates between the rigid-rod and the Gaussian chain limits to represent a chain with a given persistence length. This form for \(\hat{\omega}(k)\) has been shown to match the structure of molecular dynamics simulations of Kremer-Grest style bead-spring polymer models.References
- Honnell, K.G., J.G. Curro, and K.S. Schweizer, LOCAL-STRUCTURE OF SEMIFLEXIBLE POLYMER MELTS. Macromolecules, 1990. 23(14): p. 3496-3505. [link]
Example
import pyPRISM import numpy as np import matplotlib.pyplot as plt #calculate Fourier space domain and omega values domain = pyPRISM.domain(dr=0.1,length=1000) omega = pyPRISM.omega.DiscreteKoyama(sigma=1.0,l=1.0,length=100,lp=1.43) x = domain.k y = omega.calculate(x) #plot the results using matplotlib plt.plot(x,y) plt.gca().set_xscale("log", nonposx='clip') plt.gca().set_yscale("log", nonposy='clip') plt.show() #define a PRISM system and set omega(k) for type A sys = pyPRISM.System(['A','B'],kT=1.0) sys.domain = pyPRISM.Domain(dr=0.1,length=1024) sys.omega['A','A'] = pyPRISM.omega.DiscreteKoyama(sigma=1.0,l=1.0,length=100,lp=1.43)
-
__init__
(sigma, l, length, lp)[source]¶ Constructor
Parameters: - sigma (float) – contact distance between sites (i.e. site diameter)
- l (float) – bond length
- length (float) – number of monomers/sites in the chain
- lp (float) – persistence length of chain
-
calculate
(k)[source]¶ Return value of \(\hat{\omega}\) at supplied \(k\)
Parameters: k (np.ndarray, float) – array of wavenumber values to calculate \(\omega\) at
-
density_correction
(npts=1000)[source]¶ Correction for density due to non-physical overlaps
Note
See Equation 28 in Reference [1] for more details.
Parameters: npts (int) – number of points to use in numerical integral
-
density_correction_kernel
(r)[source]¶ Correction for density due to non-physical overlaps
Note
See Equation 28 in Reference [1] for more details.
Parameters: r (np.ndarray, float) – array of real-space positions to calculate \(\omega\) at
-
kernel_base
(n)[source]¶ Calculates the second and fourth moments of the site separate distance distributions
Note
See Equation 18 in Reference [1] for more details.
Parameters: n (int) – Integer separation distance along chain.