-
Notifications
You must be signed in to change notification settings - Fork 33
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
Talamini/feature/rate dependence #1314
base: develop
Are you sure you want to change the base?
Conversation
…iffness matrix in warm start
…ials so rate independent material signatures are preserved
@@ -358,7 +360,8 @@ double pressure_error() | |||
solid.completeSetup(); | |||
|
|||
// Perform the quasi-static solve | |||
solid.advanceTimestep(1.0); | |||
constexpr double dt = 1.0; | |||
solid.advanceTimestep(dt); |
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.
might be good at some point to
- Test with varying dt
- Test the adjoint of this kind of material model
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 agree. I'll tackle them in stages.
Co-authored-by: Chris White <[email protected]>
Co-authored-by: Chris White <[email protected]>
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.
Nice work, @btalamini . Agreed a unified interface would be nice, but it won't happen with this PR.
/** | ||
* @brief Linear isotropic hardening law | ||
*/ | ||
struct LinearHardening { | ||
double sigma_y; ///< yield strength | ||
double Hi; ///< Isotropic hardening modulus | ||
double eta; ///< viscosity for linear rate sensitivity |
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 should default to 0.0
?
@@ -195,12 +200,12 @@ TEST(J2, Uniaxial) | |||
double sigma_y = 0.01; | |||
double Hi = E / 100.0; | |||
|
|||
Hardening hardening{.sigma_y = sigma_y, .Hi = Hi}; | |||
Hardening hardening{.sigma_y = sigma_y, .Hi = Hi, .eta = 0.0}; |
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 see any tests with eta != 0.0
. Do we need to add tests for rate-dependent plasticity?
@@ -198,7 +198,7 @@ TEST(Solid, MultiMaterialWithState) | |||
constexpr double Hi = E_right / 3.6; | |||
constexpr double sigma_y = 0.75 * applied_stress; | |||
|
|||
Hardening hardening{.sigma_y = sigma_y, .Hi = Hi}; | |||
Hardening hardening{.sigma_y = sigma_y, .Hi = Hi, .eta = 0}; |
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.
Hardening hardening{.sigma_y = sigma_y, .Hi = Hi, .eta = 0}; | |
Hardening hardening{.sigma_y = sigma_y, .Hi = Hi, .eta = 0.0}; |
Just so it's clear it's a double
serac::exitGracefully(); | ||
|
||
return 0; | ||
} |
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 like this example. Very clear to read
Enables rate dependent material response in the solid mechanics module. These materials take an extra argument, the time increment, so the call looks like
stress = material(state, dt, du_dX, params...);
I didn't want to break the interface (yet) and make users change all their existing materials, so I added a new method
setRateDependentMaterial(...)
to the solid mechanics module. We can revisit unifying them later once we have some more experience and feedback.The results look good. Here is the force-displacement output of a new example app, uniaxial tension of a bar:
Other notable changes:
examples/
directory and made things clearer and easier to replicate for adding new examplestensor
symmetric 3x3 eigensolver