CFD Online Logo CFD Online URL
www.cfd-online.com
[Sponsors]
Home > Forums > OpenFOAM Programming & Development

Hyperelastic material

Register Blogs Members List Search Today's Posts Mark Forums Read

Like Tree3Likes
  • 2 Post By bigphil
  • 1 Post By bigphil

Reply
 
LinkBack Thread Tools Display Modes
Old   February 8, 2012, 03:36
Default Hyperelastic material
  #1
ZKM
New Member
 
Join Date: Mar 2010
Posts: 12
Rep Power: 7
ZKM is on a distinguished road
Hello,

How can I define a hyperelastic material? In another word how can I have access to deformation gradient to calculate the left Cauchy-Green deformation tensor?

I know that the Saint Venant–Kirchhoff model has been already implemented but it doesn't give any clue since this model doesn't use invariants or principle stretches.

Thanks in advance
ZKM
ZKM is offline   Reply With Quote

Old   February 10, 2012, 18:46
Default
  #2
Senior Member
 
bigphil's Avatar
 
Philip Cardiff
Join Date: Mar 2009
Location: Dublin,Ireland
Posts: 568
Rep Power: 19
bigphil will become famous soon enoughbigphil will become famous soon enough
Hi ZKM,

You can see how other solid material models are implemented in $FOAM_SOLVERS/newStressAnalysis/materialModels/rheologyModel/rheologyLaws, in OpenFOAM-1.6-ext.

The deformation gradient is grad(U).T() in total Lagrangian solver like newStressedFoam.

Best regards,
Philip
ZKM and morteza08 like this.
bigphil is offline   Reply With Quote

Old   February 11, 2012, 15:56
Default
  #3
ZKM
New Member
 
Join Date: Mar 2010
Posts: 12
Rep Power: 7
ZKM is on a distinguished road
Perfect Philip! Thanks!

I've never gone into that directory; It has very interesting stuffs.

Other questions:

Is there any specific operator for eigenvalue calculations in OpenFoam? I want to use it for calculating principle stretches.

Is there any documentation for rheologyLaws?

I saw cohesive zone there. Can it be used for crack modelling? Is there any example?
ZKM is offline   Reply With Quote

Old   February 11, 2012, 17:05
Default
  #4
Senior Member
 
bigphil's Avatar
 
Philip Cardiff
Join Date: Mar 2009
Location: Dublin,Ireland
Posts: 568
Rep Power: 19
bigphil will become famous soon enoughbigphil will become famous soon enough
ZKM,

I have never calculated eigenvalues/principal stretches in OpenFOAM but I think the EigenSolver class can do what you want located at:
$FOAM_SRC/OpenFOAM/matrices/Matrix/tools/EigenSolver

Unfortunately there is no documentation that I know of for rheologyLaws (as yet).

Yes OpenFOAM can model crack propagation (search for Ivankovic in sciencedirect). Our research group here in Dublin work on many fracture mechanics problems with OpenFOAM.

I will prepare you a simple crack propagation case on Monday and post it here for you to try. Hopefully we will add our solid mechanics solvers (small strain, large strain, plasticity, cracks etc) to OpenFOAM-1.6-ext in the next year so more people can use them.

Philip
bigphil is offline   Reply With Quote

Old   February 12, 2012, 03:23
Default
  #5
ZKM
New Member
 
Join Date: Mar 2010
Posts: 12
Rep Power: 7
ZKM is on a distinguished road
Thanks Philip for your response.

The example would be a great help.
ZKM is offline   Reply With Quote

Old   February 14, 2012, 19:30
Default
  #6
Senior Member
 
bigphil's Avatar
 
Philip Cardiff
Join Date: Mar 2009
Location: Dublin,Ireland
Posts: 568
Rep Power: 19
bigphil will become famous soon enoughbigphil will become famous soon enough
ZKM,

I have emailed you the solver and test case. If anyone else wants it, just drop me a PM with your email.

I found some code for calculating principal stresses, you could do something similar to find the principal strains/stretches.
Code:
    Info << "\nCalculate maximal principal stress ..." << flush;
    // Principal stresses
    volVectorField sigmaMax
    (
        IOobject
        (
            "sigmaMax",
            runTime.timeName(),
            mesh,
            IOobject::NO_READ,
            IOobject::AUTO_WRITE
        ),
        mesh,
        dimensionedVector("sigmaMax", dimPressure, vector::zero)
    );
    vectorField& sigmaMaxI = sigmaMax.internalField();

    forAll (sigmaMaxI, cellI)
    {
        vector eValues = eigenValues(sigma.internalField()[cellI]);
        tensor eVectors = eigenVectors(sigma.internalField()[cellI]);

        scalar maxEValue = 0;
        label iMax = -1;
        forAll(eValues, i)
        {
            if (eValues[i] > maxEValue)
            {
                maxEValue = eValues[i];
                iMax = i;
            }
        }

        if (iMax != -1)
        {
            if (iMax == 0)
            {
                sigmaMaxI[cellI] = eVectors.x()*eValues.x();
            }
            else if (iMax == 1)
            {
                sigmaMaxI[cellI] = eVectors.y()*eValues.y();
            }
            else if (iMax == 2)
            {
                sigmaMaxI[cellI] = eVectors.z()*eValues.z();
            }
        }
    }
Philip
Tushar@cfd likes this.
bigphil is offline   Reply With Quote

Old   July 21, 2012, 07:16
Default
  #7
Senior Member
 
bigphil's Avatar
 
Philip Cardiff
Join Date: Mar 2009
Location: Dublin,Ireland
Posts: 568
Rep Power: 19
bigphil will become famous soon enoughbigphil will become famous soon enough
Quote:
Originally Posted by bigphil View Post
The deformation gradient is grad(U).T() in total Lagrangian solver like newStressedFoam.
Actually, I made a mistake, this is wrong.

The displacement gradient, also known as the Jacobian matrix (J) is grad(U):
J = fvc::grad(U)

The deformation gradient (F) is (I + J) which is (I + grad(U)):
F = (I + J) = I + fvc::grad(U)

Philip
bigphil is offline   Reply With Quote

Old   December 11, 2013, 10:07
Default
  #8
Senior Member
 
bigphil's Avatar
 
Philip Cardiff
Join Date: Mar 2009
Location: Dublin,Ireland
Posts: 568
Rep Power: 19
bigphil will become famous soon enoughbigphil will become famous soon enough
Quote:
Originally Posted by bigphil View Post
The displacement gradient, also known as the Jacobian matrix (J) is grad(U):
J = fvc::grad(U)

The deformation gradient (F) is (I + J) which is (I + grad(U)):
F = (I + J) = I + fvc::grad(U)
Third time lucky:
The displacement gradient, also known as the transpose of the Jacobian matrix (J) is grad(U):
J = fvc::grad(U).T()

The deformation gradient (F) is (I + J) which is (I + grad(U).T()):
F = (I + J) = I + fvc::grad(U).T()

Phew.
bigphil is offline   Reply With Quote

Reply

Tags
fsi, hyperelastic, solid, solid fluid interaction

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Water subcooled boiling Attesz CFX 7 January 5, 2013 04:32
Simulation of a single bubble with a VOF-method Suzzn CFX 18 October 2, 2009 04:18
mass flow in is not equal to mass flow out saii CFX 2 September 18, 2009 08:07
Wall Material Maple FLUENT 4 March 13, 2009 06:39
Two-Phase Buoyant Flow Issue Miguel Baritto CFX 4 August 31, 2006 12:02


All times are GMT -4. The time now is 22:36.