CFD Online Logo CFD Online URL
www.cfd-online.com
[Sponsors]
Home > Forums > Software User Forums > OpenFOAM > OpenFOAM Community Contributions > OpenFOAM CC Toolkits for Fluid-Structure Interaction

[solidMechanics] Support thread for "Solid Mechanics Solvers added to OpenFOAM Extend"

Register Blogs Community New Posts Updated Threads Search

Like Tree134Likes

Closed Thread
 
LinkBack Thread Tools Search this Thread Display Modes
Old   September 8, 2015, 07:57
Default
  #321
Member
 
Jibran
Join Date: Oct 2012
Location: UK
Posts: 61
Blog Entries: 1
Rep Power: 14
Jibran is on a distinguished road
Quote:
Originally Posted by bigphil View Post
Hi Jibran,

I had a look at the presentation on your website, your approach looks very interesting. I would be very interested in seeing more details on your discretisation and solution methodology.
By "mixed", do you mean that your primary variables are displacement/velocity and pressure?

As regards publication of large strain solid dynamics in OpenFOAM, I am not aware of another journal paper but there are a few conference papers, such as:
Best regards,
Philip
Dear Philip,

Thank you for providing me with the information and the links.
By mixed I mean that it is a velocity/strains formulation where the primary variables are linear momentum and the deformation gradient tensor.
Hopefully, I will be able to share more details regarding our method in this thread very soon.
Cheers!
__________________
Jibran Haider
https://jibranhaider.com/
Jibran is offline  

Old   October 30, 2015, 04:56
Default crackStressFoam
  #322
Member
 
Jason Dale
Join Date: Mar 2009
Location: UK
Posts: 80
Rep Power: 17
jason is on a distinguished road
Hello there,

(forgot to say its the crackStressFoam in extend-bazaar FluidStructureInteraction package)

I'm interested in the crackStressFoam solver (especially for FSI) but I cannot find out anything about it anywhere .. apart from the .C file - Finite volume stress analysis solver for arbitrary crack propagation

Does anybody have any links or tutorials? As it resides in the FluidStructureInteraction directory I'm assuming I can use it for FSI?

Any advice appreciated.

Br

Jason

Last edited by jason; October 30, 2015 at 11:52.
jason is offline  

Old   November 5, 2015, 03:07
Default thermalStressFoam hotCylinder validation
  #323
New Member
 
Will Logie
Join Date: Sep 2010
Location: ANU, Canberra, Australia
Posts: 21
Rep Power: 15
will.logie is on a distinguished road
Dear Phil,

It would seem that people succeed in validating the hotCylinder case with the FSI thermalStressFoam solver. Your plot here among others.

I've not yet managed to validate thermalStressFoam with the hotCylinder case. Bug fix done.

I have uploaded my case for scrutiny. Any feedback would be greatly appreciated.

Kind regards,
Will.
Attached Images
File Type: jpg sample.jpg (94.4 KB, 39 views)
Attached Files
File Type: gz hotCylinder.tar.gz (110.1 KB, 17 views)

Last edited by will.logie; November 5, 2015 at 03:57. Reason: Updated case and figure
will.logie is offline  

Old   November 8, 2015, 17:54
Default Default thermalStressFoam hotCylinder validation II
  #324
New Member
 
Will Logie
Join Date: Sep 2010
Location: ANU, Canberra, Australia
Posts: 21
Rep Power: 15
will.logie is on a distinguished road
The problem I had was one of interpretation.

In the case I uploaded last week the cylinder is not free to deform longitudinally (2-D plane strain), whereas in the case of Timoshenko the cylinder is free to deform longitudinally.

Cheers,
Will.
Attached Images
File Type: jpg sample.jpg (83.4 KB, 34 views)
will.logie is offline  

Old   February 25, 2016, 03:57
Default fsiFoam: Restart-Issue
  #325
MB2
New Member
 
Becker
Join Date: Apr 2012
Posts: 3
Rep Power: 14
MB2 is on a distinguished road
Hi,
has anyone successfully solved the restart-issue using fsiFoam ?

I tried to restart beamInCrossFlow using foam-extend-3.1 and fsiFoam from extend-bazaar.

It does restart at several different time steps, but looking at the new time steps after restart, one can see a "jump" in the displacement of the fluid-interface and also a "gap" between the fluid-interface and the solid-interface. Also the solution at the end of the run (static situation) is different from the original behaviour (without restart).

Should that work in theory ?
Has anyone similar problems ?

Thanx for help in advance,
Martin

