|
core 1.5.0
Shared MPI block decomposition, asynchronous ghost-layer exchange, SDF geometry, load balancing (header-only C++20)
|
Functions | |
| template<class Real , class Phi > | |
| void | interiorMoments (const Phi &phi, Vec3< Real > p0, Vec3< Real > d, int nseg, Real &m0, Real &m1, Real &m2) |
| Moments of the NEGATIVE set {phi < 0} along p0 + s*d, s in [0,1], in the PARAMETER s: m0 = ∫ 1 ds, m1 = ∫ s ds, m2 = ∫ s² ds over the interior runs. | |
| template<class Real > | |
| void | eigSym3 (const Real A[3][3], Real w[3], Real V[3][3]) |
| Jacobi eigensolver for a symmetric 3x3: A = V diag(w) V^T, V orthonormal columns. | |
| template<class Real > | |
| void | resolveDegenerateFrame (Real w[3], Real V[3][3], Real relTol=Real(1e-2)) |
| Within each cluster of (near-)equal eigenvalues, rotate the eigenbasis onto the input axes with the largest projection into that subspace (orthogonal Procrustes on the k x k projection). | |
| template<class Real > | |
| Quat< Real > | quatFromRotation (const Real R[3][3]) |
| Rotation matrix (columns orthonormal, det +1) -> quaternion (x, y, z, w), Shepperd's method. | |
| void peclet::core::geom::body_detail::interiorMoments | ( | const Phi & | phi, |
| Vec3< Real > | p0, | ||
| Vec3< Real > | d, | ||
| int | nseg, | ||
| Real & | m0, | ||
| Real & | m1, | ||
| Real & | m2 | ||
| ) |
Moments of the NEGATIVE set {phi < 0} along p0 + s*d, s in [0,1], in the PARAMETER s: m0 = ∫ 1 ds, m1 = ∫ s ds, m2 = ∫ s² ds over the interior runs.
Same bracketed bisection as quadrature.hpp's positiveLength (an initial nseg subdivision brackets, 40 bisections refine to ~1 ulp of the parameter); the per-run integrals are analytic. NOTE the sign convention: bodies are the interior (phi < 0), where the aperture code measured the fluid (phi > 0).
Definition at line 66 of file body_properties.hpp.
Jacobi eigensolver for a symmetric 3x3: A = V diag(w) V^T, V orthonormal columns.
Small, exact enough (50 sweeps to machine precision), no dependencies.
Definition at line 113 of file body_properties.hpp.
Referenced by resolveDegenerateFrame().
| void peclet::core::geom::body_detail::resolveDegenerateFrame | ( | Real | w[3], |
| Real | V[3][3], | ||
| Real | relTol = Real(1e-2) |
||
| ) |
Within each cluster of (near-)equal eigenvalues, rotate the eigenbasis onto the input axes with the largest projection into that subspace (orthogonal Procrustes on the k x k projection).
See the header comment; a fully degenerate tensor yields exactly the identity.
Definition at line 165 of file body_properties.hpp.
References eigSym3(), and peclet::core::scale().