Files
ConformalLabpp/doc/architecture/project-structure.md
Tarik Moussa 0f5ab27461 fix(citations): correct Kolpakov-Mednykh misattribution → Springborn 2008
arXiv:math/0603097 is Springborn 2008 ("A variational principle for weighted
Delaunay triangulations and hyperideal polyhedra"), not a Kolpakov-Mednykh paper.
The author pair Kolpakov & Mednykh has no joint publication from 2006; their
earliest collaboration is arXiv:1008.0312 (2010, on torus knots, unrelated).

The wrong author name was introduced during the Java→C++ port — the Java source
correctly links to math/0603097 without naming the authors; whoever ported it
invented "Kolpakov-Mednykh". The S1 citation audit (2026-05-31) then cemented
the error by adding the incorrect row to references.md.

Files corrected (7):
- code/include/hyper_ideal_utility.hpp
- code/include/hyper_ideal_functional.hpp
- code/tests/cgal/test_hyper_ideal_functional.cpp
- doc/math/references.md
- doc/roadmap/research-track.md
- doc/architecture/project-structure.md
- doc/api/tests.md

Also:
- doc/reviewer/math-derivation-citation-audit-2026-05-31.md: M1 post-correction noted
- doc/reviewer/finding-orchestration.md: lesson-learned section added (AI citation
  audits can introduce plausible-but-wrong attributions; human expert review required
  before CGAL submission)
- papers/MANUAL-DOWNLOAD.md: overview of papers requiring manual download (paywalled
  journals, TU Berlin theses, books)
- .gitignore: papers/*.pdf excluded (downloaded arXiv PDFs, not tracked)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-14 06:00:29 +00:00

6.8 KiB
Raw Blame History

Project Structure

ConformalLabpp/
├── CLAUDE.md                         # Claude Code context file
├── README.md                         # Entry point — what/why, quick start, doc index
├── LICENSE                           # MIT
│
├── code/                             # All C++ source
│   ├── CMakeLists.txt                # Root: three build modes (default / CGAL_TESTS / CGAL)
│   │
│   ├── include/                      # Header-only library — all algorithms here
│   │   ├── conformal_mesh.hpp        # ConformalMesh = CGAL::Surface_mesh<Point3>
│   │   ├── constants.hpp             # conformallab::PI, TWO_PI
│   │   ├── clausen.hpp               # Cl₂, Lobachevsky Л, ImLi₂
│   │   ├── hyper_ideal_geometry.hpp  # ζ₁₃/₁₄/₁₅, lᵢⱼ, αᵢⱼ, σᵢ, σᵢⱼ
│   │   ├── hyper_ideal_utility.hpp   # Tetrahedron volumes (Meyerhoff / Springborn 2008)
│   │   ├── hyper_ideal_visualization_utility.hpp  # Poincaré disk projection, circumcircle helpers
│   │   ├── hyper_ideal_functional.hpp # HyperIdeal energy + gradient on ConformalMesh
│   │   ├── hyper_ideal_hessian.hpp   # HyperIdeal Hessian (symmetric FD, Phase 9b: analytic)
│   │   ├── spherical_geometry.hpp    # Spherical arc-length, half-angle formula
│   │   ├── spherical_functional.hpp  # Spherical energy + gradient + gauge-fix
│   │   ├── spherical_hessian.hpp     # Spherical Hessian (∂α/∂u via law of cosines)
│   │   ├── euclidean_geometry.hpp    # Euclidean corner angle (t-value / atan2)
│   │   ├── euclidean_functional.hpp  # Euclidean energy + gradient
│   │   ├── euclidean_hessian.hpp     # Cotangent Laplacian Hessian (PinkallPolthier)
│   │   ├── newton_solver.hpp         # newton_{euclidean,spherical,hyper_ideal} + solve_linear_system
│   │   ├── gauss_bonnet.hpp          # euler_characteristic, genus, check/enforce_gauss_bonnet
│   │   ├── cut_graph.hpp             # CutGraph + compute_cut_graph (tree-cotree)
│   │   ├── layout.hpp                # Priority-BFS layout, MobiusMap, halfedge_uv, HolonomyData
│   │   ├── mesh_builder.hpp          # make_triangle / make_tetrahedron / make_quad_strip / make_fan
│   │   ├── mesh_io.hpp               # load_mesh / save_mesh (OFF/OBJ/PLY via CGAL::IO)
│   │   ├── mesh_utils.hpp            # CGAL → Eigen conversion (cgal_to_eigen)
│   │   ├── serialization.hpp         # save/load_result_json + save/load_result_xml
│   │   ├── period_matrix.hpp         # PeriodData, compute_period_matrix, SL(2,) reduction
│   │   └── fundamental_domain.hpp    # FundamentalDomain, tiling_copy, tiling_neighbourhood
│   │
│   ├── src/
│   │   ├── apps/v0/conformallab_cli.cpp   # CLI app (Phase 5): load → solve → layout → export
│   │   └── viewer/simple_viewer.cpp       # libigl/GLFW viewer wrapper
│   │
│   ├── examples/                     # Standalone example programs (require WITH_CGAL=ON)
│   │   ├── example_euclidean.cpp     # Euclidean pipeline end-to-end
│   │   ├── example_hyper_ideal.cpp   # HyperIdeal pipeline end-to-end
│   │   ├── example_layout.cpp        # Full pipeline: solve → layout → OFF/JSON/XML + round-trip
│   │   └── example_viewer.cpp        # Interactive libigl viewer
│   │
│   ├── tests/
│   │   ├── CMakeLists.txt
│   │   ├── test_clausen.cpp
│   │   ├── test_hyper_ideal_utility.cpp
│   │   ├── test_matrix_utility.cpp
│   │   ├── test_surface_curve_utility.cpp
│   │   ├── test_discrete_elliptic_utility.cpp
│   │   ├── test_p2_utility.cpp
│   │   ├── test_hyper_ideal_visualization_utility.cpp
│   │   └── cgal/                     # CGAL test suite (WITH_CGAL_TESTS or WITH_CGAL)
│   │       ├── test_conformal_mesh.cpp
│   │       ├── test_hyper_ideal_functional.cpp
│   │       ├── test_spherical_functional.cpp
│   │       ├── test_euclidean_functional.cpp
│   │       ├── test_euclidean_hessian.cpp
│   │       ├── test_spherical_hessian.cpp
│   │       ├── test_newton_solver.cpp
│   │       ├── test_mesh_io.cpp
│   │       ├── test_pipeline.cpp
│   │       ├── test_layout.cpp
│   │       ├── test_phase6.cpp
│   │       ├── test_phase7.cpp
│   │       └── test_geometry_utils.cpp
│   │
│   └── deps/                         # All dependencies as bundled tarballs
│       ├── tarballs/
│       │   ├── eigen-3.4.0.tar.gz
│       │   ├── CGAL-6.1.1.tar.xz
│       │   ├── libigl-2.6.0.tar.gz
│       │   ├── libigl-glad.tar.gz
│       │   └── glfw-3.4.tar.gz
│       └── single_includes/          # CLI11.hpp, json.hpp (header-only)
│
├── doc/
│   ├── getting-started.md
│   ├── contributing.md
│   ├── api/
│   │   ├── pipeline.md               # Full pipeline API with code examples
│   │   ├── extending.md              # New functionals, geometry modes, Java porting
│   │   ├── contracts.md              # Processing unit preconditions/provides table
│   │   └── cgal-package.md           # Phase 8 CGAL package design (TODO)
│   ├── architecture/
│   │   ├── overall_pipeline.md       # Mermaid diagram + stage descriptions
│   │   ├── design-decisions.md       # Key architectural choices + rationale
│   │   └── project-structure.md      # This file
│   ├── math/
│   │   ├── geometry-modes.md         # Euclidean / Spherical / HyperIdeal comparison
│   │   └── references.md             # All papers by module
│   └── roadmap/
│       ├── phases.md                 # Phases 110 with porting/research boundary
│       └── java-parity.md            # Java vs C++ feature parity table
│
└── .gitea/
    ├── docker/Dockerfile.ci-cpp      # Ubuntu 22.04 ARM64 CI image
    └── workflows/cpp-tests.yml       # Two-job CI pipeline

Build targets

Target Mode Description
conformallab_tests default 36 non-CGAL pure-math tests
conformallab_cgal_tests WITH_CGAL_TESTS or WITH_CGAL 158 CGAL tests
conformallab_core WITH_CGAL CLI application
example_euclidean WITH_CGAL Euclidean example program
example_hyper_ideal WITH_CGAL HyperIdeal example program
example_layout WITH_CGAL Full pipeline example
example_viewer WITH_CGAL Interactive viewer