pyPRISM.omega.NonOverlappingFreelyJointedChain module¶
-
class
pyPRISM.omega.NonOverlappingFreelyJointedChain.
NFJC
(length, l)[source]¶ Bases:
pyPRISM.omega.NonOverlappingFreelyJointedChain.NonOverlappingFreelyJointedChain
Alias of NonOverlappingFreelyJointedChain
-
class
pyPRISM.omega.NonOverlappingFreelyJointedChain.
NonOverlappingFreelyJointedChain
(length, l)[source]¶ Bases:
pyPRISM.omega.Omega.Omega
Freely jointed chain with excluded volume intra-molecular correlation function
Warning
The numerical integrations required for the NFJC omega calculation are slow and scale poorly with chain length so this omega may take minutes or longer to calculate even for modest chain lengths e.g. N=200.
Mathematical Definition
\[\hat{\omega}(k) = \hat{\omega}_{id}(k)+\frac{2}{N}\sum_{\tau=2}^{N-1}(N-\tau) [\hat{\omega}_{\tau}(k)-(\sin(k)/k)^{\tau}]\]\[\tau = |\alpha-\beta|\]Variable Definitions
- \(\hat{\omega}(k)\)
- intra-molecular correlation function at wavenumber \(k\)
- \(\hat{\omega}_{id}(k)\)
- intra-molecular correlation function for the ideal freely-jointed chain at wavenumber \(k\). Please see equation (15) of Reference [1] for the mathematical representation.
- \(\hat{\omega}_{\tau}(k)\)
- Please see equations (17,18,21) of Reference [1] for the mathematical representation.
- \(N\)
- number of repeat units in chain
- \(\tau\)
- number of monomers along chain separating sites \(\alpha\) and \(\beta\).
Description
The non-overlapping freely-jointed chain is an adjustment to the ideal freely jointed chain model that includes the effects of the excluded volume of monomer segments (i.e. bonds are not free to rotate over all angles). This model assumes a constant bond length \(l\).References
- Schweizer, K.S.; Curro, J.G.; Integral-Equation Theory of Polymer Melts - Intramolecular Structure, Local Order, and the Correlation Hole, Macromolecules, 1988, 21 (10), pp 3070 [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.NonOverlappingFreelyJointedChain(length=100,l=1.0) x = domain.k y = omega.calculate(x) #plot 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.NonOverlappingFreelyJointedChain(length=100,l=1.0)