|
OpenMD 3.2
Molecular Dynamics in the Open
|
Pairwise Rotne-Prager-Yamakawa mobility blocks for a bead model. More...
#include <cmath>#include "math/SquareMatrix3.hpp"#include "math/Vector3.hpp"#include "utils/Constants.hpp"Go to the source code of this file.
Namespaces | |
| namespace | OpenMD |
| This basic Periodic Table class was originally taken from the data.cpp file in OpenBabel. | |
Enumerations | |
| enum | Regime { FarField , PartialOverlap , FullImmersion } |
Functions | |
| Regime | OpenMD::RPY::classify (RealType R, RealType ai, RealType aj) |
| Classify a pair by centre-to-centre distance R and radii a_i, a_j. | |
| Mat3x3d | OpenMD::RPY::skew (const Vector3d &v) |
| cross-product (skew) matrix S(v) such that S(v) * w = v x w | |
| RealType | OpenMD::RPY::heavi (RealType x) |
| Heaviside step used by the full-immersion rt/td branches: 1 if x>0 else 0. | |
| Mat3x3d | OpenMD::RPY::muTT_self (RealType a, RealType eta) |
| Mat3x3d | OpenMD::RPY::muRR_self (RealType a, RealType eta) |
| Mat3x3d | OpenMD::RPY::muTT (const Vector3d &rij, RealType ai, RealType aj, RealType eta) |
| translation-translation, carries 1/eta | |
| Mat3x3d | OpenMD::RPY::muRR (const Vector3d &rij, RealType ai, RealType aj, RealType eta) |
| rotation-rotation, carries 1/eta | |
| RealType | OpenMD::RPY::rtPrefactor (RealType R, RealType ai, RealType aj, RealType eta) |
| rt prefactor pf such that mu_rt = -pf * skew(rhat) (Omega_i from F_j). | |
| Mat3x3d | OpenMD::RPY::muRT (const Vector3d &rij, RealType ai, RealType aj, RealType eta) |
| rotation-translation: Omega_i from F_j. carries 1/eta. | |
| Mat3x3d | OpenMD::RPY::muTR (const Vector3d &rij, RealType ai, RealType aj, RealType eta) |
| translation-rotation: U_i from T_j. Uses the i<->j swapped prefactor (equal to muRT only in the far field). carries 1/eta. | |
| Vector3d | OpenMD::RPY::muTD_dot_E (const Vector3d &rij, RealType ai, RealType aj, const Mat3x3d &E) |
| mu_td_ij : E -> translational disturbance velocity at bead i = hat1 (E rhat) + hat3 (rhat . E . rhat) rhat | |
| Vector3d | OpenMD::RPY::muRD_dot_E (const Vector3d &rij, RealType ai, RealType aj, const Mat3x3d &E) |
| mu_rd_ij : E -> angular-velocity disturbance at bead i = p [ (E rhat) x rhat ] | |
Pairwise Rotne-Prager-Yamakawa mobility blocks for a bead model.
The six mobility blocks needed to embed a flexible atomic bead model in a linearized background flow:
tt, tr, rt, rr force/torque -> translation/rotation (carry 1/eta) td, rd ambient strain -> translation/rotation (eta- AND pi-INDEPENDENT)
The grand velocity mobility M (the 6N x 6N assembly of tt/tr/rt/rr) is inverted to the grand resistance R = M^{-1}; the drag on the beads is
f_hydro = R ( v_inf_eff - v ), v_inf_eff = v_inf + G : E_inf,
with v_inf the affine flow at the bead (VelocityField::getVelocity) and (G:E_inf)_i = sum_{j!=i}[mu_td_ij:E ; mu_rd_ij:E] the dipolar disturbance.
Three regimes per pair, with boundaries:
far field R > a_i + a_j partial overlap |a_i - a_j| < R <= a_i + a_j full immersion R <= |a_i - a_j|
VISCOSITY: tt/tr/rt/rr carry 1/eta; td/rd are eta- AND pi-independent, because the 1/(pi eta) of the stresslet propagator cancels the (pi eta) of a sphere's stresslet response to strain. The (5/6) a_j^3 / R^2 structure of the far-field td block is exactly that cancellation.
VERIFIED against ZWMS (Zuk, Wajnryb, Mizerski, Szymczak, J. Fluid Mech. 741, R5, 2014), Eqs. 3.1-3.9, in all three regimes, and continuity across both regime boundaries confirmed numerically. The full-immersion rt/tr prefactor (see rtPrefactor) follows Eq. 3.5, R/(8 pi eta a_i^3). The td/rd tensors are defined only up to their symmetric, traceless part, which is harmless here since they are always contracted with the symmetric traceless E.
Definition in file RPYBlocks.hpp.
| enum OpenMD::RPY::Regime |
Definition at line 87 of file RPYBlocks.hpp.
|
inline |
Classify a pair by centre-to-centre distance R and radii a_i, a_j.
Definition at line 90 of file RPYBlocks.hpp.
|
inline |
Heaviside step used by the full-immersion rt/td branches: 1 if x>0 else 0.
Definition at line 109 of file RPYBlocks.hpp.
|
inline |
mu_rd_ij : E -> angular-velocity disturbance at bead i = p [ (E rhat) x rhat ]
Definition at line 290 of file RPYBlocks.hpp.
References OpenMD::cross(), and OpenMD::Vector< Real, Dim >::length().
|
inline |
rotation-rotation, carries 1/eta
Definition at line 163 of file RPYBlocks.hpp.
References OpenMD::SquareMatrix< Real, 3 >::identity(), and OpenMD::Vector< Real, Dim >::length().
|
inline |
Definition at line 117 of file RPYBlocks.hpp.
|
inline |
rotation-translation: Omega_i from F_j. carries 1/eta.
Definition at line 227 of file RPYBlocks.hpp.
References OpenMD::Vector< Real, Dim >::length().
|
inline |
mu_td_ij : E -> translational disturbance velocity at bead i = hat1 (E rhat) + hat3 (rhat . E . rhat) rhat
Definition at line 248 of file RPYBlocks.hpp.
References OpenMD::dot(), and OpenMD::Vector< Real, Dim >::length().
|
inline |
translation-rotation: U_i from T_j. Uses the i<->j swapped prefactor (equal to muRT only in the far field). carries 1/eta.
Definition at line 236 of file RPYBlocks.hpp.
References OpenMD::Vector< Real, Dim >::length().
|
inline |
translation-translation, carries 1/eta
Definition at line 126 of file RPYBlocks.hpp.
References OpenMD::SquareMatrix< Real, 3 >::identity(), and OpenMD::Vector< Real, Dim >::length().
|
inline |
Definition at line 113 of file RPYBlocks.hpp.
|
inline |
rt prefactor pf such that mu_rt = -pf * skew(rhat) (Omega_i from F_j).
Definition at line 207 of file RPYBlocks.hpp.
|
inline |
cross-product (skew) matrix S(v) such that S(v) * w = v x w
Definition at line 97 of file RPYBlocks.hpp.
References OpenMD::Vector3< Real >::x(), OpenMD::Vector3< Real >::y(), and OpenMD::Vector3< Real >::z().