FrictionLJCoulomb

class hoomd.md.pair.friction.FrictionLJCoulomb(nlist, default_r_cut=None)

Bases: FrictionalPair

Coulomb frictional model pair force with the LJ conservative force.

Parameters:

FrictionLJCoulomb computes the frictional interaction between pairs of particles with a Coulomb friction model as described in Hofmann et. al. 2025.

The Coulomb friction model is defined by the function

fC(u,r)=w(r)κf.f_\mathrm{C}(u,r) = w(r)\kappa_\mathrm{f}\, .

And a repulsive Weeks-Chandler-Anderson (WCA) potential

UWCA(r)=4ε[(σr)12(σr)6]w(r)=ddrUWCA(r)\begin{align*} U_\mathrm{WCA}(r) &= 4 \varepsilon \left[ \left( \frac{\sigma}{r} \right)^{12} - \left( \frac{\sigma}{r} \right)^{6} \right] \\ w(r)&=-\frac{\mathrm{d}}{\mathrm{d}r}U_\mathrm{WCA}(r) \end{align*}

Since the frictional force results from coarse-graining the microscopic equations of motion, a corresponding pairwise noise that satisfies a fluctuation-dissipation relation must be applied. For this a stochastic force and torque is added

DC(u,r)=w(r)κfπ2kBTνeu22kBTνErfc(u2kBTν)FijR=FjiR=DC(uij,rij)[P(r^ij)ξijfr^ij×Nijf]τijRRi=τjiRRj=DC(uij,rij)[r^ij×ξijf+P(eij)Nijf],\begin{align*} D_\mathrm{C}(u,r) &= \frac{w(r)\kappa_\mathrm{f}\sqrt{\pi}}{\sqrt{2k_\mathrm{B} T\nu}}\mathrm{e}^{\frac{u^2}{2k_\mathrm{B}T\nu}} \mathrm{Erfc}\big(\frac{u} {\sqrt{2k_\mathrm{B}T\nu}} \big) \\ \mathbf{F}^\mathrm{R}_{ij} = -\mathbf{F}^\mathrm{R}_{ji} &= \sqrt{D_\mathrm{C} (u^\perp_{ij},r_{ij})}\Big[\mathbf{P} (\mathbf{\hat{r}}_{ij})\mathbf{\xi}^\mathrm{f}_{ij} - \mathbf{\hat{r}}_{ij} \times \mathbf{N}^\mathrm{f} _{ij}\Big] \\ \frac{\mathbf{\tau}^\mathrm{R}_{ij}}{R_i} = \frac{\mathbf{\tau}^\mathrm{R}_{ji}}{R_j} &= \sqrt{D_\mathrm{C}(u^\perp_{ij},r_{ij})}\Big[ \mathbf{\hat{r}}_{ij} \times \mathbf{\xi}^\mathrm{f}_{ij}+\mathbf{P} (\mathbf{e}_{ij})\mathbf{N}^\mathrm{f}_{ij}\Big]\, , \end{align*}

where ν=(1/mi+1/mj)+(Ri2/Ii+Rj2/Ij))\nu=(1/m_i+1/m_j)+(R_i^2/\mathbf{I}_i+R_j^2/\mathbf{I}_j)), and ξijf\mathbf{\xi}^\mathrm{f}_{ij} and Nijf\mathbf{N}^\mathrm{f}_{ij} are three dimensional Gaussian white noise vectors with correlations

ξijf(t)ξklf(t)=1kBT(δikδjlδilδjk)δ(tt)Nijf(t)Nklf(t)=1kBT(δikδjl+δilδjk)δ(tt).\begin{align*} \langle \mathbf{\xi}^\mathrm{f}_{ij}(t) \mathbf{\xi}^\mathrm{f}_{kl}(t') \rangle &= \mathbf{1}k_\mathrm{B}T (\delta_{ik}\delta_{jl}-\delta_{il} \delta_{jk})\delta(t-t') \\ \langle \mathbf{N}^\mathrm{f}_{ij}(t) \mathbf{N}^\mathrm{f}_{kl}(t') \rangle &= \mathbf{1}k_\mathrm{B}T(\delta_{ik} \delta_{jl}+\delta_{il}\delta_{jk}) \delta(t-t')\, . \end{align*}

Example:

coulomb_lj = hoomd.md.pair.friction.FrictionLJCoulomb(nlist=neighbor_list,
                                                        default_r_cut=3)

coulomb_lj_params = {'epsilon':1, 'sigma':1, 'kappa_f':3, 'kT':1}

coulomb_lj.params.default = coulomb_lj_params
simulation.operations.integrator.forces = [coulomb_lj]

Members inherited from AutotunedObject:

property kernel_parameters

Kernel parameters. Read more...

property is_tuning_complete

Check if kernel parameter tuning is complete. Read more...

tune_kernel_parameters()

Start tuning kernel parameters. Read more...


Members inherited from Force:

additional_energy

Additional energy term. Read more...

additional_virial

Additional virial tensor term WadditionalW_\mathrm{additional}. Read more...

cpu_local_force_arrays

Local force arrays on the CPU. Read more...

energies

Energy contribution UiU_i from each particle. Read more...

energy

The potential energy UU of the system from this force. Read more...

forces

The force Fi\vec{F}_i applied to each particle. Read more...

gpu_local_force_arrays

Local force arrays on the GPU. Read more...

torques

The torque τi\vec{\tau}_i applied to each particle. Read more...

virials

Virial tensor contribution WiW_i from each particle. Read more...


Members inherited from Pair:

nlist

Neighbor list used to compute the pair force. Read more...

mode

Energy smoothing/cutoff mode. Read more...

r_cut

Cuttoff radius beyond which the energy and force are 0. Read more...

r_on

Radius at which the XPLOR smoothing function starts. Read more...

compute_energy()

Compute the energy between two sets of particles. Read more...