FJC model thermodynamics (isometric)

class FJC(number_of_links, link_length, hinge_mass)

The freely-jointed chain (FJC) model thermodynamics in the isometric ensemble.

The number of links in the chain.

The length of each link in the chain in units of nm.

hinge_mass

The mass of each hinge in the chain in units of kg/mol.

legendre

The thermodynamic functions of the model in the isometric ensemble approximated using a Legendre transformation.

force(end_to_end_length, temperature)

The expected force as a function of the applied end-to-end length and temperature,

\[f(\xi, T) = \frac{\partial \psi}{\partial\xi} = \frac{kT}{\xi} + \frac{kT}{\ell_b}\left(\frac{1}{2} - \frac{1}{N_b}\right)\frac{\sum_{s=0}^{s_\mathrm{max}}(-1)^s\binom{N_b}{s}\left(m - \frac{s}{N_b}\right)^{N_b - 3}}{\sum_{s=0}^{s_\mathrm{max}}(-1)^s\binom{N_b}{s}\left(m - \frac{s}{N_b}\right)^{N_b - 2}},\]

where \(m\equiv(1 - \xi/N_b\ell_b)/2\) and \(s_\mathrm{max}/N_b\leq m\leq (s_\mathrm{max}+1)/N_b\).

Parameters:
  • end_to_end_length (numpy.ndarray) – The end-to-end length \(\xi\).

  • temperature (float) – The temperature \(T\).

Returns:

The force \(f\).

Return type:

numpy.ndarray

nondimensional_force(nondimensional_end_to_end_length_per_link)

The expected nondimensional force as a function of the applied nondimensional end-to-end length per link, given by Buche and Rimsza[1] as

\[\eta(\gamma) = \frac{\partial\vartheta}{\partial\gamma} = \frac{1}{N_b\gamma} + \left(\frac{1}{2} - \frac{1}{N_b}\right)\frac{\sum_{s=0}^{s_\mathrm{max}}(-1)^s\binom{N_b}{s}\left(m - \frac{s}{N_b}\right)^{N_b - 3}}{\sum_{s=0}^{s_\mathrm{max}}(-1)^s\binom{N_b}{s}\left(m - \frac{s}{N_b}\right)^{N_b - 2}},\]

where \(m\equiv(1 - \gamma)/2\) and \(s_\mathrm{max}/N_b\leq m\leq (s_\mathrm{max}+1)/N_b\).

Parameters:

nondimensional_end_to_end_length_per_link (numpy.ndarray) – The nondimensional end-to-end length per link \(\gamma\equiv \xi/N_b\ell_b\).

Returns:

The nondimensional force \(\eta\equiv\beta f\ell_b\).

Return type:

numpy.ndarray

helmholtz_free_energy(end_to_end_length, temperature)

The Helmholtz free energy as a function of the applied end-to-end length and temperature,

\[\psi(\xi, T) = -kT\ln Q(\xi, T).\]
Parameters:
  • end_to_end_length (numpy.ndarray) – The end-to-end length \(\xi\).

  • temperature (float) – The temperature \(T\).

Returns:

The Helmholtz free energy \(\psi\).

Return type:

numpy.ndarray

The Helmholtz free energy per link as a function of the applied end-to-end length and temperature.

Parameters:
  • end_to_end_length (numpy.ndarray) – The end-to-end length \(\xi\).

  • temperature (float) – The temperature \(T\).

Returns:

The Helmholtz free energy per link \(\psi/N_b\).

Return type:

numpy.ndarray

relative_helmholtz_free_energy(end_to_end_length, temperature)

The relative Helmholtz free energy as a function of the applied end-to-end length and temperature,

\[\Delta\psi(\xi, T) = kT\ln\left[\frac{P_\mathrm{eq}(0)}{P_\mathrm{eq}(\xi)}\right].\]
Parameters:
  • end_to_end_length (numpy.ndarray) – The end-to-end length \(\xi\).

  • temperature (float) – The temperature \(T\).

Returns:

The relative Helmholtz free energy \(\Delta\psi\equiv\psi(\xi,T)-\psi(0,T)\).

Return type:

numpy.ndarray

The relative Helmholtz free energy per link as a function of the applied end-to-end length and temperature.

Parameters:
  • end_to_end_length (numpy.ndarray) – The end-to-end length \(\xi\).

  • temperature (float) – The temperature \(T\).

Returns:

The relative Helmholtz free energy per link \(\Delta\psi/N_b\).

Return type:

numpy.ndarray

nondimensional_helmholtz_free_energy(nondimensional_end_to_end_length_per_link, temperature)

The nondimensional Helmholtz free energy as a function of the applied nondimensional end-to-end length per link and temperature.

Parameters:
  • nondimensional_end_to_end_length_per_link (numpy.ndarray) – The nondimensional end-to-end length per link \(\gamma\equiv \xi/N_b\ell_b\).

  • temperature (float) – The temperature \(T\).

Returns:

The nondimensional Helmholtz free energy \(N_b\vartheta=\beta\psi\).

Return type:

numpy.ndarray

The nondimensional Helmholtz free energy per link as a function of the applied nondimensional end-to-end length per link and temperature.

Parameters:
  • nondimensional_end_to_end_length_per_link (numpy.ndarray) – The nondimensional end-to-end length per link \(\gamma\equiv \xi/N_b\ell_b\).

  • temperature (float) – The temperature \(T\).

Returns:

The nondimensional Helmholtz free energy per link \(\vartheta\equiv\beta\psi/N_b\).

Return type:

numpy.ndarray

nondimensional_relative_helmholtz_free_energy(nondimensional_end_to_end_length_per_link)

The nondimensional relative Helmholtz free energy as a function of the applied nondimensional end-to-end length per link,

