CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   OpenFOAM Programming & Development (https://www.cfd-online.com/Forums/openfoam-programming-development/)
-   -   Hyperelastic models implementation (https://www.cfd-online.com/Forums/openfoam-programming-development/189233-hyperelastic-models-implementation.html)

Behzad Taghilou June 16, 2017 03:09

Hyperelastic models implementation
 
Hello,

My question is about how a hyperelastic model can be implemented in foam-extend?
The displacement gradient is needed in hyperelastic models.
I was starting with other rheology laws such as PronyViscoelastic model but in this model ((fvc::gradU)) is not used. When I define deformation gradient tensor from volTensorField class I get errors.
Could anyone provide me the solution?

Thanks a lot

Tobi June 19, 2017 08:11

Hi,

if I get it right, you need the displacement field in the hyperelastic model, right? To do that, you can get access to the displacement field using the openfoam database. However, you have to be sure that this field exist, otherwise you will just get an runtime error.

Within your own model, you have access to the regIOobjects like:
Code:

volVectorField Displacement_ = this->db().lookupObject<volVectorField>("D");
The string "D" has to be replaced by the field you would like to access from the solver. I hope that is the answer to your question. Good luck,

Behzad Taghilou June 19, 2017 16:54

Dear Tobias,
I imagine that I should define a elastic modulus (E) which is a function of the left Cauchy-Green deformation tensor (B).
In PronyViscoelastic.C file, the elastic modulus is a function of time.In $FOAM_SOLVERS/solidMechanics/deprecatedSolvers/materialModels/rheologyModel/rheologyLaws/PronyViscoelastic/PronyViscoelastic.C The part of the definition of prony series is:
Code:

Foam::tmp<Foam::volScalarField> Foam::PronyViscoelastic::E(scalar t) const
{
    scalar E = 0.0;

    E = k_[0];

    for (int i=1; i<k_.size(); i++)
    {
        E += k_[i]*exp(-t/tau_[i]);
    }

    if (t < 0)
    {
        E = 0;
    }

But in hyperelastic models the elastic shear modulus should be a function of invariant of the left Cauchy-Green deformation tensor (B).
So if the left Cauchy-Green deformation tensor is accessible then how can I define a elastic modulus depending on it?
After all I'm not sure that this is the true way to define a hyperelastic material. If you have any solution tricks please let me know to do.

Bests

EmadTandis June 25, 2019 05:30

Quote:

Originally Posted by Behzad Taghilou (Post 654036)
Dear Tobias,
I imagine that I should define a elastic modulus (E) which is a function of the left Cauchy-Green deformation tensor (B).
In PronyViscoelastic.C file, the elastic modulus is a function of time.In $FOAM_SOLVERS/solidMechanics/deprecatedSolvers/materialModels/rheologyModel/rheologyLaws/PronyViscoelastic/PronyViscoelastic.C The part of the definition of prony series is:
Code:

Foam::tmp<Foam::volScalarField> Foam::PronyViscoelastic::E(scalar t) const
{
    scalar E = 0.0;

    E = k_[0];

    for (int i=1; i<k_.size(); i++)
    {
        E += k_[i]*exp(-t/tau_[i]);
    }

    if (t < 0)
    {
        E = 0;
    }

But in hyperelastic models the elastic shear modulus should be a function of invariant of the left Cauchy-Green deformation tensor (B).
So if the left Cauchy-Green deformation tensor is accessible then how can I define a elastic modulus depending on it?
After all I'm not sure that this is the true way to define a hyperelastic material. If you have any solution tricks please let me know to do.

Bests


Dear Behzad,
I got interested in your explanation for hyperelastic material. I have implemented a Neo-Hookean constitutive model and want to extend it for mooney-rivlon material by calculating elasticity (E) as a function of B.

So, please let me now if you could implement your idea.


All times are GMT -4. The time now is 01:19.