Quote:
Originally Posted by bigphil View Post
Hi,

In theory it should not be a problem to restart, we just have to make sure all the relevant fields are written out (something seems to want to old cell volumes V0, and also the golbalFaceZone field in parallel).
I will let you know if I get time to look at it.

In short to answer your questions, yep it would be intended to include such functionality.

Philip
Woj3x likes this.
MB2 is offline  

Old   April 3, 2016, 02:13
Default
  #326
New Member
 
Join Date: Feb 2014
Posts: 9
Rep Power: 12
sfmoabdu is on a distinguished road
Dear all

has anyone faced the problem of interface separation? , in which the solid interface moves away from fluid interface (as in the attached snapshot) ... it happens very slowly without any crash of solution and at some time step the gap becomes very big and the solver gives "Floating point exception (core dumped) " or "complex eingenvalues in the matrix ... " !!

has anyone of you the solution of that?

it happens in both fsiFoam and icoFsiElasticNonLinULSolidfoam.

by the way i have used the HronTurek tutorial but i just changed the material and thickness of the plate. Furthermore, the fluid domain is perfectly solved as only CFD.
Attached Images
File Type: jpg Screenshot from 2016-04-02 17:24:22.jpg (83.5 KB, 80 views)
sfmoabdu is offline  

Old   May 18, 2016, 12:07
Default New article on large strain computational solid dynamics
  #327
Member
 
Jibran
Join Date: Oct 2012
Location: UK
Posts: 61
Blog Entries: 1
Rep Power: 14
Jibran is on a distinguished road
Dear All,

An article on large strain computational solid dynamics has recently been published in International Journal for Numerical Methods in Engineering.
Please find below a link to the manuscript on researchgate.
https://www.researchgate.net/publica...train_dynamics

Thanks
__________________
Jibran Haider
https://jibranhaider.com/
Jibran is offline  

Old   May 18, 2016, 12:35
Default
  #328
Super Moderator
 
bigphil's Avatar
 
Philip Cardiff
Join Date: Mar 2009
Location: Dublin, Ireland
Posts: 1,089
Rep Power: 34
bigphil will become famous soon enoughbigphil will become famous soon enough
Quote:
Originally Posted by Jibran View Post
Dear All,

An article on large strain computational solid dynamics has recently been published in International Journal for Numerical Methods in Engineering.
Please find below a link to the manuscript on researchgate.
https://www.researchgate.net/publica...train_dynamics

Thanks
Thanks Jibran,

The procedures look very interesting.

Do you intend to share the code?
Was it implemented in OpenFOAM? - from the article - yes

All the best,
Philip

Last edited by bigphil; May 18, 2016 at 12:45. Reason: I downloaded the article and realised that the methods have been implemented in OpenFOAM
bigphil is offline  

Old   May 20, 2016, 06:53
Default
  #329
Member
 
Jibran
Join Date: Oct 2012
Location: UK
Posts: 61
Blog Entries: 1
Rep Power: 14
Jibran is on a distinguished road
Quote:
Originally Posted by bigphil View Post
Thanks Jibran,

The procedures look very interesting.

Do you intend to share the code?
Was it implemented in OpenFOAM? - from the article - yes

All the best,
Philip

Hi Philip,

Thanks for the appreciation.
Yes, you are correct. The methodology has been implemented from scratch in OpenFOAM.

Currently, we are working on the code to extend it to contact mechanics applications.
Once that is achieved we plan to share the code.
bigphil and alia like this.
__________________
Jibran Haider
https://jibranhaider.com/
Jibran is offline  

Old   June 2, 2016, 04:33
Default Restart FsiFoam
  #330
MB2
New Member
 
Becker
Join Date: Apr 2012
Posts: 3
Rep Power: 14
MB2 is on a distinguished road
Hi Philip,

did you have time to have a look at the restart-issue ?
Would be really nice if it would work..

Martin

Quote:
Originally Posted by bigphil View Post
Hi,

In theory it should not be a problem to restart, we just have to make sure all the relevant fields are written out (something seems to want to old cell volumes V0, and also the golbalFaceZone field in parallel).
I will let you know if I get time to look at it.

In short to answer your questions, yep it would be intended to include such functionality.

Philip
MB2 is offline  

Old   June 20, 2016, 08:36
Default
  #331
New Member
 
Join Date: Jun 2016
Posts: 4
Rep Power: 9
May Z is on a distinguished road
Quote:
Originally Posted by bigphil View Post
Hi,

