adtzlr / matadi

Material Definition with Automatic Differentiation
GNU General Public License v3.0
21 stars 2 forks source link

Proposal: Implementation of Finite Strain Viscoelastic Model with Mooney-Rivlin Hyperelasticity #139

Closed Sad-Abd closed 5 months ago

Sad-Abd commented 5 months ago

Hi, I have implemented a finite strain viscoelastic model that incorporates the Mooney-Rivlin hyperelastic model, based on the following paper:

Shutov, A. (2018). Efficient time stepping for the multiplicative Maxwell fluid including the Mooney‐Rivlin hyperelasticity. International Journal for Numerical Methods in Engineering, 113(12), 1851-1869.

The implementation has been named finite_strain_viscoelastic2 and is located in src/matadi/models/_viscoelasticity.py. This model provides an efficient time-stepping scheme for simulating the behavior of multiplicative Maxwell fluids, including the Mooney-Rivlin hyperelastic constitutive model. I believe this implementation could be a valuable addition to the main repository. If you find this implementation useful and suitable for inclusion, I would be happy to submit a pull request with the necessary code changes and documentation. Please let me know your thoughts and if you require any further information or modifications.

Thank you for your consideration.

adtzlr commented 5 months ago

Hi @Sad-Abd,

yes, please open a PR 👍🏻 🚀 👍🏻 , I'm open for contributions of new models!

That sounds interesting. The already implemented viscoelastic model

https://github.com/adtzlr/matadi/blob/73d42b8d3fbffbc82b853ca5bd066ad3f3fd8812/src/matadi/models/_viscoelasticity.py#L4-L18

is of Neo-Hookean type and is based on https://doi.org/10.1016/j.cma.2013.07.004, so your referenced paper is a follow-up on that? What is the difference between these two models? Is it an extension of the viscoelastic-framework to the Mooney-Rivlin strain energy function?

I always thought that the most simple strain energy function is enough for the viscous part, like Neo-Hookean or some stretch-based approach. But I'm always open for new ideas 💡.

P.S.: Personally, I'd name your proposed function finite_strain_viscoelastic_mooney_rivlin() or at least something more verbose than ...2(). Would that be ok for you?

Sad-Abd commented 5 months ago

I appreciate you taking the time to review my proposal.

You're correct that the paper I referenced (Shutov, 2018) extends the viscoelastic framework to the more general Mooney-Rivlin strain energy function. As you know Neo-hookean is a special case of Mooney-Rivlin and incorporating the Mooney-Rivlin formulation can potentially improve the accuracy of the viscoelastic model for certain materials that exhibit more complex behavior.

Regarding the naming convention, I appreciate your suggestion of finite_strain_viscoelastic_mooney_rivlin(). As the maintainer, you have a better understanding of the overall package structure and naming conventions. I'm happy to follow your recommendation for a descriptive and consistent function name.

I will proceed with creating a pull request (PR) that includes the implementation of the finite strain viscoelastic model with the Mooney-Rivlin hyperelasticity. We can further discuss the integration, testing, and any other details during the PR review process.

Thank you again for your openness to contributions and for considering this implementation.

adtzlr commented 5 months ago

Merged in #140.