\[\beta\Delta\psi(\gamma) = \ln\left[\frac{\mathscr{P}_\mathrm{eq}(0)}{\mathscr{P}_\mathrm{eq}(\gamma)}\right].\]
Parameters:

nondimensional_end_to_end_length_per_link (numpy.ndarray) – The nondimensional end-to-end length per link \(\gamma\equiv \xi/N_b\ell_b\).

Returns:

The nondimensional relative Helmholtz free energy \(N_b\Delta\vartheta=\beta\Delta\psi\).

Return type:

numpy.ndarray

The nondimensional relative Helmholtz free energy per link as a function of the applied nondimensional end-to-end length per link,

\[\Delta\vartheta(\gamma) = \ln\left[\frac{\mathscr{P}_\mathrm{eq}(0)}{\mathscr{P}_\mathrm{eq}(\gamma)}\right]^{1/N_b}.\]
Parameters:

nondimensional_end_to_end_length_per_link (numpy.ndarray) – The nondimensional end-to-end length per link \(\gamma\equiv \xi/N_b\ell_b\).

Returns:

The nondimensional relative Helmholtz free energy per link \(\Delta\vartheta\equiv\beta\Delta\psi/N_b\).

Return type:

numpy.ndarray

equilibrium_distribution(end_to_end_length)

The equilibrium probability density of end-to-end vectors as a function of the end-to-end length,

\[P_\mathrm{eq}(\xi) = \frac{e^{-\beta\psi(\xi, T)}}{4\pi\int e^{-\beta\psi(\xi', T)} \,{\xi'}{}^2 d\xi'} = \frac{1}{8\pi\ell_b^2\xi}\frac{N_b^{N_b - 2}}{(N_b - 2)!}\sum_{s=0}^{s_\mathrm{max}}(-1)^s\binom{N_b}{s}\left(m - \frac{s}{N_b}\right)^{N_b - 2},\]

where \(m\equiv(1 - \xi/N_b\ell_b)/2\) and \(s_\mathrm{max}/N_b\leq m\leq (s_\mathrm{max}+1)/N_b\).

Parameters:

end_to_end_length (numpy.ndarray) – The end-to-end length \(\xi\).

Returns:

The equilibrium probability density \(P_\mathrm{eq}\).

Return type:

numpy.ndarray

nondimensional_equilibrium_distribution(nondimensional_end_to_end_length_per_link)

The nondimensional equilibrium probability density of nondimensional end-to-end vectors per link as a function of the nondimensional end-to-end length per link,

\[\mathscr{P}_\mathrm{eq}(\gamma) = \frac{e^{-\Delta\vartheta(\gamma)}}{4\pi\int e^{-\Delta\vartheta(\gamma')} \,{\gamma'}{}^2 d\gamma'} = \frac{1}{8\pi\gamma}\frac{N_b^{N_b}}{(N_b - 2)!}\sum_{s=0}^{s_\mathrm{max}}(-1)^s\binom{N_b}{s}\left(m - \frac{s}{N_b}\right)^{N_b - 2},\]

where \(m\equiv(1 - \gamma)/2\) and \(s_\mathrm{max}/N_b\leq m\leq (s_\mathrm{max}+1)/N_b\).

Parameters:

nondimensional_end_to_end_length_per_link (numpy.ndarray) – The nondimensional end-to-end length per link \(\gamma\equiv \xi/N_b\ell_b\).

Returns:

The nondimensional equilibrium probability density \(\mathscr{P}_\mathrm{eq}\equiv (N_b\ell_b)^3 P_\mathrm{eq}\).

Return type:

numpy.ndarray

equilibrium_radial_distribution(end_to_end_length)

The equilibrium probability density of end-to-end lengths as a function of the end-to-end length, given by Treloar[2] as

\[g_\mathrm{eq}(\xi) = 4\pi\xi^2 P_\mathrm{eq}(\xi) = \frac{\xi}{2\ell_b^2}\frac{N_b^{N_b-2}}{(N_b - 2)!}\sum_{s=0}^{s_\mathrm{max}}(-1)^s\binom{N_b}{s}\left(m - \frac{s}{N_b}\right)^{N_b - 2},\]

where \(m\equiv(1 - \xi/N_b\ell_b)/2\) and \(s_\mathrm{max}/N_b\leq m\leq (s_\mathrm{max}+1)/N_b\).

Parameters:

end_to_end_length (numpy.ndarray) – The end-to-end length \(\xi\).

Returns:

The equilibrium probability density \(g_\mathrm{eq}\).

Return type:

numpy.ndarray

nondimensional_equilibrium_radial_distribution(nondimensional_end_to_end_length_per_link)

The nondimensional equilibrium probability density of nondimensional end-to-end lengths per link as a function of the nondimensional end-to-end length per link,

\[\mathscr{g}_\mathrm{eq}(\gamma) = 4\pi\gamma^2 \mathscr{P}_\mathrm{eq}(\gamma) = \frac{\gamma}{2}\frac{N_b^{N_b}}{(N_b - 2)!}\sum_{s=0}^{s_\mathrm{max}}(-1)^s\binom{N_b}{s}\left(m - \frac{s}{N_b}\right)^{N_b - 2},\]

where \(m\equiv(1 - \gamma)/2\) and \(s_\mathrm{max}/N_b\leq m\leq (s_\mathrm{max}+1)/N_b\).

Parameters:

nondimensional_end_to_end_length_per_link (numpy.ndarray) – The nondimensional end-to-end length per link \(\gamma\equiv \xi/N_b\ell_b\).

Returns:

The nondimensional equilibrium probability density \(\mathscr{g}_\mathrm{eq}\equiv N_b\ell_b g_\mathrm{eq}\).

Return type:

numpy.ndarray


References