Yep, the new FSI framework (currently located in foam-extend-3.1/extend-bazaar) supersedes the icoFsiElasticNonLinULSolidFoam solver.
Željko presented this framework at the OpenFOAM Workshop 2014 in Zagreb: abstract and slides.

The major improvement with regard to FSI coupling is the implementation of the IQN-ILS algorithm: this seems much better than Aitken's/fixed under-relaxation.
Also, the plugin approach used for the solid and fluid solvers should allow easier extension to other fluid/solid models e.g. multi-phase, compressible, plasticity, etc.

Best,
Philip
Hi, I've been tried fsiFoam in extend-bazaar and used one of the case just changed the geometry. But then I can't see the deformation of the solid part. I don't know why.
May Z is offline  

Old   June 20, 2016, 09:08
Default
  #332
Senior Member
 
ok
Join Date: Oct 2013
Posts: 346
Rep Power: 13
Maimouna is on a distinguished road
Quote:
Originally Posted by May Z View Post
Hi, I've been tried fsiFoam in extend-bazaar and used one of the case just changed the geometry. But then I can't see the deformation of the solid part. I don't know why.
Hi May, I'm using fsiFoam in extend bazaar, could you specify for more clarification please.

Regards,

Maimouna
Maimouna is offline  

Old   June 20, 2016, 09:23
Default
  #333
New Member
 
Join Date: Jun 2016
Posts: 4
Rep Power: 9
May Z is on a distinguished road
Quote:
Originally Posted by Maimouna View Post
Hi May, I'm using fsiFoam in extend bazaar, could you specify for more clarification please.

Regards,

Maimouna
http://pan.baidu.com/s/1nvjc2MX
Hi Maimouna, here's my case, the data of the geometry comes from a benchmark case, but the solid part deforms little.
Thanks,
May Z is offline  

Old   August 3, 2016, 12:18
Default
  #334
Member
 
Heliana Cardenas
Join Date: Jul 2013
Posts: 30
Rep Power: 12
heliana60 is on a distinguished road
Dear Phillip,

I am using the elasticSolidFoam (foam extended 3.1) solver to apply traction to a "simple" system. With simple, I mean geometrically because it is just a plate that's fixed at the bottom and pulled at the top.

This plate though has residual stresses within, so a "body force". I added to the momentum equation this body force that is in the material as an extra term (rho*div(residual stress)). I read in one of the forums for a different case, where the gravity was supposed to be introduced, that you said this force is added only in the first time step, nonetheless I just included directly in the equation (mistake??). It looks like:

fvVectorMatrix UEqn
(
rho*fvm::d2dt2(U)
==
fvm::laplacian(2*muf + lambdaf, U, "laplacian(DU,U)")
+ divSigmaExp + rho*divStress (Body force)
);

What I find so far is that the Young modulus of my system changes when I change the fixedDisplacement (strain on top) when this body force in present. When it is not present it doesn't change. So there is a dependence on the strain (rate).

My first question is if adding the body force like I did in the momentum equation makes sense??
Also I am puzzled with this strain dependence of the elastic modulus because there is no time scale in the momentum equations.

It would be very nice hearing from you,

Kind regards,

Heliana
heliana60 is offline  

Old   August 3, 2016, 12:59
Default
  #335
Super Moderator
 
bigphil's Avatar
 
Philip Cardiff
Join Date: Mar 2009
Location: Dublin, Ireland
Posts: 1,089
Rep Power: 34
bigphil will become famous soon enoughbigphil will become famous soon enough
Quote:
Originally Posted by heliana60 View Post
Dear Phillip,

I am using the elasticSolidFoam (foam extended 3.1) solver to apply traction to a "simple" system. With simple, I mean geometrically because it is just a plate that's fixed at the bottom and pulled at the top.

This plate though has residual stresses within, so a "body force". I added to the momentum equation this body force that is in the material as an extra term (rho*div(residual stress)). I read in one of the forums for a different case, where the gravity was supposed to be introduced, that you said this force is added only in the first time step, nonetheless I just included directly in the equation (mistake??). It looks like:

fvVectorMatrix UEqn
(
rho*fvm::d2dt2(U)
==
fvm::laplacian(2*muf + lambdaf, U, "laplacian(DU,U)")
+ divSigmaExp + rho*divStress (Body force)
);

What I find so far is that the Young modulus of my system changes when I change the fixedDisplacement (strain on top) when this body force in present. When it is not present it doesn't change. So there is a dependence on the strain (rate).

