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
[WIP] force vector #1300
[WIP] force vector #1300
Conversation
const FullMatrix<double> &/*projection_matrix*/, | ||
const FullMatrix<double> &/*expansion_matrix*/) | ||
{ | ||
// TODO: not implemented |
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.
then throw an exception
template <int dim> | ||
class PressureBdry: | ||
|
||
public FluidPressureBoundaryConditions::Interface<dim> |
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.
no need for the empty line
It's not quite clear to me why this should be part of a material model. What were the design choices here, and why did you go this way? |
All other variables/terms in the equation come from the material model, so that was the natural place to put it. Also, |
Well, but that's not true that all other terms come from the material model. Dirichlet as well as traction boundary conditions come from their own set of plugins. So do prescribed velocities in the interior, and as you point out the gravity vector also comes from somewhere else. I think the most natural way would really be to have it somewhere separate, e.g., in a system of plugins. That also allows to neatly separate concerns -- for example, one could describe the forcing function as a function expression in the .prm file, and adjust it by hand to whatever material model is chosen. The way you implement it, one is essentially forced to re-implement the forcing term for (i) each material model you want to test, (ii) for each testcase you want to test. |
Okay. I am fine with making that change. My goal when implementing it was to make it as invisible as possible because it is not a commonly used feature. But that is why we do WIP PRs. ;-) |
Options:
|
I'm for 1, 3, 4, 2, in this order. |
I'm for 2, 3, 4, 1 (in that order). |
I guess we will need to come up with a rank-based ordering system if we get multiple ballots with different orders :-) I'll just restate that I think that 2) is a bad idea because the body force is not related to the material model. I know that it would be convenient to put it there, but I think we will come to regret doing that in the long run. |
@gassmoeller ? ;-) |
I don't like 1) because we will end up copying a lot of code each time we make a new model that uses the force vector, and I think it is a useful feature and could be used for almost every benchmark with a manufactured solution. |
@jdannberg 's argument is good. I change my mind to 3, 4, 1, 2. |
Superseded by #1547. |
This is one out of several PRs to get Stokes solver improvements (with and without melt) with @rrgrove6 into mainline.
This adds an optional material model output force vector to be applied to the RHS of the Stokes system. We need this to be able to construct manufactured solutions.
Questions:
evaluate()
(seemake_shared
) the best way to do this?