You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
Enhancements and New Class Layout:
Linear Algebra:
Introduced custom Vector and SparseMatrix classes.
Added a (cyclic) Tridiagonal Solver for improved performance and usability.
Input Functions:
Separated into distinct components: DomainGeometry, BoundaryConditions, SourceTerm, etc.
Polar Grid:
Indexing is now based on circle/radial smoother.
Residual:
Improved the residual calculation by addressing the unintuitive behavior that previously applied only to the interior part of the matrix.
Direct Solver:
Fixed a bug where boundary values were not treated correctly.
Built matrices to be symmetric, reducing factorization time.
Smoother:
Separated into extrapolated and standard smoothers.
Replaced the LU-Decomposition algorithm with the Thomas algorithm for improved efficiency.
New Features
Introduced W- and F cycles for enhanced solving capabilities.
Added FMG (Full Multigrid) to obtain improved starting solutions.
Implemented advanced caching behavior options for the "Give" implementation strategy.
Added a faster strategy named 'Take,' which is appropriate for cases where memory is less of a constraint, resulting in an 80% increase in memory usage.
Comprehensive Unit Tests: Integrated Google Unit Tests for all classes, ensuring robust and reliable functionality across the codebase.
Performance Improvements
Removed the task-based approach, which did not scale well with increasing parallelization.
Reduced maximum usage by 61.5% by constructing symmetric matrices and utilizing the tridiagonal structure of smoother matrices.
Updated Features
Added a new LU decomposition solver, allowing users to choose between MUMPS and the in-house solver for greater flexibility and performance.