Implemented Associative viscoplastic flow rule with MCC model#15
Implemented Associative viscoplastic flow rule with MCC model#15larsblatny merged 6 commits intomasterfrom
Conversation
|
Hi @atpellet. This is fantastic, thanks for contributing your model! One first question: It seems that the new plasticity helper function only differs from MCCRMAExcplicit by making the delta_gamma returnable? Perhaps we can find a non-intrusive way to add this directly to the existing code so we don't need to duplicate the entire code for such a small change? On another note, I have not seen this kind of viscoplasticity before so if you have some references that use or introduce similar models I would be very interested. One concern I have is in line 653 and 654 of plasticity.cpp where dydp and dydq (which you need to shift the (p,q)-point from the yield surface to a point away from the yield surafce given by eta) are calculated based on the point on the yield and not on the n+1 point. Are you sure this would give the same result? I suppose this could be easily verified. It is also clear that eta is a unitless parameter, right? So maybe viscosity/eta is not the right term for it? Just of a minor note, particles.delta_gamma should save only the deviatoric part, that is gamma_dot_S. I realized that this is not explained anywhere... Please also consider renaming Delta_GAMMA to lowercase letters. |
Merging with master before new modifications
…for MCC_RMA_EXPLICIT duplicate issue
|
Hi @larsblatny, I provided a solution for the MCC_RMA_EXPLICIT() duplicate issue by passing delta_gamma as an optional pointer. It is not the most elegant or robust solution by this way no other change is needed. They were some dimension issues with my viscosity, I have corrected and formatted it better. It now has a form often called Duvaut-Lion viscosity (there is extensive research on the subject). Basically, the viscoplastic strain is computed from the distance between the trail state and it's projection to the yield surface. The input parameter is the viscosity eta (Pa.s), but the compuations use a relaxation time defined as t_relax = eta/E (Youngs modulus). I am not sure I fully understood your issue when saying One concern I have is in line 653 and 654 of plasticity.cpp where dydp and dydq (which you need to shift the (p,q)-point from the yield surface to a point away from the yield surafce given by eta) are calculated based on the point on the yield and not on the n+1 point.. Is it still a concern of yours ? If yes, can you develop ? Cheers. PS : In my case, particles.delta_gamma stores the full plastic norm. I guess it is not an issue since this value is never used and just outputted in particles.ply ? |
|
Hi @atpellet Sorry for the late reply -- it took me a while to go through the math here: The DL model is It is important to keep in mind that, in the equation above, In comparison, the implemented model seems to be (correct me if I'm wrong): If you could double-check my math/reasoning here and make the appropriate changes, that would be amazing! This would also include changing what you save as "delta_gamma". Regarding the dydp and dydq, the evaluation of p and q seems to be done at "yield", which I suppose would make sense in the view of DL. There is the complication of the hardening law, but I think it is okay as it is. Thanks a lot for all your work with this and let me know if anything is unclear. These are aspects of viscoplastic theory which I find super interesting! |
|
With Note I used Please let me know if I made a mistake! |
|
Hi @atpellet I reformulated the code according to my last comment, and I also removed the need for returning |
|
Hi Lars, Sorry for not answering your comment. Thank you for your inputs, it seems correct to me too. I did not answer earlier as there still are some details bugging me.
The original formulation of Duvaut and Lion is Knowing that But this assumption is not true in finite strain theory. This bugged me aslwell in equation 2.67 of your thesis. When do/can we assume this decomposition in the framework of finte strain theory ?
Assuming the previous relation, we have But the formula generally used (with no justification) written otherwise, as you did : By doing this, we assume that Alexandre. PS : Could you share if you based your reasoning on one particular reference ? |
|
Also, I quickly reviewed your modifications. Everything seems fine. I just have some reservations regarding variable names.
If you agree with these suggestions, I can implement them ASAP. Alexandre. |
|
Hi @atpellet, excellent comments. I have now removed MCCVisc2 and merged it with MCCVisc, introducing the user option Regarding the "physics", I don't have a particular reference, I just derived it from the definition. There is for example a similar derivation here. In finite strain theory, we need to "replace" the strain time derivative by the velocity gradient, and the elastic and plastic velocity gradients are additive. See Eq 2.53 in my thesis. Eq 2.67 is a one-dimensional special case. Regarding the |
|
Hi @larsblatny, great solution to add the DL option in all models. Regarding my derivation concerns, I agree it works in a shear-focused model, or any model reduced to a scalar relation. I guess the idea of the DL model is just used in a convenient way in any framework without justification, thus we can use it aswell in the convenient formulation in our finite strain model. I guess it would be difficult to derive the same formula using the additivity of velocity gradients instead of strain time derivative ? Anyway, I probably just have to assume the problem is well posed in this framework too, which feels awkward 🫤 |
|
Hi @atpellet |
Implemented a simple associative viscoplastic flow rule for the MCC model.
In the original case of plasticity, the strain computed in src/simulation/plasticity.cpp, initially
becomes, with the associative viscosity
with$\eta$ the viscosity.
This modification has necessitated to create a new version of the MCCRMAExcplicit() in src/plasticity_helpers/mcc_rma_explicit.cpp in order the extract$\Delta\Gamma=\Delta t\dot\gamma$ with $\dot\gamma$ the plastic multiplier, such that $\boldsymbol{l}^P = \dot\gamma \frac{\partial y}{\partial \boldsymbol\tau}$ .$\Delta\Gamma$ is called
In the code,
Delta_GAMMA.