From c8010e9f5a99693ddb718b39b8e9dc3a878fcc62 Mon Sep 17 00:00:00 2001 From: nzfeng Date: Wed, 31 Jan 2024 16:49:40 -0500 Subject: [PATCH 01/21] Block out functions and documentation; names could use some work --- docs/docs/surface/geometry/quantities.md | 138 ++++++++++++++++++ .../surface/embedded_geometry_interface.h | 98 +++++++++++++ src/surface/embedded_geometry_interface.cpp | 117 ++++++++++++++- 3 files changed, 352 insertions(+), 1 deletion(-) diff --git a/docs/docs/surface/geometry/quantities.md b/docs/docs/surface/geometry/quantities.md index a1caf3d0..2d1b865a 100644 --- a/docs/docs/surface/geometry/quantities.md +++ b/docs/docs/surface/geometry/quantities.md @@ -543,6 +543,144 @@ In graphics and geometry processing, Crouzeix-Raviart elements have been used, f - **member:** `Eigen::SparseMatrix IntrinsicGeometryInterface::crouzeixRaviartConnectionLaplacian` - **require:** `void IntrinsicGeometryInterface::requireCrouzeixRaviartConnectionLaplacian()` +## Polygon Mesh Operators + +These quantities are defined for any `EmbeddedGeometryInterface`, meaning they will be available for any geometry whose embedding in 3D space is specified (for example, with vertex positions.) These operators were specifically designed for polygon meshes, though they will reduce to the classical discrete exterior calculus & finite element operators on triangular meshes (described above). + +Two classes of polygon operators are provided: those based on [Bunge et al.'s _Polygon Laplacian Made Simple_](https://www.cs.jhu.edu/~misha/MyPapers/EUROG20.pdf), whose discretization is based on virtual refinement of the polygon mesh; and those based on [de Goes et al.'s _Discrete Differential Operators on Polygonal Meshes_](https://graphics.pixar.com/library/PolyDDG/paper.pdf), whose discretization is based on an adaptation of the virtual element method. Both methods build local operators whose matrices are assembled per-polygon, so they will run out-of-the-box on non-manifold meshes (but no guarantees are provided!) + +All operators are indexed over mesh elements according to the natural iteration order of the elements, or equivalently the indices from `SurfaceMesh::getVertexIndices()` (etc). + +??? func "virtual refinement polygon Laplacian" + + ##### virtual refinement polygon Laplacian + + The discrete Laplace operator acting on polygon meshes, using Bunge et al.'s virtual refinement method in _Polygon Laplacian Made Simple_. + + A $|V| \times |V|$ real matrix. Always symmetric and positive semi-definite. On triangle meshes, this polygon Laplacian becomes the standard cotan Laplacian. (Note: We build the positive operator to align with the convention set by the cotan Laplacian, in contrast to Bunge et al.'s definition.) + + Only valid on an `EmbeddedGeometryInterface`. + + - **member:** `Eigen::SparseMatrix EmbeddedGeometryInterface::virtualRefinementLaplacian` + - **require:** `void EmbeddedGeometryInterface::requireVirtualRefinementLaplacian()` + +??? func "virtual element polygon Laplacian" + + ##### virtual element polygon Laplacian + + The discrete Laplace operator acting on polygon meshes, using de Goes et al.'s virtual element method in _Discrete Differential Operators on Polygonal Meshes_. + + A $|V| \times |V|$ real matrix. Always symmetric and positive semi-definite. Takes in an additional parameter $\lambda$ defining a stabilization term to ensure discrete inner products remain positive-definite on non-triangular faces. On triangle meshes, this polygon Laplacian becomes the standard cotan Laplacian with $\lambda=0$. + + Only valid on an `EmbeddedGeometryInterface`. + + - **member:** `Eigen::SparseMatrix EmbeddedGeometryInterface::virtualElementLaplacian` + - **require:** `void EmbeddedGeometryInterface::requireVirtualElementLaplacian($\lambda=1$)` + +??? func "virtual refinement vertex lumped mass matrix" + + ##### virtual refinement vertex lumped mass matrix + + A $|V| \times |V|$ real diagonal matrix, using Bunge et al.'s virtual refinement method in _Polygon Laplacian Made Simple_. Obtained by setting each diagonal entry to the row sum in the Galerkin mass matrix. Bunge et al. note that the lumped mass matrix gives better results than the unlumped Galerkin mass matrix for most applications. + + Only valid on an `EmbeddedGeometryInterface`. + + - **member:** `Eigen::SparseMatrix EmbeddedGeometryInterface::virtualRefinementVertexLumpedMassMatrix` + - **require:** `void EmbeddedGeometryInterface::requireVirtualRefinementVertexLumpedMassMatrix()` + +??? func "virtual element vertex lumped mass matrix" + + ##### virtual refinement vertex mass matrix + + A $|V| \times |V|$ real diagonal matrix, using de Goes et al.'s virtual element method in _Discrete Differential Operators on Polygonal Meshes_. Obtained by setting each diagonal entry to the row sum in the Galerkin mass matrix. + + Only valid on an `EmbeddedGeometryInterface`. + + - **member:** `Eigen::SparseMatrix EmbeddedGeometryInterface::virtualElementVertexLumpedMassMatrix` + - **require:** `void EmbeddedGeometryInterface::requireVirtualElementVertexLumpedMassMatrix()` + +??? func "virtual refinement vertex Galerkin mass matrix" + + ##### virtual refinement vertex Galerkin mass matrix + + A $|V| \times |V|$ real matrix, using Bunge et al.'s virtual refinement method in _Polygon Laplacian Made Simple_. + + Only valid on an `EmbeddedGeometryInterface`. + + - **member:** `Eigen::SparseMatrix EmbeddedGeometryInterface::virtualRefinementVertexGalerkinMassMatrix` + - **require:** `void EmbeddedGeometryInterface::requireVirtualRefinementVertexGalerkinMassMatrix()` + +??? func "virtual element vertex Galerkin mass matrix" + + ##### virtual element vertex Galerkin mass matrix + + A $|V| \times |V|$ real matrix, using de Goes et al.'s virtual element method in _Discrete Differential Operators on Polygonal Meshes_. Obtained by setting each diagonal entry to the row sum in the Galerkin mass matrix. + + Only valid on an `EmbeddedGeometryInterface`. + + - **member:** `Eigen::SparseMatrix EmbeddedGeometryInterface::virtualElementVertexGalerkinMassMatrix` + - **require:** `void EmbeddedGeometryInterface::requireVirtualElementVertexGalerkinMassMatrix()` + +??? func "virtual element vertex connection Laplacian" + + ##### virtual element vertex connection Laplacian + + A discrete connection Laplacian operator, which applies to vector fields defined in vertex tangent spaces; defined in de Goes et al.'s _Discrete Differential Operators on Polygonal Meshes_. + + A $|V| \times |V|$ complex matrix. + + Given a complex vector $\mathsf{x}$ of tangent vectors at vertices, apply the operator by multiplying $\mathsf{L} * \mathsf{x}$. + + Only valid on an `EmbeddedGeometryInterface`. + + - **member:** `Eigen::SparseMatrix> IntrinsicGeometryInterface::vertexConnectionLaplacian` + - **require:** `void IntrinsicGeometryInterface::requireVertexConnectionLaplacian()` + +??? func "virtual refinement DEC operators" + + ##### virtual refinement DEC operators + + These operators are the basic building blocks for _discrete exterior calculus_ on polygon meshes, using Bunge et al.'s virtual refinement method in _Polygon Laplacian Made Simple_. + + **Note:** These quantities slightly deviate from the usual naming scheme for quantities. Rather than `requireD0()`, `requireD1()`, etc, there is a single `requireVirtualRefinementDECOperators()` function which manages all 8 of the members listed below. + + The following members are constructed: + + - `Eigen::SparseMatrix EmbeddedGeometryInterface::virtualRefinementHodge0` A $|V| \times |V|$ diagonal matrix + - `Eigen::SparseMatrix EmbeddedGeometryInterface::virtualRefinementHodge0Inverse` A $|V| \times |V|$ diagonal matrix + - `Eigen::SparseMatrix EmbeddedGeometryInterface::virtualRefinementHodge1` An $|E| \times |E|$ diagonal matrix + - `Eigen::SparseMatrix EmbeddedGeometryInterface::virtualRefinementHodge1Inverse` An $|E| \times |E|$ diagonal matrix + - `Eigen::SparseMatrix EmbeddedGeometryInterface::virtualRefinementHodge2` An $|F| \times |F|$ diagonal matrix + - `Eigen::SparseMatrix EmbeddedGeometryInterface::virtualRefinementHodge2Inverse` An $|F| \times |F|$ diagonal matrix + - `Eigen::SparseMatrix EmbeddedGeometryInterface::virtualRefinementD0` An $|E| \times |V|$ matrix with $\{-1, 0, 1\}$ entries + - `Eigen::SparseMatrix EmbeddedGeometryInterface::virtualRefinementD1` An $|F| \times |E|$ matrix with $\{-1, 0, 1\}$ entries + + Only valid on an `EmbeddedGeometryInterface`. + + - **require:** `void EmbeddedGeometryInterface::requireVirtualRefinementDECOperators()` + +??? func "virtual element DEC operators" + + ##### virtual element DEC operators + + These operators are the basic building blocks for _discrete exterior calculus_ on polygon meshes, using de Goes et al.'s virtual element method in _Discrete Differential Operators on Polygonal Meshes_. + + **Note:** These quantities slightly deviate from the usual naming scheme for quantities. Rather than `requireD0()`, `requireD1()`, etc, there is a single `requireVirtualElementDECOperators()` function which manages all 8 of the members listed below. + + The following members are constructed: + + - `Eigen::SparseMatrix EmbeddedGeometryInterface::virtualElementHodge0` A $|V| \times |V|$ diagonal matrix + - `Eigen::SparseMatrix EmbeddedGeometryInterface::virtualElementHodge0Inverse` A $|V| \times |V|$ diagonal matrix + - `Eigen::SparseMatrix EmbeddedGeometryInterface::virtualElementHodge1` An $|E| \times |E|$ diagonal matrix + - `Eigen::SparseMatrix EmbeddedGeometryInterface::virtualElementHodge1Inverse` An $|E| \times |E|$ diagonal matrix + - `Eigen::SparseMatrix EmbeddedGeometryInterface::virtualElementHodge2` An $|F| \times |F|$ diagonal matrix + - `Eigen::SparseMatrix EmbeddedGeometryInterface::virtualElementHodge2Inverse` An $|F| \times |F|$ diagonal matrix + - `Eigen::SparseMatrix EmbeddedGeometryInterface::virtualElementD0` An $|E| \times |V|$ matrix with $\{-1, 0, 1\}$ entries + - `Eigen::SparseMatrix EmbeddedGeometryInterface::virtualElementD1` An $|F| \times |E|$ matrix with $\{-1, 0, 1\}$ entries + + Only valid on an `EmbeddedGeometryInterface`. + + - **require:** `void EmbeddedGeometryInterface::requireVirtualElementDECOperators()` ## Extrinsic angles diff --git a/include/geometrycentral/surface/embedded_geometry_interface.h b/include/geometrycentral/surface/embedded_geometry_interface.h index 956c8001..ece442be 100644 --- a/include/geometrycentral/surface/embedded_geometry_interface.h +++ b/include/geometrycentral/surface/embedded_geometry_interface.h @@ -54,6 +54,60 @@ class EmbeddedGeometryInterface : public ExtrinsicGeometryInterface { void requireVertexDualMeanCurvatureNormals(); void unrequireVertexDualMeanCurvatureNormals(); + // == Polygon Operators + + // = Bunge et al. "Polygon Laplacian Made Simple" (2020), based on virtual refinement (virtual node method). + + // Laplacian + Eigen::SparseMatrix virtualRefinementLaplacian; + void requireVirtualRefinementPolygonLaplacian(); + void unrequireVirtualRefinementPolygonLaplacian(); + + // Vertex Galerkin mass matrix (unlumped) + Eigen::SparseMatrix virtualRefinementVertexGalerkinMassMatrix; + void requireVirtualRefinementVertexGalerkinMassMatrix(); + void unrequireVirtualRefinementVertexGalerkinMassMatrix(); + + // Vertex mass matrix (lumped) + Eigen::SparseMatrix virtualRefinementVertexLumpedMassMatrix; + void requireVirtualRefinementVertexLumpedMassMatrix(); + void unrequireVirtualRefinementVertexLumpedMassMatrix(); + + // DEC Operators + Eigen::SparseMatrix virtualRefinementHodge0, virtualRefinementHodge0Inverse, virtualRefinementHodge1, + virtualRefinementHodge1Inverse, virtualRefinementHodge2, virtualRefinementHodge2Inverse, virtualRefinementD0, + virtualRefinementD1; + void requireVirtualRefinementDECOperators(); + void unrequireVirtualRefinementDECOperators(); + + // = de Goes et al. "Discrete Differential Operators on Polygonal Meshes" (2020), based on the virtual element method. + + // Laplacian + Eigen::SparseMatrix virtualElementLaplacian; + void requireVirtualElementLaplacian(); + void unrequireVirtualElementLaplacian(); + + // Vertex mass matrix (unlumped) + Eigen::SparseMatrix virtualElementVertexGalerkinMassMatrix; + void requireVirtualElementVertexGalerkinMassMatrix(); + void requireVirtualElementVertexGalerkinMassMatrix(); + + // Vertex mass matrix (lumped) + Eigen::SparseMatrix virtualElementVertexLumpedMassMatrix; + void requireVirtualElementVertexLumpedMassMatrix(); + void unrequireVirtualElementVertexLumpedMassMatrix(); + + // Vertex connection Laplacian + Eigen::SparseMatrix> virtualElementVertexConnectionLaplacian; + void requireVirtualElementVertexConnectionLaplacian(); + void unrequireVirtualElementVertexConnectionLaplacian(); + + Eigen::SparseMatrix virtualElementHodge0, virtualElementHodge0Inverse, virtualElementHodge1, + virtualElementHodge1Inverse, virtualElementHodge2, virtualElementHodge2Inverse, virtualElementD0, + virtualElementD1; + void requireVirtualElementDECOperators(); + void unrequireVirtualElementDECOperators(); + protected: // == Implmentations of quantities from base classes virtual void computeEdgeLengths() override; @@ -84,6 +138,50 @@ class EmbeddedGeometryInterface : public ExtrinsicGeometryInterface { virtual void computeCornerAngles() override; virtual void computeHalfedgeCotanWeights() override; virtual void computeEdgeCotanWeights() override; + + // == Polygon Operators + + // = Bunge et al. "Polygon Laplacian Made Simple" (2020), based on virtual refinement (virtual node method). + + // Laplacian + DependentQuantityD> virtualRefinementLaplacianQ; + virtual void computeVirtualRefinementLaplacian(); + + // Vertex mass matrix (unlumped) + DependentQuantityD> virtualRefinementVertexGalerkinMassMatrixQ; + virtual void computeVirtualRefinementVertexGalerkinMassMatrix(); + + // Vertex mass matrix (lumped) + DependentQuantityD> virtualRefinementVertexLumpedMassMatrixQ; + virtual void computeVirtualRefinementVertexLumpedMassMatrix(); + + // DEC Operators + std::array*, 8> virtualRefinementDECOperatorArray; + DependentQuantityD*, 8>> virtualRefinementDECOperatorsQ; + virtual void computeVirtualRefinementDECOperators(); + + // = de Goes et al. "Discrete Differential Operators on Polygonal Meshes" (2020), based on the virtual element method. + + // Laplacian + DependentQuantityD> virtualElementLaplacianQ; + virtual void computeVirtualElementLaplacian(); + + // Vertex mass matrix (unlumped) + DependentQuantityD> virtualElementVertexGalerkinMassMatrixQ; + virtual void computeVirtualElementVertexGalerkinMassMatrix(); + + // Vertex mass matrix (lumped) + DependentQuantityD> virtualElementVertexLumpedMassMatrixQ; + virtual void computeVirtualElementVertexLumpedMassMatrix(); + + // Vertex connection Laplacian + DependentQuantityD>> virtualElementVertexConnectionLaplacianQ; + virtual void computeVirtualElementVertexConnectionLaplacian(); + + // DEC Operators + std::array*, 8> virtualElementDECOperatorArray; + DependentQuantityD*, 8>> virtualElementDECOperatorsQ; + virtual void computeVirtualElementDECOperators(); }; diff --git a/src/surface/embedded_geometry_interface.cpp b/src/surface/embedded_geometry_interface.cpp index 81e11d94..5d83b8c5 100644 --- a/src/surface/embedded_geometry_interface.cpp +++ b/src/surface/embedded_geometry_interface.cpp @@ -17,7 +17,26 @@ EmbeddedGeometryInterface::EmbeddedGeometryInterface(SurfaceMesh& mesh_) : vertexNormalsQ (&vertexNormals, std::bind(&EmbeddedGeometryInterface::computeVertexNormals, this), quantities), faceTangentBasisQ (&faceTangentBasis, std::bind(&EmbeddedGeometryInterface::computeFaceTangentBasis, this), quantities), vertexTangentBasisQ (&vertexTangentBasis, std::bind(&EmbeddedGeometryInterface::computeVertexTangentBasis, this), quantities), - vertexDualMeanCurvatureNormalsQ (&vertexDualMeanCurvatureNormals, std::bind(&EmbeddedGeometryInterface::computeVertexDualMeanCurvatureNormals, this), quantities) + vertexDualMeanCurvatureNormalsQ (&vertexDualMeanCurvatureNormals, std::bind(&EmbeddedGeometryInterface::computeVertexDualMeanCurvatureNormals, this), quantities), + + virtualRefinementLaplacianQ (&virtualRefinementLaplacian, std::bind(&EmbeddedGeometryInterface::computeVirtualRefinementLaplacian, this), quantities), + virtualRefinementVertexGalerkinMassMatrixQ (&virtualRefinementVertexGalerkinMassMatrix, std::bind(&EmbeddedGeometryInterface::computeVirtualRefinementVertexGalerkinMassMatrix, this), quantities), + virtualRefinementVertexLumpedMassMatrixQ (&virtualRefinementVertexLumpedMassMatrix, std::bind(&EmbeddedGeometryInterface::computeVirtualRefinementVertexLumpedMassMatrix, this), quantities), + + virtualElementLaplacianQ (&virtualElementLaplacian, std::bind(&EmbeddedGeometryInterface::computeVirtualElementLaplacian, this), quantities), + virtualElementVertexGalerkinMassMatrixQ (&virtualElementVertexGalerkinMassMatrix, std::bind(&EmbeddedGeometryInterface::computeVirtualElementVertexGalerkinMassMatrix, this), quantities), + virtualElementVertexLumpedMassMatrixQ (&virtualElementVertexLumpedMassMatrix, std::bind(&EmbeddedGeometryInterface::computeVirtualElementVertexLumpedMassMatrix, this), quantities), + virtualElementVertexConnectionLaplacianQ (&virtualElementVertexConnectionLaplacian, std::bind(&EmbeddedGeometryInterface::computeVirtualElementVertexConnectionLaplacian, this), quantities), + + virtualRefinementDECOperatorArray{&virtualRefinementHodge0, &virtualRefinementHodge0Inverse, &virtualRefinementHodge1, + &virtualRefinementHodge1Inverse, &virtualRefinementHodge2, + &virtualRefinementHodge2Inverse, &virtualRefinementD0, &virtualRefinementD1}, + virtualRefinementDECOperatorsQ(&virtualRefinementDECOperatorArray, std::bind(&EmbeddedGeometryInterface::computeVirtualRefinementDECOperators, this), quantities) + + virtualElementDECOperatorArray{&virtualElementHodge0, &virtualElementHodge0Inverse, &virtualElementHodge1, + &virtualElementHodge1Inverse, &virtualElementHodge2, &virtualElementHodge2Inverse, + &virtualElementD0, &virtualElementD1}, + virtualElementDECOperatorsQ(&virtualElementDECOperatorArray, std::bind(&EmbeddedGeometryInterface::computeVirtualElementDECOperators, this), quantities) {} // clang-format on @@ -349,6 +368,102 @@ void EmbeddedGeometryInterface::computeEdgeCotanWeights() { } } +// === Polygon Operators + +// = Bunge et al. "Polygon Laplacian Made Simple" (2020), based on virtual refinement (virtual node method). + +// Laplacian +void EmbeddedGeometryInterface::computeVirtualRefinementLaplacian() { + // TODO +} +void EmbeddedGeometryInterface::requireVirtualRefinementLaplacian() { virtualRefinementLaplacianQ.require(); } +void EmbeddedGeometryInterface::unrequireVirtualRefinementLaplacian() { virtualRefinementLaplacianQ.unrequire(); } + + +// Vertex Galerkin mass matrix (unlumped) +void EmbeddedGeometryInterface::computeVirtualRefinementVertexGalerkinMassMatrix() { + // TODO +} +void EmbeddedGeometryInterface::requireVirtualRefinementVertexGalerkinMassMatrix() { + virtualRefinementVertexGalerkinMassMatrixQ.require(); +} +void EmbeddedGeometryInterface::unrequireVirtualRefinementVertexGalerkinMassMatrix() { + virtualRefinementVertexGalerkinMassMatrixQ.unrequire(); +} + + +// Vertex mass matrix (lumped) +void EmbeddedGeometryInterface::computeVirtualRefinementVertexLumpedMassMatrix() { + // TODO +} +void EmbeddedGeometryInterface::requireVirtualRefinementVertexLumpedMassMatrix() { + virtualRefinementVertexLumpedMassMatrixQ.require(); +} +void EmbeddedGeometryInterface::unrequireVirtualRefinementVertexLumpedMassMatrix() { + virtualRefinementVertexLumpedMassMatrixQ.unrequire(); +} + + +// DEC Operators +void EmbeddedGeometryInterface::computeVirtualRefinementDECOperators() { + // TODO +} +void EmbeddedGeometryInterface::requireVirtualRefinementDECOperators() { virtualRefinementDECOperatorsQ.require(); } +void EmbeddedGeometryInterface::unrequireVirtualRefinementDECOperators() { virtualRefinementDECOperatorsQ.unrequire(); } + + +// = de Goes et al. "Discrete Differential Operators on Polygonal Meshes" (2020), based on the virtual element method. + +// Laplacian +void EmbeddedGeometryInterface::computeVirtualElementLaplacian() { + // TODO +} +void EmbeddedGeometryInterface::requireVirtualElementLaplacian() { virtualElementLaplacianQ.require(); } +void EmbeddedGeometryInterface::unrequireVirtualElementLaplacian() { virtualElementLaplacianQ.unrequire(); } + + +// Vertex Galerkin mass matrix (unlumped) +void EmbeddedGeometryInterface::computeVirtualElementVertexGalerkinMassMatrix() { + // TODO +} +void EmbeddedGeometryInterface::requireVirtualElementVertexGalerkinMassMatrix() { + virtualElementVertexGalerkinMassMatrixQ.require(); +} +void EmbeddedGeometryInterface::unrequireVirtualElementVertexGalerkinMassMatrix() { + virtualElementVertexGalerkinMassMatrixQ.unrequire(); +} + + +// Vertex mass matrix (lumped) +void EmbeddedGeometryInterface::computeVirtualElementVertexLumpedMassMatrix() { + // TODO +} +void EmbeddedGeometryInterface::requireVirtualElementVertexLumpedMassMatrix() { + virtualElementVertexLumpedMassMatrixQ.require(); +} +void EmbeddedGeometryInterface::unrequireVirtualElementVertexLumpedMassMatrix() { + virtualElementVertexLumpedMassMatrixQ.unrequire(); +} + + +// vertex connection Laplacian +void EmbeddedGeometryInterface::computeVirtualElementVertexConnectionLaplacian() { + // TODO +} +void EmbeddedGeometryInterface::requireVirtualElementVertexConnectionLaplacian() { + virtualElementVertexConnectionLaplacianQ.require(); +} +void EmbeddedGeometryInterface::unrequireVirtualElementVertexConnectionLaplacian() { + virtualElementVertexConnectionLaplacianQ.unrequire(); +} + + +// DEC Operators +void EmbeddedGeometryInterface::computeVirtualElementDECOperators() { + // TODO +} +void EmbeddedGeometryInterface::requireVirtualElementDECOperators() { virtualElementDECOperatorsQ.require(); } +void EmbeddedGeometryInterface::unrequireVirtualElementDECOperators() { virtualElementDECOperatorsQ.unrequire(); } } // namespace surface } // namespace geometrycentral From c7717012e356cecdf9f184653ddb134af313574b Mon Sep 17 00:00:00 2001 From: nzfeng Date: Wed, 31 Jan 2024 18:20:14 -0500 Subject: [PATCH 02/21] Add simple polygon operators, minus DEC operators --- docs/docs/surface/geometry/quantities.md | 6 +- .../surface/embedded_geometry_interface.h | 15 + src/surface/embedded_geometry_interface.cpp | 374 +++++++++++++++++- 3 files changed, 389 insertions(+), 6 deletions(-) diff --git a/docs/docs/surface/geometry/quantities.md b/docs/docs/surface/geometry/quantities.md index 2d1b865a..400204bb 100644 --- a/docs/docs/surface/geometry/quantities.md +++ b/docs/docs/surface/geometry/quantities.md @@ -547,7 +547,7 @@ In graphics and geometry processing, Crouzeix-Raviart elements have been used, f These quantities are defined for any `EmbeddedGeometryInterface`, meaning they will be available for any geometry whose embedding in 3D space is specified (for example, with vertex positions.) These operators were specifically designed for polygon meshes, though they will reduce to the classical discrete exterior calculus & finite element operators on triangular meshes (described above). -Two classes of polygon operators are provided: those based on [Bunge et al.'s _Polygon Laplacian Made Simple_](https://www.cs.jhu.edu/~misha/MyPapers/EUROG20.pdf), whose discretization is based on virtual refinement of the polygon mesh; and those based on [de Goes et al.'s _Discrete Differential Operators on Polygonal Meshes_](https://graphics.pixar.com/library/PolyDDG/paper.pdf), whose discretization is based on an adaptation of the virtual element method. Both methods build local operators whose matrices are assembled per-polygon, so they will run out-of-the-box on non-manifold meshes (but no guarantees are provided!) +Two classes of polygon operators are provided: those based on [Bunge et al.'s _Polygon Laplacian Made Simple_](https://www.cs.jhu.edu/~misha/MyPapers/EUROG20.pdf), whose discretization is based on virtual refinement of the polygon mesh; and those based on [de Goes et al.'s _Discrete Differential Operators on Polygonal Meshes_](https://graphics.pixar.com/library/PolyDDG/paper.pdf), whose discretization is based on an adaptation of the virtual element method. The former uses [Astrid Bunge and Mario Botsch's implementation of their paper](https://github.com/mbotsch/polygon-laplacian), while the latter uses [David Coeurjolly, Jacques-Olivier Lachaud, and Baptiste Genest's DGtal implementation of de Goes et al.'s paper](https://www.dgtal.org/doc/stable/modulePolygonalCalculus.html). Both methods build local operators whose matrices are assembled per-polygon, so they will run out-of-the-box on non-manifold meshes (but no guarantees are provided!) All operators are indexed over mesh elements according to the natural iteration order of the elements, or equivalently the indices from `SurfaceMesh::getVertexIndices()` (etc). @@ -557,7 +557,9 @@ All operators are indexed over mesh elements according to the natural iteration The discrete Laplace operator acting on polygon meshes, using Bunge et al.'s virtual refinement method in _Polygon Laplacian Made Simple_. - A $|V| \times |V|$ real matrix. Always symmetric and positive semi-definite. On triangle meshes, this polygon Laplacian becomes the standard cotan Laplacian. (Note: We build the positive operator to align with the convention set by the cotan Laplacian, in contrast to Bunge et al.'s definition.) + A $|V| \times |V|$ real matrix. Always symmetric and positive semi-definite. On triangle meshes, this polygon Laplacian becomes the standard cotan Laplacian. + + This is the _weak_ Laplace operator, if we use it to evalutae $\mathsf{y} \leftarrow \mathsf{L} \mathsf{x}$, $\mathsf{x}$ should hold _pointwise_ quantities at vertices, and the result $\mathsf{y}$ will contain _integrated_ values of the result in the neighborhood of each vertex. If used to solve a Poisson problem, a mass matrix (such as the lumped or Galerkin mass matrices below) are likely necessary on the right hand side. Only valid on an `EmbeddedGeometryInterface`. diff --git a/include/geometrycentral/surface/embedded_geometry_interface.h b/include/geometrycentral/surface/embedded_geometry_interface.h index ece442be..6cad9c05 100644 --- a/include/geometrycentral/surface/embedded_geometry_interface.h +++ b/include/geometrycentral/surface/embedded_geometry_interface.h @@ -58,6 +58,8 @@ class EmbeddedGeometryInterface : public ExtrinsicGeometryInterface { // = Bunge et al. "Polygon Laplacian Made Simple" (2020), based on virtual refinement (virtual node method). + FaceData> virtualRefinementAreaWeights; + // Laplacian Eigen::SparseMatrix virtualRefinementLaplacian; void requireVirtualRefinementPolygonLaplacian(); @@ -143,6 +145,19 @@ class EmbeddedGeometryInterface : public ExtrinsicGeometryInterface { // = Bunge et al. "Polygon Laplacian Made Simple" (2020), based on virtual refinement (virtual node method). + // helper functions + DependentQuantityD> virtualRefinementAreaWeightsQ; // affine weights for each virtual node + virtual void computeVirtualRefinementAreaWeights(); + virtual Eigen::MatrixXd buildPolygonMassMatrix(const Face& f) const; + virtual Eigen::MatrixXd buildPolygonStiffnessMatrix(const Face& f) const; + virtual SparseMatrix buildDivergenceMatrix() const; + virtual SparseMatrix buildGradientMatrix() const; + virtual SparseMatrix buildGradientMassMatrix() const; + virtual SparseMatrix buildProlongationMatrix() const; + virtual Eigen::MatrixXd getPolygonPositionMatrix(const Face& f) const; + virtual Eigen::VectorXd computeVirtualVertex(const Eigen::MatrixXd& poly) const; + virtual Vector3 gradientHatFunction(const Vector3& a, const Vector3& b, const Vector3& c) const; + // Laplacian DependentQuantityD> virtualRefinementLaplacianQ; virtual void computeVirtualRefinementLaplacian(); diff --git a/src/surface/embedded_geometry_interface.cpp b/src/surface/embedded_geometry_interface.cpp index 5d83b8c5..5a1fc2f3 100644 --- a/src/surface/embedded_geometry_interface.cpp +++ b/src/surface/embedded_geometry_interface.cpp @@ -19,6 +19,7 @@ EmbeddedGeometryInterface::EmbeddedGeometryInterface(SurfaceMesh& mesh_) : vertexTangentBasisQ (&vertexTangentBasis, std::bind(&EmbeddedGeometryInterface::computeVertexTangentBasis, this), quantities), vertexDualMeanCurvatureNormalsQ (&vertexDualMeanCurvatureNormals, std::bind(&EmbeddedGeometryInterface::computeVertexDualMeanCurvatureNormals, this), quantities), + virtualRefinementAreaWeightsQ (&virtualRefinementAreaWeights, std::bind(&EmbeddedGeometryInterface::computeVirtualRefinementAreaWeights, this), quantities), virtualRefinementLaplacianQ (&virtualRefinementLaplacian, std::bind(&EmbeddedGeometryInterface::computeVirtualRefinementLaplacian, this), quantities), virtualRefinementVertexGalerkinMassMatrixQ (&virtualRefinementVertexGalerkinMassMatrix, std::bind(&EmbeddedGeometryInterface::computeVirtualRefinementVertexGalerkinMassMatrix, this), quantities), virtualRefinementVertexLumpedMassMatrixQ (&virtualRefinementVertexLumpedMassMatrix, std::bind(&EmbeddedGeometryInterface::computeVirtualRefinementVertexLumpedMassMatrix, this), quantities), @@ -31,7 +32,7 @@ EmbeddedGeometryInterface::EmbeddedGeometryInterface(SurfaceMesh& mesh_) : virtualRefinementDECOperatorArray{&virtualRefinementHodge0, &virtualRefinementHodge0Inverse, &virtualRefinementHodge1, &virtualRefinementHodge1Inverse, &virtualRefinementHodge2, &virtualRefinementHodge2Inverse, &virtualRefinementD0, &virtualRefinementD1}, - virtualRefinementDECOperatorsQ(&virtualRefinementDECOperatorArray, std::bind(&EmbeddedGeometryInterface::computeVirtualRefinementDECOperators, this), quantities) + virtualRefinementDECOperatorsQ(&virtualRefinementDECOperatorArray, std::bind(&EmbeddedGeometryInterface::computeVirtualRefinementDECOperators, this), quantities), virtualElementDECOperatorArray{&virtualElementHodge0, &virtualElementHodge0Inverse, &virtualElementHodge1, &virtualElementHodge1Inverse, &virtualElementHodge2, &virtualElementHodge2Inverse, @@ -374,7 +375,27 @@ void EmbeddedGeometryInterface::computeEdgeCotanWeights() { // Laplacian void EmbeddedGeometryInterface::computeVirtualRefinementLaplacian() { - // TODO + vertexIndicesQ.ensureHave(); + + size_t V = mesh.nVertices(); + virtualRefinementLaplacian = Eigen::SparseMatrix(V, V); + std::vector> triplets; + std::vector vIndices; // indices of vertices of polygon face + Eigen::MatrixXd Si; // local per-polygon matrix + for (Face f : mesh.faces()) { + vIndices.clear(); + for (Vertex v : f.adjacentVertices()) vIndices.push_back(vertexIndices[v]); + int n = f.degree(); + // Get local stiffness matrix. + Si = buildPolygonStiffnessMatrix(f); + // Add contribution to global mass matrix. + for (int j = 0; j < n; j++) { + for (int i = 0; i < n; i++) { + triplets.emplace_back(vIndices[i], vIndices[j], Si(i, j)); + } + } + } + virtualRefinementLaplacian.setFromTriplets(triplets.begin(), triplets.end()); } void EmbeddedGeometryInterface::requireVirtualRefinementLaplacian() { virtualRefinementLaplacianQ.require(); } void EmbeddedGeometryInterface::unrequireVirtualRefinementLaplacian() { virtualRefinementLaplacianQ.unrequire(); } @@ -382,7 +403,27 @@ void EmbeddedGeometryInterface::unrequireVirtualRefinementLaplacian() { virtualR // Vertex Galerkin mass matrix (unlumped) void EmbeddedGeometryInterface::computeVirtualRefinementVertexGalerkinMassMatrix() { - // TODO + vertexIndicesQ.ensureHave(); + + size_t V = mesh.nVertices(); + virtualRefinementVertexGalerkinMassMatrix = Eigen::SparseMatrix(V, V); + std::vector> triplets; + std::vector vIndices; // indices of vertices of polygon face + Eigen::MatrixXd Mi; // local per-polygon matrix + for (Face f : mesh.faces()) { + vIndices.clear(); + for (Vertex v : f.adjacentVertices()) vIndices.push_back(vertexIndices[v]); + int n = f.degree(); + // Get local mass matrix. + Mi = buildPolygonMassMatrix(f); + // Add contribution to global mass matrix. + for (int j = 0; j < n; j++) { + for (int i = 0; i < n; i++) { + triplets.emplace_back(vIndices[i], vIndices[j], Si(i, j)); + } + } + } + virtualRefinementVertexGalerkinMassMatrix.setFromTriplets(triplets.begin(), triplets.end()); } void EmbeddedGeometryInterface::requireVirtualRefinementVertexGalerkinMassMatrix() { virtualRefinementVertexGalerkinMassMatrixQ.require(); @@ -394,7 +435,27 @@ void EmbeddedGeometryInterface::unrequireVirtualRefinementVertexGalerkinMassMatr // Vertex mass matrix (lumped) void EmbeddedGeometryInterface::computeVirtualRefinementVertexLumpedMassMatrix() { - // TODO + vertexIndicesQ.ensureHave(); + + size_t V = mesh.nVertices(); + virtualRefinementVertexGalerkinMassMatrix = Eigen::SparseMatrix(V, V); + std::vector> triplets; + std::vector vIndices; // indices of vertices of polygon face + Eigen::MatrixXd Mi; // local per-polygon matrix + for (Face f : mesh.faces()) { + vIndices.clear(); + for (Vertex v : f.adjacentVertices()) vIndices.push_back(vertexIndices[v]); + int n = f.degree(); + // Get local mass matrix. + Mi = buildPolygonMassMatrix(f); + // Add contribution to global mass matrix. + for (int j = 0; j < n; j++) { + for (int i = 0; i < n; i++) { + triplets.emplace_back(vIndices[i], vIndices[i], Si(i, j)); + } + } + } + virtualRefinementVertexGalerkinMassMatrix.setFromTriplets(triplets.begin(), triplets.end()); } void EmbeddedGeometryInterface::requireVirtualRefinementVertexLumpedMassMatrix() { virtualRefinementVertexLumpedMassMatrixQ.require(); @@ -412,6 +473,311 @@ void EmbeddedGeometryInterface::requireVirtualRefinementDECOperators() { virtual void EmbeddedGeometryInterface::unrequireVirtualRefinementDECOperators() { virtualRefinementDECOperatorsQ.unrequire(); } +// Helper functions + +Eigen::MatrixXd EmbeddedGeometryInterface::buildPolygonMassMatrix(const Face& f) const { + virtualRefinementAreaWeightsQ.ensureHave(); + + int n = f.degree(); + Eigen::MatrixXd poly = getPolygonPositionMatrix(f); + Eigen::MatrixXd M = Eigen::MatrixXd::Zero(n, n); + const Eigen::VectorXd& weights = virtualRefinementAreaWeights[f]; + Eigen::Vector3d virtualVertex = poly.transpose() * weights; + Eigen::VectorXd ln = Eigen::VectorXd::Zero(n + 1); + double l[3], l2[3]; // lengths, lengths squared + // Build triangle fan mass and cotan matrices + for (int i = 0; i < n; i++) { + const int i1 = (i + 1) % n; + l2[2] = (poly.row(i) - poly.row(i1)).squaredNorm(); + l2[0] = (poly.row(i1) - virtualVertex.transpose()).squaredNorm(); + l2[1] = (poly.row(i) - virtualVertex.transpose()).squaredNorm(); + l[0] = std::sqrt(l2[0]); + l[1] = std::sqrt(l2[1]); + l[2] = std::sqrt(l2[2]); + const double arg = + (l[0] + (l[1] + l[2])) * (l[2] - (l[0] - l[1])) * (l[2] + (l[0] - l[1])) * (l[0] + (l[1] - l[2])); + const double area = 0.25 * std::sqrt(arg); + l[0] = 1.0 / 6.0 * area; + l[1] = 1.0 / 12.0 * area; + M(i1, i1) += 1.0 / 6.0 * area; + M(i, i) += 1.0 / 6.0 * area; + M(i1, i) += 1.0 / 12.0 * area; + M(i, i1) += 1.0 / 12.0 * area; + ln(i1) += l[1]; + ln(i) += l[1]; + ln(n) += l[0]; + } + // Apply prolongation + for (int j = 0; j < n; ++j) + for (int i = 0; i < n; ++i) M(i, j) += weights(i) * ln(j) + weights(j) * ln(i) + weights(i) * weights(j) * ln(n); + + return M; +} + +Eigen::MatrixXd EmbeddedGeometryInterface::buildPolygonStiffnessMatrix(const Face& f) const { + virtualRefinementAreaWeightsQ.ensureHave(); + + int n = f.degree(); + Eigen::MatrixXd poly = getPolygonPositionMatrix(f); + Eigen::MatrixXd S = Eigen::MatrixXd::Zero(n, n); + const Eigen::VectorXd& weights = virtualRefinementAreaWeights[f]; + Eigen::Vector3d virtualVertex = poly.transpose() * weights; + Eigen::VectorXd ln = Eigen::VectorXd::Zero(n + 1); + double l[3], l2[3]; // lengths, lengths squared + // Build triangle fan mass and cotan matrices + for (int i = 0; i < n; i++) { + const int i1 = (i + 1) % n; + l2[2] = (poly.row(i) - poly.row(i1)).squaredNorm(); + l2[0] = (poly.row(i1) - virtualVertex.transpose()).squaredNorm(); + l2[1] = (poly.row(i) - virtualVertex.transpose()).squaredNorm(); + l[0] = std::sqrt(l2[0]); + l[1] = std::sqrt(l2[1]); + l[2] = std::sqrt(l2[2]); + const double arg = + (l[0] + (l[1] + l[2])) * (l[2] - (l[0] - l[1])) * (l[2] + (l[0] - l[1])) * (l[0] + (l[1] - l[2])); + const double area = 0.5 * std::sqrt(arg); + if (area > 1e-7) { + l[0] = 0.25 * (l2[1] + l2[2] - l2[0]) / area; + l[1] = 0.25 * (l2[2] + l2[0] - l2[1]) / area; + l[2] = 0.25 * (l2[0] + l2[1] - l2[2]) / area; + + S(i1, i1) += l[0]; + S(i, i) += l[1]; + S(i1, i) -= l[2]; + S(i, i1) -= l[2]; + S(i, i) += l[2]; + S(i1, i1) += l[2]; + + ln(i1) -= l[0]; + ln(i) -= l[1]; + ln(n) += l[0] + l[1]; + } + } + // Apply prolongation + for (int j = 0; j < n; ++j) + for (int i = 0; i < n; ++i) S(i, j) += weights(i) * ln(j) + weights(j) * ln(i) + weights(i) * weights(j) * ln(n); + + return S; +} + +SparseMatrix EmbeddedGeometryInterface::buildDivergenceMatrix() const { + SparseMatrix G = buildGradientMatrix(); + SparseMatrix M = buildGradientMassMatrix(); + return -G.transpose() * M; // take convention that outflow is positive +} + +SparseMatrix EmbeddedGeometryInterface::buildGradientMatrix() const { + virtualRefinementAreaWeightsQ.ensureHave(); + vertexIndicesQ.ensureHave(); + vertexPositionsQ.ensureHave(); + faceIndicesQ.ensureHave(); + + // Builds a matrix G ∈ (R^3)^{|T^f| x |V|}, which gets built as a 3|T^f| x |V| matrix. + size_t V = mesh.nVertices(); + size_t F = mesh.nFaces(); + SparseMatrix G; + std::vector> triplets; + size_t nTriangles = 0; + size_t k = 0; + for (Face f : mesh.faces()) { + size_t fIdx = faceIndices[f]; + nTriangles += f.degree(); + Eigen::MatrixXd poly = getPolygonPositionMatrix(f); + const Eigen::VectorXd& weights = virtualRefinementAreaWeights[f]; + Eigen::Vector3d p = poly.transpose() * weights; + for (Halfedge he : f.adjacentHalfedges()) { + size_t v0 = vertexIndices[he.tailVertex()]; + size_t v1 = vertexIndices[he.tipVertex()]; + Vector3 p0 = vertexPositions[v0]; + Vector3 p1 = vertexPositions[v1]; + Vector3 grad_p = gradientHatFunction(p, p0, p1); + Vector3 grad_p0 = gradientHatFunction(p0, p1, p); + Vector3 grad_p1 = gradientHatFunction(p1, p, p0); + for (size_t j = 0; j < 3; j++) { + triplets.emplace_back(3 * k + j, V + fIdx, grad_p[j]); + triplets.emplace_back(3 * k + j, v0, grad_p0[j]); + triplets.emplace_back(3 * k + j, v1, grad_p1[j]); + } + k++; + } + } + G.resize(3 * nTriangles, V + F); + G.setFromTriplets(triplets.begin(), triplets.end()); + SparseMatrix P = buildProlongationMatrix(); + G = G * P; + return G; +} + +SparseMatrix EmbeddedGeometryInterface::buildGradientMassMatrix() const { + virtualRefinementAreaWeightsQ.ensureHave(); + vertexPositionsQ.ensureHave(); + + // Block diagonal matrix whose i-th block consists of the 3×3 identity matrix multiplied by the area of the i-th + // triangle. + SparseMatrix M; + std::vector> triplets; + size_t c = 0; + for (Face f : mesh.faces()) { + Eigen::MatrixXd poly = getPolygonPositionMatrix(f); + const Eigen::VectorXd& weights = virtualRefinementAreaWeights[f]; + Eigen::Vector3d areaPoint = poly.transpose() * weights; + Vector3 ap = {areaPoint[0], areaPoint[1], areaPoint[2]}; + size_t i = 0; + for (Halfedge he : f.adjacentHalfedges()) { + Vector3 p0 = vertexPositions[he.tailVertex()]; + Vector3 p1 = vertexPositions[he.tipVertex()]; + double area = 0.5 * cross(p0 - ap, p1 - ap).norm(); + for (size_t j = 0; j < 3; j++) { + size_t idx = c + 3 * i + j; + triplets.emplace_back(idx, idx, area); + } + i++; + } + c += f.degree() * 3; + } + M.resize(c, c); + M.setFromTriplets(triplets.begin(), triplets.end()); + return M; +} + +SparseMatrix EmbeddedGeometryInterface::buildProlongationMatrix() const { + virtualRefinementAreaWeightsQ.ensureHave(); + vertexIndicesQ.ensureHave(); + + size_t V = mesh.nVertices(); + size_t F = mesh.nFaces(); + std::vector> triplets; + SparseMatrix P(V + F, V); + for (size_t i = 0; i < V; i++) triplets.emplace_back(i, i, 1); + int j = 0; + for (Face f : mesh.faces()) { + Eigen::VectorXd weights = virtualRefinementAreaWeights[f]; + int i = 0; + for (Vertex v : f.adjacentVertices()) { + size_t vIdx = vertexIndices[v]; + triplets.emplace_back(V + j, vIdx, weights[i]); + i++; + } + j++; + } + P.setFromTriplets(triplets.begin(), triplets.end()); + return P; +} + +void EmbeddedGeometryInterface::computeVirtualRefinementAreaWeights() { + vertexPositionsQ.ensureHave(); + + virtualRefinementAreaWeights = FaceData(mesh); + + for (Face f : mesh.faces()) { + Eigen::MatrixXd poly = getPolygonPositionMatrix(f); + Eigen::VectorXd weights = computeVirtualVertex(poly); + virtualRefinementAreaWeights[f] = weights; + } +} + +Eigen::MatrixXd EmbeddedGeometryInterface::getPolygonPositionMatrix(const Face& f) const { + vertexPositionsQ.ensureHave(); + + Eigen::MatrixXd poly(f.degree(), 3); + int i = 0; + for (Vertex v : f.adjacentVertices()) { + for (int j = 0; j < 3; j++) { + poly(i, j) = vertexPositions[v][j]; + } + i++; + } + return poly; +} + +Eigen::VectorXd EmbeddedGeometryInterface::computeVirtualVertex(const Eigen::MatrixXd& poly) const { + + // Given a polygon face, computes the affine weights that determine the position of the virtual vertex that minimizes + // the sum of the squared areas of the triangles in the induced triangle fan. While the location of this vertex (the + // minimizer) is unique, its expression as an affine combination of the polygon verties may not be -- regularize by + // picking the weights with minimum L_2 norm, which encourages the weights to be as uniform as possible. + + int n = poly.rows(); + Eigen::VectorXd weights(n); + Eigen::MatrixXd J(n, n); + Eigen::VectorXd b(n); + for (int i = 0; i < n; i++) { + Eigen::Vector3d pk = poly.row(i); + + double Bk1_d2 = 0.0; + double Bk1_d1 = 0.0; + + double Bk2_d0 = 0.0; + double Bk2_d2 = 0.0; + + double Bk3_d0 = 0.0; + double Bk3_d1 = 0.0; + + double CBk = 0.0; + Eigen::Vector3d d = Eigen::MatrixXd::Zero(3, 1); + + for (int j = 0; j < n; j++) { + Eigen::Vector3d pi = poly.row(j); + Eigen::Vector3d pj = poly.row((j + 1) % n); + d = pi - pj; + + double Bik1 = d(1) * pk(2) - d(2) * pk(1); + double Bik2 = d(2) * pk(0) - d(0) * pk(2); + double Bik3 = d(0) * pk(1) - d(1) * pk(0); + + double Ci1 = d(1) * pi(2) - d(2) * pi(1); + double Ci2 = d(2) * pi(0) - d(0) * pi(2); + double Ci3 = d(0) * pi(1) - d(1) * pi(0); + + Bk1_d1 += d(1) * Bik1; + Bk1_d2 += d(2) * Bik1; + + Bk2_d0 += d(0) * Bik2; + Bk2_d2 += d(2) * Bik2; + + Bk3_d0 += d(0) * Bik3; + Bk3_d1 += d(1) * Bik3; + + CBk += Ci1 * Bik1 + Ci2 * Bik2 + Ci3 * Bik3; + } + for (int k = 0; k < n; k++) { + Eigen::Vector3d xj = poly.row(k); + J(i, k) = + 0.5 * (xj(2) * Bk1_d1 - xj(1) * Bk1_d2 + xj(0) * Bk2_d2 - xj(2) * Bk2_d0 + xj(1) * Bk3_d0 - xj(0) * Bk3_d1); + } + b(i) = 0.5 * CBk; + } + + Eigen::MatrixXd M(n + 1, n); + M.block(0, 0, n, n) = 4 * J; + M.block(n, 0, 1, n).setOnes(); + + Eigen::VectorXd b_(n + 1); + b_.block(0, 0, n, 1) = 4 * b; + + b_(n) = 1.; + weights = M.completeOrthogonalDecomposition().solve(b_).topRows(n); + + return weights; +} + +Vector3 EmbeddedGeometryInterface::gradientHatFunction(const Vector3& a, const Vector3& b, const Vector3& c) const { + Vector3 gradient; + Vector3 site = a - b; + Vector3 base = c - b; + double area = 0.5 * (cross(site, base)).norm(); + double baseNorm = base.norm(); + Vector3 grad = site - (dot(site, base) / baseNorm) * base / baseNorm; + if (area < 1e-10) { + gradient = Vector3::Zero; + } else { + grad = baseNorm * grad / grad.norm(); + gradient = grad / (2.0 * area); + } + return gradient; +} + + // = de Goes et al. "Discrete Differential Operators on Polygonal Meshes" (2020), based on the virtual element method. // Laplacian From b496a0c408080ad01fdefddd68ec94bbc9962069 Mon Sep 17 00:00:00 2001 From: nzfeng Date: Thu, 1 Feb 2024 17:02:15 -0500 Subject: [PATCH 03/21] Update variable names to something more manageable; flesh out everything else except for DEC operators --- docs/docs/surface/geometry/quantities.md | 138 ++--- .../surface/embedded_geometry_interface.h | 159 +++--- src/surface/embedded_geometry_interface.cpp | 502 ++++++++++++++---- 3 files changed, 565 insertions(+), 234 deletions(-) diff --git a/docs/docs/surface/geometry/quantities.md b/docs/docs/surface/geometry/quantities.md index 400204bb..2cccab0b 100644 --- a/docs/docs/surface/geometry/quantities.md +++ b/docs/docs/surface/geometry/quantities.md @@ -551,9 +551,9 @@ Two classes of polygon operators are provided: those based on [Bunge et al.'s _P All operators are indexed over mesh elements according to the natural iteration order of the elements, or equivalently the indices from `SurfaceMesh::getVertexIndices()` (etc). -??? func "virtual refinement polygon Laplacian" +??? func "polygon Laplacian (simple)" - ##### virtual refinement polygon Laplacian + ##### polygon Laplacian (simple) The discrete Laplace operator acting on polygon meshes, using Bunge et al.'s virtual refinement method in _Polygon Laplacian Made Simple_. @@ -563,126 +563,132 @@ All operators are indexed over mesh elements according to the natural iteration Only valid on an `EmbeddedGeometryInterface`. - - **member:** `Eigen::SparseMatrix EmbeddedGeometryInterface::virtualRefinementLaplacian` - - **require:** `void EmbeddedGeometryInterface::requireVirtualRefinementLaplacian()` + - **member:** `Eigen::SparseMatrix EmbeddedGeometryInterface::simplePolygonLaplacian` + - **require:** `void EmbeddedGeometryInterface::requireSimplePolygonLaplacian()` -??? func "virtual element polygon Laplacian" - - ##### virtual element polygon Laplacian +??? func "polygon mesh vertex lumped mass matrix (simple)" - The discrete Laplace operator acting on polygon meshes, using de Goes et al.'s virtual element method in _Discrete Differential Operators on Polygonal Meshes_. + ##### polygon mesh vertex lumped mass matrix (simple) - A $|V| \times |V|$ real matrix. Always symmetric and positive semi-definite. Takes in an additional parameter $\lambda$ defining a stabilization term to ensure discrete inner products remain positive-definite on non-triangular faces. On triangle meshes, this polygon Laplacian becomes the standard cotan Laplacian with $\lambda=0$. + A $|V| \times |V|$ real diagonal matrix, using Bunge et al.'s virtual refinement method in _Polygon Laplacian Made Simple_. Obtained by setting each diagonal entry to the row sum in the Galerkin mass matrix. Bunge et al. note that the lumped mass matrix gives better results than the unlumped Galerkin mass matrix for most applications. Only valid on an `EmbeddedGeometryInterface`. - - **member:** `Eigen::SparseMatrix EmbeddedGeometryInterface::virtualElementLaplacian` - - **require:** `void EmbeddedGeometryInterface::requireVirtualElementLaplacian($\lambda=1$)` + - **member:** `Eigen::SparseMatrix EmbeddedGeometryInterface::simplePolygonVertexLumpedMassMatrix` + - **require:** `void EmbeddedGeometryInterface::requireSimplePolygonVertexLumpedMassMatrix()` -??? func "virtual refinement vertex lumped mass matrix" +??? func "polygon mesh vertex Galerkin mass matrix (simple)" - ##### virtual refinement vertex lumped mass matrix + ##### polygon mesh vertex Galerkin mass matrix (simple) - A $|V| \times |V|$ real diagonal matrix, using Bunge et al.'s virtual refinement method in _Polygon Laplacian Made Simple_. Obtained by setting each diagonal entry to the row sum in the Galerkin mass matrix. Bunge et al. note that the lumped mass matrix gives better results than the unlumped Galerkin mass matrix for most applications. + A $|V| \times |V|$ real matrix, using Bunge et al.'s virtual refinement method in _Polygon Laplacian Made Simple_. Only valid on an `EmbeddedGeometryInterface`. - - **member:** `Eigen::SparseMatrix EmbeddedGeometryInterface::virtualRefinementVertexLumpedMassMatrix` - - **require:** `void EmbeddedGeometryInterface::requireVirtualRefinementVertexLumpedMassMatrix()` + - **member:** `Eigen::SparseMatrix EmbeddedGeometryInterface::simplePolygonVertexGalerkinMassMatrix` + - **require:** `void EmbeddedGeometryInterface::requireSimplePolygonVertexGalerkinMassMatrix()` -??? func "virtual element vertex lumped mass matrix" +??? func "polygon DEC operators (simple)" - ##### virtual refinement vertex mass matrix + ##### polygon DEC operators (simple) - A $|V| \times |V|$ real diagonal matrix, using de Goes et al.'s virtual element method in _Discrete Differential Operators on Polygonal Meshes_. Obtained by setting each diagonal entry to the row sum in the Galerkin mass matrix. + These operators are the basic building blocks for _discrete exterior calculus_ on polygon meshes, using Bunge et al.'s virtual refinement method in _Polygon Laplacian Made Simple_. - Only valid on an `EmbeddedGeometryInterface`. + **Note:** These quantities slightly deviate from the usual naming scheme for quantities. Rather than `requireD0()`, `requireD1()`, etc, there is a single `requireSimplePolygonDECOperators()` function which manages all 8 of the members listed below. - - **member:** `Eigen::SparseMatrix EmbeddedGeometryInterface::virtualElementVertexLumpedMassMatrix` - - **require:** `void EmbeddedGeometryInterface::requireVirtualElementVertexLumpedMassMatrix()` + The following members are constructed: -??? func "virtual refinement vertex Galerkin mass matrix" + - `Eigen::SparseMatrix EmbeddedGeometryInterface::simplePolygonHodge0` A $|V| \times |V|$ diagonal matrix + - `Eigen::SparseMatrix EmbeddedGeometryInterface::simplePolygonHodge0Inverse` A $|V| \times |V|$ diagonal matrix + - `Eigen::SparseMatrix EmbeddedGeometryInterface::simplePolygonHodge1` An $|E| \times |E|$ diagonal matrix + - `Eigen::SparseMatrix EmbeddedGeometryInterface::simplePolygonHodge1Inverse` An $|E| \times |E|$ diagonal matrix + - `Eigen::SparseMatrix EmbeddedGeometryInterface::simplePolygonHodge2` An $|F| \times |F|$ diagonal matrix + - `Eigen::SparseMatrix EmbeddedGeometryInterface::simplePolygonHodge2Inverse` An $|F| \times |F|$ diagonal matrix + - `Eigen::SparseMatrix EmbeddedGeometryInterface::simplePolygonD0` An $|E| \times |V|$ matrix with $\{-1, 0, 1\}$ entries + - `Eigen::SparseMatrix EmbeddedGeometryInterface::simplePolygonD1` An $|F| \times |E|$ matrix with $\{-1, 0, 1\}$ entries - ##### virtual refinement vertex Galerkin mass matrix + Only valid on an `EmbeddedGeometryInterface`. - A $|V| \times |V|$ real matrix, using Bunge et al.'s virtual refinement method in _Polygon Laplacian Made Simple_. + - **require:** `void EmbeddedGeometryInterface::requireSimplePolygonDECOperators()` - Only valid on an `EmbeddedGeometryInterface`. +Described below are polygon mesh operators from [de Goes et al.'s _Discrete Differential Operators on Polygonal Meshes_](https://graphics.pixar.com/library/PolyDDG/paper.pdf). - - **member:** `Eigen::SparseMatrix EmbeddedGeometryInterface::virtualRefinementVertexGalerkinMassMatrix` - - **require:** `void EmbeddedGeometryInterface::requireVirtualRefinementVertexGalerkinMassMatrix()` +??? func "polygon Laplacian" + + ##### polygon Laplacian -??? func "virtual element vertex Galerkin mass matrix" + The discrete Laplace operator acting on polygon meshes, using de Goes et al.'s virtual element method in _Discrete Differential Operators on Polygonal Meshes_. - ##### virtual element vertex Galerkin mass matrix + A $|V| \times |V|$ real matrix. Always symmetric and positive semi-definite. Takes in an additional parameter $\lambda$ defining a stabilization term to ensure discrete inner products remain positive-definite on non-triangular faces. On triangle meshes, this polygon Laplacian becomes the standard cotan Laplacian with $\lambda=0$. - A $|V| \times |V|$ real matrix, using de Goes et al.'s virtual element method in _Discrete Differential Operators on Polygonal Meshes_. Obtained by setting each diagonal entry to the row sum in the Galerkin mass matrix. + This is the _weak_ Laplace operator, if we use it to evalutae $\mathsf{y} \leftarrow \mathsf{L} \mathsf{x}$, $\mathsf{x}$ should hold _pointwise_ quantities at vertices, and the result $\mathsf{y}$ will contain _integrated_ values of the result in the neighborhood of each vertex. If used to solve a Poisson problem, a mass matrix (such as the lumped or Galerkin mass matrices below) are likely necessary on the right hand side. Only valid on an `EmbeddedGeometryInterface`. - - **member:** `Eigen::SparseMatrix EmbeddedGeometryInterface::virtualElementVertexGalerkinMassMatrix` - - **require:** `void EmbeddedGeometryInterface::requireVirtualElementVertexGalerkinMassMatrix()` + - **member:** `Eigen::SparseMatrix EmbeddedGeometryInterface::polygonLaplacian` + - **require:** `void EmbeddedGeometryInterface::requirePolygonLaplacian()` -??? func "virtual element vertex connection Laplacian" +??? func "polygon mesh vertex lumped mass matrix" - ##### virtual element vertex connection Laplacian + ##### polygon mesh vertex lumped mass matrix - A discrete connection Laplacian operator, which applies to vector fields defined in vertex tangent spaces; defined in de Goes et al.'s _Discrete Differential Operators on Polygonal Meshes_. + A $|V| \times |V|$ real diagonal matrix, using de Goes et al.'s virtual element method in _Discrete Differential Operators on Polygonal Meshes_. - A $|V| \times |V|$ complex matrix. + Only valid on an `EmbeddedGeometryInterface`. - Given a complex vector $\mathsf{x}$ of tangent vectors at vertices, apply the operator by multiplying $\mathsf{L} * \mathsf{x}$. + - **member:** `Eigen::SparseMatrix EmbeddedGeometryInterface::polygonVertexLumpedMassMatrix` + - **require:** `void EmbeddedGeometryInterface::requirePolygonVertexLumpedMassMatrix()` + +??? func "polygon mesh vertex mass matrix" + + ##### polygon mesh vertex mass matrix + + A $|V| \times |V|$ real matrix, using de Goes et al.'s virtual element method in _Discrete Differential Operators on Polygonal Meshes_. Always symmetric and positive-definite. Only valid on an `EmbeddedGeometryInterface`. - - **member:** `Eigen::SparseMatrix> IntrinsicGeometryInterface::vertexConnectionLaplacian` - - **require:** `void IntrinsicGeometryInterface::requireVertexConnectionLaplacian()` + - **member:** `Eigen::SparseMatrix EmbeddedGeometryInterface::polygonVertexMassMatrix` + - **require:** `void EmbeddedGeometryInterface::requirePolygonVertexMassMatrix()` -??? func "virtual refinement DEC operators" +??? func "polygon mesh vertex connection Laplacian" - ##### virtual refinement DEC operators + ##### polygon mesh vertex connection Laplacian - These operators are the basic building blocks for _discrete exterior calculus_ on polygon meshes, using Bunge et al.'s virtual refinement method in _Polygon Laplacian Made Simple_. + A discrete connection Laplacian operator, which applies to vector fields defined in vertex tangent spaces; defined in de Goes et al.'s _Discrete Differential Operators on Polygonal Meshes_. Always symmetric and positive-definite. - **Note:** These quantities slightly deviate from the usual naming scheme for quantities. Rather than `requireD0()`, `requireD1()`, etc, there is a single `requireVirtualRefinementDECOperators()` function which manages all 8 of the members listed below. + A $|V| \times |V|$ complex matrix. - The following members are constructed: + Given a complex vector $\mathsf{x}$ of tangent vectors at vertices, apply the operator by multiplying $\mathsf{L} * \mathsf{x}$. - - `Eigen::SparseMatrix EmbeddedGeometryInterface::virtualRefinementHodge0` A $|V| \times |V|$ diagonal matrix - - `Eigen::SparseMatrix EmbeddedGeometryInterface::virtualRefinementHodge0Inverse` A $|V| \times |V|$ diagonal matrix - - `Eigen::SparseMatrix EmbeddedGeometryInterface::virtualRefinementHodge1` An $|E| \times |E|$ diagonal matrix - - `Eigen::SparseMatrix EmbeddedGeometryInterface::virtualRefinementHodge1Inverse` An $|E| \times |E|$ diagonal matrix - - `Eigen::SparseMatrix EmbeddedGeometryInterface::virtualRefinementHodge2` An $|F| \times |F|$ diagonal matrix - - `Eigen::SparseMatrix EmbeddedGeometryInterface::virtualRefinementHodge2Inverse` An $|F| \times |F|$ diagonal matrix - - `Eigen::SparseMatrix EmbeddedGeometryInterface::virtualRefinementD0` An $|E| \times |V|$ matrix with $\{-1, 0, 1\}$ entries - - `Eigen::SparseMatrix EmbeddedGeometryInterface::virtualRefinementD1` An $|F| \times |E|$ matrix with $\{-1, 0, 1\}$ entries + Vertex tangent spaces are defined in a similar manner to [the convention taken on triangle meshes](#vertex-tangent-spaces), namely the local $x$-axis is taken to be in the direction of `vertex.halfedge()`. On polygon meshes, the local $y$-axis is defined to be 90 degrees counterclockwise relative to the $x$-axis, rotated about the vertex normal. Only valid on an `EmbeddedGeometryInterface`. - - **require:** `void EmbeddedGeometryInterface::requireVirtualRefinementDECOperators()` + - **member:** `Eigen::SparseMatrix> EmbeddedGeometryInterface::polygonVertexConnectionLaplacian` + - **require:** `void EmbeddedGeometryInterface::requirePolygonVertexConnectionLaplacian()` -??? func "virtual element DEC operators" +??? func "polygon DEC operators" - ##### virtual element DEC operators + ##### polygon DEC operators These operators are the basic building blocks for _discrete exterior calculus_ on polygon meshes, using de Goes et al.'s virtual element method in _Discrete Differential Operators on Polygonal Meshes_. - **Note:** These quantities slightly deviate from the usual naming scheme for quantities. Rather than `requireD0()`, `requireD1()`, etc, there is a single `requireVirtualElementDECOperators()` function which manages all 8 of the members listed below. + **Note:** These quantities slightly deviate from the usual naming scheme for quantities. Rather than `requireD0()`, `requireD1()`, etc, there is a single `requirePolygonDECOperators()` function which manages all 8 of the members listed below. The following members are constructed: - - `Eigen::SparseMatrix EmbeddedGeometryInterface::virtualElementHodge0` A $|V| \times |V|$ diagonal matrix - - `Eigen::SparseMatrix EmbeddedGeometryInterface::virtualElementHodge0Inverse` A $|V| \times |V|$ diagonal matrix - - `Eigen::SparseMatrix EmbeddedGeometryInterface::virtualElementHodge1` An $|E| \times |E|$ diagonal matrix - - `Eigen::SparseMatrix EmbeddedGeometryInterface::virtualElementHodge1Inverse` An $|E| \times |E|$ diagonal matrix - - `Eigen::SparseMatrix EmbeddedGeometryInterface::virtualElementHodge2` An $|F| \times |F|$ diagonal matrix - - `Eigen::SparseMatrix EmbeddedGeometryInterface::virtualElementHodge2Inverse` An $|F| \times |F|$ diagonal matrix - - `Eigen::SparseMatrix EmbeddedGeometryInterface::virtualElementD0` An $|E| \times |V|$ matrix with $\{-1, 0, 1\}$ entries - - `Eigen::SparseMatrix EmbeddedGeometryInterface::virtualElementD1` An $|F| \times |E|$ matrix with $\{-1, 0, 1\}$ entries + - `Eigen::SparseMatrix EmbeddedGeometryInterface::polygonHodge0` A $|V| \times |V|$ diagonal matrix + - `Eigen::SparseMatrix EmbeddedGeometryInterface::polygonHodge0Inverse` A $|V| \times |V|$ diagonal matrix + - `Eigen::SparseMatrix EmbeddedGeometryInterface::polygonHodge1` An $|E| \times |E|$ diagonal matrix + - `Eigen::SparseMatrix EmbeddedGeometryInterface::polygonHodge1Inverse` An $|E| \times |E|$ diagonal matrix + - `Eigen::SparseMatrix EmbeddedGeometryInterface::polygonHodge2` An $|F| \times |F|$ diagonal matrix + - `Eigen::SparseMatrix EmbeddedGeometryInterface::polygonHodge2Inverse` An $|F| \times |F|$ diagonal matrix + - `Eigen::SparseMatrix EmbeddedGeometryInterface::polygonD0` An $|E| \times |V|$ matrix with $\{-1, 0, 1\}$ entries + - `Eigen::SparseMatrix EmbeddedGeometryInterface::polygonD1` An $|F| \times |E|$ matrix with $\{-1, 0, 1\}$ entries Only valid on an `EmbeddedGeometryInterface`. - - **require:** `void EmbeddedGeometryInterface::requireVirtualElementDECOperators()` + - **require:** `void EmbeddedGeometryInterface::requirePolygonDECOperators()` ## Extrinsic angles diff --git a/include/geometrycentral/surface/embedded_geometry_interface.h b/include/geometrycentral/surface/embedded_geometry_interface.h index 6cad9c05..d8708b77 100644 --- a/include/geometrycentral/surface/embedded_geometry_interface.h +++ b/include/geometrycentral/surface/embedded_geometry_interface.h @@ -61,54 +61,52 @@ class EmbeddedGeometryInterface : public ExtrinsicGeometryInterface { FaceData> virtualRefinementAreaWeights; // Laplacian - Eigen::SparseMatrix virtualRefinementLaplacian; - void requireVirtualRefinementPolygonLaplacian(); - void unrequireVirtualRefinementPolygonLaplacian(); + Eigen::SparseMatrix simplePolygonLaplacian; + void requireSimplePolygonLaplacian(); + void unrequireSimplePolygonLaplacian(); // Vertex Galerkin mass matrix (unlumped) - Eigen::SparseMatrix virtualRefinementVertexGalerkinMassMatrix; - void requireVirtualRefinementVertexGalerkinMassMatrix(); - void unrequireVirtualRefinementVertexGalerkinMassMatrix(); + Eigen::SparseMatrix simplePolygonVertexGalerkinMassMatrix; + void requireSimplePolygonVertexGalerkinMassMatrix(); + void unrequireSimplePolygonVertexGalerkinMassMatrix(); // Vertex mass matrix (lumped) - Eigen::SparseMatrix virtualRefinementVertexLumpedMassMatrix; - void requireVirtualRefinementVertexLumpedMassMatrix(); - void unrequireVirtualRefinementVertexLumpedMassMatrix(); + Eigen::SparseMatrix simplePolygonVertexLumpedMassMatrix; + void requireSimplePolygonVertexLumpedMassMatrix(); + void unrequireSimplePolygonVertexLumpedMassMatrix(); // DEC Operators - Eigen::SparseMatrix virtualRefinementHodge0, virtualRefinementHodge0Inverse, virtualRefinementHodge1, - virtualRefinementHodge1Inverse, virtualRefinementHodge2, virtualRefinementHodge2Inverse, virtualRefinementD0, - virtualRefinementD1; - void requireVirtualRefinementDECOperators(); - void unrequireVirtualRefinementDECOperators(); + Eigen::SparseMatrix simplePolygonHodge0, simplePolygonHodge0Inverse, simplePolygonHodge1, + simplePolygonHodge1Inverse, simplePolygonHodge2, simplePolygonHodge2Inverse, simplePolygonD0, simplePolygonD1; + void requireSimplePolygonDECOperators(); + void unrequireSimplePolygonDECOperators(); // = de Goes et al. "Discrete Differential Operators on Polygonal Meshes" (2020), based on the virtual element method. // Laplacian - Eigen::SparseMatrix virtualElementLaplacian; - void requireVirtualElementLaplacian(); - void unrequireVirtualElementLaplacian(); + Eigen::SparseMatrix polygonLaplacian; + void requirePolygonLaplacian(); + void unrequirePolygonLaplacian(); // Vertex mass matrix (unlumped) - Eigen::SparseMatrix virtualElementVertexGalerkinMassMatrix; - void requireVirtualElementVertexGalerkinMassMatrix(); - void requireVirtualElementVertexGalerkinMassMatrix(); + Eigen::SparseMatrix polygonVertexGalerkinMassMatrix; + void requirePolygonVertexGalerkinMassMatrix(); + void requirePolygonVertexGalerkinMassMatrix(); // Vertex mass matrix (lumped) - Eigen::SparseMatrix virtualElementVertexLumpedMassMatrix; - void requireVirtualElementVertexLumpedMassMatrix(); - void unrequireVirtualElementVertexLumpedMassMatrix(); + Eigen::SparseMatrix polygonVertexLumpedMassMatrix; + void requirePolygonVertexLumpedMassMatrix(); + void unrequirePolygonVertexLumpedMassMatrix(); // Vertex connection Laplacian - Eigen::SparseMatrix> virtualElementVertexConnectionLaplacian; - void requireVirtualElementVertexConnectionLaplacian(); - void unrequireVirtualElementVertexConnectionLaplacian(); + Eigen::SparseMatrix> polygonVertexConnectionLaplacian; + void requirePolygonVertexConnectionLaplacian(); + void unrequirePolygonVertexConnectionLaplacian(); - Eigen::SparseMatrix virtualElementHodge0, virtualElementHodge0Inverse, virtualElementHodge1, - virtualElementHodge1Inverse, virtualElementHodge2, virtualElementHodge2Inverse, virtualElementD0, - virtualElementD1; - void requireVirtualElementDECOperators(); - void unrequireVirtualElementDECOperators(); + Eigen::SparseMatrix polygonHodge0, polygonHodge0Inverse, polygonHodge1, polygonHodge1Inverse, polygonHodge2, + polygonHodge2Inverse, polygonD0, polygonD1; + void requirePolygonDECOperators(); + void unrequirePolygonDECOperators(); protected: // == Implmentations of quantities from base classes @@ -145,58 +143,91 @@ class EmbeddedGeometryInterface : public ExtrinsicGeometryInterface { // = Bunge et al. "Polygon Laplacian Made Simple" (2020), based on virtual refinement (virtual node method). - // helper functions - DependentQuantityD> virtualRefinementAreaWeightsQ; // affine weights for each virtual node - virtual void computeVirtualRefinementAreaWeights(); - virtual Eigen::MatrixXd buildPolygonMassMatrix(const Face& f) const; - virtual Eigen::MatrixXd buildPolygonStiffnessMatrix(const Face& f) const; - virtual SparseMatrix buildDivergenceMatrix() const; - virtual SparseMatrix buildGradientMatrix() const; - virtual SparseMatrix buildGradientMassMatrix() const; - virtual SparseMatrix buildProlongationMatrix() const; - virtual Eigen::MatrixXd getPolygonPositionMatrix(const Face& f) const; - virtual Eigen::VectorXd computeVirtualVertex(const Eigen::MatrixXd& poly) const; - virtual Vector3 gradientHatFunction(const Vector3& a, const Vector3& b, const Vector3& c) const; - // Laplacian - DependentQuantityD> virtualRefinementLaplacianQ; - virtual void computeVirtualRefinementLaplacian(); + DependentQuantityD> simplePolygonLaplacianQ; + virtual void computeSimplePolygonLaplacian(); // Vertex mass matrix (unlumped) - DependentQuantityD> virtualRefinementVertexGalerkinMassMatrixQ; - virtual void computeVirtualRefinementVertexGalerkinMassMatrix(); + DependentQuantityD> simplePolygonVertexGalerkinMassMatrixQ; + virtual void computeSimplePolygonVertexGalerkinMassMatrix(); // Vertex mass matrix (lumped) - DependentQuantityD> virtualRefinementVertexLumpedMassMatrixQ; - virtual void computeVirtualRefinementVertexLumpedMassMatrix(); + DependentQuantityD> simplePolygonVertexLumpedMassMatrixQ; + virtual void computeSimplePolygonVertexLumpedMassMatrix(); // DEC Operators - std::array*, 8> virtualRefinementDECOperatorArray; - DependentQuantityD*, 8>> virtualRefinementDECOperatorsQ; - virtual void computeVirtualRefinementDECOperators(); + std::array*, 8> simplePolygonDECOperatorArray; + DependentQuantityD*, 8>> simplePolygonDECOperatorsQ; + virtual void computeSimplePolygonDECOperators(); + + // helper functions + DependentQuantityD> virtualRefinementAreaWeightsQ; // affine weights for each virtual node + virtual void computeVirtualRefinementAreaWeights(); + virtual Eigen::MatrixXd simplePolygonMassMatrix(const Face& f) const; + virtual Eigen::MatrixXd simplePolygonStiffnessMatrix(const Face& f) const; + virtual SparseMatrix simplePolygonDivergenceMatrix() const; // TODO: axe? + virtual SparseMatrix simplePolygonGradientMatrix() const; // TODO: axe? + virtual SparseMatrix simplePolygonGradientMassMatrix() const; // TODO: axe? + virtual SparseMatrix simplePolygonProlongationMatrix() const; + virtual Eigen::MatrixXd polygonPositionMatrix(const Face& f) const; + virtual Eigen::VectorXd simplePolygonVirtualVertex(const Eigen::MatrixXd& poly) const; + virtual Vector3 gradientHatFunction(const Vector3& a, const Vector3& b, const Vector3& c) const; // TODO: axe? // = de Goes et al. "Discrete Differential Operators on Polygonal Meshes" (2020), based on the virtual element method. // Laplacian - DependentQuantityD> virtualElementLaplacianQ; - virtual void computeVirtualElementLaplacian(); + DependentQuantityD> polygonLaplacianQ; + virtual void computePolygonLaplacian(); // Vertex mass matrix (unlumped) - DependentQuantityD> virtualElementVertexGalerkinMassMatrixQ; - virtual void computeVirtualElementVertexGalerkinMassMatrix(); + DependentQuantityD> polygonVertexMassMatrixQ; + virtual void computePolygonVertexMassMatrix(); // Vertex mass matrix (lumped) - DependentQuantityD> virtualElementVertexLumpedMassMatrixQ; - virtual void computeVirtualElementVertexLumpedMassMatrix(); + DependentQuantityD> polygonVertexLumpedMassMatrixQ; + virtual void computePolygonVertexLumpedMassMatrix(); // Vertex connection Laplacian - DependentQuantityD>> virtualElementVertexConnectionLaplacianQ; - virtual void computeVirtualElementVertexConnectionLaplacian(); + DependentQuantityD>> polygonVertexConnectionLaplacianQ; + virtual void computePolygonVertexConnectionLaplacian(); // DEC Operators - std::array*, 8> virtualElementDECOperatorArray; - DependentQuantityD*, 8>> virtualElementDECOperatorsQ; - virtual void computeVirtualElementDECOperators(); + std::array*, 8> polygonDECOperatorArray; + DependentQuantityD*, 8>> polygonDECOperatorsQ; + virtual void computePolygonDECOperators(); + + // helper functions + virtual Eigen::MatrixXd polygonPerFaceLaplacian(const Face& f) const; + virtual Eigen::MatrixXd polygonPerFaceDivergence(const Face& f) const; // TODO: axe? + virtual Eigen::MatrixXd polygonPerFaceMassMatrix(const Face& f) const; + virtual Eigen::MatrixXd polygonProjectionMatrix(const Face& f) const; + virtual Eigen::MatrixXd polygonCoGradientMatrix(const Face& f) const; + virtual Eigen::MatrixXd polygonGradientMatrix(const Face& f) const; + virtual Eigen::MatrixXd polygonAveragingMatrix(const Face& f) const; + virtual Eigen::MatrixXd polygonDerivativeMatrix(const Face& f) const; + virtual Eigen::MatrixXd polygonEdgeVectorMatrix(const Face& f) const; + virtual Eigen::MatrixXd polygonEdgeMidpointMatrix(const Face& f) const; + virtual Eigen::MatrixXd polygonFlat(const Face& f) const; + virtual Eigen::MatrixXd polygonSharp(const Face& f) const; + virtual Eigen::Vector3d polygonVectorArea(const Face& f) const; + virtual double polygonArea(const Face& f) const; + virtual Eigen::Vector3d polygonNormal(const Face& f) const; + virtual Eigen::Vector3d polygonCentroid(const Face& f) const; + // connections + virtual Eigen::MatrixXd polygonPerFaceConnectionLaplacian(const Face& f) const; + virtual Eigen::MatrixXd polygonBlockConnection(const Face& f) const; + virtual Eigen::MatrixXd polygonCovariantGradient(const Face& f) const; + virtual Eigen::MatrixXd polygonCovariantProjection(const Face& f) const; + // tangent space helpers + virtual Eigen::MatrixXd Tv(const Vertex& v) const; + virtual Eigen::MatrixXd Tf(const Face& f) const; + virtual Eigen::Matrix2d Rvf(const Vertex& v, const Face& f) const; + virtual Eigen::Matrix3d Qvf(const Vertex& v, const Face& f) const; + // helpers to the helper functions: generic linear algebra stuff, though probably wouldn't find much use elsewhere + // so keeping them here -- also they use Eigen::Vectors here for matrix-multiply compatibility. + virtual Eigen::Matrix3d bracket(const Eigen::Vector3d& n) const; + virtual Eigen::Vector3d project(const Eigen::Vector3d& u, const Eigen::Vector3d& n) const; + virtual Eigen::MatrixXd kroneckerWithI2(const Eigen::MatrixXd& M) const; }; diff --git a/src/surface/embedded_geometry_interface.cpp b/src/surface/embedded_geometry_interface.cpp index 5a1fc2f3..75eb7bba 100644 --- a/src/surface/embedded_geometry_interface.cpp +++ b/src/surface/embedded_geometry_interface.cpp @@ -19,25 +19,25 @@ EmbeddedGeometryInterface::EmbeddedGeometryInterface(SurfaceMesh& mesh_) : vertexTangentBasisQ (&vertexTangentBasis, std::bind(&EmbeddedGeometryInterface::computeVertexTangentBasis, this), quantities), vertexDualMeanCurvatureNormalsQ (&vertexDualMeanCurvatureNormals, std::bind(&EmbeddedGeometryInterface::computeVertexDualMeanCurvatureNormals, this), quantities), - virtualRefinementAreaWeightsQ (&virtualRefinementAreaWeights, std::bind(&EmbeddedGeometryInterface::computeVirtualRefinementAreaWeights, this), quantities), - virtualRefinementLaplacianQ (&virtualRefinementLaplacian, std::bind(&EmbeddedGeometryInterface::computeVirtualRefinementLaplacian, this), quantities), - virtualRefinementVertexGalerkinMassMatrixQ (&virtualRefinementVertexGalerkinMassMatrix, std::bind(&EmbeddedGeometryInterface::computeVirtualRefinementVertexGalerkinMassMatrix, this), quantities), - virtualRefinementVertexLumpedMassMatrixQ (&virtualRefinementVertexLumpedMassMatrix, std::bind(&EmbeddedGeometryInterface::computeVirtualRefinementVertexLumpedMassMatrix, this), quantities), + virtualRefinementAreaWeightsQ (&virtualRefinementAreaWeights, std::bind(&EmbeddedGeometryInterface::computeVirtualRefinementAreaWeights, this), quantities), + simplePolygonLaplacianQ (&simplePolygonLaplacian, std::bind(&EmbeddedGeometryInterface::computeSimplePolygonLaplacian, this), quantities), + simplePolygonVertexGalerkinMassMatrixQ (&simplePolygonVertexGalerkinMassMatrix, std::bind(&EmbeddedGeometryInterface::computeSimplePolygonVertexGalerkinMassMatrix, this), quantities), + simplePolygonVertexLumpedMassMatrixQ (&simplePolygonVertexLumpedMassMatrix, std::bind(&EmbeddedGeometryInterface::computeSimplePolygonVertexLumpedMassMatrix, this), quantities), - virtualElementLaplacianQ (&virtualElementLaplacian, std::bind(&EmbeddedGeometryInterface::computeVirtualElementLaplacian, this), quantities), - virtualElementVertexGalerkinMassMatrixQ (&virtualElementVertexGalerkinMassMatrix, std::bind(&EmbeddedGeometryInterface::computeVirtualElementVertexGalerkinMassMatrix, this), quantities), - virtualElementVertexLumpedMassMatrixQ (&virtualElementVertexLumpedMassMatrix, std::bind(&EmbeddedGeometryInterface::computeVirtualElementVertexLumpedMassMatrix, this), quantities), - virtualElementVertexConnectionLaplacianQ (&virtualElementVertexConnectionLaplacian, std::bind(&EmbeddedGeometryInterface::computeVirtualElementVertexConnectionLaplacian, this), quantities), - - virtualRefinementDECOperatorArray{&virtualRefinementHodge0, &virtualRefinementHodge0Inverse, &virtualRefinementHodge1, - &virtualRefinementHodge1Inverse, &virtualRefinementHodge2, - &virtualRefinementHodge2Inverse, &virtualRefinementD0, &virtualRefinementD1}, - virtualRefinementDECOperatorsQ(&virtualRefinementDECOperatorArray, std::bind(&EmbeddedGeometryInterface::computeVirtualRefinementDECOperators, this), quantities), + polygonLaplacianQ (&polygonLaplacian, std::bind(&EmbeddedGeometryInterface::computePolygonLaplacian, this), quantities), + polygonVertexMassMatrixQ (&polygonVertexMassMatrix, std::bind(&EmbeddedGeometryInterface::computePolygonVertexMassMatrix, this), quantities), + polygonVertexLumpedMassMatrixQ (&polygonVertexLumpedMassMatrix, std::bind(&EmbeddedGeometryInterface::computePolygonVertexLumpedMassMatrix, this), quantities), + polygonVertexConnectionLaplacianQ (&polygonVertexConnectionLaplacian, std::bind(&EmbeddedGeometryInterface::computePolygonVertexConnectionLaplacian, this), quantities), + + simplePolygonDECOperatorArray{&simplePolygonHodge0, &simplePolygonHodge0Inverse, &simplePolygonHodge1, + &simplePolygonHodge1Inverse, &simplePolygonHodge2, + &simplePolygonHodge2Inverse, &simplePolygonD0, &simplePolygonD1}, + simplePolygonDECOperatorsQ(&simplePolygonDECOperatorArray, std::bind(&EmbeddedGeometryInterface::computeSimplePolygonDECOperators, this), quantities), - virtualElementDECOperatorArray{&virtualElementHodge0, &virtualElementHodge0Inverse, &virtualElementHodge1, - &virtualElementHodge1Inverse, &virtualElementHodge2, &virtualElementHodge2Inverse, - &virtualElementD0, &virtualElementD1}, - virtualElementDECOperatorsQ(&virtualElementDECOperatorArray, std::bind(&EmbeddedGeometryInterface::computeVirtualElementDECOperators, this), quantities) + polygonDECOperatorArray{&polygonHodge0, &polygonHodge0Inverse, &polygonHodge1, + &polygonHodge1Inverse, &polygonHodge2, &polygonHodge2Inverse, + &polygonD0, &polygonD1}, + polygonDECOperatorsQ(&polygonDECOperatorArray, std::bind(&EmbeddedGeometryInterface::computePolygonDECOperators, this), quantities) {} // clang-format on @@ -374,120 +374,120 @@ void EmbeddedGeometryInterface::computeEdgeCotanWeights() { // = Bunge et al. "Polygon Laplacian Made Simple" (2020), based on virtual refinement (virtual node method). // Laplacian -void EmbeddedGeometryInterface::computeVirtualRefinementLaplacian() { +void EmbeddedGeometryInterface::computeSimplePolygonLaplacian() { vertexIndicesQ.ensureHave(); size_t V = mesh.nVertices(); - virtualRefinementLaplacian = Eigen::SparseMatrix(V, V); + simplePolygonLaplacian = Eigen::SparseMatrix(V, V); std::vector> triplets; std::vector vIndices; // indices of vertices of polygon face Eigen::MatrixXd Si; // local per-polygon matrix for (Face f : mesh.faces()) { vIndices.clear(); for (Vertex v : f.adjacentVertices()) vIndices.push_back(vertexIndices[v]); - int n = f.degree(); + size_t n = f.degree(); // Get local stiffness matrix. Si = buildPolygonStiffnessMatrix(f); // Add contribution to global mass matrix. - for (int j = 0; j < n; j++) { - for (int i = 0; i < n; i++) { + for (size_t j = 0; j < n; j++) { + for (size_t i = 0; i < n; i++) { triplets.emplace_back(vIndices[i], vIndices[j], Si(i, j)); } } } - virtualRefinementLaplacian.setFromTriplets(triplets.begin(), triplets.end()); + simplePolygonLaplacian.setFromTriplets(triplets.begin(), triplets.end()); } -void EmbeddedGeometryInterface::requireVirtualRefinementLaplacian() { virtualRefinementLaplacianQ.require(); } -void EmbeddedGeometryInterface::unrequireVirtualRefinementLaplacian() { virtualRefinementLaplacianQ.unrequire(); } +void EmbeddedGeometryInterface::requireSimplePolygonLaplacian() { simplePolygonLaplacianQ.require(); } +void EmbeddedGeometryInterface::unrequireSimplePolygonLaplacian() { simplePolygonLaplacianQ.unrequire(); } // Vertex Galerkin mass matrix (unlumped) -void EmbeddedGeometryInterface::computeVirtualRefinementVertexGalerkinMassMatrix() { +void EmbeddedGeometryInterface::computeSimplePolygonVertexGalerkinMassMatrix() { vertexIndicesQ.ensureHave(); size_t V = mesh.nVertices(); - virtualRefinementVertexGalerkinMassMatrix = Eigen::SparseMatrix(V, V); + simplePolygonVertexGalerkinMassMatrix = Eigen::SparseMatrix(V, V); std::vector> triplets; std::vector vIndices; // indices of vertices of polygon face Eigen::MatrixXd Mi; // local per-polygon matrix for (Face f : mesh.faces()) { vIndices.clear(); for (Vertex v : f.adjacentVertices()) vIndices.push_back(vertexIndices[v]); - int n = f.degree(); + size_t n = f.degree(); // Get local mass matrix. Mi = buildPolygonMassMatrix(f); // Add contribution to global mass matrix. - for (int j = 0; j < n; j++) { - for (int i = 0; i < n; i++) { + for (size_t j = 0; j < n; j++) { + for (size_t i = 0; i < n; i++) { triplets.emplace_back(vIndices[i], vIndices[j], Si(i, j)); } } } - virtualRefinementVertexGalerkinMassMatrix.setFromTriplets(triplets.begin(), triplets.end()); + simplePolygonVertexGalerkinMassMatrix.setFromTriplets(triplets.begin(), triplets.end()); } -void EmbeddedGeometryInterface::requireVirtualRefinementVertexGalerkinMassMatrix() { - virtualRefinementVertexGalerkinMassMatrixQ.require(); +void EmbeddedGeometryInterface::requireSimplePolygonVertexGalerkinMassMatrix() { + simplePolygonVertexGalerkinMassMatrixQ.require(); } -void EmbeddedGeometryInterface::unrequireVirtualRefinementVertexGalerkinMassMatrix() { - virtualRefinementVertexGalerkinMassMatrixQ.unrequire(); +void EmbeddedGeometryInterface::unrequireSimplePolygonVertexGalerkinMassMatrix() { + simplePolygonVertexGalerkinMassMatrixQ.unrequire(); } // Vertex mass matrix (lumped) -void EmbeddedGeometryInterface::computeVirtualRefinementVertexLumpedMassMatrix() { +void EmbeddedGeometryInterface::computeSimplePolygonVertexLumpedMassMatrix() { vertexIndicesQ.ensureHave(); size_t V = mesh.nVertices(); - virtualRefinementVertexGalerkinMassMatrix = Eigen::SparseMatrix(V, V); + simplePolygonVertexGalerkinMassMatrix = Eigen::SparseMatrix(V, V); std::vector> triplets; std::vector vIndices; // indices of vertices of polygon face Eigen::MatrixXd Mi; // local per-polygon matrix for (Face f : mesh.faces()) { vIndices.clear(); for (Vertex v : f.adjacentVertices()) vIndices.push_back(vertexIndices[v]); - int n = f.degree(); + size_t n = f.degree(); // Get local mass matrix. Mi = buildPolygonMassMatrix(f); // Add contribution to global mass matrix. - for (int j = 0; j < n; j++) { - for (int i = 0; i < n; i++) { + for (size_t j = 0; j < n; j++) { + for (size_t i = 0; i < n; i++) { triplets.emplace_back(vIndices[i], vIndices[i], Si(i, j)); } } } - virtualRefinementVertexGalerkinMassMatrix.setFromTriplets(triplets.begin(), triplets.end()); + simplePolygonVertexGalerkinMassMatrix.setFromTriplets(triplets.begin(), triplets.end()); } -void EmbeddedGeometryInterface::requireVirtualRefinementVertexLumpedMassMatrix() { - virtualRefinementVertexLumpedMassMatrixQ.require(); +void EmbeddedGeometryInterface::requireSimplePolygonVertexLumpedMassMatrix() { + simplePolygonVertexLumpedMassMatrixQ.require(); } -void EmbeddedGeometryInterface::unrequireVirtualRefinementVertexLumpedMassMatrix() { - virtualRefinementVertexLumpedMassMatrixQ.unrequire(); +void EmbeddedGeometryInterface::unrequireSimplePolygonVertexLumpedMassMatrix() { + simplePolygonVertexLumpedMassMatrixQ.unrequire(); } // DEC Operators -void EmbeddedGeometryInterface::computeVirtualRefinementDECOperators() { +void EmbeddedGeometryInterface::computeSimplePolygonDECOperators() { // TODO } -void EmbeddedGeometryInterface::requireVirtualRefinementDECOperators() { virtualRefinementDECOperatorsQ.require(); } -void EmbeddedGeometryInterface::unrequireVirtualRefinementDECOperators() { virtualRefinementDECOperatorsQ.unrequire(); } +void EmbeddedGeometryInterface::requireSimplePolygonDECOperators() { simplePolygonDECOperatorsQ.require(); } +void EmbeddedGeometryInterface::unrequireSimplePolygonDECOperators() { simplePolygonDECOperatorsQ.unrequire(); } // Helper functions -Eigen::MatrixXd EmbeddedGeometryInterface::buildPolygonMassMatrix(const Face& f) const { +Eigen::MatrixXd EmbeddedGeometryInterface::simplePolygonMassMatrix(const Face& f) const { virtualRefinementAreaWeightsQ.ensureHave(); - int n = f.degree(); - Eigen::MatrixXd poly = getPolygonPositionMatrix(f); + size_t n = f.degree(); + Eigen::MatrixXd poly = polygonPositionMatrix(f); Eigen::MatrixXd M = Eigen::MatrixXd::Zero(n, n); const Eigen::VectorXd& weights = virtualRefinementAreaWeights[f]; Eigen::Vector3d virtualVertex = poly.transpose() * weights; Eigen::VectorXd ln = Eigen::VectorXd::Zero(n + 1); double l[3], l2[3]; // lengths, lengths squared // Build triangle fan mass and cotan matrices - for (int i = 0; i < n; i++) { - const int i1 = (i + 1) % n; + for (size_t i = 0; i < n; i++) { + const size_t i1 = (i + 1) % n; l2[2] = (poly.row(i) - poly.row(i1)).squaredNorm(); l2[0] = (poly.row(i1) - virtualVertex.transpose()).squaredNorm(); l2[1] = (poly.row(i) - virtualVertex.transpose()).squaredNorm(); @@ -508,25 +508,25 @@ Eigen::MatrixXd EmbeddedGeometryInterface::buildPolygonMassMatrix(const Face& f) ln(n) += l[0]; } // Apply prolongation - for (int j = 0; j < n; ++j) - for (int i = 0; i < n; ++i) M(i, j) += weights(i) * ln(j) + weights(j) * ln(i) + weights(i) * weights(j) * ln(n); + for (size_t j = 0; j < n; ++j) + for (size_t i = 0; i < n; ++i) M(i, j) += weights(i) * ln(j) + weights(j) * ln(i) + weights(i) * weights(j) * ln(n); return M; } -Eigen::MatrixXd EmbeddedGeometryInterface::buildPolygonStiffnessMatrix(const Face& f) const { +Eigen::MatrixXd EmbeddedGeometryInterface::simplePolygonStiffnessMatrix(const Face& f) const { virtualRefinementAreaWeightsQ.ensureHave(); - int n = f.degree(); - Eigen::MatrixXd poly = getPolygonPositionMatrix(f); + size_t n = f.degree(); + Eigen::MatrixXd poly = polygonPositionMatrix(f); Eigen::MatrixXd S = Eigen::MatrixXd::Zero(n, n); const Eigen::VectorXd& weights = virtualRefinementAreaWeights[f]; Eigen::Vector3d virtualVertex = poly.transpose() * weights; Eigen::VectorXd ln = Eigen::VectorXd::Zero(n + 1); double l[3], l2[3]; // lengths, lengths squared // Build triangle fan mass and cotan matrices - for (int i = 0; i < n; i++) { - const int i1 = (i + 1) % n; + for (size_t i = 0; i < n; i++) { + const size_t i1 = (i + 1) % n; l2[2] = (poly.row(i) - poly.row(i1)).squaredNorm(); l2[0] = (poly.row(i1) - virtualVertex.transpose()).squaredNorm(); l2[1] = (poly.row(i) - virtualVertex.transpose()).squaredNorm(); @@ -554,19 +554,19 @@ Eigen::MatrixXd EmbeddedGeometryInterface::buildPolygonStiffnessMatrix(const Fac } } // Apply prolongation - for (int j = 0; j < n; ++j) - for (int i = 0; i < n; ++i) S(i, j) += weights(i) * ln(j) + weights(j) * ln(i) + weights(i) * weights(j) * ln(n); + for (size_t j = 0; j < n; ++j) + for (size_t i = 0; i < n; ++i) S(i, j) += weights(i) * ln(j) + weights(j) * ln(i) + weights(i) * weights(j) * ln(n); return S; } -SparseMatrix EmbeddedGeometryInterface::buildDivergenceMatrix() const { - SparseMatrix G = buildGradientMatrix(); - SparseMatrix M = buildGradientMassMatrix(); +SparseMatrix EmbeddedGeometryInterface::simplePolygonDivergenceMatrix() const { + SparseMatrix G = simplePolygonGradientMatrix(); + SparseMatrix M = simplePolygonGradientMassMatrix(); return -G.transpose() * M; // take convention that outflow is positive } -SparseMatrix EmbeddedGeometryInterface::buildGradientMatrix() const { +SparseMatrix EmbeddedGeometryInterface::simplePolygonGradientMatrix() const { virtualRefinementAreaWeightsQ.ensureHave(); vertexIndicesQ.ensureHave(); vertexPositionsQ.ensureHave(); @@ -582,7 +582,7 @@ SparseMatrix EmbeddedGeometryInterface::buildGradientMatrix() const { for (Face f : mesh.faces()) { size_t fIdx = faceIndices[f]; nTriangles += f.degree(); - Eigen::MatrixXd poly = getPolygonPositionMatrix(f); + Eigen::MatrixXd poly = polygonPositionMatrix(f); const Eigen::VectorXd& weights = virtualRefinementAreaWeights[f]; Eigen::Vector3d p = poly.transpose() * weights; for (Halfedge he : f.adjacentHalfedges()) { @@ -603,12 +603,12 @@ SparseMatrix EmbeddedGeometryInterface::buildGradientMatrix() const { } G.resize(3 * nTriangles, V + F); G.setFromTriplets(triplets.begin(), triplets.end()); - SparseMatrix P = buildProlongationMatrix(); + SparseMatrix P = simplePolygonProlongationMatrix(); G = G * P; return G; } -SparseMatrix EmbeddedGeometryInterface::buildGradientMassMatrix() const { +SparseMatrix EmbeddedGeometryInterface::simplePolygonGradientMassMatrix() const { virtualRefinementAreaWeightsQ.ensureHave(); vertexPositionsQ.ensureHave(); @@ -618,7 +618,7 @@ SparseMatrix EmbeddedGeometryInterface::buildGradientMassMatrix() const std::vector> triplets; size_t c = 0; for (Face f : mesh.faces()) { - Eigen::MatrixXd poly = getPolygonPositionMatrix(f); + Eigen::MatrixXd poly = polygonPositionMatrix(f); const Eigen::VectorXd& weights = virtualRefinementAreaWeights[f]; Eigen::Vector3d areaPoint = poly.transpose() * weights; Vector3 ap = {areaPoint[0], areaPoint[1], areaPoint[2]}; @@ -640,7 +640,7 @@ SparseMatrix EmbeddedGeometryInterface::buildGradientMassMatrix() const return M; } -SparseMatrix EmbeddedGeometryInterface::buildProlongationMatrix() const { +SparseMatrix EmbeddedGeometryInterface::simplePolygonProlongationMatrix() const { virtualRefinementAreaWeightsQ.ensureHave(); vertexIndicesQ.ensureHave(); @@ -670,13 +670,13 @@ void EmbeddedGeometryInterface::computeVirtualRefinementAreaWeights() { virtualRefinementAreaWeights = FaceData(mesh); for (Face f : mesh.faces()) { - Eigen::MatrixXd poly = getPolygonPositionMatrix(f); - Eigen::VectorXd weights = computeVirtualVertex(poly); + Eigen::MatrixXd poly = polygonPositionMatrix(f); + Eigen::VectorXd weights = simplePolygonVirtualVertex(poly); virtualRefinementAreaWeights[f] = weights; } } -Eigen::MatrixXd EmbeddedGeometryInterface::getPolygonPositionMatrix(const Face& f) const { +Eigen::MatrixXd EmbeddedGeometryInterface::polygonPositionMatrix(const Face& f) const { vertexPositionsQ.ensureHave(); Eigen::MatrixXd poly(f.degree(), 3); @@ -690,7 +690,7 @@ Eigen::MatrixXd EmbeddedGeometryInterface::getPolygonPositionMatrix(const Face& return poly; } -Eigen::VectorXd EmbeddedGeometryInterface::computeVirtualVertex(const Eigen::MatrixXd& poly) const { +Eigen::VectorXd EmbeddedGeometryInterface::simplePolygonVirtualVertex(const Eigen::MatrixXd& poly) const { // Given a polygon face, computes the affine weights that determine the position of the virtual vertex that minimizes // the sum of the squared areas of the triangles in the induced triangle fan. While the location of this vertex (the @@ -781,55 +781,349 @@ Vector3 EmbeddedGeometryInterface::gradientHatFunction(const Vector3& a, const V // = de Goes et al. "Discrete Differential Operators on Polygonal Meshes" (2020), based on the virtual element method. // Laplacian -void EmbeddedGeometryInterface::computeVirtualElementLaplacian() { - // TODO +void EmbeddedGeometryInterface::computePolygonLaplacian() { + vertexIndicesQ.ensureHave(); + + size_t V = mesh.nVertices(); + polygonLaplacian = Eigen::SparseMatrix(V, V); + std::vector> triplets; + // Assemble per-face operators. + Eigen::MatrixXd Lf; // local per-polygon matrix + std::vector vIndices; // indices of vertices of polygon face + for (Face f : mesh.faces()) { + vIndices.clear(); + for (Vertex v : f.adjacentVertices()) vIndices.push_back(vertexIndices[v]); + size_t n = f.degree(); + // Add contribution to global matrix. + Lf = buildPerFaceLaplacian(f); + for (size_t j = 0; j < n; j++) { + for (size_t i = 0; i < n; i++) { + triplets.emplace_back(vIndices[i], vIndices[j], Lf(i, j)); + } + } + } + polygonLaplacian.setFromTriplets(triplets.begin(), triplets.end()); } -void EmbeddedGeometryInterface::requireVirtualElementLaplacian() { virtualElementLaplacianQ.require(); } -void EmbeddedGeometryInterface::unrequireVirtualElementLaplacian() { virtualElementLaplacianQ.unrequire(); } +void EmbeddedGeometryInterface::requirePolygonLaplacian() { polygonLaplacianQ.require(); } +void EmbeddedGeometryInterface::unrequirePolygonLaplacian() { polygonLaplacianQ.unrequire(); } -// Vertex Galerkin mass matrix (unlumped) -void EmbeddedGeometryInterface::computeVirtualElementVertexGalerkinMassMatrix() { - // TODO +// Vertex mass matrix (unlumped) +void EmbeddedGeometryInterface::computePolygonVertexMassMatrix() { + vertexIndicesQ.ensureHave(); + + size_t V = mesh.nVertices(); + polygonVertexMassMatrix = Eigen::SparseMatrix(V, V); + std::vector> triplets; + // Assemble per-face operators. + Eigen::MatrixXd Mf; // local per-polygon matrix + std::vector vIndices; // indices of vertices of polygon face + for (Face f : mesh.faces()) { + vIndices.clear(); + for (Vertex v : f.adjacentVertices()) vIndices.push_back(vertexIndices[v]); + size_t n = f.degree(); + // Add contribution to global mass matrix. + Mf = polygonPerFaceMassMatrix(f); + for (size_t j = 0; j < n; j++) { + for (size_t i = 0; i < n; i++) { + triplets.emplace_back(vIndices[i], vIndices[j], Mf(i, j)); + } + } + } + polygonVertexMassMatrix.setFromTriplets(triplets.begin(), triplets.end()); +} +void EmbeddedGeometryInterface::requirePolygonVertexMassMatrix() { polygonVertexMassMatrixQ.require(); } +void EmbeddedGeometryInterface::unrequirePolygonVertexMassMatrix() { polygonVertexMassMatrixQ.unrequire(); } + + +// Vertex mass matrix (lumped) +void EmbeddedGeometryInterface::computePolygonVertexLumpedMassMatrix() { + vertexIndicesQ.ensureHave(); + + size_t V = mesh.nVertices(); + polygonVertexLumpedMassMatrix = Eigen::SparseMatrix(V, V); + std::vector> triplets; + for (Vertex v : mesh.vertices()) { + size_t vIdx = vertexIndices[v]; + double area = 0.; + for (Face f : v.adjacentFaces()) { + area += polygonArea(f) / f.degree(); + } + triplets.emplace_back(vIdx, vIdx, area); + } + polygonVertexLumpedMassMatrix.setFromTriplets(triplets.begin(), triplets.end()); } -void EmbeddedGeometryInterface::requireVirtualElementVertexGalerkinMassMatrix() { - virtualElementVertexGalerkinMassMatrixQ.require(); +void EmbeddedGeometryInterface::requirePolygonVertexLumpedMassMatrix() { polygonVertexLumpedMassMatrixQ.require(); } +void EmbeddedGeometryInterface::unrequirePolygonVertexLumpedMassMatrix() { polygonVertexLumpedMassMatrixQ.unrequire(); } + + +// vertex connection Laplacian +void EmbeddedGeometryInterface::computePolygonVertexConnectionLaplacian() { + vertexIndicesQ.ensureHave(); + + size_t V = mesh.nVertices(); + polygonVertexConnectionLaplacian = Eigen::SparseMatrix>(V, V); + std::vector>> triplets; + Eigen::MatrixXd Lf; + std::vector vIndices; + for (Face f : mesh.faces()) { + vIndices.clear(); + for (Vertex v : f.adjacentVertices()) vIndices.push_back(vertexIndices[v]); + size_t n = f.degree(); + Lf = polygonPerFaceConnectionLaplacian(f); + for (size_t j = 0; j < n; j++) { + for (size_t i = 0; i < n; i++) { + double re = Lf(2 * i, 2 * j); // == Lf(2 * i + 1, 2 * j + 1) + double im = Lf(2 * i, 2 * j + 1); // == -Lf(2 * i + 1, 2 * j) + GC_SAFETY_ASSERT(std::abs(Lf(2 * i, 2 * j) - Lf(2 * i + 1, 2 * j + 1)) < 1e-5, + "polygon vertex connection Laplacian error"); + GC_SAFETY_ASSERT(std::abs(Lf(2 * i, 2 * j + 1) + Lf(2 * i + 1, 2 * j)) < 1e-5, + "polygon vertex connection Laplacian error"); + triplets.emplace_back(vIndices[i], vIndices[j], std::complex(re, im)); + } + } + } + polygonVertexConnectionLaplacian.setFromTriplets(triplets.begin(), triplets.end()); } -void EmbeddedGeometryInterface::unrequireVirtualElementVertexGalerkinMassMatrix() { - virtualElementVertexGalerkinMassMatrixQ.unrequire(); +void EmbeddedGeometryInterface::requirePolygonVertexConnectionLaplacian() { + polygonVertexConnectionLaplacianQ.require(); +} +void EmbeddedGeometryInterface::unrequirePolygonVertexConnectionLaplacian() { + polygonVertexConnectionLaplacianQ.unrequire(); } -// Vertex mass matrix (lumped) -void EmbeddedGeometryInterface::computeVirtualElementVertexLumpedMassMatrix() { +// DEC Operators +void EmbeddedGeometryInterface::computePolygonDECOperators() { // TODO } -void EmbeddedGeometryInterface::requireVirtualElementVertexLumpedMassMatrix() { - virtualElementVertexLumpedMassMatrixQ.require(); +void EmbeddedGeometryInterface::requirePolygonDECOperators() { polygonDECOperatorsQ.require(); } +void EmbeddedGeometryInterface::unrequirePolygonDECOperators() { polygonDECOperatorsQ.unrequire(); } + + +// Helper functions + +Eigen::MatrixXd EmbeddedGeometryInterface::polygonPerFaceLaplacian(const Face& f) const { + Eigen::MatrixXd Df = polygonDerivativeMatrix(f); + return Df.transpose() * buildPerFaceMassMatrix(f) * Df; // build positive-definite } -void EmbeddedGeometryInterface::unrequireVirtualElementVertexLumpedMassMatrix() { - virtualElementVertexLumpedMassMatrixQ.unrequire(); + +Eigen::MatrixXd EmbeddedGeometryInterface::polygonPerFaceDivergence(const Face& f) const { + return -1. * polygonDerivativeMatrix(f).transpose() * buildPerFaceMassMatrix(f); } +Eigen::MatrixXd EmbeddedGeometryInterface::polygonPerFaceMassMatrix(const Face& f) const { + Eigen::MatrixXd Uf = sharp(f); + Eigen::MatrixXd Pf = polygonProjectionMatrix(f); + double A = polygonArea(f); + return A * Uf.transpose() * Uf + lambda * Pf.transpose() * Pf; +} -// vertex connection Laplacian -void EmbeddedGeometryInterface::computeVirtualElementVertexConnectionLaplacian() { - // TODO +Eigen::MatrixXd EmbeddedGeometryInterface::polygonPerFaceConnectionLaplacian(const Face& f) const { + Eigen::MatrixXd G = polygonCovariantGradient(f); + Eigen::MatrixXd P = polygonCovariantProjection(f); + double A = polygonArea(f); + Eigen::MatrixXd L = A * G.transpose() * G + lambda * P.transpose() * P; // build positive-definite + return L; } -void EmbeddedGeometryInterface::requireVirtualElementVertexConnectionLaplacian() { - virtualElementVertexConnectionLaplacianQ.require(); + +Eigen::MatrixXd EmbeddedGeometryInterface::polygonBlockConnection(const Face& f) const { + size_t d = f.degree(); + Eigen::MatrixXd R = Eigen::MatrixXd::Zero(2 * d, 2 * d); + size_t cpt = 0; + for (Vertex v : f.adjacentVertices()) { + Eigen::Matrix2d Rv = Rvf(v, f); + R.block<2, 2>(2 * cpt, 2 * cpt) = Rv; + cpt++; + } + return R; } -void EmbeddedGeometryInterface::unrequireVirtualElementVertexConnectionLaplacian() { - virtualElementVertexConnectionLaplacianQ.unrequire(); + +Eigen::MatrixXd EmbeddedGeometryInterface::polygonCovariantGradient(const Face& f) const { + return kroneckerWithI2(Tf(f).transpose() * polygonGradientMatrix(f)) * blockConnection(f); } +Eigen::MatrixXd EmbeddedGeometryInterface::polygonCovariantProjection(const Face& f) const { + return kroneckerWithI2(polygonProjectionMatrix(f) * polygonDerivativeMatrix(f)) * blockConnection(f); +} -// DEC Operators -void EmbeddedGeometryInterface::computeVirtualElementDECOperators() { - // TODO +Eigen::MatrixXd EmbeddedGeometryInterface::polygonProjectionMatrix(const Face& f) const { + size_t d = f.degree(); + Eigen::MatrixXd P = Eigen::MatrixXd::Identity(d, d) - polygonFlat(f) * polygonSharp(f); + return P; +} + +Eigen::MatrixXd EmbeddedGeometryInterface::polygonCoGradientMatrix(const Face& f) const { + return polygonEdgeVectorMatrix(f).transpose() * polygonAveragingMatrix(f); +} + +Eigen::MatrixXd EmbeddedGeometryInterface::polygonGradientMatrix(const Face& f) const { + Eigen::Vector3d An = vectorArea(f); + double A = An.norm(); + Eigen::Vector3d N = An / A; + return -1. / A * bracket(N) * polygonCoGradientMatrix(f); +} + +Eigen::MatrixXd EmbeddedGeometryInterface::polygonAveragingMatrix(const Face& f) const { + size_t d = f.degree(); + Eigen::MatrixXd A = Eigen::MatrixXd::Zero(d, d); + for (size_t i = 0; i < d; i++) { + A(i, (i + 1) % d) = 0.5; + A(i, i) = 0.5; + } + return A; +} + +Eigen::MatrixXd EmbeddedGeometryInterface::polygonDerivativeMatrix(const Face& f) const { + size_t d = f.degree(); + Eigen::MatrixXd D = Eigen::MatrixXd::Zero(d, d); + for (size_t i = 0; i < d; i++) { + D(i, (i + 1) % d) = 1.; + D(i, i) = -1.; + } + return D; +} + +Eigen::MatrixXd EmbeddedGeometryInterface::polygonEdgeVectorMatrix(const Face& f) const { + return polygonDerivativeMatrix(f) * polygonPositionMatrix(f); +} + +Eigen::MatrixXd EmbeddedGeometryInterface::polygonEdgeMidpointMatrix(const Face& f) const { + return polygonAveragingMatrix(f) * polygonPositionMatrix(f); +} + +Eigen::MatrixXd EmbeddedGeometryInterface::polygonFlat(const Face& f) const { + + Eigen::Vector3d N = polygonNormal(f); + return polygonEdgeVectorMatrix(f) * (Eigen::MatrixXd::Identity(3, 3) - N * N.transpose()); +} + +Eigen::MatrixXd EmbeddedGeometryInterface::polygonSharp(const Face& f) const { + + size_t d = f.degree(); + Eigen::Vector3d An = vectorArea(f); + double A = An.norm(); + Eigen::Vector3d N = An / A; + Eigen::Vector3d c = polygonCentroid(f); + return 1. / A * bracket(N) * (polygonEdgeMidpointMatrix(f).transpose() - c * Eigen::VectorXd::Ones(d).transpose()); +} + +Eigen::Vector3d EmbeddedGeometryInterface::polygonVectorArea(const Face& f) const { + vertexPositionsQ.ensureHave(); + + Vector3 N = {0, 0, 0}; + for (Halfedge he : f.adjacentHalfedges()) { + Vertex vA = he.vertex(); + Vertex vB = he.next().vertex(); + Vector3 pA = vertexPositions[vA]; + Vector3 pB = vertexPositions[vB]; + N += cross(pA, pB); + } + N *= 0.5; + return Eigen::Vector3d(N[0], N[1], N[2]); +} + +double EmbeddedGeometryInterface::polygonArea(const Face& f) const { + Eigen::Vector3d An = vectorArea(f); + double A = An.norm(); + return A; +} + +Eigen::Vector3d EmbeddedGeometryInterface::polygonNormal(const Face& f) const { + Vector3 N = polygonVectorArea(f); + N /= N.norm(); + return Eigen::Vector3d(N[0], N[1], N[2]); +} + +Eigen::Vector3d EmbeddedGeometryInterface::polygonCentroid(const Face& f) const { + vertexPositionsQ.ensureHave(); + + Vector3 c = {0, 0, 0}; + for (Vertex v : f.adjacentVertices()) { + c += vertexPositions[v]; + } + c /= f.degree(); + return Eigen::Vector3d(c[0], c[1], c[2]); +} + +Eigen::MatrixXd EmbeddedGeometryInterface::Tv(const Vertex& v) const { + vertexNormalsQ.ensureHave(); + + // Return 3 x 2 matrix defining the tangent space at vertex v, with basis vectors in columns. + Vector3 vN = vertexNormals[v]; + Eigen::Vector3d nv(vN[0], vN[1], vN[2]); + Vector3 pA = vertexPositions[f.halfedge().vertex()]; + Vector3 pB = vertexPositions[f.halfedge().next().vertex()]; + Vector3 heVec = pB - pA; + Eigen::Vector3d w(heVec[0], heVec[1], heVec[2]); + Eigen::Vector3d uu = project(w, nv).normalized(); + Eigen::Vector3d vv = nv.cross(uu); + Eigen::MatrixXd B(3, 2); + B.col(0) = uu; + B.col(1) = vv; + return B; +} + +Eigen::MatrixXd EmbeddedGeometryInterface::Tf(const Face& f) const { + vertexPositionsQ.ensureHave(); + + // Return 3 x 2 matrix defining the tangent space at face f, with basis vectors in columns. + Eigen::Vector3d nf = polygonNormal(f); + Vector3 pA = vertexPositions[f.halfedge().vertex()]; + Vector3 pB = vertexPositions[f.halfedge().next().vertex()]; + Vector3 heVec = pB - pA; + Eigen::Vector3d w(heVec[0], heVec[1], heVec[2]); + Eigen::Vector3d uu = project(w, nf).normalized(); + Eigen::Vector3d vv = nf.cross(uu); + Eigen::MatrixXd B(3, 2); + B.col(0) = uu; + B.col(1) = vv; + return B; +} + +Eigen::Matrix2d EmbeddedGeometryInterface::Rvf(const Vertex& v, const Face& f) const { + return Tf(f).transpose() * Qvf(v, f) * Tv(v); +} + +Eigen::Matrix3d EmbeddedGeometryInterface::Qvf(const Vertex& v, const Face& f) const { + vertexNormalsQ.ensureHave(); + + // Return 3 x 3 rotation matrix to align n_v to n_f. + Eigen::Vector3d nf = polygonNormal(f); + Vector3 vN = vertexNormals[v]; + Eigen::Vector3d nv(vN[0], vN[1], vN[2]); + double c = nv.dot(nf); + + // Special case for opposite nv and nf vectors. + if (std::abs(c + 1.0) < 1e-5) return -Eigen::Matrix3d::Identity(); + + Eigen::Vector3d vv = nv.cross(nf); + Eigen::Matrix3d skew = bracket(vv); + return Eigen::Matrix3d::Identity() + skew + 1.0 / (1.0 + c) * skew * skew; +} + +Eigen::Matrix3d EmbeddedGeometryInterface::bracket(const Eigen::Vector3d& n) const { + Eigen::Matrix3d B; + B << 0., -n[2], n[1], n[2], 0., -n[0], -n[1], n[0], 0.; + return B; +} + +Eigen::Vector3d EmbeddedGeometryInterface::project(const Eigen::Vector3d& u, const Eigen::Vector3d& n) const { + // Project u on the orthgonal of n. + return u - (u.dot(n) / n.squaredNorm()) * n; +} + +Eigen::MatrixXd EmbeddedGeometryInterface::kroneckerWithI2(const Eigen::MatrixXd& M) const { + size_t h = M.rows(); + size_t w = M.cols(); + Eigen::MatrixXd MK = Eigen::MatrixXd::Zero(h * 2, w * 2); + for (size_t j = 0; j < h; j++) + for (size_t i = 0; i < w; i++) { + MK(2 * j, 2 * i) = M(j, i); + MK(2 * j + 1, 2 * i + 1) = M(j, i); + } + return MK; } -void EmbeddedGeometryInterface::requireVirtualElementDECOperators() { virtualElementDECOperatorsQ.require(); } -void EmbeddedGeometryInterface::unrequireVirtualElementDECOperators() { virtualElementDECOperatorsQ.unrequire(); } } // namespace surface } // namespace geometrycentral From f66e62b8fe0bd2f3b5a2f2e37ae500c693b576f2 Mon Sep 17 00:00:00 2001 From: nzfeng Date: Thu, 1 Feb 2024 18:25:35 -0500 Subject: [PATCH 04/21] Update docs; in the middle of simple polygon DEC operators, not sure how much sense it makes to expose d operators since they map between the refinement --- docs/docs/surface/geometry/quantities.md | 12 +++-- src/surface/embedded_geometry_interface.cpp | 51 ++++++++++++++++++++- 2 files changed, 57 insertions(+), 6 deletions(-) diff --git a/docs/docs/surface/geometry/quantities.md b/docs/docs/surface/geometry/quantities.md index 2cccab0b..5421504d 100644 --- a/docs/docs/surface/geometry/quantities.md +++ b/docs/docs/surface/geometry/quantities.md @@ -543,14 +543,16 @@ In graphics and geometry processing, Crouzeix-Raviart elements have been used, f - **member:** `Eigen::SparseMatrix IntrinsicGeometryInterface::crouzeixRaviartConnectionLaplacian` - **require:** `void IntrinsicGeometryInterface::requireCrouzeixRaviartConnectionLaplacian()` -## Polygon Mesh Operators +## Polygon mesh operators -These quantities are defined for any `EmbeddedGeometryInterface`, meaning they will be available for any geometry whose embedding in 3D space is specified (for example, with vertex positions.) These operators were specifically designed for polygon meshes, though they will reduce to the classical discrete exterior calculus & finite element operators on triangular meshes (described above). +The following quantities are designed for general polygon meshes, and are defined for any `EmbeddedGeometryInterface`. On triangle meshes, they will reduce to the classical discrete exterior calculus & finite element operators. Two classes of polygon operators are provided: those based on [Bunge et al.'s _Polygon Laplacian Made Simple_](https://www.cs.jhu.edu/~misha/MyPapers/EUROG20.pdf), whose discretization is based on virtual refinement of the polygon mesh; and those based on [de Goes et al.'s _Discrete Differential Operators on Polygonal Meshes_](https://graphics.pixar.com/library/PolyDDG/paper.pdf), whose discretization is based on an adaptation of the virtual element method. The former uses [Astrid Bunge and Mario Botsch's implementation of their paper](https://github.com/mbotsch/polygon-laplacian), while the latter uses [David Coeurjolly, Jacques-Olivier Lachaud, and Baptiste Genest's DGtal implementation of de Goes et al.'s paper](https://www.dgtal.org/doc/stable/modulePolygonalCalculus.html). Both methods build local operators whose matrices are assembled per-polygon, so they will run out-of-the-box on non-manifold meshes (but no guarantees are provided!) All operators are indexed over mesh elements according to the natural iteration order of the elements, or equivalently the indices from `SurfaceMesh::getVertexIndices()` (etc). +Here are polygon mesh operators from [Bunge et al.'s _Polygon Laplacian Made Simple_](https://www.cs.jhu.edu/~misha/MyPapers/EUROG20.pdf). + ??? func "polygon Laplacian (simple)" ##### polygon Laplacian (simple) @@ -559,7 +561,7 @@ All operators are indexed over mesh elements according to the natural iteration A $|V| \times |V|$ real matrix. Always symmetric and positive semi-definite. On triangle meshes, this polygon Laplacian becomes the standard cotan Laplacian. - This is the _weak_ Laplace operator, if we use it to evalutae $\mathsf{y} \leftarrow \mathsf{L} \mathsf{x}$, $\mathsf{x}$ should hold _pointwise_ quantities at vertices, and the result $\mathsf{y}$ will contain _integrated_ values of the result in the neighborhood of each vertex. If used to solve a Poisson problem, a mass matrix (such as the lumped or Galerkin mass matrices below) are likely necessary on the right hand side. + This is the _weak_ Laplace operator. Only valid on an `EmbeddedGeometryInterface`. @@ -611,7 +613,7 @@ All operators are indexed over mesh elements according to the natural iteration - **require:** `void EmbeddedGeometryInterface::requireSimplePolygonDECOperators()` -Described below are polygon mesh operators from [de Goes et al.'s _Discrete Differential Operators on Polygonal Meshes_](https://graphics.pixar.com/library/PolyDDG/paper.pdf). +And here are polygon mesh operators from [de Goes et al.'s _Discrete Differential Operators on Polygonal Meshes_](https://graphics.pixar.com/library/PolyDDG/paper.pdf). ??? func "polygon Laplacian" @@ -621,7 +623,7 @@ Described below are polygon mesh operators from [de Goes et al.'s _Discrete Diff A $|V| \times |V|$ real matrix. Always symmetric and positive semi-definite. Takes in an additional parameter $\lambda$ defining a stabilization term to ensure discrete inner products remain positive-definite on non-triangular faces. On triangle meshes, this polygon Laplacian becomes the standard cotan Laplacian with $\lambda=0$. - This is the _weak_ Laplace operator, if we use it to evalutae $\mathsf{y} \leftarrow \mathsf{L} \mathsf{x}$, $\mathsf{x}$ should hold _pointwise_ quantities at vertices, and the result $\mathsf{y}$ will contain _integrated_ values of the result in the neighborhood of each vertex. If used to solve a Poisson problem, a mass matrix (such as the lumped or Galerkin mass matrices below) are likely necessary on the right hand side. + This is the _weak_ Laplace operator. Only valid on an `EmbeddedGeometryInterface`. diff --git a/src/surface/embedded_geometry_interface.cpp b/src/surface/embedded_geometry_interface.cpp index 75eb7bba..e1752f7d 100644 --- a/src/surface/embedded_geometry_interface.cpp +++ b/src/surface/embedded_geometry_interface.cpp @@ -467,7 +467,56 @@ void EmbeddedGeometryInterface::unrequireSimplePolygonVertexLumpedMassMatrix() { // DEC Operators void EmbeddedGeometryInterface::computeSimplePolygonDECOperators() { - // TODO + vertexIndicesQ.ensureHave(); + faceIndicesQ.ensureHave(); + vertexPositionsQ.ensureHave(); + virtualRefinementAreaWeightsQ.ensureHave(); + + // The simple polygon DEC operators are defined by prolonging the standard DEC operators defined on the refined + // triangle mesh, to the original polygon mesh. + size_t V = mesh.nVertices(); + size_t E = mesh.nEdges(); + size_t F = mesh.nFaces(); + size_t tV = V + F; // # of vertices in the refinement + std::vector> tripletsD0, tripletsD1, tripletsD2, tripletsH0, tripletsH1, tripletsH2; + + // TODO: Build d^k matrices on the (virtual) refined triangle mesh. + + // TODO: Build Hodge stars on the (virtual) refined triangle mesh. + SparseMatrix h0(tV, tV); + for (Face f : mesh.faces()) { + Eigen::MatrixXd poly = polygonPositionMatrix(f); + const Eigen::VectorXd& weights = virtualRefinementAreaWeights[f]; + Eigen::Vector3d areaPoint = poly.transpose() * weights; + Vector3 ap = {areaPoint[0], areaPoint[1], areaPoint[2]}; + size_t fIdx = faceIndices[f]; + for (Halfedge he : f.adjacentHalfedges()) { + size_t v0 = vertexIndices[he.tailVertex()]; + size_t v1 = vertexIndices[he.tipVertex()]; + Vector3 p0 = vertexPositions[v0]; + Vector3 p1 = vertexPositions[v1]; + double area = 0.5 * cross(p0 - ap, p1 - ap).norm(); + double w = area / 3.; + tripletsH0.emplace_back(v0, v0, w); + tripletsH0.emplace_back(v1, v1, w); + tripletsH0.emplace_back(V + fIdx, V + fIdx, w); + } + } + h0.setFromTriplets(tripletsH0.begin(), tripletsH0.end()); + + SparseMatrix h1(E, E); + h1.setFromTriplets(tripletsH1.begin(), tripletsH1.end()); + + SparseMatrix h2(F, F); + h2.setFromTriplets(tripletsH2.begin(), tripletsH2.end()); + + // TODO: Apply prolongation. + SparseMatrix P0 = simplePolygonProlongationMatrix(); + simplePolygonHodge0 = P0.transpose() * h0 * P0; + + simplePolygonHodge1 = P1.transpose() * h1 * P1; + + simplePolygonHodge2 = P2.transpose() * h2 * P2; } void EmbeddedGeometryInterface::requireSimplePolygonDECOperators() { simplePolygonDECOperatorsQ.require(); } void EmbeddedGeometryInterface::unrequireSimplePolygonDECOperators() { simplePolygonDECOperatorsQ.unrequire(); } From ea4eafcb9dc1503d97c448c53e6e51ca3ada576e Mon Sep 17 00:00:00 2001 From: nzfeng Date: Fri, 2 Feb 2024 11:39:38 -0500 Subject: [PATCH 05/21] Add polygon DEC operators --- docs/docs/surface/geometry/quantities.md | 41 +--- .../surface/embedded_geometry_interface.h | 31 +-- src/surface/embedded_geometry_interface.cpp | 183 +++++++----------- 3 files changed, 82 insertions(+), 173 deletions(-) diff --git a/docs/docs/surface/geometry/quantities.md b/docs/docs/surface/geometry/quantities.md index 5421504d..4467312b 100644 --- a/docs/docs/surface/geometry/quantities.md +++ b/docs/docs/surface/geometry/quantities.md @@ -590,29 +590,6 @@ Here are polygon mesh operators from [Bunge et al.'s _Polygon Laplacian Made Sim - **member:** `Eigen::SparseMatrix EmbeddedGeometryInterface::simplePolygonVertexGalerkinMassMatrix` - **require:** `void EmbeddedGeometryInterface::requireSimplePolygonVertexGalerkinMassMatrix()` -??? func "polygon DEC operators (simple)" - - ##### polygon DEC operators (simple) - - These operators are the basic building blocks for _discrete exterior calculus_ on polygon meshes, using Bunge et al.'s virtual refinement method in _Polygon Laplacian Made Simple_. - - **Note:** These quantities slightly deviate from the usual naming scheme for quantities. Rather than `requireD0()`, `requireD1()`, etc, there is a single `requireSimplePolygonDECOperators()` function which manages all 8 of the members listed below. - - The following members are constructed: - - - `Eigen::SparseMatrix EmbeddedGeometryInterface::simplePolygonHodge0` A $|V| \times |V|$ diagonal matrix - - `Eigen::SparseMatrix EmbeddedGeometryInterface::simplePolygonHodge0Inverse` A $|V| \times |V|$ diagonal matrix - - `Eigen::SparseMatrix EmbeddedGeometryInterface::simplePolygonHodge1` An $|E| \times |E|$ diagonal matrix - - `Eigen::SparseMatrix EmbeddedGeometryInterface::simplePolygonHodge1Inverse` An $|E| \times |E|$ diagonal matrix - - `Eigen::SparseMatrix EmbeddedGeometryInterface::simplePolygonHodge2` An $|F| \times |F|$ diagonal matrix - - `Eigen::SparseMatrix EmbeddedGeometryInterface::simplePolygonHodge2Inverse` An $|F| \times |F|$ diagonal matrix - - `Eigen::SparseMatrix EmbeddedGeometryInterface::simplePolygonD0` An $|E| \times |V|$ matrix with $\{-1, 0, 1\}$ entries - - `Eigen::SparseMatrix EmbeddedGeometryInterface::simplePolygonD1` An $|F| \times |E|$ matrix with $\{-1, 0, 1\}$ entries - - Only valid on an `EmbeddedGeometryInterface`. - - - **require:** `void EmbeddedGeometryInterface::requireSimplePolygonDECOperators()` - And here are polygon mesh operators from [de Goes et al.'s _Discrete Differential Operators on Polygonal Meshes_](https://graphics.pixar.com/library/PolyDDG/paper.pdf). ??? func "polygon Laplacian" @@ -621,7 +598,7 @@ And here are polygon mesh operators from [de Goes et al.'s _Discrete Differentia The discrete Laplace operator acting on polygon meshes, using de Goes et al.'s virtual element method in _Discrete Differential Operators on Polygonal Meshes_. - A $|V| \times |V|$ real matrix. Always symmetric and positive semi-definite. Takes in an additional parameter $\lambda$ defining a stabilization term to ensure discrete inner products remain positive-definite on non-triangular faces. On triangle meshes, this polygon Laplacian becomes the standard cotan Laplacian with $\lambda=0$. + A $|V| \times |V|$ real matrix. Always symmetric and positive semi-definite. Takes in an additional parameter $\lambda$ whose default is $1$. On triangle meshes, this polygon Laplacian becomes the standard cotan Laplacian with $\lambda=0$. This is the _weak_ Laplace operator. @@ -641,17 +618,6 @@ And here are polygon mesh operators from [de Goes et al.'s _Discrete Differentia - **member:** `Eigen::SparseMatrix EmbeddedGeometryInterface::polygonVertexLumpedMassMatrix` - **require:** `void EmbeddedGeometryInterface::requirePolygonVertexLumpedMassMatrix()` -??? func "polygon mesh vertex mass matrix" - - ##### polygon mesh vertex mass matrix - - A $|V| \times |V|$ real matrix, using de Goes et al.'s virtual element method in _Discrete Differential Operators on Polygonal Meshes_. Always symmetric and positive-definite. - - Only valid on an `EmbeddedGeometryInterface`. - - - **member:** `Eigen::SparseMatrix EmbeddedGeometryInterface::polygonVertexMassMatrix` - - **require:** `void EmbeddedGeometryInterface::requirePolygonVertexMassMatrix()` - ??? func "polygon mesh vertex connection Laplacian" ##### polygon mesh vertex connection Laplacian @@ -673,7 +639,7 @@ And here are polygon mesh operators from [de Goes et al.'s _Discrete Differentia ##### polygon DEC operators - These operators are the basic building blocks for _discrete exterior calculus_ on polygon meshes, using de Goes et al.'s virtual element method in _Discrete Differential Operators on Polygonal Meshes_. + These operators are the basic building blocks for _discrete exterior calculus_ on polygon meshes, using de Goes et al.'s virtual element method in _Discrete Differential Operators on Polygonal Meshes_. Takes in an additional parameter $\lambda$ defining a stabilization term to ensure inner products of discrete 1-forms remain positive-definite on non-triangular faces. **Note:** These quantities slightly deviate from the usual naming scheme for quantities. Rather than `requireD0()`, `requireD1()`, etc, there is a single `requirePolygonDECOperators()` function which manages all 8 of the members listed below. @@ -681,8 +647,7 @@ And here are polygon mesh operators from [de Goes et al.'s _Discrete Differentia - `Eigen::SparseMatrix EmbeddedGeometryInterface::polygonHodge0` A $|V| \times |V|$ diagonal matrix - `Eigen::SparseMatrix EmbeddedGeometryInterface::polygonHodge0Inverse` A $|V| \times |V|$ diagonal matrix - - `Eigen::SparseMatrix EmbeddedGeometryInterface::polygonHodge1` An $|E| \times |E|$ diagonal matrix - - `Eigen::SparseMatrix EmbeddedGeometryInterface::polygonHodge1Inverse` An $|E| \times |E|$ diagonal matrix + - `Eigen::SparseMatrix EmbeddedGeometryInterface::polygonHodge1` An $|E| \times |E|$ matrix, not necessarily diagonal - `Eigen::SparseMatrix EmbeddedGeometryInterface::polygonHodge2` An $|F| \times |F|$ diagonal matrix - `Eigen::SparseMatrix EmbeddedGeometryInterface::polygonHodge2Inverse` An $|F| \times |F|$ diagonal matrix - `Eigen::SparseMatrix EmbeddedGeometryInterface::polygonD0` An $|E| \times |V|$ matrix with $\{-1, 0, 1\}$ entries diff --git a/include/geometrycentral/surface/embedded_geometry_interface.h b/include/geometrycentral/surface/embedded_geometry_interface.h index d8708b77..482df6c2 100644 --- a/include/geometrycentral/surface/embedded_geometry_interface.h +++ b/include/geometrycentral/surface/embedded_geometry_interface.h @@ -75,12 +75,6 @@ class EmbeddedGeometryInterface : public ExtrinsicGeometryInterface { void requireSimplePolygonVertexLumpedMassMatrix(); void unrequireSimplePolygonVertexLumpedMassMatrix(); - // DEC Operators - Eigen::SparseMatrix simplePolygonHodge0, simplePolygonHodge0Inverse, simplePolygonHodge1, - simplePolygonHodge1Inverse, simplePolygonHodge2, simplePolygonHodge2Inverse, simplePolygonD0, simplePolygonD1; - void requireSimplePolygonDECOperators(); - void unrequireSimplePolygonDECOperators(); - // = de Goes et al. "Discrete Differential Operators on Polygonal Meshes" (2020), based on the virtual element method. // Laplacian @@ -88,11 +82,6 @@ class EmbeddedGeometryInterface : public ExtrinsicGeometryInterface { void requirePolygonLaplacian(); void unrequirePolygonLaplacian(); - // Vertex mass matrix (unlumped) - Eigen::SparseMatrix polygonVertexGalerkinMassMatrix; - void requirePolygonVertexGalerkinMassMatrix(); - void requirePolygonVertexGalerkinMassMatrix(); - // Vertex mass matrix (lumped) Eigen::SparseMatrix polygonVertexLumpedMassMatrix; void requirePolygonVertexLumpedMassMatrix(); @@ -103,8 +92,8 @@ class EmbeddedGeometryInterface : public ExtrinsicGeometryInterface { void requirePolygonVertexConnectionLaplacian(); void unrequirePolygonVertexConnectionLaplacian(); - Eigen::SparseMatrix polygonHodge0, polygonHodge0Inverse, polygonHodge1, polygonHodge1Inverse, polygonHodge2, - polygonHodge2Inverse, polygonD0, polygonD1; + Eigen::SparseMatrix polygonHodge0, polygonHodge0Inverse, polygonHodge1, polygonHodge2, polygonHodge2Inverse, + polygonD0, polygonD1; void requirePolygonDECOperators(); void unrequirePolygonDECOperators(); @@ -155,11 +144,6 @@ class EmbeddedGeometryInterface : public ExtrinsicGeometryInterface { DependentQuantityD> simplePolygonVertexLumpedMassMatrixQ; virtual void computeSimplePolygonVertexLumpedMassMatrix(); - // DEC Operators - std::array*, 8> simplePolygonDECOperatorArray; - DependentQuantityD*, 8>> simplePolygonDECOperatorsQ; - virtual void computeSimplePolygonDECOperators(); - // helper functions DependentQuantityD> virtualRefinementAreaWeightsQ; // affine weights for each virtual node virtual void computeVirtualRefinementAreaWeights(); @@ -179,10 +163,6 @@ class EmbeddedGeometryInterface : public ExtrinsicGeometryInterface { DependentQuantityD> polygonLaplacianQ; virtual void computePolygonLaplacian(); - // Vertex mass matrix (unlumped) - DependentQuantityD> polygonVertexMassMatrixQ; - virtual void computePolygonVertexMassMatrix(); - // Vertex mass matrix (lumped) DependentQuantityD> polygonVertexLumpedMassMatrixQ; virtual void computePolygonVertexLumpedMassMatrix(); @@ -192,14 +172,13 @@ class EmbeddedGeometryInterface : public ExtrinsicGeometryInterface { virtual void computePolygonVertexConnectionLaplacian(); // DEC Operators - std::array*, 8> polygonDECOperatorArray; - DependentQuantityD*, 8>> polygonDECOperatorsQ; + std::array*, 7> polygonDECOperatorArray; + DependentQuantityD*, 7>> polygonDECOperatorsQ; virtual void computePolygonDECOperators(); // helper functions virtual Eigen::MatrixXd polygonPerFaceLaplacian(const Face& f) const; - virtual Eigen::MatrixXd polygonPerFaceDivergence(const Face& f) const; // TODO: axe? - virtual Eigen::MatrixXd polygonPerFaceMassMatrix(const Face& f) const; + virtual Eigen::MatrixXd polygonPerFaceInnerProductMatrix(const Face& f) const; virtual Eigen::MatrixXd polygonProjectionMatrix(const Face& f) const; virtual Eigen::MatrixXd polygonCoGradientMatrix(const Face& f) const; virtual Eigen::MatrixXd polygonGradientMatrix(const Face& f) const; diff --git a/src/surface/embedded_geometry_interface.cpp b/src/surface/embedded_geometry_interface.cpp index e1752f7d..350b3ad1 100644 --- a/src/surface/embedded_geometry_interface.cpp +++ b/src/surface/embedded_geometry_interface.cpp @@ -25,20 +25,11 @@ EmbeddedGeometryInterface::EmbeddedGeometryInterface(SurfaceMesh& mesh_) : simplePolygonVertexLumpedMassMatrixQ (&simplePolygonVertexLumpedMassMatrix, std::bind(&EmbeddedGeometryInterface::computeSimplePolygonVertexLumpedMassMatrix, this), quantities), polygonLaplacianQ (&polygonLaplacian, std::bind(&EmbeddedGeometryInterface::computePolygonLaplacian, this), quantities), - polygonVertexMassMatrixQ (&polygonVertexMassMatrix, std::bind(&EmbeddedGeometryInterface::computePolygonVertexMassMatrix, this), quantities), polygonVertexLumpedMassMatrixQ (&polygonVertexLumpedMassMatrix, std::bind(&EmbeddedGeometryInterface::computePolygonVertexLumpedMassMatrix, this), quantities), polygonVertexConnectionLaplacianQ (&polygonVertexConnectionLaplacian, std::bind(&EmbeddedGeometryInterface::computePolygonVertexConnectionLaplacian, this), quantities), - - simplePolygonDECOperatorArray{&simplePolygonHodge0, &simplePolygonHodge0Inverse, &simplePolygonHodge1, - &simplePolygonHodge1Inverse, &simplePolygonHodge2, - &simplePolygonHodge2Inverse, &simplePolygonD0, &simplePolygonD1}, - simplePolygonDECOperatorsQ(&simplePolygonDECOperatorArray, std::bind(&EmbeddedGeometryInterface::computeSimplePolygonDECOperators, this), quantities), - polygonDECOperatorArray{&polygonHodge0, &polygonHodge0Inverse, &polygonHodge1, - &polygonHodge1Inverse, &polygonHodge2, &polygonHodge2Inverse, - &polygonD0, &polygonD1}, + polygonDECOperatorArray{&polygonHodge0, &polygonHodge0Inverse, &polygonHodge1, &polygonHodge2, &polygonHodge2Inverse, &polygonD0, &polygonD1}, polygonDECOperatorsQ(&polygonDECOperatorArray, std::bind(&EmbeddedGeometryInterface::computePolygonDECOperators, this), quantities) - {} // clang-format on @@ -464,64 +455,6 @@ void EmbeddedGeometryInterface::unrequireSimplePolygonVertexLumpedMassMatrix() { simplePolygonVertexLumpedMassMatrixQ.unrequire(); } - -// DEC Operators -void EmbeddedGeometryInterface::computeSimplePolygonDECOperators() { - vertexIndicesQ.ensureHave(); - faceIndicesQ.ensureHave(); - vertexPositionsQ.ensureHave(); - virtualRefinementAreaWeightsQ.ensureHave(); - - // The simple polygon DEC operators are defined by prolonging the standard DEC operators defined on the refined - // triangle mesh, to the original polygon mesh. - size_t V = mesh.nVertices(); - size_t E = mesh.nEdges(); - size_t F = mesh.nFaces(); - size_t tV = V + F; // # of vertices in the refinement - std::vector> tripletsD0, tripletsD1, tripletsD2, tripletsH0, tripletsH1, tripletsH2; - - // TODO: Build d^k matrices on the (virtual) refined triangle mesh. - - // TODO: Build Hodge stars on the (virtual) refined triangle mesh. - SparseMatrix h0(tV, tV); - for (Face f : mesh.faces()) { - Eigen::MatrixXd poly = polygonPositionMatrix(f); - const Eigen::VectorXd& weights = virtualRefinementAreaWeights[f]; - Eigen::Vector3d areaPoint = poly.transpose() * weights; - Vector3 ap = {areaPoint[0], areaPoint[1], areaPoint[2]}; - size_t fIdx = faceIndices[f]; - for (Halfedge he : f.adjacentHalfedges()) { - size_t v0 = vertexIndices[he.tailVertex()]; - size_t v1 = vertexIndices[he.tipVertex()]; - Vector3 p0 = vertexPositions[v0]; - Vector3 p1 = vertexPositions[v1]; - double area = 0.5 * cross(p0 - ap, p1 - ap).norm(); - double w = area / 3.; - tripletsH0.emplace_back(v0, v0, w); - tripletsH0.emplace_back(v1, v1, w); - tripletsH0.emplace_back(V + fIdx, V + fIdx, w); - } - } - h0.setFromTriplets(tripletsH0.begin(), tripletsH0.end()); - - SparseMatrix h1(E, E); - h1.setFromTriplets(tripletsH1.begin(), tripletsH1.end()); - - SparseMatrix h2(F, F); - h2.setFromTriplets(tripletsH2.begin(), tripletsH2.end()); - - // TODO: Apply prolongation. - SparseMatrix P0 = simplePolygonProlongationMatrix(); - simplePolygonHodge0 = P0.transpose() * h0 * P0; - - simplePolygonHodge1 = P1.transpose() * h1 * P1; - - simplePolygonHodge2 = P2.transpose() * h2 * P2; -} -void EmbeddedGeometryInterface::requireSimplePolygonDECOperators() { simplePolygonDECOperatorsQ.require(); } -void EmbeddedGeometryInterface::unrequireSimplePolygonDECOperators() { simplePolygonDECOperatorsQ.unrequire(); } - - // Helper functions Eigen::MatrixXd EmbeddedGeometryInterface::simplePolygonMassMatrix(const Face& f) const { @@ -844,7 +777,7 @@ void EmbeddedGeometryInterface::computePolygonLaplacian() { for (Vertex v : f.adjacentVertices()) vIndices.push_back(vertexIndices[v]); size_t n = f.degree(); // Add contribution to global matrix. - Lf = buildPerFaceLaplacian(f); + Lf = polygonPerFaceLaplacian(f); for (size_t j = 0; j < n; j++) { for (size_t i = 0; i < n; i++) { triplets.emplace_back(vIndices[i], vIndices[j], Lf(i, j)); @@ -857,50 +790,21 @@ void EmbeddedGeometryInterface::requirePolygonLaplacian() { polygonLaplacianQ.re void EmbeddedGeometryInterface::unrequirePolygonLaplacian() { polygonLaplacianQ.unrequire(); } -// Vertex mass matrix (unlumped) -void EmbeddedGeometryInterface::computePolygonVertexMassMatrix() { - vertexIndicesQ.ensureHave(); - - size_t V = mesh.nVertices(); - polygonVertexMassMatrix = Eigen::SparseMatrix(V, V); - std::vector> triplets; - // Assemble per-face operators. - Eigen::MatrixXd Mf; // local per-polygon matrix - std::vector vIndices; // indices of vertices of polygon face - for (Face f : mesh.faces()) { - vIndices.clear(); - for (Vertex v : f.adjacentVertices()) vIndices.push_back(vertexIndices[v]); - size_t n = f.degree(); - // Add contribution to global mass matrix. - Mf = polygonPerFaceMassMatrix(f); - for (size_t j = 0; j < n; j++) { - for (size_t i = 0; i < n; i++) { - triplets.emplace_back(vIndices[i], vIndices[j], Mf(i, j)); - } - } - } - polygonVertexMassMatrix.setFromTriplets(triplets.begin(), triplets.end()); -} -void EmbeddedGeometryInterface::requirePolygonVertexMassMatrix() { polygonVertexMassMatrixQ.require(); } -void EmbeddedGeometryInterface::unrequirePolygonVertexMassMatrix() { polygonVertexMassMatrixQ.unrequire(); } - - // Vertex mass matrix (lumped) void EmbeddedGeometryInterface::computePolygonVertexLumpedMassMatrix() { vertexIndicesQ.ensureHave(); size_t V = mesh.nVertices(); - polygonVertexLumpedMassMatrix = Eigen::SparseMatrix(V, V); - std::vector> triplets; + Eigen::VectorXd hodge0(V); for (Vertex v : mesh.vertices()) { size_t vIdx = vertexIndices[v]; double area = 0.; for (Face f : v.adjacentFaces()) { area += polygonArea(f) / f.degree(); } - triplets.emplace_back(vIdx, vIdx, area); + hodge0[vIdx] = area; } - polygonVertexLumpedMassMatrix.setFromTriplets(triplets.begin(), triplets.end()); + polygonVertexLumpedMassMatrix = hodge0.asDiagonal(); } void EmbeddedGeometryInterface::requirePolygonVertexLumpedMassMatrix() { polygonVertexLumpedMassMatrixQ.require(); } void EmbeddedGeometryInterface::unrequirePolygonVertexLumpedMassMatrix() { polygonVertexLumpedMassMatrixQ.unrequire(); } @@ -942,9 +846,74 @@ void EmbeddedGeometryInterface::unrequirePolygonVertexConnectionLaplacian() { } -// DEC Operators void EmbeddedGeometryInterface::computePolygonDECOperators() { - // TODO + vertexIndicesQ.ensureHave(); + edgeIndicesQ.ensureHave(); + faceIndicesQ.ensureHave(); + std::vector> tripletsD0, tripletsD1, tripletsH1; + + // exterior derivatives the same as the simplicial case + polygonD0 = Eigen::SparseMatrix(E, V); + for (Edge e : mesh.edges()) { + size_t eIdx = edgeIndices[e]; + size_t vA = vertexIndices[e.firstVertex()]; + size_t vB = vertexIndices[e.secondVertex()]; + tripletsD0.emplace(eIdx, vA, 1.); + tripletsD0.emplace(eIdx, vB, -1.); + } + polygonD0.setFromTriplets(tripletsD0.begin(), tripletsD0.end()); + + polygonD1 = Eigen::SparseMatrix(F, E); + for (Face f : mesh.faces()) { + size_t fIdx = faceIndices[f]; + for (Halfedge he : f.adjacentHalfedges()) { + size_t eIdx = edgeIndices[he.edge()]; + double sign = he.orientation() ? 1. : -1.; + tripletsD1.emplace_back(fIdx, eIdx, sign); + } + } + polygonD1.setFromTriplets(tripletsD1.begin(), tripletsD1.end()); + + // hodge0 + Eigen::VectorXd h0(V); + for (Vertex v : mesh.vertices()) { + size_t vIdx = vertexIndices[v]; + double area = 0.; + for (Face f : v.adjacentFaces()) { + area += polygonArea(f) / f.degree(); + } + h0[vIdx] = area; + } + polygonHodge0 = h0.asDiagonal(); + polygonHodge0Inverse = h0.asDiagonal().inverse(); + + // hodge1 (inner product matrix on 1-forms) + polygonHodge1 = Eigen::SparseMatrix(E, E); + Eigen::MatrixXd Mf; // local per-polygon matrix + std::vector eIndices; // indices of edges of polygon face + for (Face f : mesh.faces()) { + eIndices.clear(); + // Assumes edge iterator goes in same order as vertex iterator around a face + for (Edge e : f.adjacentVertices()) eIndices.push_back(edgeIndices[e]); + size_t n = f.degree(); + // Add contribution to global mass matrix. + Mf = polygonPerFaceInnerProductMatrix(f); + for (size_t j = 0; j < n; j++) { + for (size_t i = 0; i < n; i++) { + triplets.emplace_back(eIndices[i], eIndices[j], Mf(i, j)); + } + } + } + polygonHodge1.setFromTriplets(tripletsH1.begin(), tripletsH1.end()); + + // hodge2 + Eigen::VectorXd h2(F); + for (Face f : mesh.faces()) { + size_t fIdx = faceIndices[f]; + h2[fIdx] = polygonArea(f); + } + polygonHodge2 = h0.asDiagonal(); + polygonHodge2Inverse = h0.asDiagonal().inverse(); } void EmbeddedGeometryInterface::requirePolygonDECOperators() { polygonDECOperatorsQ.require(); } void EmbeddedGeometryInterface::unrequirePolygonDECOperators() { polygonDECOperatorsQ.unrequire(); } @@ -957,12 +926,8 @@ Eigen::MatrixXd EmbeddedGeometryInterface::polygonPerFaceLaplacian(const Face& f return Df.transpose() * buildPerFaceMassMatrix(f) * Df; // build positive-definite } -Eigen::MatrixXd EmbeddedGeometryInterface::polygonPerFaceDivergence(const Face& f) const { - return -1. * polygonDerivativeMatrix(f).transpose() * buildPerFaceMassMatrix(f); -} - -Eigen::MatrixXd EmbeddedGeometryInterface::polygonPerFaceMassMatrix(const Face& f) const { - Eigen::MatrixXd Uf = sharp(f); +Eigen::MatrixXd EmbeddedGeometryInterface::polygonPerFaceInnerProductMatrix(const Face& f) const { + Eigen::MatrixXd Uf = polygonSharp(f); Eigen::MatrixXd Pf = polygonProjectionMatrix(f); double A = polygonArea(f); return A * Uf.transpose() * Uf + lambda * Pf.transpose() * Pf; From 1cf4845b7d8d81f9d5a304ae687589d5dac937db Mon Sep 17 00:00:00 2001 From: nzfeng Date: Fri, 2 Feb 2024 11:44:29 -0500 Subject: [PATCH 06/21] Get rid of simple polygon DEC operators (d0 and hodge1) because they act on the virtual triangle refinement, which will (should?) never get exposed to users --- .../surface/embedded_geometry_interface.h | 4 +- src/surface/embedded_geometry_interface.cpp | 84 +------------------ 2 files changed, 3 insertions(+), 85 deletions(-) diff --git a/include/geometrycentral/surface/embedded_geometry_interface.h b/include/geometrycentral/surface/embedded_geometry_interface.h index 482df6c2..a0677cd0 100644 --- a/include/geometrycentral/surface/embedded_geometry_interface.h +++ b/include/geometrycentral/surface/embedded_geometry_interface.h @@ -149,9 +149,6 @@ class EmbeddedGeometryInterface : public ExtrinsicGeometryInterface { virtual void computeVirtualRefinementAreaWeights(); virtual Eigen::MatrixXd simplePolygonMassMatrix(const Face& f) const; virtual Eigen::MatrixXd simplePolygonStiffnessMatrix(const Face& f) const; - virtual SparseMatrix simplePolygonDivergenceMatrix() const; // TODO: axe? - virtual SparseMatrix simplePolygonGradientMatrix() const; // TODO: axe? - virtual SparseMatrix simplePolygonGradientMassMatrix() const; // TODO: axe? virtual SparseMatrix simplePolygonProlongationMatrix() const; virtual Eigen::MatrixXd polygonPositionMatrix(const Face& f) const; virtual Eigen::VectorXd simplePolygonVirtualVertex(const Eigen::MatrixXd& poly) const; @@ -177,6 +174,7 @@ class EmbeddedGeometryInterface : public ExtrinsicGeometryInterface { virtual void computePolygonDECOperators(); // helper functions + const double polygonLambda = 1.0; virtual Eigen::MatrixXd polygonPerFaceLaplacian(const Face& f) const; virtual Eigen::MatrixXd polygonPerFaceInnerProductMatrix(const Face& f) const; virtual Eigen::MatrixXd polygonProjectionMatrix(const Face& f) const; diff --git a/src/surface/embedded_geometry_interface.cpp b/src/surface/embedded_geometry_interface.cpp index 350b3ad1..8851c883 100644 --- a/src/surface/embedded_geometry_interface.cpp +++ b/src/surface/embedded_geometry_interface.cpp @@ -542,86 +542,6 @@ Eigen::MatrixXd EmbeddedGeometryInterface::simplePolygonStiffnessMatrix(const Fa return S; } -SparseMatrix EmbeddedGeometryInterface::simplePolygonDivergenceMatrix() const { - SparseMatrix G = simplePolygonGradientMatrix(); - SparseMatrix M = simplePolygonGradientMassMatrix(); - return -G.transpose() * M; // take convention that outflow is positive -} - -SparseMatrix EmbeddedGeometryInterface::simplePolygonGradientMatrix() const { - virtualRefinementAreaWeightsQ.ensureHave(); - vertexIndicesQ.ensureHave(); - vertexPositionsQ.ensureHave(); - faceIndicesQ.ensureHave(); - - // Builds a matrix G ∈ (R^3)^{|T^f| x |V|}, which gets built as a 3|T^f| x |V| matrix. - size_t V = mesh.nVertices(); - size_t F = mesh.nFaces(); - SparseMatrix G; - std::vector> triplets; - size_t nTriangles = 0; - size_t k = 0; - for (Face f : mesh.faces()) { - size_t fIdx = faceIndices[f]; - nTriangles += f.degree(); - Eigen::MatrixXd poly = polygonPositionMatrix(f); - const Eigen::VectorXd& weights = virtualRefinementAreaWeights[f]; - Eigen::Vector3d p = poly.transpose() * weights; - for (Halfedge he : f.adjacentHalfedges()) { - size_t v0 = vertexIndices[he.tailVertex()]; - size_t v1 = vertexIndices[he.tipVertex()]; - Vector3 p0 = vertexPositions[v0]; - Vector3 p1 = vertexPositions[v1]; - Vector3 grad_p = gradientHatFunction(p, p0, p1); - Vector3 grad_p0 = gradientHatFunction(p0, p1, p); - Vector3 grad_p1 = gradientHatFunction(p1, p, p0); - for (size_t j = 0; j < 3; j++) { - triplets.emplace_back(3 * k + j, V + fIdx, grad_p[j]); - triplets.emplace_back(3 * k + j, v0, grad_p0[j]); - triplets.emplace_back(3 * k + j, v1, grad_p1[j]); - } - k++; - } - } - G.resize(3 * nTriangles, V + F); - G.setFromTriplets(triplets.begin(), triplets.end()); - SparseMatrix P = simplePolygonProlongationMatrix(); - G = G * P; - return G; -} - -SparseMatrix EmbeddedGeometryInterface::simplePolygonGradientMassMatrix() const { - virtualRefinementAreaWeightsQ.ensureHave(); - vertexPositionsQ.ensureHave(); - - // Block diagonal matrix whose i-th block consists of the 3×3 identity matrix multiplied by the area of the i-th - // triangle. - SparseMatrix M; - std::vector> triplets; - size_t c = 0; - for (Face f : mesh.faces()) { - Eigen::MatrixXd poly = polygonPositionMatrix(f); - const Eigen::VectorXd& weights = virtualRefinementAreaWeights[f]; - Eigen::Vector3d areaPoint = poly.transpose() * weights; - Vector3 ap = {areaPoint[0], areaPoint[1], areaPoint[2]}; - size_t i = 0; - for (Halfedge he : f.adjacentHalfedges()) { - Vector3 p0 = vertexPositions[he.tailVertex()]; - Vector3 p1 = vertexPositions[he.tipVertex()]; - double area = 0.5 * cross(p0 - ap, p1 - ap).norm(); - for (size_t j = 0; j < 3; j++) { - size_t idx = c + 3 * i + j; - triplets.emplace_back(idx, idx, area); - } - i++; - } - c += f.degree() * 3; - } - M.resize(c, c); - M.setFromTriplets(triplets.begin(), triplets.end()); - return M; -} - SparseMatrix EmbeddedGeometryInterface::simplePolygonProlongationMatrix() const { virtualRefinementAreaWeightsQ.ensureHave(); vertexIndicesQ.ensureHave(); @@ -930,14 +850,14 @@ Eigen::MatrixXd EmbeddedGeometryInterface::polygonPerFaceInnerProductMatrix(cons Eigen::MatrixXd Uf = polygonSharp(f); Eigen::MatrixXd Pf = polygonProjectionMatrix(f); double A = polygonArea(f); - return A * Uf.transpose() * Uf + lambda * Pf.transpose() * Pf; + return A * Uf.transpose() * Uf + polygonLambda * Pf.transpose() * Pf; } Eigen::MatrixXd EmbeddedGeometryInterface::polygonPerFaceConnectionLaplacian(const Face& f) const { Eigen::MatrixXd G = polygonCovariantGradient(f); Eigen::MatrixXd P = polygonCovariantProjection(f); double A = polygonArea(f); - Eigen::MatrixXd L = A * G.transpose() * G + lambda * P.transpose() * P; // build positive-definite + Eigen::MatrixXd L = A * G.transpose() * G + polygonLambda * P.transpose() * P; // build positive-definite return L; } From af97d8dcf220fb28192346cafe072e1a1b0148f9 Mon Sep 17 00:00:00 2001 From: nzfeng Date: Fri, 2 Feb 2024 15:44:32 -0500 Subject: [PATCH 07/21] Add gradient and divergence operators --- docs/docs/surface/geometry/quantities.md | 40 ++++++-- .../surface/embedded_geometry_interface.h | 19 +++- src/surface/embedded_geometry_interface.cpp | 94 ++++++++++++++----- 3 files changed, 123 insertions(+), 30 deletions(-) diff --git a/docs/docs/surface/geometry/quantities.md b/docs/docs/surface/geometry/quantities.md index 4467312b..0350a140 100644 --- a/docs/docs/surface/geometry/quantities.md +++ b/docs/docs/surface/geometry/quantities.md @@ -426,7 +426,7 @@ All operators are indexed over mesh elements according to the natural iteration A $|V| \times |V|$ real matrix. Always symmetric and positive semi-definite. If and only the underlying geometry is _Delaunay_, the matrix will furthermore have all negative off-diagonal entries, satisfy a maximum principle, and be an _M-matrix_. - This is the _weak_ Laplace operator, if we use it to evalutae $\mathsf{y} \leftarrow \mathsf{L} \mathsf{x}$, $\mathsf{x}$ should hold _pointwise_ quantities at vertices, and the result $\mathsf{y}$ will contain _integrated_ values of the result in the neighborhood of each vertex. If used to solve a Poisson problem, a mass matrix (such as the lumped or Galerkin mass matrices below) are likely necessary on the right hand side. + This is the _weak_ Laplace operator, if we use it to evaluate $\mathsf{y} \leftarrow \mathsf{L} \mathsf{x}$, $\mathsf{x}$ should hold _pointwise_ quantities at vertices, and the result $\mathsf{y}$ will contain _integrated_ values of the result in the neighborhood of each vertex. If used to solve a Poisson problem, a mass matrix (such as the lumped or Galerkin mass matrices below) are likely necessary on the right hand side. Only valid on triangular meshes. @@ -596,9 +596,9 @@ And here are polygon mesh operators from [de Goes et al.'s _Discrete Differentia ##### polygon Laplacian - The discrete Laplace operator acting on polygon meshes, using de Goes et al.'s virtual element method in _Discrete Differential Operators on Polygonal Meshes_. + The discrete Laplace operator acting on polygon meshes, using de Goes et al.'s _Discrete Differential Operators on Polygonal Meshes_. - A $|V| \times |V|$ real matrix. Always symmetric and positive semi-definite. Takes in an additional parameter $\lambda$ whose default is $1$. On triangle meshes, this polygon Laplacian becomes the standard cotan Laplacian with $\lambda=0$. + A $|V| \times |V|$ real matrix. Always symmetric and positive semi-definite. Uses an additional parameter $\lambda$ whose default value is $1$. On triangle meshes, this polygon Laplacian becomes the standard cotan Laplacian. This is the _weak_ Laplace operator. @@ -607,11 +607,39 @@ And here are polygon mesh operators from [de Goes et al.'s _Discrete Differentia - **member:** `Eigen::SparseMatrix EmbeddedGeometryInterface::polygonLaplacian` - **require:** `void EmbeddedGeometryInterface::requirePolygonLaplacian()` +??? func "polygon gradient matrix" + + ##### polygon gradient matrix + + The discrete gradient operator acting on polygon meshes, using de Goes et al.'s _Discrete Differential Operators on Polygonal Meshes_. + + A $3|F| \times |V|$ real matrix $\mathsf{G}$. If $\mathsf{x}\in\mathbb{R}^{|V|}$ holds pointwise quantities at vertices, then $\mathsf{y} \leftarrow \mathsf{G}\mathsf{x}\in\mathbb{R}^{3|F|}$ gives the face-wise constant gradient of $\mathsf{x}$, where the gradient in face $f$ is the vector $[\mathsf{y}_{3f}, \mathsf{y}_{3f+1}, \mathsf{y}_{3f+2}]^\top$. + + Only valid on an `EmbeddedGeometryInterface`. + + - **member:** `Eigen::SparseMatrix EmbeddedGeometryInterface::polygonGradientMatrix` + - **require:** `void EmbeddedGeometryInterface::requirePolygonGradientMatrix()` + +??? func "polygon divergence matrix" + + ##### polygon divergence matrix + + The discrete divergence operator acting on polygon meshes, using de Goes et al.'s _Discrete Differential Operators on Polygonal Meshes_. + + A $|V| \times 3|F|$ real matrix $\mathsf{D}$. If $\mathsf{x}\in\mathbb{R}^{3|F|}$ defines a face-wise constant vector field whose value in face $f$ is the vector $[\mathsf{x}_{3f}, \mathsf{x}_{3f+1}, \mathsf{x}_{3f+2}]^\top$, then $\mathsf{y} \leftarrow \mathsf{D}\mathsf{x}\in\mathbb{R}^{|V|}$ gives the divergence of $\mathsf{x}$ as pointwise quantities at vertices. + + The divergence matrix $\mathsf{D}$ is related to the gradient matrix $\mathsf{G}$ as $\mathsf{D} = \mathsf{G}^\top\mathsf{M}$, where $\mathsf{M}\in\mathbb{R}^{3|F|}$ is a diagonal mass matrix containing face areas (the same that appear in `EmbeddedGeometryInterface::polygonHodge2`.) We use the convention that inflow corresponds to positive divergence. + + Only valid on an `EmbeddedGeometryInterface`. + + - **member:** `Eigen::SparseMatrix EmbeddedGeometryInterface::polygonGradientMatrix` + - **require:** `void EmbeddedGeometryInterface::requirePolygonGradientMatrix()` + ??? func "polygon mesh vertex lumped mass matrix" ##### polygon mesh vertex lumped mass matrix - A $|V| \times |V|$ real diagonal matrix, using de Goes et al.'s virtual element method in _Discrete Differential Operators on Polygonal Meshes_. + A $|V| \times |V|$ real diagonal matrix, using de Goes et al.'s _Discrete Differential Operators on Polygonal Meshes_. Only valid on an `EmbeddedGeometryInterface`. @@ -639,9 +667,9 @@ And here are polygon mesh operators from [de Goes et al.'s _Discrete Differentia ##### polygon DEC operators - These operators are the basic building blocks for _discrete exterior calculus_ on polygon meshes, using de Goes et al.'s virtual element method in _Discrete Differential Operators on Polygonal Meshes_. Takes in an additional parameter $\lambda$ defining a stabilization term to ensure inner products of discrete 1-forms remain positive-definite on non-triangular faces. + These operators are the basic building blocks for _discrete exterior calculus_ on polygon meshes, using de Goes et al.'s _Discrete Differential Operators on Polygonal Meshes_. Takes in an additional parameter $\lambda$ defining a stabilization term to ensure inner products of discrete 1-forms remain positive-definite on non-triangular faces. - **Note:** These quantities slightly deviate from the usual naming scheme for quantities. Rather than `requireD0()`, `requireD1()`, etc, there is a single `requirePolygonDECOperators()` function which manages all 8 of the members listed below. + **Note:** These quantities slightly deviate from the usual naming scheme for quantities. Rather than `requireD0()`, `requireD1()`, etc, there is a single `requirePolygonDECOperators()` function which manages all 7 of the members listed below. The following members are constructed: diff --git a/include/geometrycentral/surface/embedded_geometry_interface.h b/include/geometrycentral/surface/embedded_geometry_interface.h index a0677cd0..e751d52b 100644 --- a/include/geometrycentral/surface/embedded_geometry_interface.h +++ b/include/geometrycentral/surface/embedded_geometry_interface.h @@ -82,6 +82,16 @@ class EmbeddedGeometryInterface : public ExtrinsicGeometryInterface { void requirePolygonLaplacian(); void unrequirePolygonLaplacian(); + // Gradient matrix + Eigen::SparseMatrix polygonGradientMatrix; + void requirePolygonGradientMatrix(); + void unrequirePolygonGradientMatrix(); + + // Divergence matrix + Eigen::SparseMatrix polygonDivergenceMatrix; + void requirePolygonDivergenceMatrix(); + void unrequirePolygonDivergenceMatrix(); + // Vertex mass matrix (lumped) Eigen::SparseMatrix polygonVertexLumpedMassMatrix; void requirePolygonVertexLumpedMassMatrix(); @@ -152,7 +162,6 @@ class EmbeddedGeometryInterface : public ExtrinsicGeometryInterface { virtual SparseMatrix simplePolygonProlongationMatrix() const; virtual Eigen::MatrixXd polygonPositionMatrix(const Face& f) const; virtual Eigen::VectorXd simplePolygonVirtualVertex(const Eigen::MatrixXd& poly) const; - virtual Vector3 gradientHatFunction(const Vector3& a, const Vector3& b, const Vector3& c) const; // TODO: axe? // = de Goes et al. "Discrete Differential Operators on Polygonal Meshes" (2020), based on the virtual element method. @@ -160,6 +169,12 @@ class EmbeddedGeometryInterface : public ExtrinsicGeometryInterface { DependentQuantityD> polygonLaplacianQ; virtual void computePolygonLaplacian(); + DependentQuantityD> polygonGradientMatrixQ; + virtual void computePolygonGradientMatrix(); + + DependentQuantityD> polygonDivergenceMatrixQ; + virtual void computePolygonDivergenceMatrix(); + // Vertex mass matrix (lumped) DependentQuantityD> polygonVertexLumpedMassMatrixQ; virtual void computePolygonVertexLumpedMassMatrix(); @@ -178,8 +193,8 @@ class EmbeddedGeometryInterface : public ExtrinsicGeometryInterface { virtual Eigen::MatrixXd polygonPerFaceLaplacian(const Face& f) const; virtual Eigen::MatrixXd polygonPerFaceInnerProductMatrix(const Face& f) const; virtual Eigen::MatrixXd polygonProjectionMatrix(const Face& f) const; + virtual Eigen::MatrixXd polygonPerFaceGradientMatrix(const Face& f) const; virtual Eigen::MatrixXd polygonCoGradientMatrix(const Face& f) const; - virtual Eigen::MatrixXd polygonGradientMatrix(const Face& f) const; virtual Eigen::MatrixXd polygonAveragingMatrix(const Face& f) const; virtual Eigen::MatrixXd polygonDerivativeMatrix(const Face& f) const; virtual Eigen::MatrixXd polygonEdgeVectorMatrix(const Face& f) const; diff --git a/src/surface/embedded_geometry_interface.cpp b/src/surface/embedded_geometry_interface.cpp index 8851c883..dd9349c8 100644 --- a/src/surface/embedded_geometry_interface.cpp +++ b/src/surface/embedded_geometry_interface.cpp @@ -25,6 +25,8 @@ EmbeddedGeometryInterface::EmbeddedGeometryInterface(SurfaceMesh& mesh_) : simplePolygonVertexLumpedMassMatrixQ (&simplePolygonVertexLumpedMassMatrix, std::bind(&EmbeddedGeometryInterface::computeSimplePolygonVertexLumpedMassMatrix, this), quantities), polygonLaplacianQ (&polygonLaplacian, std::bind(&EmbeddedGeometryInterface::computePolygonLaplacian, this), quantities), + polygonGradientMatrixQ (&polygonGradientMatrix, std::bind(&EmbeddedGeometryInterface::computePolygonGradientMatrix, this), quantities), + polygonDivergenceMatrixQ (&polygonDivergenceMatrix, std::bind(&EmbeddedGeometryInterface::computePolygonDivergenceMatrix, this), quantities), polygonVertexLumpedMassMatrixQ (&polygonVertexLumpedMassMatrix, std::bind(&EmbeddedGeometryInterface::computePolygonVertexLumpedMassMatrix, this), quantities), polygonVertexConnectionLaplacianQ (&polygonVertexConnectionLaplacian, std::bind(&EmbeddedGeometryInterface::computePolygonVertexConnectionLaplacian, this), quantities), @@ -663,22 +665,6 @@ Eigen::VectorXd EmbeddedGeometryInterface::simplePolygonVirtualVertex(const Eige return weights; } -Vector3 EmbeddedGeometryInterface::gradientHatFunction(const Vector3& a, const Vector3& b, const Vector3& c) const { - Vector3 gradient; - Vector3 site = a - b; - Vector3 base = c - b; - double area = 0.5 * (cross(site, base)).norm(); - double baseNorm = base.norm(); - Vector3 grad = site - (dot(site, base) / baseNorm) * base / baseNorm; - if (area < 1e-10) { - gradient = Vector3::Zero; - } else { - grad = baseNorm * grad / grad.norm(); - gradient = grad / (2.0 * area); - } - return gradient; -} - // = de Goes et al. "Discrete Differential Operators on Polygonal Meshes" (2020), based on the virtual element method. @@ -710,6 +696,69 @@ void EmbeddedGeometryInterface::requirePolygonLaplacian() { polygonLaplacianQ.re void EmbeddedGeometryInterface::unrequirePolygonLaplacian() { polygonLaplacianQ.unrequire(); } +// Gradient matrix +void EmbeddedGeometryInterface::computePolygonGradientMatrix() { + vertexIndicesQ.ensureHave(); + faceIndicesQ.ensureHave(); + + size_t V = mesh.nVertices(); + size_t F = mesh.nFaces(); + polygonGradientMatrix = Eigen::SparseMatrix(3 * F, V); + std::vector> triplets; + // Assemble per-face operators. + Eigen::MatrixXd Gf; // local per-polygon matrix + std::vector vIndices; // indices of vertices of polygon face + for (Face f : mesh.faces()) { + size_t fIdx = faceIndices[f]; + vIndices.clear(); + for (Vertex v : f.adjacentVertices()) vIndices.push_back(vertexIndices[v]); + size_t n = f.degree(); + // Add contribution to global matrix. + Gf = polygonPerFaceGradientMatrix(f); // 3 x nf + for (size_t i = 0; i < 3; i++) { + for (size_t j = 0; j < n; j++) { + triplets.emplace_back(3 * fIdx + i, vIndices[j], Gf(i, j)); + } + } + } + polygonGradientMatrix.setFromTriplets(triplets.begin(), triplets.end()); +} +void EmbeddedGeometryInterface::requirePolygonGradientMatrix() { polygonGradientMatrixQ.require(); } +void EmbeddedGeometryInterface::unrequirePolygonGradientMatrix() { polygonGradientMatrixQ.unrequire(); } + + +// Gradient matrix +void EmbeddedGeometryInterface::computePolygonDivergenceMatrix() { + vertexIndicesQ.ensureHave(); + faceIndicesQ.ensureHave(); + + size_t V = mesh.nVertices(); + size_t F = mesh.nFaces(); + polygonDivergenceMatrix = Eigen::SparseMatrix(V, 3 * F); + std::vector> triplets; + // Assemble per-face operators. + Eigen::MatrixXd Gf; // local per-polygon matrix + std::vector vIndices; // indices of vertices of polygon face + for (Face f : mesh.faces()) { + size_t fIdx = faceIndices[f]; + double area = polygonArea(f); + vIndices.clear(); + for (Vertex v : f.adjacentVertices()) vIndices.push_back(vertexIndices[v]); + size_t n = f.degree(); + // Add contribution to global matrix. + Gf = polygonPerFaceGradientMatrix(f); // 3 x nf + for (size_t i = 0; i < 3; i++) { + for (size_t j = 0; j < n; j++) { + triplets.emplace_back(vIndices[j], 3 * fIdx + i, Gf(i, j) * area); + } + } + } + polygonDivergenceMatrix.setFromTriplets(triplets.begin(), triplets.end()); +} +void EmbeddedGeometryInterface::requirePolygonDivergenceMatrix() { polygonDivergenceMatrixQ.require(); } +void EmbeddedGeometryInterface::unrequirePolygonDivergenceMatrix() { polygonDivergenceMatrixQ.unrequire(); } + + // Vertex mass matrix (lumped) void EmbeddedGeometryInterface::computePolygonVertexLumpedMassMatrix() { vertexIndicesQ.ensureHave(); @@ -874,7 +923,7 @@ Eigen::MatrixXd EmbeddedGeometryInterface::polygonBlockConnection(const Face& f) } Eigen::MatrixXd EmbeddedGeometryInterface::polygonCovariantGradient(const Face& f) const { - return kroneckerWithI2(Tf(f).transpose() * polygonGradientMatrix(f)) * blockConnection(f); + return kroneckerWithI2(Tf(f).transpose() * polygonPerFaceGradientMatrix(f)) * blockConnection(f); } Eigen::MatrixXd EmbeddedGeometryInterface::polygonCovariantProjection(const Face& f) const { @@ -887,17 +936,18 @@ Eigen::MatrixXd EmbeddedGeometryInterface::polygonProjectionMatrix(const Face& f return P; } -Eigen::MatrixXd EmbeddedGeometryInterface::polygonCoGradientMatrix(const Face& f) const { - return polygonEdgeVectorMatrix(f).transpose() * polygonAveragingMatrix(f); -} - -Eigen::MatrixXd EmbeddedGeometryInterface::polygonGradientMatrix(const Face& f) const { +Eigen::MatrixXd EmbeddedGeometryInterface::polygonPerFaceGradientMatrix(const Face& f) const { + // equivalent to applying the (per-face) sharp operator to the (per-face) exterior derivative Eigen::Vector3d An = vectorArea(f); double A = An.norm(); Eigen::Vector3d N = An / A; return -1. / A * bracket(N) * polygonCoGradientMatrix(f); } +Eigen::MatrixXd EmbeddedGeometryInterface::polygonCoGradientMatrix(const Face& f) const { + return polygonEdgeVectorMatrix(f).transpose() * polygonAveragingMatrix(f); +} + Eigen::MatrixXd EmbeddedGeometryInterface::polygonAveragingMatrix(const Face& f) const { size_t d = f.degree(); Eigen::MatrixXd A = Eigen::MatrixXd::Zero(d, d); From eb373705fe38ff38a3cc6f4a3e9aa70367bf7765 Mon Sep 17 00:00:00 2001 From: nzfeng Date: Fri, 2 Feb 2024 17:32:51 -0500 Subject: [PATCH 08/21] Fix some typos and required quantities --- .../surface/embedded_geometry_interface.h | 56 ++++---- src/surface/embedded_geometry_interface.cpp | 127 ++++++++++-------- 2 files changed, 102 insertions(+), 81 deletions(-) diff --git a/include/geometrycentral/surface/embedded_geometry_interface.h b/include/geometrycentral/surface/embedded_geometry_interface.h index e751d52b..f08d0d10 100644 --- a/include/geometrycentral/surface/embedded_geometry_interface.h +++ b/include/geometrycentral/surface/embedded_geometry_interface.h @@ -58,8 +58,6 @@ class EmbeddedGeometryInterface : public ExtrinsicGeometryInterface { // = Bunge et al. "Polygon Laplacian Made Simple" (2020), based on virtual refinement (virtual node method). - FaceData> virtualRefinementAreaWeights; - // Laplacian Eigen::SparseMatrix simplePolygonLaplacian; void requireSimplePolygonLaplacian(); @@ -155,12 +153,13 @@ class EmbeddedGeometryInterface : public ExtrinsicGeometryInterface { virtual void computeSimplePolygonVertexLumpedMassMatrix(); // helper functions + FaceData virtualRefinementAreaWeights; DependentQuantityD> virtualRefinementAreaWeightsQ; // affine weights for each virtual node virtual void computeVirtualRefinementAreaWeights(); - virtual Eigen::MatrixXd simplePolygonMassMatrix(const Face& f) const; - virtual Eigen::MatrixXd simplePolygonStiffnessMatrix(const Face& f) const; - virtual SparseMatrix simplePolygonProlongationMatrix() const; - virtual Eigen::MatrixXd polygonPositionMatrix(const Face& f) const; + virtual Eigen::MatrixXd simplePolygonMassMatrix(const Face& f); + virtual Eigen::MatrixXd simplePolygonStiffnessMatrix(const Face& f); + virtual SparseMatrix simplePolygonProlongationMatrix(); + virtual Eigen::MatrixXd polygonPositionMatrix(const Face& f); virtual Eigen::VectorXd simplePolygonVirtualVertex(const Eigen::MatrixXd& poly) const; // = de Goes et al. "Discrete Differential Operators on Polygonal Meshes" (2020), based on the virtual element method. @@ -190,31 +189,34 @@ class EmbeddedGeometryInterface : public ExtrinsicGeometryInterface { // helper functions const double polygonLambda = 1.0; - virtual Eigen::MatrixXd polygonPerFaceLaplacian(const Face& f) const; - virtual Eigen::MatrixXd polygonPerFaceInnerProductMatrix(const Face& f) const; - virtual Eigen::MatrixXd polygonProjectionMatrix(const Face& f) const; - virtual Eigen::MatrixXd polygonPerFaceGradientMatrix(const Face& f) const; - virtual Eigen::MatrixXd polygonCoGradientMatrix(const Face& f) const; + VertexData polygonVertexNormals; + DependentQuantityD> polygonVertexNormalsQ; + virtual void computePolygonVertexNormals(); + virtual Eigen::MatrixXd polygonPerFaceLaplacian(const Face& f); + virtual Eigen::MatrixXd polygonPerFaceInnerProductMatrix(const Face& f); + virtual Eigen::MatrixXd polygonProjectionMatrix(const Face& f); + virtual Eigen::MatrixXd polygonPerFaceGradientMatrix(const Face& f); + virtual Eigen::MatrixXd polygonCoGradientMatrix(const Face& f); virtual Eigen::MatrixXd polygonAveragingMatrix(const Face& f) const; virtual Eigen::MatrixXd polygonDerivativeMatrix(const Face& f) const; - virtual Eigen::MatrixXd polygonEdgeVectorMatrix(const Face& f) const; - virtual Eigen::MatrixXd polygonEdgeMidpointMatrix(const Face& f) const; - virtual Eigen::MatrixXd polygonFlat(const Face& f) const; - virtual Eigen::MatrixXd polygonSharp(const Face& f) const; - virtual Eigen::Vector3d polygonVectorArea(const Face& f) const; - virtual double polygonArea(const Face& f) const; - virtual Eigen::Vector3d polygonNormal(const Face& f) const; - virtual Eigen::Vector3d polygonCentroid(const Face& f) const; + virtual Eigen::MatrixXd polygonEdgeVectorMatrix(const Face& f); + virtual Eigen::MatrixXd polygonEdgeMidpointMatrix(const Face& f); + virtual Eigen::MatrixXd polygonFlat(const Face& f); + virtual Eigen::MatrixXd polygonSharp(const Face& f); + virtual Eigen::Vector3d polygonVectorArea(const Face& f); + virtual double polygonArea(const Face& f); + virtual Eigen::Vector3d polygonNormal(const Face& f); + virtual Eigen::Vector3d polygonCentroid(const Face& f); // connections - virtual Eigen::MatrixXd polygonPerFaceConnectionLaplacian(const Face& f) const; - virtual Eigen::MatrixXd polygonBlockConnection(const Face& f) const; - virtual Eigen::MatrixXd polygonCovariantGradient(const Face& f) const; - virtual Eigen::MatrixXd polygonCovariantProjection(const Face& f) const; + virtual Eigen::MatrixXd polygonPerFaceConnectionLaplacian(const Face& f); + virtual Eigen::MatrixXd polygonBlockConnection(const Face& f); + virtual Eigen::MatrixXd polygonCovariantGradient(const Face& f); + virtual Eigen::MatrixXd polygonCovariantProjection(const Face& f); // tangent space helpers - virtual Eigen::MatrixXd Tv(const Vertex& v) const; - virtual Eigen::MatrixXd Tf(const Face& f) const; - virtual Eigen::Matrix2d Rvf(const Vertex& v, const Face& f) const; - virtual Eigen::Matrix3d Qvf(const Vertex& v, const Face& f) const; + virtual Eigen::MatrixXd Tv(const Vertex& v); + virtual Eigen::MatrixXd Tf(const Face& f); + virtual Eigen::Matrix2d Rvf(const Vertex& v, const Face& f); + virtual Eigen::Matrix3d Qvf(const Vertex& v, const Face& f); // helpers to the helper functions: generic linear algebra stuff, though probably wouldn't find much use elsewhere // so keeping them here -- also they use Eigen::Vectors here for matrix-multiply compatibility. virtual Eigen::Matrix3d bracket(const Eigen::Vector3d& n) const; diff --git a/src/surface/embedded_geometry_interface.cpp b/src/surface/embedded_geometry_interface.cpp index dd9349c8..d56cbbfd 100644 --- a/src/surface/embedded_geometry_interface.cpp +++ b/src/surface/embedded_geometry_interface.cpp @@ -19,10 +19,10 @@ EmbeddedGeometryInterface::EmbeddedGeometryInterface(SurfaceMesh& mesh_) : vertexTangentBasisQ (&vertexTangentBasis, std::bind(&EmbeddedGeometryInterface::computeVertexTangentBasis, this), quantities), vertexDualMeanCurvatureNormalsQ (&vertexDualMeanCurvatureNormals, std::bind(&EmbeddedGeometryInterface::computeVertexDualMeanCurvatureNormals, this), quantities), - virtualRefinementAreaWeightsQ (&virtualRefinementAreaWeights, std::bind(&EmbeddedGeometryInterface::computeVirtualRefinementAreaWeights, this), quantities), simplePolygonLaplacianQ (&simplePolygonLaplacian, std::bind(&EmbeddedGeometryInterface::computeSimplePolygonLaplacian, this), quantities), simplePolygonVertexGalerkinMassMatrixQ (&simplePolygonVertexGalerkinMassMatrix, std::bind(&EmbeddedGeometryInterface::computeSimplePolygonVertexGalerkinMassMatrix, this), quantities), simplePolygonVertexLumpedMassMatrixQ (&simplePolygonVertexLumpedMassMatrix, std::bind(&EmbeddedGeometryInterface::computeSimplePolygonVertexLumpedMassMatrix, this), quantities), + virtualRefinementAreaWeightsQ (&virtualRefinementAreaWeights, std::bind(&EmbeddedGeometryInterface::computeVirtualRefinementAreaWeights, this), quantities), polygonLaplacianQ (&polygonLaplacian, std::bind(&EmbeddedGeometryInterface::computePolygonLaplacian, this), quantities), polygonGradientMatrixQ (&polygonGradientMatrix, std::bind(&EmbeddedGeometryInterface::computePolygonGradientMatrix, this), quantities), @@ -31,7 +31,8 @@ EmbeddedGeometryInterface::EmbeddedGeometryInterface(SurfaceMesh& mesh_) : polygonVertexConnectionLaplacianQ (&polygonVertexConnectionLaplacian, std::bind(&EmbeddedGeometryInterface::computePolygonVertexConnectionLaplacian, this), quantities), polygonDECOperatorArray{&polygonHodge0, &polygonHodge0Inverse, &polygonHodge1, &polygonHodge2, &polygonHodge2Inverse, &polygonD0, &polygonD1}, - polygonDECOperatorsQ(&polygonDECOperatorArray, std::bind(&EmbeddedGeometryInterface::computePolygonDECOperators, this), quantities) + polygonDECOperatorsQ(&polygonDECOperatorArray, std::bind(&EmbeddedGeometryInterface::computePolygonDECOperators, this), quantities), + polygonVertexNormalsQ (&polygonVertexNormals, std::bind(&EmbeddedGeometryInterface::computePolygonVertexNormals, this), quantities) {} // clang-format on @@ -380,7 +381,7 @@ void EmbeddedGeometryInterface::computeSimplePolygonLaplacian() { for (Vertex v : f.adjacentVertices()) vIndices.push_back(vertexIndices[v]); size_t n = f.degree(); // Get local stiffness matrix. - Si = buildPolygonStiffnessMatrix(f); + Si = simplePolygonStiffnessMatrix(f); // Add contribution to global mass matrix. for (size_t j = 0; j < n; j++) { for (size_t i = 0; i < n; i++) { @@ -408,11 +409,11 @@ void EmbeddedGeometryInterface::computeSimplePolygonVertexGalerkinMassMatrix() { for (Vertex v : f.adjacentVertices()) vIndices.push_back(vertexIndices[v]); size_t n = f.degree(); // Get local mass matrix. - Mi = buildPolygonMassMatrix(f); + Mi = simplePolygonMassMatrix(f); // Add contribution to global mass matrix. for (size_t j = 0; j < n; j++) { for (size_t i = 0; i < n; i++) { - triplets.emplace_back(vIndices[i], vIndices[j], Si(i, j)); + triplets.emplace_back(vIndices[i], vIndices[j], Mi(i, j)); } } } @@ -431,7 +432,7 @@ void EmbeddedGeometryInterface::computeSimplePolygonVertexLumpedMassMatrix() { vertexIndicesQ.ensureHave(); size_t V = mesh.nVertices(); - simplePolygonVertexGalerkinMassMatrix = Eigen::SparseMatrix(V, V); + simplePolygonVertexLumpedMassMatrix = Eigen::SparseMatrix(V, V); std::vector> triplets; std::vector vIndices; // indices of vertices of polygon face Eigen::MatrixXd Mi; // local per-polygon matrix @@ -440,15 +441,15 @@ void EmbeddedGeometryInterface::computeSimplePolygonVertexLumpedMassMatrix() { for (Vertex v : f.adjacentVertices()) vIndices.push_back(vertexIndices[v]); size_t n = f.degree(); // Get local mass matrix. - Mi = buildPolygonMassMatrix(f); + Mi = simplePolygonMassMatrix(f); // Add contribution to global mass matrix. for (size_t j = 0; j < n; j++) { for (size_t i = 0; i < n; i++) { - triplets.emplace_back(vIndices[i], vIndices[i], Si(i, j)); + triplets.emplace_back(vIndices[i], vIndices[i], Mi(i, j)); } } } - simplePolygonVertexGalerkinMassMatrix.setFromTriplets(triplets.begin(), triplets.end()); + simplePolygonVertexLumpedMassMatrix.setFromTriplets(triplets.begin(), triplets.end()); } void EmbeddedGeometryInterface::requireSimplePolygonVertexLumpedMassMatrix() { simplePolygonVertexLumpedMassMatrixQ.require(); @@ -459,7 +460,7 @@ void EmbeddedGeometryInterface::unrequireSimplePolygonVertexLumpedMassMatrix() { // Helper functions -Eigen::MatrixXd EmbeddedGeometryInterface::simplePolygonMassMatrix(const Face& f) const { +Eigen::MatrixXd EmbeddedGeometryInterface::simplePolygonMassMatrix(const Face& f) { virtualRefinementAreaWeightsQ.ensureHave(); size_t n = f.degree(); @@ -498,7 +499,7 @@ Eigen::MatrixXd EmbeddedGeometryInterface::simplePolygonMassMatrix(const Face& f return M; } -Eigen::MatrixXd EmbeddedGeometryInterface::simplePolygonStiffnessMatrix(const Face& f) const { +Eigen::MatrixXd EmbeddedGeometryInterface::simplePolygonStiffnessMatrix(const Face& f) { virtualRefinementAreaWeightsQ.ensureHave(); size_t n = f.degree(); @@ -544,7 +545,7 @@ Eigen::MatrixXd EmbeddedGeometryInterface::simplePolygonStiffnessMatrix(const Fa return S; } -SparseMatrix EmbeddedGeometryInterface::simplePolygonProlongationMatrix() const { +SparseMatrix EmbeddedGeometryInterface::simplePolygonProlongationMatrix() { virtualRefinementAreaWeightsQ.ensureHave(); vertexIndicesQ.ensureHave(); @@ -580,7 +581,7 @@ void EmbeddedGeometryInterface::computeVirtualRefinementAreaWeights() { } } -Eigen::MatrixXd EmbeddedGeometryInterface::polygonPositionMatrix(const Face& f) const { +Eigen::MatrixXd EmbeddedGeometryInterface::polygonPositionMatrix(const Face& f) { vertexPositionsQ.ensureHave(); Eigen::MatrixXd poly(f.degree(), 3); @@ -819,6 +820,10 @@ void EmbeddedGeometryInterface::computePolygonDECOperators() { vertexIndicesQ.ensureHave(); edgeIndicesQ.ensureHave(); faceIndicesQ.ensureHave(); + + size_t V = mesh.nVertices(); + size_t E = mesh.nEdges(); + size_t F = mesh.nFaces(); std::vector> tripletsD0, tripletsD1, tripletsH1; // exterior derivatives the same as the simplicial case @@ -827,8 +832,8 @@ void EmbeddedGeometryInterface::computePolygonDECOperators() { size_t eIdx = edgeIndices[e]; size_t vA = vertexIndices[e.firstVertex()]; size_t vB = vertexIndices[e.secondVertex()]; - tripletsD0.emplace(eIdx, vA, 1.); - tripletsD0.emplace(eIdx, vB, -1.); + tripletsD0.emplace_back(eIdx, vA, 1.); + tripletsD0.emplace_back(eIdx, vB, -1.); } polygonD0.setFromTriplets(tripletsD0.begin(), tripletsD0.end()); @@ -863,13 +868,13 @@ void EmbeddedGeometryInterface::computePolygonDECOperators() { for (Face f : mesh.faces()) { eIndices.clear(); // Assumes edge iterator goes in same order as vertex iterator around a face - for (Edge e : f.adjacentVertices()) eIndices.push_back(edgeIndices[e]); + for (Edge e : f.adjacentEdges()) eIndices.push_back(edgeIndices[e]); size_t n = f.degree(); // Add contribution to global mass matrix. Mf = polygonPerFaceInnerProductMatrix(f); for (size_t j = 0; j < n; j++) { for (size_t i = 0; i < n; i++) { - triplets.emplace_back(eIndices[i], eIndices[j], Mf(i, j)); + tripletsH1.emplace_back(eIndices[i], eIndices[j], Mf(i, j)); } } } @@ -890,19 +895,19 @@ void EmbeddedGeometryInterface::unrequirePolygonDECOperators() { polygonDECOpera // Helper functions -Eigen::MatrixXd EmbeddedGeometryInterface::polygonPerFaceLaplacian(const Face& f) const { +Eigen::MatrixXd EmbeddedGeometryInterface::polygonPerFaceLaplacian(const Face& f) { Eigen::MatrixXd Df = polygonDerivativeMatrix(f); - return Df.transpose() * buildPerFaceMassMatrix(f) * Df; // build positive-definite + return Df.transpose() * polygonPerFaceInnerProductMatrix(f) * Df; // build positive-definite } -Eigen::MatrixXd EmbeddedGeometryInterface::polygonPerFaceInnerProductMatrix(const Face& f) const { +Eigen::MatrixXd EmbeddedGeometryInterface::polygonPerFaceInnerProductMatrix(const Face& f) { Eigen::MatrixXd Uf = polygonSharp(f); Eigen::MatrixXd Pf = polygonProjectionMatrix(f); double A = polygonArea(f); return A * Uf.transpose() * Uf + polygonLambda * Pf.transpose() * Pf; } -Eigen::MatrixXd EmbeddedGeometryInterface::polygonPerFaceConnectionLaplacian(const Face& f) const { +Eigen::MatrixXd EmbeddedGeometryInterface::polygonPerFaceConnectionLaplacian(const Face& f) { Eigen::MatrixXd G = polygonCovariantGradient(f); Eigen::MatrixXd P = polygonCovariantProjection(f); double A = polygonArea(f); @@ -910,7 +915,7 @@ Eigen::MatrixXd EmbeddedGeometryInterface::polygonPerFaceConnectionLaplacian(con return L; } -Eigen::MatrixXd EmbeddedGeometryInterface::polygonBlockConnection(const Face& f) const { +Eigen::MatrixXd EmbeddedGeometryInterface::polygonBlockConnection(const Face& f) { size_t d = f.degree(); Eigen::MatrixXd R = Eigen::MatrixXd::Zero(2 * d, 2 * d); size_t cpt = 0; @@ -922,29 +927,29 @@ Eigen::MatrixXd EmbeddedGeometryInterface::polygonBlockConnection(const Face& f) return R; } -Eigen::MatrixXd EmbeddedGeometryInterface::polygonCovariantGradient(const Face& f) const { - return kroneckerWithI2(Tf(f).transpose() * polygonPerFaceGradientMatrix(f)) * blockConnection(f); +Eigen::MatrixXd EmbeddedGeometryInterface::polygonCovariantGradient(const Face& f) { + return kroneckerWithI2(Tf(f).transpose() * polygonPerFaceGradientMatrix(f)) * polygonBlockConnection(f); } -Eigen::MatrixXd EmbeddedGeometryInterface::polygonCovariantProjection(const Face& f) const { - return kroneckerWithI2(polygonProjectionMatrix(f) * polygonDerivativeMatrix(f)) * blockConnection(f); +Eigen::MatrixXd EmbeddedGeometryInterface::polygonCovariantProjection(const Face& f) { + return kroneckerWithI2(polygonProjectionMatrix(f) * polygonDerivativeMatrix(f)) * polygonBlockConnection(f); } -Eigen::MatrixXd EmbeddedGeometryInterface::polygonProjectionMatrix(const Face& f) const { +Eigen::MatrixXd EmbeddedGeometryInterface::polygonProjectionMatrix(const Face& f) { size_t d = f.degree(); Eigen::MatrixXd P = Eigen::MatrixXd::Identity(d, d) - polygonFlat(f) * polygonSharp(f); return P; } -Eigen::MatrixXd EmbeddedGeometryInterface::polygonPerFaceGradientMatrix(const Face& f) const { +Eigen::MatrixXd EmbeddedGeometryInterface::polygonPerFaceGradientMatrix(const Face& f) { // equivalent to applying the (per-face) sharp operator to the (per-face) exterior derivative - Eigen::Vector3d An = vectorArea(f); + Eigen::Vector3d An = polygonVectorArea(f); double A = An.norm(); Eigen::Vector3d N = An / A; return -1. / A * bracket(N) * polygonCoGradientMatrix(f); } -Eigen::MatrixXd EmbeddedGeometryInterface::polygonCoGradientMatrix(const Face& f) const { +Eigen::MatrixXd EmbeddedGeometryInterface::polygonCoGradientMatrix(const Face& f) { return polygonEdgeVectorMatrix(f).transpose() * polygonAveragingMatrix(f); } @@ -968,31 +973,47 @@ Eigen::MatrixXd EmbeddedGeometryInterface::polygonDerivativeMatrix(const Face& f return D; } -Eigen::MatrixXd EmbeddedGeometryInterface::polygonEdgeVectorMatrix(const Face& f) const { +Eigen::MatrixXd EmbeddedGeometryInterface::polygonEdgeVectorMatrix(const Face& f) { return polygonDerivativeMatrix(f) * polygonPositionMatrix(f); } -Eigen::MatrixXd EmbeddedGeometryInterface::polygonEdgeMidpointMatrix(const Face& f) const { +Eigen::MatrixXd EmbeddedGeometryInterface::polygonEdgeMidpointMatrix(const Face& f) { return polygonAveragingMatrix(f) * polygonPositionMatrix(f); } -Eigen::MatrixXd EmbeddedGeometryInterface::polygonFlat(const Face& f) const { +Eigen::MatrixXd EmbeddedGeometryInterface::polygonFlat(const Face& f) { Eigen::Vector3d N = polygonNormal(f); return polygonEdgeVectorMatrix(f) * (Eigen::MatrixXd::Identity(3, 3) - N * N.transpose()); } -Eigen::MatrixXd EmbeddedGeometryInterface::polygonSharp(const Face& f) const { +Eigen::MatrixXd EmbeddedGeometryInterface::polygonSharp(const Face& f) { size_t d = f.degree(); - Eigen::Vector3d An = vectorArea(f); + Eigen::Vector3d An = polygonVectorArea(f); double A = An.norm(); Eigen::Vector3d N = An / A; Eigen::Vector3d c = polygonCentroid(f); return 1. / A * bracket(N) * (polygonEdgeMidpointMatrix(f).transpose() - c * Eigen::VectorXd::Ones(d).transpose()); } -Eigen::Vector3d EmbeddedGeometryInterface::polygonVectorArea(const Face& f) const { +void EmbeddedGeometryInterface::computePolygonVertexNormals() { + + polygonVertexNormals = VertexData(mesh); + for (Vertex v : mesh.vertices()) { + double totalArea = 0.; + Eigen::Vector3d vN(0., 0., 0.); + for (Face f : v.adjacentFaces()) { + Eigen::Vector3d N = polygonVectorArea(f); + vN += N; + totalArea += N.norm(); + } + vN /= totalArea; + polygonVertexNormals[v] = vN; + } +} + +Eigen::Vector3d EmbeddedGeometryInterface::polygonVectorArea(const Face& f) { vertexPositionsQ.ensureHave(); Vector3 N = {0, 0, 0}; @@ -1007,19 +1028,19 @@ Eigen::Vector3d EmbeddedGeometryInterface::polygonVectorArea(const Face& f) cons return Eigen::Vector3d(N[0], N[1], N[2]); } -double EmbeddedGeometryInterface::polygonArea(const Face& f) const { - Eigen::Vector3d An = vectorArea(f); +double EmbeddedGeometryInterface::polygonArea(const Face& f) { + Eigen::Vector3d An = polygonVectorArea(f); double A = An.norm(); return A; } -Eigen::Vector3d EmbeddedGeometryInterface::polygonNormal(const Face& f) const { - Vector3 N = polygonVectorArea(f); +Eigen::Vector3d EmbeddedGeometryInterface::polygonNormal(const Face& f) { + Eigen::Vector3d N = polygonVectorArea(f); N /= N.norm(); - return Eigen::Vector3d(N[0], N[1], N[2]); + return N; } -Eigen::Vector3d EmbeddedGeometryInterface::polygonCentroid(const Face& f) const { +Eigen::Vector3d EmbeddedGeometryInterface::polygonCentroid(const Face& f) { vertexPositionsQ.ensureHave(); Vector3 c = {0, 0, 0}; @@ -1030,14 +1051,13 @@ Eigen::Vector3d EmbeddedGeometryInterface::polygonCentroid(const Face& f) const return Eigen::Vector3d(c[0], c[1], c[2]); } -Eigen::MatrixXd EmbeddedGeometryInterface::Tv(const Vertex& v) const { - vertexNormalsQ.ensureHave(); +Eigen::MatrixXd EmbeddedGeometryInterface::Tv(const Vertex& v) { + polygonVertexNormalsQ.ensureHave(); // Return 3 x 2 matrix defining the tangent space at vertex v, with basis vectors in columns. - Vector3 vN = vertexNormals[v]; - Eigen::Vector3d nv(vN[0], vN[1], vN[2]); - Vector3 pA = vertexPositions[f.halfedge().vertex()]; - Vector3 pB = vertexPositions[f.halfedge().next().vertex()]; + Eigen::Vector3d nv = polygonVertexNormals[v]; + Vector3 pA = vertexPositions[v.halfedge().vertex()]; + Vector3 pB = vertexPositions[v.halfedge().next().vertex()]; Vector3 heVec = pB - pA; Eigen::Vector3d w(heVec[0], heVec[1], heVec[2]); Eigen::Vector3d uu = project(w, nv).normalized(); @@ -1048,7 +1068,7 @@ Eigen::MatrixXd EmbeddedGeometryInterface::Tv(const Vertex& v) const { return B; } -Eigen::MatrixXd EmbeddedGeometryInterface::Tf(const Face& f) const { +Eigen::MatrixXd EmbeddedGeometryInterface::Tf(const Face& f) { vertexPositionsQ.ensureHave(); // Return 3 x 2 matrix defining the tangent space at face f, with basis vectors in columns. @@ -1065,17 +1085,16 @@ Eigen::MatrixXd EmbeddedGeometryInterface::Tf(const Face& f) const { return B; } -Eigen::Matrix2d EmbeddedGeometryInterface::Rvf(const Vertex& v, const Face& f) const { +Eigen::Matrix2d EmbeddedGeometryInterface::Rvf(const Vertex& v, const Face& f) { return Tf(f).transpose() * Qvf(v, f) * Tv(v); } -Eigen::Matrix3d EmbeddedGeometryInterface::Qvf(const Vertex& v, const Face& f) const { - vertexNormalsQ.ensureHave(); +Eigen::Matrix3d EmbeddedGeometryInterface::Qvf(const Vertex& v, const Face& f) { + polygonVertexNormalsQ.ensureHave(); // Return 3 x 3 rotation matrix to align n_v to n_f. Eigen::Vector3d nf = polygonNormal(f); - Vector3 vN = vertexNormals[v]; - Eigen::Vector3d nv(vN[0], vN[1], vN[2]); + Eigen::Vector3d nv = polygonVertexNormals[v]; double c = nv.dot(nf); // Special case for opposite nv and nf vectors. From 6dae4e0c11192ee6e6c652f4faeba77cae6f17d7 Mon Sep 17 00:00:00 2001 From: nzfeng Date: Mon, 5 Feb 2024 16:33:51 -0500 Subject: [PATCH 09/21] Fix DEC operators --- src/surface/embedded_geometry_interface.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/surface/embedded_geometry_interface.cpp b/src/surface/embedded_geometry_interface.cpp index d56cbbfd..3a6a8c59 100644 --- a/src/surface/embedded_geometry_interface.cpp +++ b/src/surface/embedded_geometry_interface.cpp @@ -832,8 +832,8 @@ void EmbeddedGeometryInterface::computePolygonDECOperators() { size_t eIdx = edgeIndices[e]; size_t vA = vertexIndices[e.firstVertex()]; size_t vB = vertexIndices[e.secondVertex()]; - tripletsD0.emplace_back(eIdx, vA, 1.); - tripletsD0.emplace_back(eIdx, vB, -1.); + tripletsD0.emplace_back(eIdx, vA, -1.); + tripletsD0.emplace_back(eIdx, vB, 1.); } polygonD0.setFromTriplets(tripletsD0.begin(), tripletsD0.end()); @@ -884,10 +884,10 @@ void EmbeddedGeometryInterface::computePolygonDECOperators() { Eigen::VectorXd h2(F); for (Face f : mesh.faces()) { size_t fIdx = faceIndices[f]; - h2[fIdx] = polygonArea(f); + h2[fIdx] = 1. / polygonArea(f); } - polygonHodge2 = h0.asDiagonal(); - polygonHodge2Inverse = h0.asDiagonal().inverse(); + polygonHodge2 = h2.asDiagonal(); + polygonHodge2Inverse = h2.asDiagonal().inverse(); } void EmbeddedGeometryInterface::requirePolygonDECOperators() { polygonDECOperatorsQ.require(); } void EmbeddedGeometryInterface::unrequirePolygonDECOperators() { polygonDECOperatorsQ.unrequire(); } From 81ad7d4a4db5bfa5e44ecd8938148c9f718fe94c Mon Sep 17 00:00:00 2001 From: nzfeng Date: Mon, 5 Feb 2024 17:44:22 -0500 Subject: [PATCH 10/21] In the middle of debugging hodge1 and connection Laplacian --- src/surface/embedded_geometry_interface.cpp | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/surface/embedded_geometry_interface.cpp b/src/surface/embedded_geometry_interface.cpp index 3a6a8c59..d5671671 100644 --- a/src/surface/embedded_geometry_interface.cpp +++ b/src/surface/embedded_geometry_interface.cpp @@ -797,12 +797,9 @@ void EmbeddedGeometryInterface::computePolygonVertexConnectionLaplacian() { for (size_t j = 0; j < n; j++) { for (size_t i = 0; i < n; i++) { double re = Lf(2 * i, 2 * j); // == Lf(2 * i + 1, 2 * j + 1) - double im = Lf(2 * i, 2 * j + 1); // == -Lf(2 * i + 1, 2 * j) - GC_SAFETY_ASSERT(std::abs(Lf(2 * i, 2 * j) - Lf(2 * i + 1, 2 * j + 1)) < 1e-5, - "polygon vertex connection Laplacian error"); - GC_SAFETY_ASSERT(std::abs(Lf(2 * i, 2 * j + 1) + Lf(2 * i + 1, 2 * j)) < 1e-5, - "polygon vertex connection Laplacian error"); + double im = Lf(2 * i, 2 * j + 1); // == Lf(2 * i + 1, 2 * j) triplets.emplace_back(vIndices[i], vIndices[j], std::complex(re, im)); + triplets.emplace_back(vIndices[j], vIndices[i], std::complex(re, -im)); } } } @@ -867,7 +864,6 @@ void EmbeddedGeometryInterface::computePolygonDECOperators() { std::vector eIndices; // indices of edges of polygon face for (Face f : mesh.faces()) { eIndices.clear(); - // Assumes edge iterator goes in same order as vertex iterator around a face for (Edge e : f.adjacentEdges()) eIndices.push_back(edgeIndices[e]); size_t n = f.degree(); // Add contribution to global mass matrix. From ee3a12ba0a32aa824652ae11beafb96df4d9e41a Mon Sep 17 00:00:00 2001 From: nzfeng Date: Fri, 9 Feb 2024 17:40:30 -0500 Subject: [PATCH 11/21] Add a bunch of temporary experimentation --- docs/docs/surface/geometry/quantities.md | 4 +- src/surface/embedded_geometry_interface.cpp | 144 +++++++++++++++++--- 2 files changed, 128 insertions(+), 20 deletions(-) diff --git a/docs/docs/surface/geometry/quantities.md b/docs/docs/surface/geometry/quantities.md index 0350a140..f849013b 100644 --- a/docs/docs/surface/geometry/quantities.md +++ b/docs/docs/surface/geometry/quantities.md @@ -628,7 +628,7 @@ And here are polygon mesh operators from [de Goes et al.'s _Discrete Differentia A $|V| \times 3|F|$ real matrix $\mathsf{D}$. If $\mathsf{x}\in\mathbb{R}^{3|F|}$ defines a face-wise constant vector field whose value in face $f$ is the vector $[\mathsf{x}_{3f}, \mathsf{x}_{3f+1}, \mathsf{x}_{3f+2}]^\top$, then $\mathsf{y} \leftarrow \mathsf{D}\mathsf{x}\in\mathbb{R}^{|V|}$ gives the divergence of $\mathsf{x}$ as pointwise quantities at vertices. - The divergence matrix $\mathsf{D}$ is related to the gradient matrix $\mathsf{G}$ as $\mathsf{D} = \mathsf{G}^\top\mathsf{M}$, where $\mathsf{M}\in\mathbb{R}^{3|F|}$ is a diagonal mass matrix containing face areas (the same that appear in `EmbeddedGeometryInterface::polygonHodge2`.) We use the convention that inflow corresponds to positive divergence. + The divergence matrix $\mathsf{D}$ is related to the gradient matrix $\mathsf{G}$ as $\mathsf{D} = \mathsf{G}^\top\mathsf{M}$, where $\mathsf{M}\in\mathbb{R}^{3|F|}$ is a diagonal mass matrix containing face areas. Note that this assumes the convention that inflow corresponds to positive divergence, corresponding to the convention that $\mathsf{D}\mathsf{G}$ yields a positive-semidefinite Laplacian. Only valid on an `EmbeddedGeometryInterface`. @@ -669,7 +669,7 @@ And here are polygon mesh operators from [de Goes et al.'s _Discrete Differentia These operators are the basic building blocks for _discrete exterior calculus_ on polygon meshes, using de Goes et al.'s _Discrete Differential Operators on Polygonal Meshes_. Takes in an additional parameter $\lambda$ defining a stabilization term to ensure inner products of discrete 1-forms remain positive-definite on non-triangular faces. - **Note:** These quantities slightly deviate from the usual naming scheme for quantities. Rather than `requireD0()`, `requireD1()`, etc, there is a single `requirePolygonDECOperators()` function which manages all 7 of the members listed below. + **Note:** These quantities slightly deviate from the usual naming scheme for quantities. Rather than `requireD0()`, `requireD1()`, etc, there is a single `requirePolygonDECOperators()` function which manages all 7 of the members listed below. There is no `polygonHodge1Inverse`, since although `polygonHodge1` will be diagonal on triangle meshes, on general polygon meshes it will not be diagonal. The following members are constructed: diff --git a/src/surface/embedded_geometry_interface.cpp b/src/surface/embedded_geometry_interface.cpp index d5671671..cdc926da 100644 --- a/src/surface/embedded_geometry_interface.cpp +++ b/src/surface/embedded_geometry_interface.cpp @@ -765,14 +765,13 @@ void EmbeddedGeometryInterface::computePolygonVertexLumpedMassMatrix() { vertexIndicesQ.ensureHave(); size_t V = mesh.nVertices(); - Eigen::VectorXd hodge0(V); - for (Vertex v : mesh.vertices()) { - size_t vIdx = vertexIndices[v]; - double area = 0.; - for (Face f : v.adjacentFaces()) { - area += polygonArea(f) / f.degree(); + Eigen::VectorXd hodge0 = Eigen::VectorXd::Zero(V); + for (Face f : mesh.faces()) { + double w = polygonArea(f) / f.degree(); + for (Vertex v : f.adjacentVertices()) { + size_t vIdx = vertexIndices[v]; + hodge0[vIdx] += w; } - hodge0[vIdx] = area; } polygonVertexLumpedMassMatrix = hodge0.asDiagonal(); } @@ -799,11 +798,24 @@ void EmbeddedGeometryInterface::computePolygonVertexConnectionLaplacian() { double re = Lf(2 * i, 2 * j); // == Lf(2 * i + 1, 2 * j + 1) double im = Lf(2 * i, 2 * j + 1); // == Lf(2 * i + 1, 2 * j) triplets.emplace_back(vIndices[i], vIndices[j], std::complex(re, im)); - triplets.emplace_back(vIndices[j], vIndices[i], std::complex(re, -im)); + // triplets.emplace_back(vIndices[j], vIndices[i], std::complex(re, -im)); + + // triplets.emplace_back(vIndices[i], vIndices[j], -std::complex(re, im)); + // triplets.emplace_back(vIndices[j], vIndices[i], -std::complex(re, -im)); + + // if (i == j) { + // std::cerr << Lf(2 * i, 2 * j) << " " << Lf(2 * i, 2 * j + 1) << std::endl; + // std::cerr << Lf(2 * i + 1, 2 * j) << " " << Lf(2 * i + 1, 2 * j + 1) << "\n" << std::endl; + // } + // triplets.emplace_back(2 * vIndices[i], 2 * vIndices[j], Lf(2 * i, 2 * j)); + // triplets.emplace_back(2 * vIndices[i], 2 * vIndices[j] + 1, Lf(2 * i, 2 * j + 1)); + // triplets.emplace_back(2 * vIndices[i] + 1, 2 * vIndices[j], Lf(2 * i + 1, 2 * j)); + // triplets.emplace_back(2 * vIndices[i] + 1, 2 * vIndices[j] + 1, Lf(2 * i + 1, 2 * j + 1)); } } } polygonVertexConnectionLaplacian.setFromTriplets(triplets.begin(), triplets.end()); + // std::cerr << polygonVertexConnectionLaplacian << std::endl; } void EmbeddedGeometryInterface::requirePolygonVertexConnectionLaplacian() { polygonVertexConnectionLaplacianQ.require(); @@ -846,33 +858,129 @@ void EmbeddedGeometryInterface::computePolygonDECOperators() { polygonD1.setFromTriplets(tripletsD1.begin(), tripletsD1.end()); // hodge0 - Eigen::VectorXd h0(V); - for (Vertex v : mesh.vertices()) { - size_t vIdx = vertexIndices[v]; - double area = 0.; - for (Face f : v.adjacentFaces()) { - area += polygonArea(f) / f.degree(); + Eigen::VectorXd h0 = Eigen::VectorXd::Zero(V); + for (Face f : mesh.faces()) { + double w = polygonArea(f) / f.degree(); + for (Vertex v : f.adjacentVertices()) { + size_t vIdx = vertexIndices[v]; + h0[vIdx] += w; } - h0[vIdx] = area; } polygonHodge0 = h0.asDiagonal(); polygonHodge0Inverse = h0.asDiagonal().inverse(); - // hodge1 (inner product matrix on 1-forms) + // Eigen::SparseMatrix testD0 = Eigen::SparseMatrix(E, V); + // Eigen::SparseMatrix DtD = Eigen::SparseMatrix(V, V); + // std::vector> tripletsTest, tripletsDtD; + // std::vector testIndices, testVIndices; + // std::vector testSigns; + // for (Face f : mesh.faces()) { + // testIndices.clear(); + // testVIndices.clear(); + // testSigns.clear(); + // for (Halfedge he : f.adjacentHalfedges()) { + // testIndices.push_back(edgeIndices[he.edge()]); + // testVIndices.push_back(vertexIndices[he.vertex()]); + // testSigns.push_back(he.orientation()); + // } + // size_t n = f.degree(); + // Eigen::MatrixXd Df = polygonDerivativeMatrix(f); + // for (size_t j = 0; j < n; j++) { + // for (size_t i = 0; i < n; i++) { + // double s = testSigns[i] ? 1. : -1; + // double w = mesh.edge(testIndices[i]).degree(); + // tripletsTest.emplace_back(testIndices[i], testVIndices[j], s * Df(i, j) / w); // local to global + // } + // } + // for (size_t i = 0; i < n; i++) { + // double w = mesh.edge(testIndices[i]).degree(); + // tripletsDtD.emplace_back(testVIndices[i], testVIndices[(i + 1) % n], -1 / w); + // tripletsDtD.emplace_back(testVIndices[(i + 1) % n], testVIndices[i], -1 / w); + // tripletsDtD.emplace_back(testVIndices[i], testVIndices[i], 1. / w); + // tripletsDtD.emplace_back(testVIndices[(i + 1) % n], testVIndices[(i + 1) % n], 1. / w); + // } + // // for (Halfedge he : f.adjacentHalfedges()) { + // // double w = he.edge().degree(); + // // size_t i = vertexIndices[he.tailVertex()]; + // // size_t j = vertexIndices[he.tipVertex()]; + // // tripletsDtD.emplace_back(i, j, -1 / w); + // // tripletsDtD.emplace_back(j, i, -1 / w); + // // tripletsDtD.emplace_back(i, i, 1. / w); + // // tripletsDtD.emplace_back(j, j, 1. / w); + // // } + // } + // testD0.setFromTriplets(tripletsTest.begin(), tripletsTest.end()); + // DtD.setFromTriplets(tripletsDtD.begin(), tripletsDtD.end()); + // std::cerr << (testD0 - polygonD0).norm() << std::endl; + // // std::cerr << DtD << "\n" << std::endl; + // // std::cerr << polygonD0.transpose() * polygonD0 << "\n" << std::endl; + // // std::cerr << DtD - polygonD0.transpose() * polygonD0 << std::endl; + + // hodge1 (inner product matrix on 1-forms). polygonHodge1 = Eigen::SparseMatrix(E, E); Eigen::MatrixXd Mf; // local per-polygon matrix std::vector eIndices; // indices of edges of polygon face + std::vector eSigns; for (Face f : mesh.faces()) { eIndices.clear(); + eSigns.clear(); for (Edge e : f.adjacentEdges()) eIndices.push_back(edgeIndices[e]); + for (Halfedge he : f.adjacentHalfedges()) eSigns.push_back(he.orientation()); size_t n = f.degree(); // Add contribution to global mass matrix. - Mf = polygonPerFaceInnerProductMatrix(f); + Mf = polygonPerFaceInnerProductMatrix(f); // technically on halfedges for (size_t j = 0; j < n; j++) { + size_t dj = mesh.edge(eIndices[j]).degree(); for (size_t i = 0; i < n; i++) { - tripletsH1.emplace_back(eIndices[i], eIndices[j], Mf(i, j)); + size_t di = mesh.edge(eIndices[i]).degree(); + double w = di * dj; + double s = (eSigns[i] == eSigns[j]) ? 1. : -1.; + // double s = eSigns[i] ? 1. : -1.; + // tripletsH1.emplace_back(eIndices[i], eIndices[i], Mf(i, j) / di); + } + } + } + // polygonHodge1.setFromTriplets(tripletsH1.begin(), tripletsH1.end()); + + halfedgeIndicesQ.ensureHave(); + polygonLaplacianQ.ensureHave(); + Eigen::SparseMatrix testH1 = + Eigen::SparseMatrix(mesh.nInteriorHalfedges(), mesh.nInteriorHalfedges()); + Eigen::SparseMatrix testD0 = Eigen::SparseMatrix(mesh.nInteriorHalfedges(), V); + std::vector> tripletsTestH1, tripletsTestD0; + for (Face f : mesh.faces()) { + size_t n = f.degree(); + Mf = polygonPerFaceInnerProductMatrix(f); // on halfedges + std::vector hIndices; + for (Halfedge he : f.adjacentHalfedges()) hIndices.push_back(halfedgeIndices[he]); + for (size_t j = 0; j < n; j++) { + for (size_t i = 0; i < n; i++) { + tripletsTestH1.emplace_back(hIndices[i], hIndices[j], Mf(i, j)); + } + } + size_t ctr = 0; + for (Halfedge he : f.adjacentHalfedges()) { + tripletsTestD0.emplace_back(hIndices[ctr], vertexIndices[he.tailVertex()], -1); + tripletsTestD0.emplace_back(hIndices[ctr], vertexIndices[he.tipVertex()], 1); + ctr++; + } + } + testH1.setFromTriplets(tripletsTestH1.begin(), tripletsTestH1.end()); + testD0.setFromTriplets(tripletsTestD0.begin(), tripletsTestD0.end()); + std::cerr << "|L - testD0T*H1*D0|: " << (polygonLaplacian - testD0.transpose() * testH1 * testD0).norm() << std::endl; + + for (Edge e : mesh.edges()) { + size_t eIdx = edgeIndices[e]; + double w = 0.; + for (Halfedge he : e.adjacentHalfedges()) { + size_t hIdx = halfedgeIndices[he]; + for (SparseMatrix::InnerIterator it(testH1, hIdx); it; ++it) { + Halfedge otherHe = mesh.halfedge(it.row()); + double s = (he.orientation() == otherHe.orientation()) ? 1. : -1.; + w += s * it.value() / e.degree(); } } + tripletsH1.emplace_back(eIdx, eIdx, w); } polygonHodge1.setFromTriplets(tripletsH1.begin(), tripletsH1.end()); From 64cd8e578808d8fdf1b007198f5e8e9f2a49705d Mon Sep 17 00:00:00 2001 From: nzfeng Date: Tue, 12 Mar 2024 18:11:14 -0400 Subject: [PATCH 12/21] Update DEC and docs --- docs/docs/surface/geometry/quantities.md | 10 +- src/surface/embedded_geometry_interface.cpp | 151 +++----------------- 2 files changed, 27 insertions(+), 134 deletions(-) diff --git a/docs/docs/surface/geometry/quantities.md b/docs/docs/surface/geometry/quantities.md index f849013b..e63fb6cc 100644 --- a/docs/docs/surface/geometry/quantities.md +++ b/docs/docs/surface/geometry/quantities.md @@ -626,7 +626,7 @@ And here are polygon mesh operators from [de Goes et al.'s _Discrete Differentia The discrete divergence operator acting on polygon meshes, using de Goes et al.'s _Discrete Differential Operators on Polygonal Meshes_. - A $|V| \times 3|F|$ real matrix $\mathsf{D}$. If $\mathsf{x}\in\mathbb{R}^{3|F|}$ defines a face-wise constant vector field whose value in face $f$ is the vector $[\mathsf{x}_{3f}, \mathsf{x}_{3f+1}, \mathsf{x}_{3f+2}]^\top$, then $\mathsf{y} \leftarrow \mathsf{D}\mathsf{x}\in\mathbb{R}^{|V|}$ gives the divergence of $\mathsf{x}$ as pointwise quantities at vertices. + A $|V| \times 3|F|$ real matrix $\mathsf{D}$. If $\mathsf{x}\in\mathbb{R}^{3|F|}$ defines a face-wise constant vector field whose value in face $f$ is the vector $[\mathsf{x}_{3f}, \mathsf{x}_{3f+1}, \mathsf{x}_{3f+2}]^\top$, then $\mathsf{y} \leftarrow \mathsf{D}\mathsf{x}\in\mathbb{R}^{|V|}$ gives the divergence of $\mathsf{x}$ as _integrated_ quantities at vertices. To obtain pointwise quantities, one would compute $\mathsf{A}^{-1}\mathsf{D}$, where $\mathsf{A}\in\RR^{|V|\times|V|}$ is a diagonal mass matrix of local areas at vertices. The divergence matrix $\mathsf{D}$ is related to the gradient matrix $\mathsf{G}$ as $\mathsf{D} = \mathsf{G}^\top\mathsf{M}$, where $\mathsf{M}\in\mathbb{R}^{3|F|}$ is a diagonal mass matrix containing face areas. Note that this assumes the convention that inflow corresponds to positive divergence, corresponding to the convention that $\mathsf{D}\mathsf{G}$ yields a positive-semidefinite Laplacian. @@ -669,17 +669,17 @@ And here are polygon mesh operators from [de Goes et al.'s _Discrete Differentia These operators are the basic building blocks for _discrete exterior calculus_ on polygon meshes, using de Goes et al.'s _Discrete Differential Operators on Polygonal Meshes_. Takes in an additional parameter $\lambda$ defining a stabilization term to ensure inner products of discrete 1-forms remain positive-definite on non-triangular faces. - **Note:** These quantities slightly deviate from the usual naming scheme for quantities. Rather than `requireD0()`, `requireD1()`, etc, there is a single `requirePolygonDECOperators()` function which manages all 7 of the members listed below. There is no `polygonHodge1Inverse`, since although `polygonHodge1` will be diagonal on triangle meshes, on general polygon meshes it will not be diagonal. + **Note:** These quantities slightly deviate from the usual naming scheme for quantities. Rather than `requireD0()`, `requireD1()`, etc, there is a single `requirePolygonDECOperators()` function which manages all 7 of the members listed below. There is no `polygonHodge1Inverse`, since although `polygonHodge1` will be diagonal on triangle meshes, on general polygon meshes it will not be diagonal. Also note that the coboundary operators `polygonD0` and `polygonD1` have row/column dimension equal to the number of halfedges $|H|$ rather than $|E|$. The following members are constructed: - `Eigen::SparseMatrix EmbeddedGeometryInterface::polygonHodge0` A $|V| \times |V|$ diagonal matrix - `Eigen::SparseMatrix EmbeddedGeometryInterface::polygonHodge0Inverse` A $|V| \times |V|$ diagonal matrix - - `Eigen::SparseMatrix EmbeddedGeometryInterface::polygonHodge1` An $|E| \times |E|$ matrix, not necessarily diagonal + - `Eigen::SparseMatrix EmbeddedGeometryInterface::polygonHodge1` An $|H| \times |H|$ matrix, not necessarily diagonal - `Eigen::SparseMatrix EmbeddedGeometryInterface::polygonHodge2` An $|F| \times |F|$ diagonal matrix - `Eigen::SparseMatrix EmbeddedGeometryInterface::polygonHodge2Inverse` An $|F| \times |F|$ diagonal matrix - - `Eigen::SparseMatrix EmbeddedGeometryInterface::polygonD0` An $|E| \times |V|$ matrix with $\{-1, 0, 1\}$ entries - - `Eigen::SparseMatrix EmbeddedGeometryInterface::polygonD1` An $|F| \times |E|$ matrix with $\{-1, 0, 1\}$ entries + - `Eigen::SparseMatrix EmbeddedGeometryInterface::polygonD0` An $|H| \times |V|$ matrix with $\{-1, 0, 1\}$ entries + - `Eigen::SparseMatrix EmbeddedGeometryInterface::polygonD1` An $|F| \times |H|$ matrix with $\{-1, 0, 1\}$ entries Only valid on an `EmbeddedGeometryInterface`. diff --git a/src/surface/embedded_geometry_interface.cpp b/src/surface/embedded_geometry_interface.cpp index cdc926da..d4543180 100644 --- a/src/surface/embedded_geometry_interface.cpp +++ b/src/surface/embedded_geometry_interface.cpp @@ -795,22 +795,10 @@ void EmbeddedGeometryInterface::computePolygonVertexConnectionLaplacian() { Lf = polygonPerFaceConnectionLaplacian(f); for (size_t j = 0; j < n; j++) { for (size_t i = 0; i < n; i++) { - double re = Lf(2 * i, 2 * j); // == Lf(2 * i + 1, 2 * j + 1) - double im = Lf(2 * i, 2 * j + 1); // == Lf(2 * i + 1, 2 * j) + double re = Lf(2 * i, 2 * j); + double im = Lf(2 * i, 2 * j + 1); triplets.emplace_back(vIndices[i], vIndices[j], std::complex(re, im)); - // triplets.emplace_back(vIndices[j], vIndices[i], std::complex(re, -im)); - - // triplets.emplace_back(vIndices[i], vIndices[j], -std::complex(re, im)); - // triplets.emplace_back(vIndices[j], vIndices[i], -std::complex(re, -im)); - - // if (i == j) { - // std::cerr << Lf(2 * i, 2 * j) << " " << Lf(2 * i, 2 * j + 1) << std::endl; - // std::cerr << Lf(2 * i + 1, 2 * j) << " " << Lf(2 * i + 1, 2 * j + 1) << "\n" << std::endl; - // } - // triplets.emplace_back(2 * vIndices[i], 2 * vIndices[j], Lf(2 * i, 2 * j)); - // triplets.emplace_back(2 * vIndices[i], 2 * vIndices[j] + 1, Lf(2 * i, 2 * j + 1)); - // triplets.emplace_back(2 * vIndices[i] + 1, 2 * vIndices[j], Lf(2 * i + 1, 2 * j)); - // triplets.emplace_back(2 * vIndices[i] + 1, 2 * vIndices[j] + 1, Lf(2 * i + 1, 2 * j + 1)); + triplets.emplace_back(vIndices[j], vIndices[i], std::complex(re, -im)); } } } @@ -829,30 +817,33 @@ void EmbeddedGeometryInterface::computePolygonDECOperators() { vertexIndicesQ.ensureHave(); edgeIndicesQ.ensureHave(); faceIndicesQ.ensureHave(); + halfedgeIndicesQ.ensureHave(); size_t V = mesh.nVertices(); size_t E = mesh.nEdges(); size_t F = mesh.nFaces(); + size_t H = mesh.nInteriorHalfedges(); std::vector> tripletsD0, tripletsD1, tripletsH1; - // exterior derivatives the same as the simplicial case - polygonD0 = Eigen::SparseMatrix(E, V); + // exterior derivatives + polygonD0 = Eigen::SparseMatrix(H, V); for (Edge e : mesh.edges()) { - size_t eIdx = edgeIndices[e]; - size_t vA = vertexIndices[e.firstVertex()]; - size_t vB = vertexIndices[e.secondVertex()]; - tripletsD0.emplace_back(eIdx, vA, -1.); - tripletsD0.emplace_back(eIdx, vB, 1.); + for (Halfedge he : e.adjacentHalfedges()) { + size_t hIdx = halfedgeIndices[he]; + size_t vA = vertexIndices[he.tailVertex()]; + size_t vB = vertexIndices[he.tipVertex()]; + tripletsD0.emplace_back(hIdx, vA, -1.); + tripletsD0.emplace_back(hIdx, vB, 1.); + } } polygonD0.setFromTriplets(tripletsD0.begin(), tripletsD0.end()); - polygonD1 = Eigen::SparseMatrix(F, E); + polygonD1 = Eigen::SparseMatrix(F, H); for (Face f : mesh.faces()) { size_t fIdx = faceIndices[f]; for (Halfedge he : f.adjacentHalfedges()) { - size_t eIdx = edgeIndices[he.edge()]; - double sign = he.orientation() ? 1. : -1.; - tripletsD1.emplace_back(fIdx, eIdx, sign); + size_t hIdx = halfedgeIndices[he]; + tripletsD1.emplace_back(fIdx, hIdx, 1.); } } polygonD1.setFromTriplets(tripletsD1.begin(), tripletsD1.end()); @@ -869,118 +860,20 @@ void EmbeddedGeometryInterface::computePolygonDECOperators() { polygonHodge0 = h0.asDiagonal(); polygonHodge0Inverse = h0.asDiagonal().inverse(); - // Eigen::SparseMatrix testD0 = Eigen::SparseMatrix(E, V); - // Eigen::SparseMatrix DtD = Eigen::SparseMatrix(V, V); - // std::vector> tripletsTest, tripletsDtD; - // std::vector testIndices, testVIndices; - // std::vector testSigns; - // for (Face f : mesh.faces()) { - // testIndices.clear(); - // testVIndices.clear(); - // testSigns.clear(); - // for (Halfedge he : f.adjacentHalfedges()) { - // testIndices.push_back(edgeIndices[he.edge()]); - // testVIndices.push_back(vertexIndices[he.vertex()]); - // testSigns.push_back(he.orientation()); - // } - // size_t n = f.degree(); - // Eigen::MatrixXd Df = polygonDerivativeMatrix(f); - // for (size_t j = 0; j < n; j++) { - // for (size_t i = 0; i < n; i++) { - // double s = testSigns[i] ? 1. : -1; - // double w = mesh.edge(testIndices[i]).degree(); - // tripletsTest.emplace_back(testIndices[i], testVIndices[j], s * Df(i, j) / w); // local to global - // } - // } - // for (size_t i = 0; i < n; i++) { - // double w = mesh.edge(testIndices[i]).degree(); - // tripletsDtD.emplace_back(testVIndices[i], testVIndices[(i + 1) % n], -1 / w); - // tripletsDtD.emplace_back(testVIndices[(i + 1) % n], testVIndices[i], -1 / w); - // tripletsDtD.emplace_back(testVIndices[i], testVIndices[i], 1. / w); - // tripletsDtD.emplace_back(testVIndices[(i + 1) % n], testVIndices[(i + 1) % n], 1. / w); - // } - // // for (Halfedge he : f.adjacentHalfedges()) { - // // double w = he.edge().degree(); - // // size_t i = vertexIndices[he.tailVertex()]; - // // size_t j = vertexIndices[he.tipVertex()]; - // // tripletsDtD.emplace_back(i, j, -1 / w); - // // tripletsDtD.emplace_back(j, i, -1 / w); - // // tripletsDtD.emplace_back(i, i, 1. / w); - // // tripletsDtD.emplace_back(j, j, 1. / w); - // // } - // } - // testD0.setFromTriplets(tripletsTest.begin(), tripletsTest.end()); - // DtD.setFromTriplets(tripletsDtD.begin(), tripletsDtD.end()); - // std::cerr << (testD0 - polygonD0).norm() << std::endl; - // // std::cerr << DtD << "\n" << std::endl; - // // std::cerr << polygonD0.transpose() * polygonD0 << "\n" << std::endl; - // // std::cerr << DtD - polygonD0.transpose() * polygonD0 << std::endl; - // hodge1 (inner product matrix on 1-forms). - polygonHodge1 = Eigen::SparseMatrix(E, E); + polygonHodge1 = Eigen::SparseMatrix(H, H); Eigen::MatrixXd Mf; // local per-polygon matrix - std::vector eIndices; // indices of edges of polygon face - std::vector eSigns; + std::vector hIndices; // indices of halfedges of polygon face for (Face f : mesh.faces()) { - eIndices.clear(); - eSigns.clear(); - for (Edge e : f.adjacentEdges()) eIndices.push_back(edgeIndices[e]); - for (Halfedge he : f.adjacentHalfedges()) eSigns.push_back(he.orientation()); size_t n = f.degree(); - // Add contribution to global mass matrix. - Mf = polygonPerFaceInnerProductMatrix(f); // technically on halfedges - for (size_t j = 0; j < n; j++) { - size_t dj = mesh.edge(eIndices[j]).degree(); - for (size_t i = 0; i < n; i++) { - size_t di = mesh.edge(eIndices[i]).degree(); - double w = di * dj; - double s = (eSigns[i] == eSigns[j]) ? 1. : -1.; - // double s = eSigns[i] ? 1. : -1.; - // tripletsH1.emplace_back(eIndices[i], eIndices[i], Mf(i, j) / di); - } - } - } - // polygonHodge1.setFromTriplets(tripletsH1.begin(), tripletsH1.end()); - - halfedgeIndicesQ.ensureHave(); - polygonLaplacianQ.ensureHave(); - Eigen::SparseMatrix testH1 = - Eigen::SparseMatrix(mesh.nInteriorHalfedges(), mesh.nInteriorHalfedges()); - Eigen::SparseMatrix testD0 = Eigen::SparseMatrix(mesh.nInteriorHalfedges(), V); - std::vector> tripletsTestH1, tripletsTestD0; - for (Face f : mesh.faces()) { - size_t n = f.degree(); - Mf = polygonPerFaceInnerProductMatrix(f); // on halfedges - std::vector hIndices; + Mf = polygonPerFaceInnerProductMatrix(f); + hIndices.clear(); for (Halfedge he : f.adjacentHalfedges()) hIndices.push_back(halfedgeIndices[he]); for (size_t j = 0; j < n; j++) { for (size_t i = 0; i < n; i++) { - tripletsTestH1.emplace_back(hIndices[i], hIndices[j], Mf(i, j)); - } - } - size_t ctr = 0; - for (Halfedge he : f.adjacentHalfedges()) { - tripletsTestD0.emplace_back(hIndices[ctr], vertexIndices[he.tailVertex()], -1); - tripletsTestD0.emplace_back(hIndices[ctr], vertexIndices[he.tipVertex()], 1); - ctr++; - } - } - testH1.setFromTriplets(tripletsTestH1.begin(), tripletsTestH1.end()); - testD0.setFromTriplets(tripletsTestD0.begin(), tripletsTestD0.end()); - std::cerr << "|L - testD0T*H1*D0|: " << (polygonLaplacian - testD0.transpose() * testH1 * testD0).norm() << std::endl; - - for (Edge e : mesh.edges()) { - size_t eIdx = edgeIndices[e]; - double w = 0.; - for (Halfedge he : e.adjacentHalfedges()) { - size_t hIdx = halfedgeIndices[he]; - for (SparseMatrix::InnerIterator it(testH1, hIdx); it; ++it) { - Halfedge otherHe = mesh.halfedge(it.row()); - double s = (he.orientation() == otherHe.orientation()) ? 1. : -1.; - w += s * it.value() / e.degree(); + tripletsH1.emplace_back(hIndices[i], hIndices[j], Mf(i, j)); } } - tripletsH1.emplace_back(eIdx, eIdx, w); } polygonHodge1.setFromTriplets(tripletsH1.begin(), tripletsH1.end()); From 7f5ffe2171a21154e08f3963a175dd787f714ba7 Mon Sep 17 00:00:00 2001 From: nzfeng Date: Mon, 1 Apr 2024 11:13:19 -0400 Subject: [PATCH 13/21] I forget what I added --- src/surface/embedded_geometry_interface.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/surface/embedded_geometry_interface.cpp b/src/surface/embedded_geometry_interface.cpp index d4543180..0b7ce503 100644 --- a/src/surface/embedded_geometry_interface.cpp +++ b/src/surface/embedded_geometry_interface.cpp @@ -797,13 +797,19 @@ void EmbeddedGeometryInterface::computePolygonVertexConnectionLaplacian() { for (size_t i = 0; i < n; i++) { double re = Lf(2 * i, 2 * j); double im = Lf(2 * i, 2 * j + 1); - triplets.emplace_back(vIndices[i], vIndices[j], std::complex(re, im)); - triplets.emplace_back(vIndices[j], vIndices[i], std::complex(re, -im)); + double s = (i == j) ? 1. : -1; + triplets.emplace_back(vIndices[i], vIndices[j], 0.5 * std::complex(re, s * im)); + // Average across two elements to ensure Hermitian-ness. + triplets.emplace_back(vIndices[j], vIndices[i], 0.5 * std::complex(re, -s * im)); + if (vIndices[i] == 12 || vIndices[j] == 12) { + std::cerr << vIndices[i] << " " << vIndices[j] << std::endl; + std::cerr << "\t" << Lf(2 * i, 2 * j) << " " << Lf(2 * i, 2 * j + 1) << std::endl; + std::cerr << "\t" << Lf(2 * i + 1, 2 * j) << " " << Lf(2 * i + 1, 2 * j + 1) << std::endl; + } } } } polygonVertexConnectionLaplacian.setFromTriplets(triplets.begin(), triplets.end()); - // std::cerr << polygonVertexConnectionLaplacian << std::endl; } void EmbeddedGeometryInterface::requirePolygonVertexConnectionLaplacian() { polygonVertexConnectionLaplacianQ.require(); @@ -908,7 +914,7 @@ Eigen::MatrixXd EmbeddedGeometryInterface::polygonPerFaceConnectionLaplacian(con Eigen::MatrixXd G = polygonCovariantGradient(f); Eigen::MatrixXd P = polygonCovariantProjection(f); double A = polygonArea(f); - Eigen::MatrixXd L = A * G.transpose() * G + polygonLambda * P.transpose() * P; // build positive-definite + Eigen::MatrixXd L = A * G.transpose() * G + polygonLambda * P.transpose() * P; return L; } From ba869a80e982e1adf3941f0aba1b67f8ddc70e6d Mon Sep 17 00:00:00 2001 From: nzfeng Date: Tue, 3 Sep 2024 13:23:24 -0400 Subject: [PATCH 14/21] Finish polygon connection Laplacian --- src/surface/embedded_geometry_interface.cpp | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/src/surface/embedded_geometry_interface.cpp b/src/surface/embedded_geometry_interface.cpp index 0b7ce503..b2d4243c 100644 --- a/src/surface/embedded_geometry_interface.cpp +++ b/src/surface/embedded_geometry_interface.cpp @@ -785,7 +785,8 @@ void EmbeddedGeometryInterface::computePolygonVertexConnectionLaplacian() { size_t V = mesh.nVertices(); polygonVertexConnectionLaplacian = Eigen::SparseMatrix>(V, V); - std::vector>> triplets; + std::vector>> triplets, tripletsTest; + Eigen::SparseMatrix> testMat(2 * V, 2 * V); Eigen::MatrixXd Lf; std::vector vIndices; for (Face f : mesh.faces()) { @@ -796,16 +797,9 @@ void EmbeddedGeometryInterface::computePolygonVertexConnectionLaplacian() { for (size_t j = 0; j < n; j++) { for (size_t i = 0; i < n; i++) { double re = Lf(2 * i, 2 * j); - double im = Lf(2 * i, 2 * j + 1); - double s = (i == j) ? 1. : -1; - triplets.emplace_back(vIndices[i], vIndices[j], 0.5 * std::complex(re, s * im)); - // Average across two elements to ensure Hermitian-ness. - triplets.emplace_back(vIndices[j], vIndices[i], 0.5 * std::complex(re, -s * im)); - if (vIndices[i] == 12 || vIndices[j] == 12) { - std::cerr << vIndices[i] << " " << vIndices[j] << std::endl; - std::cerr << "\t" << Lf(2 * i, 2 * j) << " " << Lf(2 * i, 2 * j + 1) << std::endl; - std::cerr << "\t" << Lf(2 * i + 1, 2 * j) << " " << Lf(2 * i + 1, 2 * j + 1) << std::endl; - } + double im = Lf(2 * i + 1, 2 * j); + triplets.emplace_back(vIndices[i], vIndices[j], 0.5 * std::complex(re, im)); + triplets.emplace_back(vIndices[j], vIndices[i], 0.5 * std::complex(re, -im)); } } } From c105324654f94178b4c6cb02d1497d24ef9161d6 Mon Sep 17 00:00:00 2001 From: nzfeng Date: Tue, 3 Sep 2024 17:41:30 -0400 Subject: [PATCH 15/21] Get rid of redundant functions --- docs/docs/surface/geometry/quantities.md | 2 +- .../surface/embedded_geometry_interface.h | 5 +- src/surface/embedded_geometry_interface.cpp | 115 ++++++++---------- 3 files changed, 52 insertions(+), 70 deletions(-) diff --git a/docs/docs/surface/geometry/quantities.md b/docs/docs/surface/geometry/quantities.md index e63fb6cc..2b73c2e4 100644 --- a/docs/docs/surface/geometry/quantities.md +++ b/docs/docs/surface/geometry/quantities.md @@ -626,7 +626,7 @@ And here are polygon mesh operators from [de Goes et al.'s _Discrete Differentia The discrete divergence operator acting on polygon meshes, using de Goes et al.'s _Discrete Differential Operators on Polygonal Meshes_. - A $|V| \times 3|F|$ real matrix $\mathsf{D}$. If $\mathsf{x}\in\mathbb{R}^{3|F|}$ defines a face-wise constant vector field whose value in face $f$ is the vector $[\mathsf{x}_{3f}, \mathsf{x}_{3f+1}, \mathsf{x}_{3f+2}]^\top$, then $\mathsf{y} \leftarrow \mathsf{D}\mathsf{x}\in\mathbb{R}^{|V|}$ gives the divergence of $\mathsf{x}$ as _integrated_ quantities at vertices. To obtain pointwise quantities, one would compute $\mathsf{A}^{-1}\mathsf{D}$, where $\mathsf{A}\in\RR^{|V|\times|V|}$ is a diagonal mass matrix of local areas at vertices. + A $|V| \times 3|F|$ real matrix $\mathsf{D}$. If $\mathsf{x}\in\mathbb{R}^{3|F|}$ defines a face-wise constant vector field whose value in face $f$ is the vector $[\mathsf{x}_{3f}, \mathsf{x}_{3f+1}, \mathsf{x}_{3f+2}]^\top$, then $\mathsf{y} \leftarrow \mathsf{D}\mathsf{x}\in\mathbb{R}^{|V|}$ gives the divergence of $\mathsf{x}$ as _integrated_ quantities at vertices. To obtain pointwise quantities, one would compute $\mathsf{A}^{-1}\mathsf{D}$, where $\mathsf{A}\in\mathbb{R}^{|V|\times|V|}$ is a diagonal mass matrix of local areas at vertices. The divergence matrix $\mathsf{D}$ is related to the gradient matrix $\mathsf{G}$ as $\mathsf{D} = \mathsf{G}^\top\mathsf{M}$, where $\mathsf{M}\in\mathbb{R}^{3|F|}$ is a diagonal mass matrix containing face areas. Note that this assumes the convention that inflow corresponds to positive divergence, corresponding to the convention that $\mathsf{D}\mathsf{G}$ yields a positive-semidefinite Laplacian. diff --git a/include/geometrycentral/surface/embedded_geometry_interface.h b/include/geometrycentral/surface/embedded_geometry_interface.h index f08d0d10..0f0c0a90 100644 --- a/include/geometrycentral/surface/embedded_geometry_interface.h +++ b/include/geometrycentral/surface/embedded_geometry_interface.h @@ -191,7 +191,7 @@ class EmbeddedGeometryInterface : public ExtrinsicGeometryInterface { const double polygonLambda = 1.0; VertexData polygonVertexNormals; DependentQuantityD> polygonVertexNormalsQ; - virtual void computePolygonVertexNormals(); + virtual void computePolygonVertexNormals(); // area-weighted normals virtual Eigen::MatrixXd polygonPerFaceLaplacian(const Face& f); virtual Eigen::MatrixXd polygonPerFaceInnerProductMatrix(const Face& f); virtual Eigen::MatrixXd polygonProjectionMatrix(const Face& f); @@ -203,9 +203,6 @@ class EmbeddedGeometryInterface : public ExtrinsicGeometryInterface { virtual Eigen::MatrixXd polygonEdgeMidpointMatrix(const Face& f); virtual Eigen::MatrixXd polygonFlat(const Face& f); virtual Eigen::MatrixXd polygonSharp(const Face& f); - virtual Eigen::Vector3d polygonVectorArea(const Face& f); - virtual double polygonArea(const Face& f); - virtual Eigen::Vector3d polygonNormal(const Face& f); virtual Eigen::Vector3d polygonCentroid(const Face& f); // connections virtual Eigen::MatrixXd polygonPerFaceConnectionLaplacian(const Face& f); diff --git a/src/surface/embedded_geometry_interface.cpp b/src/surface/embedded_geometry_interface.cpp index b2d4243c..65554467 100644 --- a/src/surface/embedded_geometry_interface.cpp +++ b/src/surface/embedded_geometry_interface.cpp @@ -263,18 +263,15 @@ void EmbeddedGeometryInterface::computeFaceAreas() { faceAreas = FaceData(mesh); for (Face f : mesh.faces()) { - - // WARNING: Logic duplicated between cached and immediate version - Halfedge he = f.halfedge(); - Vector3 pA = vertexPositions[he.vertex()]; - he = he.next(); - Vector3 pB = vertexPositions[he.vertex()]; - he = he.next(); - Vector3 pC = vertexPositions[he.vertex()]; - - GC_SAFETY_ASSERT(he.next() == f.halfedge(), "faces must be triangular"); - - double area = 0.5 * norm(cross(pB - pA, pC - pA)); + Vector3 N = {0, 0, 0}; + for (Halfedge he : f.adjacentHalfedges()) { + Vertex vA = he.vertex(); + Vertex vB = he.next().vertex(); + Vector3 pA = vertexPositions[vA]; + Vector3 pB = vertexPositions[vB]; + N += cross(pA, pB); + } + double area = 0.5 * norm(N); faceAreas[f] = area; } } @@ -290,12 +287,8 @@ void EmbeddedGeometryInterface::computeCornerAngles() { // WARNING: Logic duplicated between cached and immediate version Halfedge he = c.halfedge(); Vector3 pA = vertexPositions[he.vertex()]; - he = he.next(); - Vector3 pB = vertexPositions[he.vertex()]; - he = he.next(); - Vector3 pC = vertexPositions[he.vertex()]; - - GC_SAFETY_ASSERT(he.next() == c.halfedge(), "faces must be triangular"); + Vector3 pB = vertexPositions[he.next().vertex()]; + Vector3 pC = vertexPositions[he.twin().next().next().vertex()]; double q = dot(unit(pB - pA), unit(pC - pA)); q = clamp(q, -1.0, 1.0); @@ -732,6 +725,7 @@ void EmbeddedGeometryInterface::unrequirePolygonGradientMatrix() { polygonGradie void EmbeddedGeometryInterface::computePolygonDivergenceMatrix() { vertexIndicesQ.ensureHave(); faceIndicesQ.ensureHave(); + faceAreasQ.ensureHave(); size_t V = mesh.nVertices(); size_t F = mesh.nFaces(); @@ -742,7 +736,7 @@ void EmbeddedGeometryInterface::computePolygonDivergenceMatrix() { std::vector vIndices; // indices of vertices of polygon face for (Face f : mesh.faces()) { size_t fIdx = faceIndices[f]; - double area = polygonArea(f); + double area = faceAreas[f]; vIndices.clear(); for (Vertex v : f.adjacentVertices()) vIndices.push_back(vertexIndices[v]); size_t n = f.degree(); @@ -763,11 +757,12 @@ void EmbeddedGeometryInterface::unrequirePolygonDivergenceMatrix() { polygonDive // Vertex mass matrix (lumped) void EmbeddedGeometryInterface::computePolygonVertexLumpedMassMatrix() { vertexIndicesQ.ensureHave(); + faceAreasQ.ensureHave(); size_t V = mesh.nVertices(); Eigen::VectorXd hodge0 = Eigen::VectorXd::Zero(V); for (Face f : mesh.faces()) { - double w = polygonArea(f) / f.degree(); + double w = faceAreas[f] / f.degree(); for (Vertex v : f.adjacentVertices()) { size_t vIdx = vertexIndices[v]; hodge0[vIdx] += w; @@ -818,6 +813,7 @@ void EmbeddedGeometryInterface::computePolygonDECOperators() { edgeIndicesQ.ensureHave(); faceIndicesQ.ensureHave(); halfedgeIndicesQ.ensureHave(); + faceAreasQ.ensureHave(); size_t V = mesh.nVertices(); size_t E = mesh.nEdges(); @@ -851,7 +847,7 @@ void EmbeddedGeometryInterface::computePolygonDECOperators() { // hodge0 Eigen::VectorXd h0 = Eigen::VectorXd::Zero(V); for (Face f : mesh.faces()) { - double w = polygonArea(f) / f.degree(); + double w = faceAreas[f] / f.degree(); for (Vertex v : f.adjacentVertices()) { size_t vIdx = vertexIndices[v]; h0[vIdx] += w; @@ -881,7 +877,7 @@ void EmbeddedGeometryInterface::computePolygonDECOperators() { Eigen::VectorXd h2(F); for (Face f : mesh.faces()) { size_t fIdx = faceIndices[f]; - h2[fIdx] = 1. / polygonArea(f); + h2[fIdx] = 1. / faceAreas[f]; } polygonHodge2 = h2.asDiagonal(); polygonHodge2Inverse = h2.asDiagonal().inverse(); @@ -898,16 +894,20 @@ Eigen::MatrixXd EmbeddedGeometryInterface::polygonPerFaceLaplacian(const Face& f } Eigen::MatrixXd EmbeddedGeometryInterface::polygonPerFaceInnerProductMatrix(const Face& f) { + faceAreasQ.ensureHave(); + Eigen::MatrixXd Uf = polygonSharp(f); Eigen::MatrixXd Pf = polygonProjectionMatrix(f); - double A = polygonArea(f); + double A = faceAreas[f]; return A * Uf.transpose() * Uf + polygonLambda * Pf.transpose() * Pf; } Eigen::MatrixXd EmbeddedGeometryInterface::polygonPerFaceConnectionLaplacian(const Face& f) { + faceAreasQ.ensureHave(); + Eigen::MatrixXd G = polygonCovariantGradient(f); Eigen::MatrixXd P = polygonCovariantProjection(f); - double A = polygonArea(f); + double A = faceAreas[f]; Eigen::MatrixXd L = A * G.transpose() * G + polygonLambda * P.transpose() * P; return L; } @@ -939,10 +939,13 @@ Eigen::MatrixXd EmbeddedGeometryInterface::polygonProjectionMatrix(const Face& f } Eigen::MatrixXd EmbeddedGeometryInterface::polygonPerFaceGradientMatrix(const Face& f) { + faceNormalsQ.ensureHave(); + faceAreasQ.ensureHave(); + // equivalent to applying the (per-face) sharp operator to the (per-face) exterior derivative - Eigen::Vector3d An = polygonVectorArea(f); - double A = An.norm(); - Eigen::Vector3d N = An / A; + double A = faceAreas[f]; + Vector3 n = faceNormals[f]; + Eigen::Vector3d N = {n[0], n[1], n[2]}; return -1. / A * bracket(N) * polygonCoGradientMatrix(f); } @@ -979,64 +982,42 @@ Eigen::MatrixXd EmbeddedGeometryInterface::polygonEdgeMidpointMatrix(const Face& } Eigen::MatrixXd EmbeddedGeometryInterface::polygonFlat(const Face& f) { + faceNormalsQ.ensureHave(); - Eigen::Vector3d N = polygonNormal(f); + Vector3 n = faceNormals[f]; + Eigen::Vector3d N = {n[0], n[1], n[2]}; return polygonEdgeVectorMatrix(f) * (Eigen::MatrixXd::Identity(3, 3) - N * N.transpose()); } Eigen::MatrixXd EmbeddedGeometryInterface::polygonSharp(const Face& f) { + faceAreasQ.ensureHave(); + faceNormalsQ.ensureHave(); size_t d = f.degree(); - Eigen::Vector3d An = polygonVectorArea(f); - double A = An.norm(); - Eigen::Vector3d N = An / A; + double A = faceAreas[f]; + Vector3 n = faceNormals[f]; + Eigen::Vector3d N = {n[0], n[1], n[2]}; Eigen::Vector3d c = polygonCentroid(f); return 1. / A * bracket(N) * (polygonEdgeMidpointMatrix(f).transpose() - c * Eigen::VectorXd::Ones(d).transpose()); } void EmbeddedGeometryInterface::computePolygonVertexNormals() { + faceAreasQ.ensureHave(); + faceNormalsQ.ensureHave(); polygonVertexNormals = VertexData(mesh); for (Vertex v : mesh.vertices()) { - double totalArea = 0.; Eigen::Vector3d vN(0., 0., 0.); for (Face f : v.adjacentFaces()) { - Eigen::Vector3d N = polygonVectorArea(f); - vN += N; - totalArea += N.norm(); + Vector3 n = faceNormals[f]; + Eigen::Vector3d N = {n[0], n[1], n[2]}; + vN += N * faceAreas[f]; } - vN /= totalArea; + vN /= vN.norm(); polygonVertexNormals[v] = vN; } } -Eigen::Vector3d EmbeddedGeometryInterface::polygonVectorArea(const Face& f) { - vertexPositionsQ.ensureHave(); - - Vector3 N = {0, 0, 0}; - for (Halfedge he : f.adjacentHalfedges()) { - Vertex vA = he.vertex(); - Vertex vB = he.next().vertex(); - Vector3 pA = vertexPositions[vA]; - Vector3 pB = vertexPositions[vB]; - N += cross(pA, pB); - } - N *= 0.5; - return Eigen::Vector3d(N[0], N[1], N[2]); -} - -double EmbeddedGeometryInterface::polygonArea(const Face& f) { - Eigen::Vector3d An = polygonVectorArea(f); - double A = An.norm(); - return A; -} - -Eigen::Vector3d EmbeddedGeometryInterface::polygonNormal(const Face& f) { - Eigen::Vector3d N = polygonVectorArea(f); - N /= N.norm(); - return N; -} - Eigen::Vector3d EmbeddedGeometryInterface::polygonCentroid(const Face& f) { vertexPositionsQ.ensureHave(); @@ -1067,9 +1048,11 @@ Eigen::MatrixXd EmbeddedGeometryInterface::Tv(const Vertex& v) { Eigen::MatrixXd EmbeddedGeometryInterface::Tf(const Face& f) { vertexPositionsQ.ensureHave(); + faceNormalsQ.ensureHave(); // Return 3 x 2 matrix defining the tangent space at face f, with basis vectors in columns. - Eigen::Vector3d nf = polygonNormal(f); + Vector3 n = faceNormals[f]; + Eigen::Vector3d nf = {n[0], n[1], n[2]}; Vector3 pA = vertexPositions[f.halfedge().vertex()]; Vector3 pB = vertexPositions[f.halfedge().next().vertex()]; Vector3 heVec = pB - pA; @@ -1088,9 +1071,11 @@ Eigen::Matrix2d EmbeddedGeometryInterface::Rvf(const Vertex& v, const Face& f) { Eigen::Matrix3d EmbeddedGeometryInterface::Qvf(const Vertex& v, const Face& f) { polygonVertexNormalsQ.ensureHave(); + faceNormalsQ.ensureHave(); // Return 3 x 3 rotation matrix to align n_v to n_f. - Eigen::Vector3d nf = polygonNormal(f); + Vector3 n = faceNormals[f]; + Eigen::Vector3d nf = {n[0], n[1], n[2]}; Eigen::Vector3d nv = polygonVertexNormals[v]; double c = nv.dot(nf); From 4ba4b5b52f8c2a05fe071130e631c04773167e1f Mon Sep 17 00:00:00 2001 From: nzfeng Date: Fri, 6 Sep 2024 12:45:55 -0400 Subject: [PATCH 16/21] Use correct tangent basis vectors --- src/surface/embedded_geometry_interface.cpp | 30 ++++++++------------- 1 file changed, 11 insertions(+), 19 deletions(-) diff --git a/src/surface/embedded_geometry_interface.cpp b/src/surface/embedded_geometry_interface.cpp index 65554467..bd54d566 100644 --- a/src/surface/embedded_geometry_interface.cpp +++ b/src/surface/embedded_geometry_interface.cpp @@ -198,7 +198,6 @@ void EmbeddedGeometryInterface::computeVertexTangentBasis() { } halfedgeVectorsInVertexQ.ensureHave(); - for (Vertex v : mesh.vertices()) { // For general polygons, take the average of each edge vector projected to tangent plane @@ -793,6 +792,7 @@ void EmbeddedGeometryInterface::computePolygonVertexConnectionLaplacian() { for (size_t i = 0; i < n; i++) { double re = Lf(2 * i, 2 * j); double im = Lf(2 * i + 1, 2 * j); + // Split up into symmetric contributions to ensure Hermitian-ness. triplets.emplace_back(vIndices[i], vIndices[j], 0.5 * std::complex(re, im)); triplets.emplace_back(vIndices[j], vIndices[i], 0.5 * std::complex(re, -im)); } @@ -1030,16 +1030,13 @@ Eigen::Vector3d EmbeddedGeometryInterface::polygonCentroid(const Face& f) { } Eigen::MatrixXd EmbeddedGeometryInterface::Tv(const Vertex& v) { - polygonVertexNormalsQ.ensureHave(); + vertexTangentBasisQ.ensureHave(); // Return 3 x 2 matrix defining the tangent space at vertex v, with basis vectors in columns. - Eigen::Vector3d nv = polygonVertexNormals[v]; - Vector3 pA = vertexPositions[v.halfedge().vertex()]; - Vector3 pB = vertexPositions[v.halfedge().next().vertex()]; - Vector3 heVec = pB - pA; - Eigen::Vector3d w(heVec[0], heVec[1], heVec[2]); - Eigen::Vector3d uu = project(w, nv).normalized(); - Eigen::Vector3d vv = nv.cross(uu); + Vector3 xVec = vertexTangentBasis[v][0]; + Vector3 yVec = vertexTangentBasis[v][1]; + Eigen::Vector3d uu = {xVec[0], xVec[1], xVec[2]}; + Eigen::Vector3d vv = {yVec[0], yVec[1], yVec[2]}; Eigen::MatrixXd B(3, 2); B.col(0) = uu; B.col(1) = vv; @@ -1047,18 +1044,13 @@ Eigen::MatrixXd EmbeddedGeometryInterface::Tv(const Vertex& v) { } Eigen::MatrixXd EmbeddedGeometryInterface::Tf(const Face& f) { - vertexPositionsQ.ensureHave(); - faceNormalsQ.ensureHave(); + faceTangentBasisQ.ensureHave(); // Return 3 x 2 matrix defining the tangent space at face f, with basis vectors in columns. - Vector3 n = faceNormals[f]; - Eigen::Vector3d nf = {n[0], n[1], n[2]}; - Vector3 pA = vertexPositions[f.halfedge().vertex()]; - Vector3 pB = vertexPositions[f.halfedge().next().vertex()]; - Vector3 heVec = pB - pA; - Eigen::Vector3d w(heVec[0], heVec[1], heVec[2]); - Eigen::Vector3d uu = project(w, nf).normalized(); - Eigen::Vector3d vv = nf.cross(uu); + Vector3 xVec = faceTangentBasis[f][0]; + Vector3 yVec = faceTangentBasis[f][1]; + Eigen::Vector3d uu = {xVec[0], xVec[1], xVec[2]}; + Eigen::Vector3d vv = {yVec[0], yVec[1], yVec[2]}; Eigen::MatrixXd B(3, 2); B.col(0) = uu; B.col(1) = vv; From 4ad2773558e088510538ea30a370ca858ca33794 Mon Sep 17 00:00:00 2001 From: nzfeng Date: Fri, 6 Sep 2024 18:54:56 -0400 Subject: [PATCH 17/21] Add rest of heat solvers for polygon meshes --- .../pointcloud/point_cloud_heat_solver.h | 1 + .../surface/polygon_mesh_heat_solver.cpp | 274 ++++++++++++++++++ .../surface/polygon_mesh_heat_solver.h | 64 ++++ 3 files changed, 339 insertions(+) create mode 100644 include/geometrycentral/surface/polygon_mesh_heat_solver.cpp create mode 100644 include/geometrycentral/surface/polygon_mesh_heat_solver.h diff --git a/include/geometrycentral/pointcloud/point_cloud_heat_solver.h b/include/geometrycentral/pointcloud/point_cloud_heat_solver.h index e1d91308..9dcd29a7 100644 --- a/include/geometrycentral/pointcloud/point_cloud_heat_solver.h +++ b/include/geometrycentral/pointcloud/point_cloud_heat_solver.h @@ -14,6 +14,7 @@ namespace geometrycentral { #ifndef SHM_H #define SHM_H +// Note: Duplicated in surface/signed_heat_method enum class LevelSetConstraint { None = 0, ZeroSet, Multiple }; struct SignedHeatOptions { diff --git a/include/geometrycentral/surface/polygon_mesh_heat_solver.cpp b/include/geometrycentral/surface/polygon_mesh_heat_solver.cpp new file mode 100644 index 00000000..2d889539 --- /dev/null +++ b/include/geometrycentral/surface/polygon_mesh_heat_solver.cpp @@ -0,0 +1,274 @@ +#include "geometrycentral/surface/polygon_mesh_heat_solver.h" + +namespace geometrycentral { +namespace surface { + +PolygonMeshHeatSolver::PolygonMeshHeatSolver(EmbeddedGeometryInterface& geom_, double tCoef_) + : tCoef(tCoef_), mesh(geom_.mesh), geom(geom_) + +{ + // Compute the maximum length over all polygon diagonals, as suggested by de Goes et al. + double maxDiagonalLength = 0.; + for (Face f : mesh.faces()) { + std::vector vertices; + for (Vertex v : f.adjacentVertices()) { + vertices.push_back(v); + } + size_t n = vertices.size(); + for (size_t i = 0; i < n; i++) { + Vector3 pi = geom.vertexPositions[vertices[i]]; + for (size_t j = i + 1; j < n; j++) { + Vector3 pj = geom.vertexPositions[vertices[j]]; + double length = (pi - pj).norm(); + maxDiagonalLength = std::max(maxDiagonalLength, length); + } + } + } + shortTime = tCoef * maxDiagonal * maxDiagonal; + + geom.requirePolygonVertexLumpedMassMatrix(); + geom.requirePolygonLaplacian(); + massMat = geom.polygonVertexLumpedMassMatrix; + laplaceMat = geom.polygonLaplacian; + geom.unrequirePolygonVertexLumpedMassMatrix(); + geom.unrequirePolygonLaplacian(); +} + + +void PolygonMeshHeatSolver::ensureHaveScalarHeatSolver() { + if (scalarHeatSolver != nullptr) return; + + SparseMatrix heatOp = massMat + shortTime * laplaceMat; + scalarHeatSolver.reset(new PositiveDefiniteSolver(heatOp)); +} + +void PolygonMeshHeatSolver::ensureHaveVectorHeatSolver() { + if (vectorHeatSolver != nullptr) return; + + geom.requirePolygonVertexConnectionLaplacian(); + + SparseMatrix>& L = geom.polygonVertexConnectionLaplacian; + SparseMatrix> vectorOp = massMat.cast>() + shortTime * L; + + vectorHeatSolver.reset(new PositiveDefiniteSolver>(vectorOp)); + + geom.unrequirePolygonVertexConnectionLaplacian(); +} + + +void PolygonMeshHeatSolver::ensureHavePoissonSolver() { + if (poissonSolver != nullptr) return; + + poissonSolver.reset(new PositiveDefiniteSolver(laplaceMat)); +} + +VertexData PolygonMeshHeatSolver::computeDistance(const Vertex& sourceVert) { + std::vector v{sourcePoint}; + return computeDistance(v); +} + +VertexData PolygonMeshHeatSolver::computeDistance(const std::vector& sourceVerts) { + // TODO: update which polygon Laplacian we use, depending on which is more accurate + GC_SAFETY_ASSERT(sourceVerts.size() != 0, "must have at least one source"); +} + +VertexData PolygonMeshHeatSolver::extendScalars(const std::vector>& sources) { + // TODO: update which polygon Laplacian we use, depending on which is more accurate + GC_SAFETY_ASSERT(sources.size() != 0, "must have at least one source"); + + ensureHaveScalarHeatSolver(); + + size_t V = mesh.nVertices(); + Vector rhsVals = Vector::Zero(V); + Vector rhsOnes = Vector::Ones(V); + for (size_t i = 0; i < sources.size(); i++) { + size_t ind = std::get<0>(sources[i]).getIndex(); + double val = std::get<1>(sources[i]); + rhsVals(ind) = val; + } + + Vector interpVals = scalarHeatSolver->solve(rhsVals); + Vector interpOnes = scalarHeatSolver->solve(rhsOnes); + Vector resultArr = (interpVals.array() / interpOnes.array()); + + VertexData result(mesh, resultArr); + return result; +} + +VertexData PolygonMeshHeatSolver::transportTangentVector(const Vertex& sourceVert, + const Vector2& sourceVector) { + + return transportTangentVectors({std::make_tuple(sourceVert, sourceVector)}); +} + +VertexData +PolygonMeshHeatSolver::transportTangentVectors(const std::vector>& sources) { + GC_SAFETY_ASSERT(sources.size() != 0, "must have at least one source"); + + ensureHaveVectorHeatSolver(); + geom.requireVertexIndices(); + + // Construct rhs + size_t V = mesh.nVertices(); + Vector> dirRHS = Vector>::Zero(V); + std::vector> magnitudeSources; + bool normsAllSame = true; + double firstNorm = std::get<1>(sources[0]).norm(); + for (size_t i = 0; i < sources.size(); i++) { + Vertex v = std::get<0>(sources[i]); + size_t ind = geom.vertexIndices[v]; + Vector2 vec = std::get<1>(sources[i]); + dirRHS(ind) += std::complex(vec); + magnitudeSources.emplace_back(v, vec.norm()); + + // Check if all norms same + double thisNorm = vec.norm(); + if (std::abs(firstNorm - thisNorm) > std::fmax(firstNorm, thisNorm) * 1e-10) { + normsAllSame = false; + } + } + + // Transport + Vector> vecSolution = vectorHeatSolver->solve(dirRHS); + + // Set scale + if (normsAllSame) { + vecSolution = (vecSolution.array() / vecSolution.array().abs()) * firstNorm; + } else { + VertexData interpMags = extendScalar(magnitudeSources); + for (Vertex v : mesh.vertices()) { + size_t idx = geom.vertexIndices[v]; + Vector2 dir = Vector2::fromComplex(vecSolution[idx]).normalize(); + vecSolution[idx] = dir * interpMags[v]; + } + } + + geom.unrequireVertexIndices(); + + return VertexData(mesh, vecSolution); +} + +// VertexData PolygonMeshHeatSolver::computeLogMap(const Vertex& sourceVert) {} // TODO? + +VertexData PolygonMeshHeatSolver::computeSignedDistance(const std::vector>& curves, + const LevelSetConstraint& levelSetConstraint) { + + size_t V = mesh.nVertices(); + Vector> X0 = Vector>::Zero(V); + geom.requireVertexIndices(); + geom.requireVertexTangentBasis(); + geom.requireVertexNormals(); + for (const auto& curve : curves) buildSignedCurveSource(curve, X0); + geom.unrequireVertexNormals(); + if (X0.norm() == 0) throw std::logic_error("Input curves must be nonempty to run Signed Heat Method."); + + ensureHaveVectorHeatSolver(); + Vector> Xt = ectorHeatSolver->solve(X0); + + // Average onto faces, and normalize. + size_t F = mesh.nFaces(); + Vector Y(3 * F); + geom.requireFaceIndices(); + for (Face f : mesh.faces()) { + Vector3 Yf = {0, 0, 0}; + for (Vertex v : f.adjacentVertices()) { + size_t vIdx = geom.vertexIndices[v]; + Yf += std::real(Xt[vIdx]) * geom.vertexTangentBasis[v][0]; + Yf += std::imag(Xt[vIdx]) * geom.vertexTangentBasis[v][1]; + } + Yf /= Yf.norm(); + size_t fIdx = geom.faceIndices[f]; + for (int j = 0; j < 3; j++) { + Y[3 * fIdx + j] = Yf[j]; + } + } + geom.unrequireFaceIndices(); + geom.unrequireVertexTangentBasis(); + + geom.requirePolygonDivergenceMatrix(); + Vector divYt = geom.polygonDivergenceMatrix * Y; + geom.unrequirePolygonDivergenceMatrix(); + + Vector phi; + if (levelSetConstraint == LevelSetConstraint::None) { + ensureHavePoissonSolver(); + phi = poissonSolver->solve(divYt); + } else if (levelSetConstraint == LevelSetConstraint::ZeroSet) { + Vector setAMembership = Vector::Ones(V); + for (const auto& curve : curves) { + for (const Vertex& v : curve) { + setAMembership[geom.vertexIndices[v]] = false; + } + } + int nB = V - setAMembership.cast().sum(); + Vector bcVals = Vector::Zero(nB); + BlockDecompositionResult decomp = blockDecomposeSquare(laplaceMat, setAMembership, true); + Vector rhsValsA, rhsValsB; + decomposeVector(decomp, divYt, rhsValsA, rhsValsB); + Vector combinedRHS = rhsValsA; + Vector Aresult = solvePositiveDefinite(decomp.AA, combinedRHS); + phi = reassembleVector(decomp, Aresult, bcVals); + } else if (levelSetConstraint == LevelSetConstraint::Multiple) { + std::vector> triplets; + SparseMatrix A; + size_t m = 0; + for (const auto& curve : curves) { + size_t nNodes = curve.size(); + if (nNodes < 2) continue; + size_t v0 = geom.vertexIndices[curve[0]]; + for (size_t i = 1; i < nNodes; i++) { + size_t vIdx = geom.vertexIndices[curve[i]]; + triplets.emplace_back(m, v0, 1); + triplets.emplace_back(m, vIdx, -1); + m++; + } + } + A.resize(m, V); + A.setFromTriplets(triplets.begin(), triplets.end()); + SparseMatrix Z(m, m); + SparseMatrix LHS1 = horizontalStack({laplaceMat, A.transpose()}); + SparseMatrix LHS2 = horizontalStack({A, Z}); + SparseMatrix LHS = verticalStack({LHS1, LHS2}); + Vector RHS = Vector::Zero(V + m); + RHS.head(V) = divYt; + Vector soln = solveSquare(LHS, RHS); + phi = soln.head(V); + } + + geom.unrequireVertexIndices(); + + return VertexData(mesh, phi); +} + +void PolygonMeshHeatSolver::buildSignedCurveSource(const std::vector& curve, + Vector>& X0) const { + + // Encode curve input by expressing curve normals in vertex tangent spaces. + size_t nNodes = curve.size(); + for (size_t i = 0; i < nNodes - 1; i++) { + Vertex vA = curve[i]; + Vertex vB = curve[i + 1]; + size_t vIdxA = geom.vertexIndices[vA]; + size_t vIdxB = geom.vertexIndices[vB]; + Vector3 pA = geom.vertexPositions[vA]; + Vector3 pB = geom.vertexPositions[vB]; + Vector3 tangent = pB - pA; + Vector3 vnA = geom.vertexNormals[vA]; + Vector3 vnB = geom.vertexNormals[vB]; + Vector3 xAxisA = geom.vertexTangentBasis[vA][0]; + Vector3 yAxisA = geom.vertexTangentBasis[vA][1]; + Vector3 xAxisB = geom.vertexTangentBasis[vB][0]; + Vector3 yAxisB = geom.vertexTangentBasis[vB][1]; + Vector3 tangentA = dot(xAxisA, tangent) * xAxisA + dot(yAxisA, tangent) * yAxisA; + Vector3 tangentB = dot(xAxisB, tangent) * xAxisB + dot(yAxisB, tangent) * yAxisB; + Vector3 normalA = cross(vnA, tangentA); + Vector3 normalB = cross(vnB, tangentB); + X0[vIdxA] += std::complex(dot(geom.vertexTangentBasis[vA][0], normalA), + dot(geom.vertexTangentBasis[vA][1], normalA)); + X0[vIdxB] += std::complex(dot(geom.vertexTangentBasis[vB][0], normalB), + dot(geom.vertexTangentBasis[vB][1], normalB)); + } +} + +} // namespace surface +} // namespace geometrycentral \ No newline at end of file diff --git a/include/geometrycentral/surface/polygon_mesh_heat_solver.h b/include/geometrycentral/surface/polygon_mesh_heat_solver.h new file mode 100644 index 00000000..3fc01228 --- /dev/null +++ b/include/geometrycentral/surface/polygon_mesh_heat_solver.h @@ -0,0 +1,64 @@ +#pragma once + +#include "geometrycentral/numerical/linear_solvers.h" +#include "geometrycentral/surface/embedded_geometry_interface.h" +#include "geometrycentral/surface/signed_heat_method.h" +#include "geometrycentral/surface/surface_mesh.h" + +namespace geometrycentral { +namespace surface { + +class PolygonMeshHeatSolver { + + // === Constructor + PolygonMeshHeatSolver(EmbeddedGeometryInterface& geom, double tCoef = 1.0); + + // === Methods + + // Solve for distance from a single vertex (or collection of points) + VertexData computeDistance(const Vertex& sourceVert); + VertexData computeDistance(const std::vector& sourceVerts); + + // Scalar Extension + VertexData extendScalars(const std::vector>& sources); + + // Compute parallel transport along shortest geodesics from sources at points + VertexData transportTangentVector(const Vertex& sourceVert, const Vector2& sourceVector); + VertexData transportTangentVectors(const std::vector>& sources); + + // Compute the logarithmic map from a source point + // VertexData computeLogMap(const Vertex& sourceVert); // TODO? + + // Solve for signed distance from a curve comprising a sequence of vertices. + VertexData computeSignedDistance(const std::vector>& curves, + const LevelSetConstraint& levelSetConstraint = LevelSetConstraint::ZeroSet); + + // === Options and parameters + + const double tCoef; // the time parameter used for heat flow, measured as time = tCoef * maxDiagonalLength + // default: 1.0 + +private: + // === Members + + // Input mesh and geometry + SurfaceMesh& mesh; + EmbeddedGeometryInterface& geom; + + // Parameters + double shortTime; + + // Solvers + void ensureHaveScalarHeatSolver(); + void ensureHaveVectorHeatSolver(); + void ensureHavePoissonSolver(); + std::unique_ptr>> vectorHeatSolver; + std::unique_ptr> scalarHeatSolver, poissonSolver; + SparseMatrix massMat, laplaceMat; + + // Helpers + void buildSignedCurveSource(const std::vector& curve, Vector>& X0) const; +}; + +} // namespace surface +} // namespace geometrycentral \ No newline at end of file From 1cdd461e4bfe061f49beef5d34672ad438044c67 Mon Sep 17 00:00:00 2001 From: nzfeng Date: Sun, 8 Sep 2024 23:31:25 -0400 Subject: [PATCH 18/21] Finalize changes --- .../docs/pointcloud/algorithms/heat_solver.md | 2 +- .../surface/algorithms/polygon_heat_solver.md | 114 ++++++++++++++++++ .../surface/algorithms/signed_heat_method.md | 2 +- docs/docs/surface/geometry/quantities.md | 20 +-- .../surface/polygon_mesh_heat_solver.h | 4 +- .../geometrycentral/surface/surface_point.ipp | 6 +- src/CMakeLists.txt | 2 + src/surface/embedded_geometry_interface.cpp | 2 +- .../surface/polygon_mesh_heat_solver.cpp | 66 +++++++--- 9 files changed, 182 insertions(+), 36 deletions(-) create mode 100644 docs/docs/surface/algorithms/polygon_heat_solver.md rename {include/geometrycentral => src}/surface/polygon_mesh_heat_solver.cpp (85%) diff --git a/docs/docs/pointcloud/algorithms/heat_solver.md b/docs/docs/pointcloud/algorithms/heat_solver.md index f8f90544..4aae61e3 100644 --- a/docs/docs/pointcloud/algorithms/heat_solver.md +++ b/docs/docs/pointcloud/algorithms/heat_solver.md @@ -101,7 +101,7 @@ The `SignedHeatOptions` struct allows several options: | Field | Default value |Meaning| |---|---|---| | `#!cpp bool preserveSourceNormals`| `false` | If `true`, preserve the initial curve normals at the source curve during vector diffusion. | -| `#!cpp LevelSetConstraint levelSetConstraint`| `LevelSetConstraint::ZeroSet` | Specifies how/if level sets should be preserved. Can be set to `LevelSetConstraint::ZeroSet`, `LevelSetConstraint::Multiple`, or `LevelSetConstraint::None`, corresponding to preserving the zero set, mulitple level sets (one for each curve component), or no level sets, respectively. | +| `#!cpp LevelSetConstraint levelSetConstraint`| `LevelSetConstraint::ZeroSet` | Specifies how/if level sets should be preserved. Can be set to `LevelSetConstraint::ZeroSet`, `LevelSetConstraint::Multiple`, or `LevelSetConstraint::None`, corresponding to preservation of `curves` as the zero set, as multiple level sets (one for each curve component), or no constraint, respectively. | | `#!cpp double softLevelSetWeight`| `-1` | If greater than 0, gives the weight with which the given level set constraint is "softly" enforced. | ## Scalar extension diff --git a/docs/docs/surface/algorithms/polygon_heat_solver.md b/docs/docs/surface/algorithms/polygon_heat_solver.md new file mode 100644 index 00000000..4a5a00de --- /dev/null +++ b/docs/docs/surface/algorithms/polygon_heat_solver.md @@ -0,0 +1,114 @@ +# Heat distance and transport on general polygon meshes + +Compute signed and unsigned geodesic distance, and transport tangent vectors using fast solvers based on short-time heat flow. + +![TODO: polygon mesh heat solve results](/media/point_heat_solvers_updated.png) + +These routines implement general polygon mesh versions of the algorithms from: + +- [The Heat Method for Distance Computation](http://www.cs.cmu.edu/~kmcrane/Projects/HeatMethod/index.html) (distance) +- [The Vector Heat Method](https://nmwsharp.com/research/vector-heat-method) (parallel transport) +- [A Heat Method for Generalized Signed Distance](https://nzfeng.github.io/research/SignedHeatMethod/index.html) (signed distance) + +All computation is encapsulated by the `PolygonMeshHeatSolver` class, which maintains prefactored linear systems for the various methods. Some setup work is performed both on construction, and after the first query. Subsequent queries, even with different source points, will be fast. + +`#include "geometrycentral/surface/polygon_mesh_heat_solver.h"` + + +**Example:** Basic usage + +```cpp +#include "geometrycentral/surface/polygon_mesh_heat_solver.h" + +using namespace geometrycentral; +using namespace geometrycentral::surface; + +// Read in a polygon mesh +std::unique_ptr mesh; +std::unique_ptr geom; +std::tie(mesh, geom) = readSurfaceMesh("my_mesh.obj"); + +// Create the solver +PolygonMeshHeatSolver solver(*geom); + +// Pick a source point or two +Vertex vSource = mesh->vertex(7); +Vertex vSource2 = mesh->vertex(8); + +// Pick some source curves +std::vector> curves; +curves.push_back({mesh->vertex(11), mesh->vertex(12), mesh->vertex(15), mesh->vertex(14), mesh->vertex(13)}); +curves.push_back({mesh->vertex(17), mesh->vertex(18), mesh->vertex(19)}); + +// Compute geodesic distance +VertexData distance = solver.computeDistance(vSource); + +// Compute signed distance to a set of curves. +VertexData signedDistance = solver.computeSignedDistance(curves); + +// Compute scalar extension +VertexData extended = solver.extendScalars({{vSource, 3.}, + {vSource2, -5.}}); + +// Compute parallel transport +Vector2 sourceVec{1, 2}; +VertexData transport = solver.transportTangentVector(vSource, sourceVec); +``` + +### Constructor + +??? func "`#!cpp PolygonMeshHeatSolver::PolygonMeshHeatSolver(EmbeddedGeometryInterface& geom, double tCoef = 1.0)`" + + Create a new solver for the heat methods. Precomputation is performed at startup and lazily as needed. + + - `geom` is the geometry (and hence mesh) on which to compute. Any embedded geometry object (`VertexPositionGeometry`, etc) can be passed here. + + - `tCoef` is the time to use for short time heat flow, as a factor `m * h^2`, where `h` is the maximum between-point spacing. The default value of `1.0` is almost always sufficient. + + Algorithm options (like `tCoef`) cannot be changed after construction; create a new solver object with the new settings. + + +## Geodesic distance + +_Geodesic distance_ is the distance from a given source along the surface represented by the point cloud. Specifying multiple source points yields the distance to the nearest source. + +??? func "`#!cpp VertexData PolygonMeshHeatSolver::computeDistance(const Vertex& sourceVert)`" + + Compute the geodesic distance from `sourceVert` to all other points. + +??? func "`#!cpp VertexData PolygonMeshHeatSolver::computeDistance(const std::vector& sourceVerts)`" + + Like above, but for multiple source points. + +## Signed geodesic distance + +??? func "`#!cpp VertexData PolygonMeshHeatSolver::computeSignedDistance(const std::vector>& curves, const LevelSetConstraint& levelSetConstraint = LevelSetConstraint::ZeroSet)`" + + Compute the signed geodesic distance from a set of curves `curves` to all other points. Each curve in `curves` is a single connected component specified as an ordered sequence of points; curve orientations are derived from this order. The argument `levelSetConstraint` can be set to `LevelSetConstraint::ZeroSet`, `LevelSetConstraint::Multiple`, or `LevelSetConstraint::None`, corresponding to preservation of `curves` as the zero set, as multiple level sets (one for each curve component), or no constraint, respectively. + +## Scalar extension + +Given scalar values defined at isolated vertices in the domain, extend it to a scalar field on all vertices. Each point will take the value from the nearest source point, in the sense of geodesic distance. Note that the fast diffusion algorithm means the result is a slightly smoothed-out field. + +??? func "`#!cpp VertexData PolygonMeshHeatSolver::extendScalars(const std::vector>& sources)`" + + Given a collection of source vertices and scalars at those vertices, extends the scalar field to the whole mesh as a nearest-geodesic-neighbor interpolant. + + +## Vector extension + +Given tangent vectors defined at one or more isolated source locations on a surface, extend transport the vectors across the entire domain according to parallel transport. Each point on the domain will take the value of the nearest source point. Note that the fast diffusion algorithm means the result is a slightly smoothed-out field. + +??? func "`#!cpp VertexData PolygonMeshHeatSolver::transportTangentVector(const Vertex& sourceVert, const Vector2& sourceVector)`" + + Shorthand for the general version below when there is just one vector. + + Computes parallel transport of the given vector along shortest geodesics to the rest of the domain. + + Polar directions are defined in each vertex's tangent space. [See `EmbeddedGeometryInterface::vertexTangentBasis`](/surface/geometry#vertex-tangent-basis). + +??? func "`#!cpp VertexData PolygonMeshHeatSolver::transportTangentVectors(const std::vector>& sources)`" + + Given a collection of source vertices and tangent vectors at those vertices, extends the vector field to the whole domain as a nearest-geodesic-neighbor interpolant via parallel transport along shortest geodesics. + + Polar directions are defined in each vertex's tangent space. [See `EmbeddedGeometryInterface::vertexTangentBasis`](/surface/geometry#vertex-tangent-basis). diff --git a/docs/docs/surface/algorithms/signed_heat_method.md b/docs/docs/surface/algorithms/signed_heat_method.md index 6cf799a3..363fbb3f 100644 --- a/docs/docs/surface/algorithms/signed_heat_method.md +++ b/docs/docs/surface/algorithms/signed_heat_method.md @@ -78,7 +78,7 @@ Options are passed in to `computeDistance` via a `SignedHeatOptions` struct, whi | Field | Default value |Meaning| |---|---|---| | `#!cpp bool preserveSourceNormals`| `false` | If `true`, preserve the initial curve normals at the source curve during vector diffusion. | -| `#!cpp LevelSetConstraint levelSetConstraint`| `LevelSetConstraint::ZeroSet` | Specifies how/if level sets should be preserved. Can be set to `LevelSetConstraint::ZeroSet`, `LevelSetConstraint::Multiple`, or `LevelSetConstraint::None`, corresponding to preserving the zero set, mulitple level sets (one for each curve component), or no level sets, respectively. | +| `#!cpp LevelSetConstraint levelSetConstraint`| `LevelSetConstraint::ZeroSet` | Specifies how/if level sets should be preserved. Can be set to `LevelSetConstraint::ZeroSet`, `LevelSetConstraint::Multiple`, or `LevelSetConstraint::None`, corresponding to preservation of the input curves as the zero set, as multiple level sets (one for each curve component), or no constraint, respectively. | | `#!cpp double softLevelSetWeight`| `-1` | If greater than 0, gives the weight with which the given level set constraint is "softly" enforced. | ## Citation diff --git a/docs/docs/surface/geometry/quantities.md b/docs/docs/surface/geometry/quantities.md index 2b73c2e4..01ddbc75 100644 --- a/docs/docs/surface/geometry/quantities.md +++ b/docs/docs/surface/geometry/quantities.md @@ -553,9 +553,9 @@ All operators are indexed over mesh elements according to the natural iteration Here are polygon mesh operators from [Bunge et al.'s _Polygon Laplacian Made Simple_](https://www.cs.jhu.edu/~misha/MyPapers/EUROG20.pdf). -??? func "polygon Laplacian (simple)" +??? func "polygon mesh Laplacian (simple)" - ##### polygon Laplacian (simple) + ##### polygon mesh Laplacian (simple) The discrete Laplace operator acting on polygon meshes, using Bunge et al.'s virtual refinement method in _Polygon Laplacian Made Simple_. @@ -592,9 +592,9 @@ Here are polygon mesh operators from [Bunge et al.'s _Polygon Laplacian Made Sim And here are polygon mesh operators from [de Goes et al.'s _Discrete Differential Operators on Polygonal Meshes_](https://graphics.pixar.com/library/PolyDDG/paper.pdf). -??? func "polygon Laplacian" +??? func "polygon mesh Laplacian" - ##### polygon Laplacian + ##### polygon mesh Laplacian The discrete Laplace operator acting on polygon meshes, using de Goes et al.'s _Discrete Differential Operators on Polygonal Meshes_. @@ -607,9 +607,9 @@ And here are polygon mesh operators from [de Goes et al.'s _Discrete Differentia - **member:** `Eigen::SparseMatrix EmbeddedGeometryInterface::polygonLaplacian` - **require:** `void EmbeddedGeometryInterface::requirePolygonLaplacian()` -??? func "polygon gradient matrix" +??? func "polygon mesh gradient matrix" - ##### polygon gradient matrix + ##### polygon mesh gradient matrix The discrete gradient operator acting on polygon meshes, using de Goes et al.'s _Discrete Differential Operators on Polygonal Meshes_. @@ -620,9 +620,9 @@ And here are polygon mesh operators from [de Goes et al.'s _Discrete Differentia - **member:** `Eigen::SparseMatrix EmbeddedGeometryInterface::polygonGradientMatrix` - **require:** `void EmbeddedGeometryInterface::requirePolygonGradientMatrix()` -??? func "polygon divergence matrix" +??? func "polygon mesh divergence matrix" - ##### polygon divergence matrix + ##### polygon mesh divergence matrix The discrete divergence operator acting on polygon meshes, using de Goes et al.'s _Discrete Differential Operators on Polygonal Meshes_. @@ -663,9 +663,9 @@ And here are polygon mesh operators from [de Goes et al.'s _Discrete Differentia - **member:** `Eigen::SparseMatrix> EmbeddedGeometryInterface::polygonVertexConnectionLaplacian` - **require:** `void EmbeddedGeometryInterface::requirePolygonVertexConnectionLaplacian()` -??? func "polygon DEC operators" +??? func "polygon mesh DEC operators" - ##### polygon DEC operators + ##### polygon mesh DEC operators These operators are the basic building blocks for _discrete exterior calculus_ on polygon meshes, using de Goes et al.'s _Discrete Differential Operators on Polygonal Meshes_. Takes in an additional parameter $\lambda$ defining a stabilization term to ensure inner products of discrete 1-forms remain positive-definite on non-triangular faces. diff --git a/include/geometrycentral/surface/polygon_mesh_heat_solver.h b/include/geometrycentral/surface/polygon_mesh_heat_solver.h index 3fc01228..6d877747 100644 --- a/include/geometrycentral/surface/polygon_mesh_heat_solver.h +++ b/include/geometrycentral/surface/polygon_mesh_heat_solver.h @@ -10,6 +10,7 @@ namespace surface { class PolygonMeshHeatSolver { +public: // === Constructor PolygonMeshHeatSolver(EmbeddedGeometryInterface& geom, double tCoef = 1.0); @@ -26,9 +27,6 @@ class PolygonMeshHeatSolver { VertexData transportTangentVector(const Vertex& sourceVert, const Vector2& sourceVector); VertexData transportTangentVectors(const std::vector>& sources); - // Compute the logarithmic map from a source point - // VertexData computeLogMap(const Vertex& sourceVert); // TODO? - // Solve for signed distance from a curve comprising a sequence of vertices. VertexData computeSignedDistance(const std::vector>& curves, const LevelSetConstraint& levelSetConstraint = LevelSetConstraint::ZeroSet); diff --git a/include/geometrycentral/surface/surface_point.ipp b/include/geometrycentral/surface/surface_point.ipp index 9d324f4d..e3cf28ce 100644 --- a/include/geometrycentral/surface/surface_point.ipp +++ b/include/geometrycentral/surface/surface_point.ipp @@ -263,11 +263,11 @@ inline bool SurfacePoint::operator==(const SurfacePoint& other) const { break; } case SurfacePointType::Edge: { - return edge == other.edge && abs(tEdge - other.tEdge) < eps; + return edge == other.edge && tEdge == other.tEdge; break; } case SurfacePointType::Face: { - return face == other.face && (faceCoords - other.faceCoords).norm() < eps; + return face == other.face && faceCoords == other.faceCoords; break; } } @@ -306,8 +306,6 @@ inline Edge sharedEdge(const SurfacePoint& pA, const SurfacePoint& pB) { if (pA.type == SurfacePointType::Face || pB.type == SurfacePointType::Face) return Edge(); - // This is kind of ugly code, esp. since there's only two options for the switch statement. But a nested-if looks even - // worse... switch (pA.type) { case SurfacePointType::Vertex: { switch (pB.type) { diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index e11380b7..320427c6 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -32,6 +32,7 @@ SET(SRCS surface/heat_method_distance.cpp surface/vector_heat_method.cpp surface/signed_heat_method.cpp + surface/polygon_mesh_heat_solver.cpp surface/geodesic_centroidal_voronoi_tessellation.cpp surface/trace_geodesic.cpp surface/normal_coordinates.cpp @@ -125,6 +126,7 @@ SET(HEADERS ${INCLUDE_ROOT}/surface/mesh_ray_tracer.h ${INCLUDE_ROOT}/surface/parameterize.h ${INCLUDE_ROOT}/surface/poisson_disk_sampler.h + ${INCLUDE_ROOT}/surface/polygon_mesh_heat_solver.h ${INCLUDE_ROOT}/surface/quadric_error_simplification.h ${INCLUDE_ROOT}/surface/remeshing.h ${INCLUDE_ROOT}/surface/rich_surface_mesh_data.h diff --git a/src/surface/embedded_geometry_interface.cpp b/src/surface/embedded_geometry_interface.cpp index bd54d566..d87d3251 100644 --- a/src/surface/embedded_geometry_interface.cpp +++ b/src/surface/embedded_geometry_interface.cpp @@ -946,7 +946,7 @@ Eigen::MatrixXd EmbeddedGeometryInterface::polygonPerFaceGradientMatrix(const Fa double A = faceAreas[f]; Vector3 n = faceNormals[f]; Eigen::Vector3d N = {n[0], n[1], n[2]}; - return -1. / A * bracket(N) * polygonCoGradientMatrix(f); + return 1. / A * bracket(N) * polygonCoGradientMatrix(f); } Eigen::MatrixXd EmbeddedGeometryInterface::polygonCoGradientMatrix(const Face& f) { diff --git a/include/geometrycentral/surface/polygon_mesh_heat_solver.cpp b/src/surface/polygon_mesh_heat_solver.cpp similarity index 85% rename from include/geometrycentral/surface/polygon_mesh_heat_solver.cpp rename to src/surface/polygon_mesh_heat_solver.cpp index 2d889539..19c58c78 100644 --- a/include/geometrycentral/surface/polygon_mesh_heat_solver.cpp +++ b/src/surface/polygon_mesh_heat_solver.cpp @@ -24,7 +24,7 @@ PolygonMeshHeatSolver::PolygonMeshHeatSolver(EmbeddedGeometryInterface& geom_, d } } } - shortTime = tCoef * maxDiagonal * maxDiagonal; + shortTime = tCoef * maxDiagonalLength * maxDiagonalLength; geom.requirePolygonVertexLumpedMassMatrix(); geom.requirePolygonLaplacian(); @@ -63,17 +63,53 @@ void PolygonMeshHeatSolver::ensureHavePoissonSolver() { } VertexData PolygonMeshHeatSolver::computeDistance(const Vertex& sourceVert) { - std::vector v{sourcePoint}; + std::vector v{sourceVert}; return computeDistance(v); } VertexData PolygonMeshHeatSolver::computeDistance(const std::vector& sourceVerts) { - // TODO: update which polygon Laplacian we use, depending on which is more accurate GC_SAFETY_ASSERT(sourceVerts.size() != 0, "must have at least one source"); + + geom.requirePolygonGradientMatrix(); + geom.requirePolygonDivergenceMatrix(); + geom.requireVertexIndices(); + + // Flow heat. + size_t V = mesh.nVertices(); + size_t F = mesh.nFaces(); + Vector rho = Vector::Zero(V); + for (Vertex v : sourceVerts) { + size_t vIdx = geom.vertexIndices[v]; + rho[vIdx] += 1; + } + + ensureHaveScalarHeatSolver(); + Vector X = scalarHeatSolver->solve(rho); + + // Normalize gradient. + Vector Y = geom.polygonGradientMatrix * X; // 3|F| + for (size_t i = 0; i < F; i++) { + Vector3 g = {Y[3 * i], Y[3 * i + 1], Y[3 * i + 2]}; + g /= g.norm(); + for (int j = 0; j < 3; j++) Y[3 * i + j] = g[j]; + } + + // Integrate. + ensureHavePoissonSolver(); + Vector div = -geom.polygonDivergenceMatrix * Y; + Vector distances = poissonSolver->solve(div); + + // Shift solution. + distances -= distances.minCoeff() * Vector::Ones(V); + + geom.unrequirePolygonGradientMatrix(); + geom.unrequirePolygonDivergenceMatrix(); + geom.unrequireVertexIndices(); + + return VertexData(mesh, distances); } VertexData PolygonMeshHeatSolver::extendScalars(const std::vector>& sources) { - // TODO: update which polygon Laplacian we use, depending on which is more accurate GC_SAFETY_ASSERT(sources.size() != 0, "must have at least one source"); ensureHaveScalarHeatSolver(); @@ -111,7 +147,7 @@ PolygonMeshHeatSolver::transportTangentVectors(const std::vector> dirRHS = Vector>::Zero(V); - std::vector> magnitudeSources; + std::vector> magnitudeSources; bool normsAllSame = true; double firstNorm = std::get<1>(sources[0]).norm(); for (size_t i = 0; i < sources.size(); i++) { @@ -127,29 +163,27 @@ PolygonMeshHeatSolver::transportTangentVectors(const std::vector> vecSolution = vectorHeatSolver->solve(dirRHS); // Set scale + VertexData solution(mesh); if (normsAllSame) { vecSolution = (vecSolution.array() / vecSolution.array().abs()) * firstNorm; + for (size_t i = 0; i < V; i++) solution[i] = Vector2::fromComplex(vecSolution[i]); } else { - VertexData interpMags = extendScalar(magnitudeSources); - for (Vertex v : mesh.vertices()) { - size_t idx = geom.vertexIndices[v]; - Vector2 dir = Vector2::fromComplex(vecSolution[idx]).normalize(); - vecSolution[idx] = dir * interpMags[v]; + VertexData interpMags = extendScalars(magnitudeSources); + for (size_t i = 0; i < V; i++) { + Vector2 dir = Vector2::fromComplex(vecSolution[i]).normalize(); + solution[i] = dir * interpMags[i]; } } - geom.unrequireVertexIndices(); - - return VertexData(mesh, vecSolution); + return solution; } -// VertexData PolygonMeshHeatSolver::computeLogMap(const Vertex& sourceVert) {} // TODO? - VertexData PolygonMeshHeatSolver::computeSignedDistance(const std::vector>& curves, const LevelSetConstraint& levelSetConstraint) { @@ -163,7 +197,7 @@ VertexData PolygonMeshHeatSolver::computeSignedDistance(const std::vecto if (X0.norm() == 0) throw std::logic_error("Input curves must be nonempty to run Signed Heat Method."); ensureHaveVectorHeatSolver(); - Vector> Xt = ectorHeatSolver->solve(X0); + Vector> Xt = vectorHeatSolver->solve(X0); // Average onto faces, and normalize. size_t F = mesh.nFaces(); From a9dad971cf3a30f78ddaf89a45d60fcff45c80c2 Mon Sep 17 00:00:00 2001 From: nzfeng Date: Tue, 10 Sep 2024 10:57:37 -0400 Subject: [PATCH 19/21] Add licensing info --- .../geometrycentral/surface/embedded_geometry_interface.h | 6 ++++++ src/surface/embedded_geometry_interface.cpp | 5 +++++ 2 files changed, 11 insertions(+) diff --git a/include/geometrycentral/surface/embedded_geometry_interface.h b/include/geometrycentral/surface/embedded_geometry_interface.h index 0f0c0a90..711d970c 100644 --- a/include/geometrycentral/surface/embedded_geometry_interface.h +++ b/include/geometrycentral/surface/embedded_geometry_interface.h @@ -139,6 +139,9 @@ class EmbeddedGeometryInterface : public ExtrinsicGeometryInterface { // == Polygon Operators // = Bunge et al. "Polygon Laplacian Made Simple" (2020), based on virtual refinement (virtual node method). + // Copyright (C) 2020 Astrid Bunge, Philipp Herholz, Misha Kazhdan, Mario Botsch, MIT license + // (Modified to work in geometry-central. Original code can be found here: + // https://github.com/mbotsch/polygon-laplacian) // Laplacian DependentQuantityD> simplePolygonLaplacianQ; @@ -163,6 +166,9 @@ class EmbeddedGeometryInterface : public ExtrinsicGeometryInterface { virtual Eigen::VectorXd simplePolygonVirtualVertex(const Eigen::MatrixXd& poly) const; // = de Goes et al. "Discrete Differential Operators on Polygonal Meshes" (2020), based on the virtual element method. + // Use of this source code is governed by a LGPL-3.0 license. + // (Modified to work in geometry-central. Original code can be found here: + // https://github.com/DGtal-team/DGtal/blob/master/src/DGtal/dec/PolygonalCalculus.h) // Laplacian DependentQuantityD> polygonLaplacianQ; diff --git a/src/surface/embedded_geometry_interface.cpp b/src/surface/embedded_geometry_interface.cpp index d87d3251..230f3a0f 100644 --- a/src/surface/embedded_geometry_interface.cpp +++ b/src/surface/embedded_geometry_interface.cpp @@ -358,6 +358,8 @@ void EmbeddedGeometryInterface::computeEdgeCotanWeights() { // === Polygon Operators // = Bunge et al. "Polygon Laplacian Made Simple" (2020), based on virtual refinement (virtual node method). +// Copyright (C) 2020 Astrid Bunge, Philipp Herholz, Misha Kazhdan, Mario Botsch, MIT license +// (Modified to work in geometry-central. Original code can be found here: https://github.com/mbotsch/polygon-laplacian) // Laplacian void EmbeddedGeometryInterface::computeSimplePolygonLaplacian() { @@ -660,6 +662,9 @@ Eigen::VectorXd EmbeddedGeometryInterface::simplePolygonVirtualVertex(const Eige // = de Goes et al. "Discrete Differential Operators on Polygonal Meshes" (2020), based on the virtual element method. +// Use of this source code is governed by a LGPL-3.0 license. +// (Modified to work in geometry-central. Original code can be found here: +// https://github.com/DGtal-team/DGtal/blob/master/src/DGtal/dec/PolygonalCalculus.h) // Laplacian void EmbeddedGeometryInterface::computePolygonLaplacian() { From d01ff4d4808cc9e4d1b0aa5ecadbe67ee94c6d5e Mon Sep 17 00:00:00 2001 From: nzfeng Date: Thu, 12 Sep 2024 17:24:09 -0400 Subject: [PATCH 20/21] Finish implementation and docs --- docs/docs/media/polygon_heat_solvers.png | Bin 0 -> 824923 bytes .../surface/algorithms/geodesic_distance.md | 2 + .../surface/algorithms/polygon_heat_solver.md | 5 +- .../surface/algorithms/signed_heat_method.md | 3 +- .../surface/algorithms/vector_heat_method.md | 1 + docs/mkdocs.yml | 1 + .../surface/polygon_mesh_heat_solver.h | 1 + src/surface/embedded_geometry_interface.cpp | 8 ++- src/surface/polygon_mesh_heat_solver.cpp | 67 ++++++++++++------ 9 files changed, 61 insertions(+), 27 deletions(-) create mode 100644 docs/docs/media/polygon_heat_solvers.png diff --git a/docs/docs/media/polygon_heat_solvers.png b/docs/docs/media/polygon_heat_solvers.png new file mode 100644 index 0000000000000000000000000000000000000000..0b8eee941dbb39416a4c9ff6655721c21e3c1af9 GIT binary patch literal 824923 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%0D4sOOO9Us_?kla|PV| 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

&HS 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 z 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%0AWa=QcIN~Ds%L?sON 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%0Dw};m^Z)ln{S%=*6l}*A5X=ISwSU)fB+04%++?M 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 curve, Vector>& X0) const; + double computeAverageValue(const std::vector>& curves, const Vector& u); }; } // namespace surface diff --git a/src/surface/embedded_geometry_interface.cpp b/src/surface/embedded_geometry_interface.cpp index 230f3a0f..fa66de82 100644 --- a/src/surface/embedded_geometry_interface.cpp +++ b/src/surface/embedded_geometry_interface.cpp @@ -286,8 +286,12 @@ void EmbeddedGeometryInterface::computeCornerAngles() { // WARNING: Logic duplicated between cached and immediate version Halfedge he = c.halfedge(); Vector3 pA = vertexPositions[he.vertex()]; - Vector3 pB = vertexPositions[he.next().vertex()]; - Vector3 pC = vertexPositions[he.twin().next().next().vertex()]; + he = he.next(); + Vector3 pB = vertexPositions[he.vertex()]; + do { + he = he.next(); + } while (he.next() != c.halfedge()); + Vector3 pC = vertexPositions[he.vertex()]; double q = dot(unit(pB - pA), unit(pC - pA)); q = clamp(q, -1.0, 1.0); diff --git a/src/surface/polygon_mesh_heat_solver.cpp b/src/surface/polygon_mesh_heat_solver.cpp index 19c58c78..a75f5c0a 100644 --- a/src/surface/polygon_mesh_heat_solver.cpp +++ b/src/surface/polygon_mesh_heat_solver.cpp @@ -7,24 +7,14 @@ PolygonMeshHeatSolver::PolygonMeshHeatSolver(EmbeddedGeometryInterface& geom_, d : tCoef(tCoef_), mesh(geom_.mesh), geom(geom_) { - // Compute the maximum length over all polygon diagonals, as suggested by de Goes et al. - double maxDiagonalLength = 0.; - for (Face f : mesh.faces()) { - std::vector vertices; - for (Vertex v : f.adjacentVertices()) { - vertices.push_back(v); - } - size_t n = vertices.size(); - for (size_t i = 0; i < n; i++) { - Vector3 pi = geom.vertexPositions[vertices[i]]; - for (size_t j = i + 1; j < n; j++) { - Vector3 pj = geom.vertexPositions[vertices[j]]; - double length = (pi - pj).norm(); - maxDiagonalLength = std::max(maxDiagonalLength, length); - } - } - } - shortTime = tCoef * maxDiagonalLength * maxDiagonalLength; + // Though de Goes et al. suggest using the maximum length over all polygon diagonals, using the mean length seems more + // accurate. + geom.requireEdgeLengths(); + double meanEdgeLength = 0.; + for (Edge e : mesh.edges()) meanEdgeLength += geom.edgeLengths[e]; + meanEdgeLength /= mesh.nEdges(); + shortTime = tCoef * meanEdgeLength * meanEdgeLength; + geom.unrequireEdgeLengths(); geom.requirePolygonVertexLumpedMassMatrix(); geom.requirePolygonLaplacian(); @@ -34,7 +24,6 @@ PolygonMeshHeatSolver::PolygonMeshHeatSolver(EmbeddedGeometryInterface& geom_, d geom.unrequirePolygonLaplacian(); } - void PolygonMeshHeatSolver::ensureHaveScalarHeatSolver() { if (scalarHeatSolver != nullptr) return; @@ -116,11 +105,12 @@ VertexData PolygonMeshHeatSolver::extendScalars(const std::vector rhsVals = Vector::Zero(V); - Vector rhsOnes = Vector::Ones(V); + Vector rhsOnes = Vector::Zero(V); for (size_t i = 0; i < sources.size(); i++) { size_t ind = std::get<0>(sources[i]).getIndex(); double val = std::get<1>(sources[i]); - rhsVals(ind) = val; + rhsVals[ind] = val; + rhsOnes[ind] = 1.; } Vector interpVals = scalarHeatSolver->solve(rhsVals); @@ -194,7 +184,7 @@ VertexData PolygonMeshHeatSolver::computeSignedDistance(const std::vecto geom.requireVertexNormals(); for (const auto& curve : curves) buildSignedCurveSource(curve, X0); geom.unrequireVertexNormals(); - if (X0.norm() == 0) throw std::logic_error("Input curves must be nonempty to run Signed Heat Method."); + GC_SAFETY_ASSERT(X0.norm() != 0, "must have at least one source"); ensureHaveVectorHeatSolver(); Vector> Xt = vectorHeatSolver->solve(X0); @@ -227,6 +217,9 @@ VertexData PolygonMeshHeatSolver::computeSignedDistance(const std::vecto if (levelSetConstraint == LevelSetConstraint::None) { ensureHavePoissonSolver(); phi = poissonSolver->solve(divYt); + // Shift so that average value is zero along input curves. + double shift = computeAverageValue(curves, phi); + phi -= shift * Vector::Ones(V); } else if (levelSetConstraint == LevelSetConstraint::ZeroSet) { Vector setAMembership = Vector::Ones(V); for (const auto& curve : curves) { @@ -267,6 +260,8 @@ VertexData PolygonMeshHeatSolver::computeSignedDistance(const std::vecto RHS.head(V) = divYt; Vector soln = solveSquare(LHS, RHS); phi = soln.head(V); + double shift = computeAverageValue(curves, phi); + phi -= shift * Vector::Ones(V); } geom.unrequireVertexIndices(); @@ -304,5 +299,33 @@ void PolygonMeshHeatSolver::buildSignedCurveSource(const std::vector& cu } } +double PolygonMeshHeatSolver::computeAverageValue(const std::vector>& curves, + const Vector& u) { + + geom.requireVertexIndices(); + + double shift = 0.; + double totalLength = 0.; + for (const auto& curve : curves) { + size_t nNodes = curve.size(); + for (size_t i = 0; i < nNodes - 1; i++) { + Vertex vA = curve[i]; + Vertex vB = curve[i + 1]; + size_t vIdxA = geom.vertexIndices[vA]; + size_t vIdxB = geom.vertexIndices[vB]; + Vector3 pA = geom.vertexPositions[vA]; + Vector3 pB = geom.vertexPositions[vB]; + double length = (pB - pA).norm(); + shift += 0.5 * length * (u[vIdxA] + u[vIdxB]); + totalLength += length; + } + } + shift /= totalLength; + + geom.unrequireVertexIndices(); + + return shift; +} + } // namespace surface } // namespace geometrycentral \ No newline at end of file From 326df4024c3d7b43b79b78ca52ada406420f0889 Mon Sep 17 00:00:00 2001 From: nzfeng Date: Tue, 17 Sep 2024 13:17:22 -0400 Subject: [PATCH 21/21] Add tests --- src/surface/embedded_geometry_interface.cpp | 7 +- test/CMakeLists.txt | 1 + test/src/polygon_operators_test.cpp | 116 ++++++++++++++++++++ 3 files changed, 121 insertions(+), 3 deletions(-) create mode 100644 test/src/polygon_operators_test.cpp diff --git a/src/surface/embedded_geometry_interface.cpp b/src/surface/embedded_geometry_interface.cpp index fa66de82..f9f73cfe 100644 --- a/src/surface/embedded_geometry_interface.cpp +++ b/src/surface/embedded_geometry_interface.cpp @@ -827,13 +827,14 @@ void EmbeddedGeometryInterface::computePolygonDECOperators() { size_t V = mesh.nVertices(); size_t E = mesh.nEdges(); size_t F = mesh.nFaces(); - size_t H = mesh.nInteriorHalfedges(); + size_t H = mesh.nHalfedges(); // technically only needs to be nInteriorHalfedges(), but interior halfedges aren't + // indexed densely std::vector> tripletsD0, tripletsD1, tripletsH1; // exterior derivatives polygonD0 = Eigen::SparseMatrix(H, V); - for (Edge e : mesh.edges()) { - for (Halfedge he : e.adjacentHalfedges()) { + for (Face f : mesh.faces()) { + for (Halfedge he : f.adjacentHalfedges()) { size_t hIdx = halfedgeIndices[he]; size_t vA = vertexIndices[he.tailVertex()]; size_t vB = vertexIndices[he.tipVertex()]; diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 3f13bf1f..12869f92 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -106,6 +106,7 @@ set(TEST_SRCS src/load_test_meshes.cpp src/point_cloud_test.cpp src/poisson_disk_sampler_test.cpp + src/polygon_operators_test.cpp src/stl_reader_test.cpp src/surface_misc_test.cpp ) diff --git a/test/src/polygon_operators_test.cpp b/test/src/polygon_operators_test.cpp new file mode 100644 index 00000000..a9e9756c --- /dev/null +++ b/test/src/polygon_operators_test.cpp @@ -0,0 +1,116 @@ +#include "geometrycentral/surface/embedded_geometry_interface.h" +#include "geometrycentral/surface/meshio.h" +#include "geometrycentral/surface/vertex_position_geometry.h" + +#include "load_test_meshes.h" + +#include "gtest/gtest.h" + +#include +#include + +using namespace geometrycentral; +using namespace geometrycentral::surface; + +class PolygonMeshSuite : public MeshAssetSuite {}; + +/* Test that the lumped mass matrices correspond with their unlumped versions. */ +TEST_F(PolygonMeshSuite, MassLumpingTest) { + + double epsilon = 1e-8; + for (MeshAsset& a : allMeshes()) { + a.printThyName(); + SurfaceMesh& mesh = *a.mesh; + VertexPositionGeometry& geometry = *a.geometry; + + geometry.requireSimplePolygonVertexLumpedMassMatrix(); + geometry.requireSimplePolygonVertexGalerkinMassMatrix(); + + SparseMatrix Mt = geometry.simplePolygonVertexGalerkinMassMatrix.transpose(); + SparseMatrix& M = geometry.simplePolygonVertexLumpedMassMatrix; + for (size_t i = 0; i < mesh.nVertices(); i++) { + double rowSum = 0.; + for (SparseMatrix::InnerIterator it(Mt, i); it; ++it) { + rowSum += it.value(); + } + EXPECT_LT(std::abs(rowSum - M.coeffRef(i, i)), epsilon); + } + + geometry.unrequireSimplePolygonVertexLumpedMassMatrix(); + geometry.unrequireSimplePolygonVertexGalerkinMassMatrix(); + } +} + +/* Check that polygon Laplacians and mass matrices coincide with simplicial versions on a triangle mesh. */ +TEST_F(PolygonMeshSuite, TriangularTest) { + + double epsilon = 1e-8; + for (MeshAsset& a : triangularMeshes()) { + a.printThyName(); + SurfaceMesh& mesh = *a.mesh; + VertexPositionGeometry& geometry = *a.geometry; + + geometry.requireVertexGalerkinMassMatrix(); + geometry.requireVertexLumpedMassMatrix(); + geometry.requireCotanLaplacian(); + geometry.requireSimplePolygonLaplacian(); + geometry.requireSimplePolygonVertexLumpedMassMatrix(); + geometry.requireSimplePolygonVertexGalerkinMassMatrix(); + geometry.requirePolygonLaplacian(); + geometry.requirePolygonVertexLumpedMassMatrix(); + + double L = geometry.cotanLaplacian.norm(); + double Mg = geometry.vertexGalerkinMassMatrix.norm(); + double Ml = geometry.vertexLumpedMassMatrix.norm(); + + EXPECT_LT((geometry.simplePolygonLaplacian - geometry.cotanLaplacian).norm() / L, epsilon); + EXPECT_LT((geometry.polygonLaplacian - geometry.cotanLaplacian).norm() / L, epsilon); + EXPECT_LT((geometry.simplePolygonVertexGalerkinMassMatrix - geometry.vertexGalerkinMassMatrix).norm() / Mg, + epsilon); + EXPECT_LT((geometry.simplePolygonVertexLumpedMassMatrix - geometry.vertexLumpedMassMatrix).norm() / Ml, epsilon); + EXPECT_LT((geometry.polygonVertexLumpedMassMatrix - geometry.vertexLumpedMassMatrix).norm() / Ml, epsilon); + + geometry.unrequireVertexGalerkinMassMatrix(); + geometry.unrequireVertexLumpedMassMatrix(); + geometry.unrequireCotanLaplacian(); + geometry.unrequireSimplePolygonLaplacian(); + geometry.unrequireSimplePolygonVertexLumpedMassMatrix(); + geometry.unrequireSimplePolygonVertexGalerkinMassMatrix(); + geometry.unrequirePolygonLaplacian(); + geometry.unrequirePolygonVertexLumpedMassMatrix(); + } +} + +/* Check that Laplacian can be assembled as expected from DEC operators. */ +TEST_F(PolygonMeshSuite, DECTest) { + + double epsilon = 1e-8; + for (MeshAsset& a : allMeshes()) { + a.printThyName(); + SurfaceMesh& mesh = *a.mesh; + VertexPositionGeometry& geometry = *a.geometry; + + geometry.requirePolygonDECOperators(); + geometry.requirePolygonLaplacian(); + + SparseMatrix& L = geometry.polygonLaplacian; + SparseMatrix& h0 = geometry.polygonHodge0; + SparseMatrix& h0Inv = geometry.polygonHodge0Inverse; + SparseMatrix& h1 = geometry.polygonHodge1; + SparseMatrix& h2 = geometry.polygonHodge2; + SparseMatrix& h2Inv = geometry.polygonHodge2Inverse; + SparseMatrix& d0 = geometry.polygonD0; + SparseMatrix& d1 = geometry.polygonD1; + EXPECT_LT((L - d0.transpose() * h1 * d0).norm(), epsilon); + + if (mesh.isTriangular()) { + geometry.requireDECOperators(); + EXPECT_LT((h0 - geometry.hodge0).norm(), epsilon); + EXPECT_LT((h2 - geometry.hodge2).norm(), epsilon); + geometry.unrequireDECOperators(); + } + + geometry.unrequirePolygonDECOperators(); + geometry.unrequirePolygonLaplacian(); + } +} \ No newline at end of file