Skip to content

Enhance Scalar templates, add Automatic Differentiation integration, replace GUI backend, and support Linux CLI#92

Merged
SaltyJoss merged 216 commits into
Mainfrom
Dev
Jun 17, 2026
Merged

Enhance Scalar templates, add Automatic Differentiation integration, replace GUI backend, and support Linux CLI#92
SaltyJoss merged 216 commits into
Mainfrom
Dev

Conversation

@SaltyJoss

Copy link
Copy Markdown
Owner

This pull request introduces significant improvements to the build system and CMake configuration for the DSFE project. The main changes modernize and modularize the CMake setup, add support for CMake presets for easier cross-platform development, and improve code quality and portability in the core library. Some unused dependencies are removed, and platform/compiler settings are clarified and updated.

Build system modernization and cross-platform support:

  • Major update to CMakeLists.txt and introduction of CMakePresets.json to support modern CMake workflows, enable cross-platform builds, and simplify configuration for GUI/non-GUI and Windows/Linux targets. This includes new build and test presets, and improved output directory structure. [1] [2]
  • .github/workflows/build.yml updated to use CMake presets for configuration, build, and test steps, improving CI consistency and maintainability.

Core library improvements and code quality:

  • DSFE_Core CMake configuration refactored for improved modularity, stricter compiler settings, and better handling of dependencies (notably HDF5 and threading). Platform-specific definitions and visibility settings are clarified, and precompiled headers and include directories are cleaned up. [1] [2] [3] [4]
  • The DSFE_App CMake setup is simplified, making GUI inclusion optional via the DSFE_ENABLE_GUI option.

Code cleanup and portability:

  • Removal of unused or redundant includes (e.g., <MathLibAPI.h>) and improved platform-specific header handling (framework.h). [1] [2] [3] [4] [5] [6] [7] [8] [9]
  • Improved type consistency and use of project math utilities in telemetry and diagnostics code, enhancing cross-platform correctness and maintainability. [1] [2] [3] [4]
  • Compiler and visibility macros updated for better cross-platform symbol export (GCC/Clang support in addition to MSVC).

These changes collectively make the project easier to build, test, and maintain across different platforms and configurations.

SaltyJoss added 30 commits May 16, 2026 10:28
…inematics` using the Scalar typename

* Each header includes the corresponding .inl file holding the templated methods, thus improving code readability and scalability
…grator` class that contains Scalar typenames

 * Fixed smaller logic bugs in implicit euler and midpoint
…bers, using Scalar typename alongsideinlined oeprators.
…ce risk of uninitialised arrays (means reduced overflow risk)
…sts`, separating each subset of tests into its own .exe
… RK2 harmonic oscillator state and sensitivity tests (rather than a much smaller 1e-5), separating state, sensitivity, and energy tolerances
…nalytical and fdm Jacobians, aswell as exploring the cross-variable propogation of coupled non-linear systems
 * ALL TESTS PASS, given they are basic, but my logic is good
 * Though my brain is frazzled by the abstraction, i am going to try get the implicit testing done relatiove to the dual numbers
 * This is going to change, however, I want something that fits with the current templating.
@SaltyJoss SaltyJoss self-assigned this Jun 17, 2026
@SaltyJoss SaltyJoss added documentation Improvements or additions to documentation feature New feature or request fixes fixing existing issues refactor labels Jun 17, 2026
@SaltyJoss SaltyJoss merged commit ecbb564 into Main Jun 17, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation feature New feature or request fixes fixing existing issues refactor

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant