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
Benchmark for PermeabilityMohrCoulombFailureIndexModel #2995
Conversation
05f61a5
to
6689da3
Compare
957ee91
to
5668d82
Compare
8ed46ce
to
1fa184f
Compare
// TODO (wenqing): get a model type, and use it to avoid the following | ||
// assignment if no stress dependent permeability model is used. |
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.
Just to get your idea, how would you do it? How would you find out if an arbitrary permeability model is stress dependent?
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.
Can we add a member to Property to return its type?
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 don't quite get it. Would you elaborate?
So there will be a member in the Property class, let's say x(). It would return what?
How would you use the result here to find out if an arbitrary permeability model is stress dependent?
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.
For example:
virtual bool Property::hasStressVariable() const {return false;}
bool PermeabilityMohrCoulombFailureIndexModel::hasStressVariable() const override {return true;}
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.
This does not scale well, because for every new variable like stress etc. the Property interface has to be updated. So, then one would add a new enum value, two string conversions (back and forth), and additionally a test function and an if-condition to every process which is going to use it. Also how do you find out for MFront materials if there is dependency on a particular variable?
I'd drop the comment. Keeping things simple is an advantage. How much time would it save for each assembly?
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.
The major computation is a two vector (with a size of 4 or 6) addition at the integration points. I have not compared the time increases in the local assembler for large problems. I think, it may increase the local assembly time for the maximum magnitude of 1%.
An enum type might be good. This would be put to another PR if an if-condition for passing stress to Property is needed.
static_cast<SymmetricTensor>(_ip_data[ip].sigma_eff - | ||
alpha * identity2 * p_int_pt))); |
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 the cast?
The type of the sigma_eff*alpha*I*p
is KelvinVector. Conversion to SymmetricTensor requires sqrt(2) multiplications.
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 the cast?
If only sigma_eff
, no cast is needed. identity2
needs a cast.
The type of the
sigma_eff*alpha*I*p
is KelvinVector. Conversion to SymmetricTensor requires sqrt(2) multiplications.
Please take a look at my new PR, #3010, about kelvinVectorToSymmetricTensor. I assumed that function handles that multiplier correctly.
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.
As discussed in the closed PR #3010, kelvinVectorToSymmetricTensor converts the Kelvin stress to conventional stress correctly.
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.
The kelvinVectorToSymmetricTensor
handles the sqrt(2) multiplier correctly. static_cast is wrong way to bend the types. Use eval
.
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.
use .eval().
<property> | ||
<name>density</name> | ||
<type>Constant</type> | ||
<value>1</value> |
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.
Density in the documentation is 1000. And also other values are not the same. This should be fixed.
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.
Corrected. Since the gravity term in the Darcy is omitted, it only makes a tiny change in permeability and stresses, which cannot be distinguished in the contour plot.
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.
Did you check all of the other values?
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.
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.
what about solid density?
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.
Changed to 2.65e+3. I see that you means the input parameters.
a6396c3
to
9d676e4
Compare
9d676e4
to
100950f
Compare
100950f
to
4b3bd85
Compare
please read [the PDF](../PermeabilityMohrCoulombFailureIndexModel.pdf). | ||
|
||
For a full document of the failure index dependent | ||
permeability model, benchmark and its the implementation in ogs6, etc., |
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.
@OlafKolditz
The link to the document on Overleaf was added. Please see Preview
@endJunction: @nagelt asked you a question in his comment about the comment by @OlafKolditz about use Overleaf in web/doc. These comments was detached due to the update of this PR. |
4b3bd85
to
b7a1aa3
Compare
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.
The documentation and the project file should describe exactly same problems.
35ff8b4
to
90bd0a8
Compare
Changes in doc:
Changes in prj: |
90bd0a8
to
5ef3c13
Compare
OpenGeoSys development has been moved to GitLab. See this pull request on GitLab. This issue / pull request was open before the GitLab migration. |
as titled. Temporally, this PR contains the commits of PR # #2989.
Feature description was added to the changelog Not yet.
Tests covering your feature were added? Yes.
Any new feature or behavior change was documented? Not yet.