ACEfriction.MatrixModels.CWCMatrixModel — Type
CWCMatrixModel(property, species_friction, species_env; maxorder=2, maxdeg=5, rcut=5.0, n_rep=1,
partner_in_env=true, ...)Column-wise coupled friction model (onsite + spherical offsite). partner_in_env=true (default) pools the bond partner into the offsite bond environment (see SphericalCutoff), which makes evaluating all offsite blocks of a centre cost about one onsite evaluation; false selects the original partner-excluded environment.
This model was formerly called RWCMatrixModel. The coupling scheme named row-wise coupling in Appendix C of the reference paper (Sachs et al., 2024) is more appropriately termed column-wise coupling, the terminology used here. Constructing RWCMatrixModel now raises an error pointing to CWCMatrixModel.
CWCMatrixModel(property, species_friction, species_env, evalcenter::EvaluationCenter;
rcut_on, rcut_off, maxorder_on, maxdeg_on, ..._on/_off, bond_weight)Backward-compatible CWC constructor with a positional evalcenter and separate onsite/offsite hyperparameters (mirrors the pre-ET interface).
ACEfriction.MatrixModels.PWCMatrixModel — Type
PWCMatrixModel(property, species_friction, species_env;
maxorder=2, maxdeg=5, rcut=5.0, n_rep=1, partner_in_env=true, ...)Pairwise-coupled (offsite) friction model with a spherical pair environment. partner_in_env=true (default) pools the bond partner into the bond environment (see SphericalCutoff), which makes the evaluation of all pair blocks of a centre cost about one onsite evaluation; false selects the original partner-excluded environment.
PWCMatrixModel(property, species_friction, species_env, cutoff::EllipsoidCutoff; ...)Pairwise-coupled offsite model with an ellipsoidal (bond-centred) environment.
PWCMatrixModel(property, species_friction, species_env, cutoff::SnowManCutoff; ...)Pairwise-coupled offsite model on both bond ends' atom-centred environments (two overlapping spheres, one per bond end): with B_ij = basis(sphere_i, bond i→j), the block of pair (i,j) is c₊·(B_ij + B_ji) + c₋·(B_ij - B_ji) for the default SnowManCutoff(rcut) (:general; non-symmetric Γ_ij blocks, twice the parameters), and c·(B_ij ± B_ji) for SnowManCutoff(rcut, :symmetric) / :antisymmetric. See SnowManCutoff. cutoff.rcut is the per-centre radius. Accepts the same selection/radial keywords as the other PWCMatrixModel methods.
ACEfriction.MatrixModels.OnsiteOnlyMatrixModel — Type
OnsiteOnlyMatrixModel(property, species_friction, species_env;
maxorder=2, maxdeg=5, rcut=5.0, n_rep=1, ...)Block-diagonal friction model (onsite only).
The first argument of every constructor is an equivariant block property (Invariant, EuclideanVector, EuclideanMatrix, or SymmetricEuclideanMatrix) fixing the $O(3)$ transformation law of the blocks ${\bm \Sigma}_{ij}$; see Equivariant block properties. The block sparsity and assembly of ${\bm \Sigma}$ (the coupling scheme) are summarised in Matrix models and coupling schemes.
Local environments (cutoffs)
The local environment entering each block is delimited by one of the following cutoffs (see also Local environments (cutoffs)):
ACEfriction.ETBackend.SphericalCutoff — Type
SphericalCutoff(rcut; partner_in_env = true)Spherical pair-environment cutoff for the atom-centred offsite model: the bond environment of a pair (i,j) is the set of neighbours of atom i within rcut, with j itself the bond partner. (Cf. ACEfrictionCore SphericalCutoff.)
partner_in_env selects whether the bond partner j is also pooled into the environment features of the bond (i,j):
true(default): the environment is all ofN_i(includingj). The environment features are then shared by all bonds of the centre and, since every bond basis function contains exactly one bond factor, the blocks factorise asΣ_ij = T_i · φ(r_ij)with a per-centre tensorT_iand cheap per-bond one-particle featuresφ. This makes the pair blocks of a centre cost about as much as a single onsite (energy-like) evaluation.false: the environment isN_i \ {j}(all other neighbours ofi), the original convention. Every bond of a centre then has a different environment, so evaluating the pair blocks costs one many-body evaluation per bond.
The two settings are different bases (spanning the same function space), so a model must be evaluated with the setting it was fitted with; the setting is serialized, and models saved before the option existed load as false. On H/Cu reference data the two fit equally well. They coincide exactly when the partner's species is excluded from the environment factors, and for the antisymmetric SnowManCutoff at maxorder = 2.
ACEfriction.ETBackend.EllipsoidCutoff — Type
EllipsoidCutoff(rcutbond, rcutenv, zcutenv)Bond-centred ellipsoidal cutoff: bonds with |rij| <= rcutbond; environment atoms within the ellipsoid (z/zcutenv)^2 + (r/rcutenv)^2 <= 1 around the bond midpoint (z along the bond, r perpendicular).
ACEfriction.ETBackend.SnowManCutoff — Type
SnowManCutoff(rcut, symmetry = :general; partner_in_env = true)Atom-centred pair-environment cutoff combining both bond ends: the diffusion block of a pair (i,j) evaluates the ACE basis on the spherical environment of i (with j the bond partner) and on the spherical environment of j (with i the bond partner) — two overlapping spheres, one per bond end (the "snowman"). Writing B_ij = basis(sphere_i, bond i→j), the combination is selected by symmetry:
:general Σ_ij = c₊ · (B_ij + B_ji) + c₋ · (B_ij - B_ji) (default)
:symmetric Σ_ij = c · (B_ij + B_ji) Σ_ji = Σ_ij
:antisymmetric Σ_ij = c · (B_ij - B_ji) Σ_ji = -Σ_ijWith :symmetric / :antisymmetric both ends share the coefficients, so every off-diagonal friction block Γ_ij = Σ_ij Σ_jiᵀ = ±Σ_ij Σ_ijᵀ is a symmetric 3×3 matrix. :general has independent coefficients for the symmetric and the antisymmetric combination (twice as many parameters: the basis is the stacked [B_ij + B_ji; B_ij - B_ji], coefficients [c₊; c₋]), so Σ_ji ≠ ±Σ_ij and Γ_ij is in general not symmetric (Γ itself stays symmetric positive semi-definite). It contains the other two as the restrictions c₋ = 0 (:symmetric) and c₊ = 0 (:antisymmetric).
symmetry is carried as a (Symbol-valued) type parameter SnowManCutoff{T, S} so the assembly dispatches on it. rcut is the per-centre spherical radius (same convention as SphericalCutoff). The keyword partner_in_env (default true) has the same meaning as for SphericalCutoff: with true the bond partner is pooled into each sphere's environment, which lets the per-centre evaluation be shared across all bonds.
Models saved before the symmetry tag was serialized load as :symmetric.