My first question is if adding the body force like I did in the momentum equation makes sense??
Also I am puzzled with this strain dependence of the elastic modulus because there is no time scale in the momentum equations.

It would be very nice hearing from you,

Kind regards,

Heliana
Hi Heliana,

Is your residual stress a uniform field or do you have some spatially varying data?

To add a residual stress, you would add the divergence of this stress to the momentum equation:
Code:
    fvVectorMatrix UEqn
    (
        rho*fvm::d2dt2(U)
  == fvm::laplacian(2*muf + lambdaf, U, "laplacian(DU,U)")
    + divSigmaExp
    + fvc::div(myResidualStressField)
    );
For elasticSolidFoam in fe31, two other changes would be required:
Update the definition of stress in the "elasticSolidFoam/calculateEpsilonSigma.H":
Code:
epsilon = symm(gradU);

sigma = 2*mu*epsilon + lambda*(I*tr(epsilon)) + myResidualStressField;
and also for the traction based boundary conditions to be correct (e.g. solidTraction, solidContact, fixedDisplacementZeroShear, ...), you need to modify $FOAM_SRC/solidModels/constitutiveModel/tractionBoundaryGradient/tractionBoundaryGradient.C, add the following code at line 530 (just before plasticity contribution):
Code:
        // Add residual stress term to boundary gradient
        if
        (
            patch.boundaryMesh().mesh().foundObject<volSymmTensorField>
            (
                "myResidualStressField"
            )
	)
        {
            const volSymmTensorField& myResStress =
                // patch.boundaryMesh().mesh().foundObject<volSymmTensorField> // typo fix: 4th-Aug-16 
                patch.boundaryMesh().mesh().lookupObject<volSymmTensorField>
                (
                    "myResidualStress"
                );

            gradient -= (n & myResStress);
        }
this assumes that myResidualStress is a volSymmTensorField defined in the solver.

As regards applying the term in just the first time-step, this would only be the case for an incremental solver where the momentum equation is cast in incremental form; for elasticSolidFoam it solves the conservation of total linear momentum so the term should be added every time-step.

