Skip to content

DNDSR v0.1.0

Choose a tag to compare

@harryzhou2000 harryzhou2000 released this 19 Apr 11:41
· 426 commits to main since this release
9049080

๐Ÿš€ DNDSR v0.1.0

Major milestone release โ€” 701 files changed, ~110k insertions across 241 commits.
๐Ÿ“– Documentation: cfdlab-thu.github.io/DNDSR

โœˆ๏ธ New Solver Features

  • ๐Ÿ”„ p-Multigrid (pMG): HM3 revamp with MG support, tpMG, incFScale for MG lower levels, positivity-preserving limiters in LimiterUGrad
  • ๐ŸŒ€ SA-IDDES: DES โ†’ DDES โ†’ IDDES progression, psi term fixes, rotation correction variants, ft2 toggle
  • ๐Ÿงฎ k-omega RANS: two-equation model with euler2EQ / euler2EQ3D executables
  • โฑ๏ธ ODE integrators: ESDIRK2, ESDIRK3, Trapezoidal; HM3 U2R2/U2R1/U3R1 modes
  • ๐Ÿ” Axisymmetric flow with wedge-shaped metric in reconstruction
  • ๐ŸงŠ Isothermal wall BC (BCWallIsothermal)
  • ๐Ÿ“ˆ incFScale (incremental flux scaling) integrated into entropy fix
  • โšก Roe_M8 flux; HLLE+ (experimental)
  • ๐ŸŽ›๏ธ source2nd, mergeMultiResidual, normOrd, restartOutAtInit, resBaseType options
  • ๐Ÿ•ธ๏ธ Overset grid exploration: hole creation, distance map, cell-cell connectivity (2D demo)

๐Ÿ Python Modules (new)

  • ๐Ÿ“ฆ pybind11 bindings for DNDS, Geom, CFV, EulerP modules
  • ๐Ÿ“Š Python ModelEvaluator for CFV โ€” Fourier dissipation-dispersion analysis
  • ๐Ÿ—บ๏ธ create_mesh_from_CGNS, boundary mesh extraction, VTK output
  • ๐Ÿ”— ArrayPair, ArrayEigenMatrix/Vector/Batch exports
  • ๐Ÿ›ก๏ธ py::classh holder for safe Pythonโ†”C++ ownership
  • ๐Ÿงฉ Auto stubgen on install; DNDSR.XXX import structure

๐Ÿ—๏ธ Build & Packaging

  • ๐Ÿ”ง Modular CMake with presets (release-test, debug, cuda)
  • ๐Ÿท๏ธ Centralized version from VERSION file + git describe (PEP 440)
  • ๐Ÿ“ฆ Python package via scikit-build-core with editable installs
  • ๐Ÿ“‹ JSON Schema generation and config validation (--emit-schema CLI)
  • โš™๏ธ DNDS_DECLARE_CONFIG registry for typed config sections
  • ๐Ÿงต OMP support in ILU; DNDS_PYBIND11_NO_LTO option
  • ๐ŸŽ macOS compilation fixes (fmtlib workaround)

๐Ÿ”ฌ CFD Module Refactoring

  • Euler: RANSModelTraits, BC strategy pattern, shared gas physics, centralized Roe preamble / magic numbers / model constants
  • CFV: 8-phase refactoring โ€” safety, dedup, boundaries, functionals, data decomposition, DeviceTransferable, DOF factory, cleanup
  • Geom: modular element traits with codegen shape functions, distributed mesh read with ParMetis repartition, extracted helpers (CGNS read, face interpolation, cell reorder, VTK output)

โš™๏ธ Core Infrastructure

  • ๐Ÿ’พ Redistributable Array serialization with HDF5 checkpoint/restart
  • ๐Ÿงฐ ObjectNaming, make_ssp, ArrayPair helpers
  • ๐ŸŽฎ CUDA: device storage, device views for all derived array types, block-sparse MatVec benchmark, SoA layout tests
  • ๐Ÿš„ EulerP module with CUDA-optimized evaluator
  • ๐Ÿ—‚๏ธ Mesh: cell2cellOrig / node2nodeOrig / bnd2bndOrig index tracking, node wall distance, boundary ghost via node2bnd

โœ… Testing (new)

  • ๐Ÿงช C++ (doctest): CFV limiters/reconstruction (43 tests), Euler gas/thermo/Riemann/RANS (59 tests), Solver ODE/linear/direct (24 tests), Geom elements/quadrature/mesh pipeline
  • ๐Ÿ Python (pytest): FV/VR correctness (32 tests), MPI communication
  • ๐Ÿ” CTest registration at np=1, 2, 4 for all MPI-aware tests

๐Ÿ“– Documentation System (new)

  • ๐ŸŒ Sphinx + Breathe site with Doxygen HTML embedded at /doxygen/
  • ๐Ÿ”€ Shared Markdown for both Doxygen and Sphinx (doxygen_compat.py translator)
  • โšก Incremental builds โ€” no-op <1s, md-only ~10s, full ~2.5min
  • ๐Ÿ“š Guides: building, style, arrays, serialization, geometry, examples, doc authoring
  • ๐Ÿ›๏ธ Architecture pages, theory pages, test documentation
  • ๐Ÿ“ C++ API with class diagrams (Breathe + Graphviz); Python API via autodoc
  • ๐Ÿค– GitHub Actions workflow for manual Pages deployment with 3-layer caching
  • ๐ŸŽจ sphinxawesome-theme with colorful syntax highlighting

๐Ÿ› Notable Bug Fixes

  • ๐Ÿ”’ MPI deadlock from collective globalSize() โ€” made non-collective
  • ๐Ÿ”— Serializer false shared-ptr dedup from address reuse
  • ๐Ÿ”„ InterpolateFace wrong face identity on double-periodic BCs
  • ๐Ÿ’ฅ Inner partitioning segfault in Metis reordering
  • ๐Ÿ“‹ ArrayTransformer clone error
  • ๐Ÿ” Periodic boundary RecoverCell2CellAndBnd2Cell on arbitrary partitions
  • ๐Ÿ’พ CSR pRowStart not written in serialization
  • โฑ๏ธ Multigrid fdtau/frhs ordering corrupting lambda estimates
  • ๐ŸŽฎ EulerP accidental to_device in face buffer creation
  • ๐Ÿ”ง CUDA thrust call fixes with CMAKE_CUDA_ARCHITECTURE=native