-
Notifications
You must be signed in to change notification settings - Fork 11
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Dsl/implicit operators #246
Dsl/implicit operators #246
Conversation
@greole @bevanwsjones @MarcelKoch Please write your general comments into the issue #248 Code review should still be done in the PR. This makes it easier to track the required substeps. Sadly, PR cannot be added as subissues Note: I will summaries the decision in the PR description |
Deployed test documentation to https://exasim-project.com/NeoFOAM/Build_PR_246 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
some quick comments
#include "NeoFOAM/dsl/operator.hpp" | ||
#include "NeoFOAM/core/error.hpp" | ||
|
||
namespace la = NeoFOAM::la; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
i think that isn't even necessary inside the NeoFOAM namespace you should be able to use just la::
LinearSystem( | ||
const CSRMatrix<ValueType, IndexType>& matrix, | ||
const Field<ValueType>& rhs, | ||
const std::string& sparsityPattern |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
why is sparsityPattern a string?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
maybe a enum is better?
Co-authored-by: Gregor Olenik <gregor.olenik@web.de>
This will be merged in the stack/implicitOperator branch improvements can be added by seperate PR into stack/implicitOperator |
5e8556c
into
stack/implicitOperators
Motivation
The DSL needs to handle implicit operators.
This PR handles strategy how to assemble the linear system and proposes architectural changes to the current design
Assumption
Consequences
Tradeoffs
A long-term goal of NeoFOAM is to build a multi physic solver, the current assumption is that every region as its own physics with its on strategy to solve PDE's. The coupling between the regions would be via the boundary conditions.
Pro
Contra
Recommendation
Currently, only one numerical method is supported (fvcc) and the coupling between the methods, will be tackled later. v0.4+. Defining a general abstraction, how the DSL works for every numerical method is complex and is a tradeoff between universality and performance.
A DSL should be more tightly coupled to a specific method --> e.g. move dsl folder into finite volume
A general abstraction, how the different linear system and rhs should be coupled over the regions seems still feasible as it only requires the concatenation of each linear system. However, this should be tackled if other PDE solution strategies are implemented