For the time dependence, there is a temporal term in the momentum equation 'd2dt2(U)'; this term may be significant for highly transient problems or over a very short time. The implemented constitutive law (Hooke's law) is rate independent. Also, you should check that the solver is converging in each time-step.

Philip

Last edited by bigphil; August 4, 2016 at 05:18. Reason: Fixed typo in the code
bigphil is offline  

Old   August 4, 2016, 04:40
Default
  #336
Member
 
Heliana Cardenas
Join Date: Jul 2013
Posts: 30
Rep Power: 12
heliana60 is on a distinguished road
Hi Philip,

Thank you very much for answering. My field is not uniform across the geometry but varies spatially. I am implementing the changes you suggested, I think I was confused with the other forum about the incremental solver, so now I understand that the "myResidualStressField" should be added every time-step. As soon as it works I let you know!

I struggle in the moment though when compiling the $FOAM_SRC/solidModels/constitutiveModel/tractionBoundaryGradient/tractionBoundaryGradient.C

I get this error:

constitutiveModel/tractionBoundaryGradient/tractionBoundaryGradient.C: In static member function ‘static Foam::tmp<Foam::Field<Foam::Vector<double> > > Foam::tractionBoundaryGradient::snGrad(const vectorField&, const scalarField&, const Foam::word&, const Foam::word&, const Foam::fvPatch&, bool, const Foam::nonLinearGeometry::nonLinearType&, bool)’:
constitutiveModel/tractionBoundaryGradient/tractionBoundaryGradient.C:541:17: error: invalid initialization of reference of type ‘const volSymmTensorField& {aka const Foam::GeometricField<Foam::SymmTensor<double>, Foam::fvPatchField, Foam::volMesh>&}’ from expression of type ‘bool’
(

Anyways, I will find a way to work it out I let you know how he solver converges.

Cheers,

Heliana
heliana60 is offline  

Old   August 4, 2016, 05:20
Default
  #337
Super Moderator
 
bigphil's Avatar
 
Philip Cardiff
Join Date: Mar 2009
Location: Dublin, Ireland
Posts: 1,089
Rep Power: 34
bigphil will become famous soon enoughbigphil will become famous soon enough
Hi Heliana,

For the compilation error, this was my fault, there was a typo in the code I posted:
This line:
Code:
patch.boundaryMesh().mesh().foundObject<volSymmTensorField>
should be replaced with this line:
Code:
patch.boundaryMesh().mesh().lookupObject<volSymmTensorField>
I have edited the post above to correct this.

Philip
bigphil is offline  

Old   August 4, 2016, 09:37
Default
  #338
Member
 
Heliana Cardenas
Join Date: Jul 2013
Posts: 30
Rep Power: 12
heliana60 is on a distinguished road
Hi Philip,

I fixed it like you said and I compiled and runs fine.

This is just a bit of brainstorming:

I was thinking though that at t=0 the only stresses present would be my residual stresses which must then create an initial deformation -- sort of saying it comes inherently within the material -- so I figure I have to initialize or calculate somehow that initial deformation where the calculation must start from at the beginning. I think what I mean is that the initial deformation, when there are residual stresses present cannot be zero but a value that should be calculated with the elasticSolidFoam solver assuming that sigma is zero by myResStressField is not zero, hence I should initialize or calculate this deformation a the beginning right and then start from there right?

Sorry if I put it too complicated

Cheers,

Heliana
heliana60 is offline  

Old   August 4, 2016, 12:50
Default
  #339
Member
 
Heliana Cardenas
Join Date: Jul 2013
Posts: 30
Rep Power: 12
heliana60 is on a distinguished road
Sorry for the messed message,

After thinking about it I think I can rephrase it better.

Since I have residual stresses in my geometry, I could calculate an initial deformation assuming linear elasticity - Hooke's Law - and this initial deformation would be the initial internal field I would use in U to start my calculation which also includes the residual stresses in the momentum equation.

So I would calculate an initial deformation called DU, hence:

volTensorField gradDU = fvc::grad(DU);
// Hooke's law
myResStress = 2*mu*(symm(gradDU)) + lambda*(I*tr(symm(gradDU)))

I need somehow to calculate DU from the previous equation and then that would be my initial inherent deformation across my geometry (because of those residual stresses), so then it is like my system is initialized with this field and then I use the solver....

Does it make sense at all? or am I just running in circles?

Heliana
heliana60 is offline  

Old   August 5, 2016, 12:15
Default
  #340
Super Moderator
 
bigphil's Avatar
 
Philip Cardiff
Join Date: Mar 2009
Location: Dublin, Ireland
Posts: 1,089
Rep Power: 34
bigphil will become famous soon enoughbigphil will become famous soon enough
Quote:
Originally Posted by heliana60 View Post
Sorry for the messed message,

After thinking about it I think I can rephrase it better.

Since I have residual stresses in my geometry, I could calculate an initial deformation assuming linear elasticity - Hooke's Law - and this initial deformation would be the initial internal field I would use in U to start my calculation which also includes the residual stresses in the momentum equation.

So I would calculate an initial deformation called DU, hence:

volTensorField gradDU = fvc::grad(DU);
// Hooke's law
myResStress = 2*mu*(symm(gradDU)) + lambda*(I*tr(symm(gradDU)))

I need somehow to calculate DU from the previous equation and then that would be my initial inherent deformation across my geometry (because of those residual stresses), so then it is like my system is initialized with this field and then I use the solver....

Does it make sense at all? or am I just running in circles?

Heliana
Hi Heliana,

Yes, I understand; if the residual stress field is not in equilibrium then it would cause some deformation.

With the suggested modifications, the elasticSolidFoam solver will calculate these deformations in the first time-step. For example, to see this, you could set all your boundary conditions to traction-free (i.e. solidTraction with all zeros) and then run the solver for one time-step; you may need to set one patch to fixedDisplacement to stop the model floating away.
If the residual stress field was not in equilibrium then you will see that the model will deform to reach an equilibrium between the residual stresses and generated internal elastic stresses.

In short, I don't think you need to make any additional changes, the solver already solves for and accounts for this residual deformation.

Philip
bigphil is offline  

Closed Thread


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 Off
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
GPU Linear Solvers for OpenFOAM gocarts OpenFOAM Announcements from Other Sources 37 August 17, 2022 14:22
[Virtualization] OpenFOAM oriented tutorial on using VMware Player - support thread wyldckat OpenFOAM Installation 2 July 11, 2012 16:01
New OpenFOAM Forum Structure jola OpenFOAM 2 October 19, 2011 06:55
Cross-compiling OpenFOAM 1.7.0 on Linux for Windows 32 and 64bits with Mingw-w64 wyldckat OpenFOAM Announcements from Other Sources 3 September 8, 2010 06:25
OpenFOAM Debian packaging current status problems and TODOs oseen OpenFOAM Installation 9 August 26, 2007 13:50


All times are GMT -4. The time now is 14:06.