Project: Scientific THMC simulation framework in modern C++. See README.md for overview.
C++: C++23 standard (required). Use ranges-v3 (not std::ranges), Eigen (not raw loops). Follow style guide.
CMake: 3.31+, target-based commands, no global variables.
Python: black-based formatting. ruff check linter.
Documentation: British English spelling (colour, behaviour).
Foundation: BaseLib → MathLib → NumLib Geometry: GeoLib, MeshLib, MeshGeoToolsLib, MeshToolsLib Materials: MaterialLib (MPL), ParameterLib Processes: ProcessLib (20+ process implementations) Apps: CLI, ApplicationsLib, FileIO, Utils, DataExplorer(Qt)
Every process must have:
{Name}Process.h- Inherits Process, manages assembly/timestepping{Name}ProcessData.h- Material properties, parameters, solver configuration{Name}LocalAssembler.h- Element-level assembly (M, K, b matrices)Create{Name}Process.h- Factory from XML configuration
- Unit tests:
Tests/{LibName}/(Google Test) - Integration tests:
Tests/Data/{ProcessName}/(.prjfiles with reference outputs) - Always run ctests from release build.
- Check
.clang-format,.clang-tidyfor linting rules