|
| CollectionSol (sptr< Box > box, sptr< AtomGroup > atoms, const flt dt, const flt damping, const flt desired_temperature, vector< sptr< Interaction > > interactions=vector< sptr< Interaction > >(), vector< sptr< StateTracker > > trackers=vector< sptr< StateTracker > >(), vector< sptr< Constraint > > constraints=vector< sptr< Constraint > >()) |
|
void | change_temperature (const flt damp, const flt desired_temperature) |
| Change the desired damping coefficient \(\xi\) or temperature \(T\). More...
|
|
void | change_force (const flt damp, const flt fmag, const flt desired_temperature) |
|
void | set_dt (const flt newdt) |
|
void | timestep () |
| Take one step forward in time. More...
|
|
| Collection (sptr< Box > box, sptr< AtomGroup > atoms, vector< sptr< Interaction > > interactions=vector< sptr< Interaction > >(), vector< sptr< StateTracker > > trackers=vector< sptr< StateTracker > >(), vector< sptr< Constraint > > constraints=vector< sptr< Constraint > >(), bool should_initialize=true) |
|
virtual void | initialize () |
|
virtual void | set_forces (bool constraints_and_a=true) |
| Set forces. More...
|
|
flt | degrees_of_freedom () |
| Total degrees of freedom. More...
|
|
flt | potential_energy () |
|
flt | energy () |
| Total energy, including both potential and kinetic_energy. More...
|
|
virtual flt | temp (bool minuscomv=true) |
|
virtual flt | kinetic_energy () |
|
virtual flt | virial () |
|
virtual flt | pressure () |
| Returns (1/d V) Σ ri dot fi where d is number of dimensions note that Interaction->pressure just returns Σ ri dot fi. More...
|
|
sptr< Box > | get_box () |
|
Vec | com () |
|
Vec | com_velocity () |
|
Vec | angular_momentum (const Vec &loc) |
| Shortcut to AtomGroup method of the same name. More...
|
|
Vec | angular_momentum () |
| Shortcut to AtomGroup method of the same name. More...
|
|
flt | gyradius () |
|
virtual | ~Collection () |
|
void | reset_com_velocity () |
| Shortcut to AtomGroup method of the same name. More...
|
|
void | reset_L () |
| Shortcut to AtomGroup method of the same name. More...
|
|
void | scale_velocities (flt scaleby) |
| Scale all velocities by a factor. More...
|
|
void | scale_velocities_to_temp (flt T, bool minuscomv=true) |
| Scale all velocities to get to a specific temperature. More...
|
|
void | scale_velocities_to_energy (flt E) |
| Scale all velocities to get to a specific total energy. More...
|
|
void | add_interaction (sptr< Interaction > inter) |
|
void | add_tracker (sptr< StateTracker > track) |
|
void | add_constraint (sptr< Constraint > c) |
|
void | add (sptr< Interaction > a) |
|
void | add (sptr< StateTracker > a) |
|
void | add (sptr< Constraint > a) |
|
vector< sptr< Interaction > > | get_interactions () |
|
A Collection with a "solvent", using the Langevin equation.
The Langevin Equation ((modified with \(\vec{f}\)):
\(\dot{\vec{p}} = - \xi \vec{p} + \vec{f} + \overset{\circ}{\vec{p}}\)
Where \(- \xi \vec{p}\) is a drag term, \(\overset{\circ}{\vec{p}}\) is a "random force" term, and \(\vec{f}\) is the standard force term. When \(\vec{f} = \vec{0}\), particles undergo Brownian motion, with \(\xi = \frac{k_B T}{m D}\).
This particular algorithm is from Allen and Tildesley, p. 263:
\( \begin{align*} \vec{r}\left(t+\delta t\right)) & =\vec{r}\left(t\right)+c_{1}\delta t\vec{v}\left(t\right)+c_{2}\delta t^{2}\vec{a}\left(t\right)+\delta r^{G}\\ \vec{v}\left(t+\delta t\right) & =c_{0}v\left(t\right)+\left(c_{1}-c_{2}\right)\delta t\vec{a}\left(t\right)+c_{2}\delta t\vec{a}\left(t+\delta t\right)+\delta v^{G} \end{align*} \)
where
\( \begin{align*} c_0 & = e^{- \xi \delta t} & c_1 & = \frac{1 - c_0}{\xi \delta t} & c_2 & = \frac{1 - c_1}{\xi \delta t} \end{align*} \)
There are expansions for all 3; see Allen and Tildesley page 261.
\(\delta r^G\) and \(\delta v^G\) are drawn from correlated Gaussian distributions, with
\( \begin{align*} \sigma_{r}^{2} & =\left(\xi dt\right)^{-1}\left[2-\left(\xi dt\right)^{-1}\left(3-4e^{-\xi dt}+e^{-2\xi dt}\right)\right]\\ \sigma_{v}^{2} & =1-e^{-2\xi dt}\\ c_{rv} & =\frac{\left(1-e^{-\xi dt}\right)^{2}}{\xi dt\sigma_{r}\sigma_{v}} \end{align*} \)
Those are the unitless versions, multiply by \(\frac{\delta t^2 k_B T}{m}\), \(\frac{k_B T}{m}\), and \(\frac{\delta t k_B T}{m}\) respectively to get the unit-full versions in the book