|
| template<class Real , class Phi > |
| 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.
|
| |
| template<class Real > |
| void | peclet::core::geom::body_detail::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 | 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).
|
| |
| template<class Real > |
| Quat< Real > | peclet::core::geom::body_detail::quatFromRotation (const Real R[3][3]) |
| | Rotation matrix (columns orthonormal, det +1) -> quaternion (x, y, z, w), Shepperd's method.
|
| |
| template<class Real , class Phi > |
| BodyProperties< Real > | peclet::core::geom::bodyProperties (const Phi &phi, Vec3< Real > lo, Vec3< Real > hi, int n=32, int order=5, int nseg=8, Real density=Real(1)) |
| | Mass properties of {phi < 0} over the box [lo, hi], composite implicit quadrature: an n^3 cell grid; per cell a tensor Gauss rule (order nodes per transverse axis, height axis chosen from the central gradient like cellVolumeFraction) with analytic 1-D moments along each line.
|
| |