Neo-Hooke implementation

Numerical methods and mathematical models of Elmer
bengt
Posts: 119
Joined: 23 Jul 2010, 10:27

Re: Neo-Hooke implementation

Post by bengt »

Hi Mika,
I've tried some modifications of the ElasticSolver, utilizing the 2nd-Piola-Kirchhoff stress definition given by François Labelle on http://wismuth.com/elas/elasticity.html, see above. C is expressed in terms of the originally coded strain definition (i.e. C=2*strain+I). Additionally, I skipped all the routines (and calls) being needed only for non-Cartesian coordinate systems. However, I just cannot figure out at which position in the code (and how) the derivative DG(u)[v] could be treated. As said, I'm no expert, so these attempts might well be quite naive and/or complete nonsense... The handling of the matrix inversion (see code) now seems to be ok. The solver compiles without errors and runs until the point where the iterations start. Then, after quite a while, I get only NaNs. I've attached the modified source. Would it be possible for you to have a look at it and to give me a brief feedback if this is completely wrong or how it should be further modified and extended?
I'd very much appreciate your suggestions.
Best regards, Bengt
Attachments
ElasticSolveNeoHooke_v5.f90
(86.49 KiB) Downloaded 386 times
mika
Posts: 230
Joined: 15 Sep 2009, 07:44

Re: Neo-Hooke implementation

Post by mika »

Hi,

I returned for a while to this other constitutive model to see whether I am able to differentiate the constitutive law in a closed form. The differentiation was actually quite elementary, so developing the Newton iteration also for this model should be possible. Based on these exercises some modifications in your code now seem to be quite different from what I would expect to see. Unfortunately my possibilities to put more time on this are restricted just now. Perhaps I could try to make a quick implementation of the equations I found at a later point of time, but making it in this week is simply impossible. An additional technical concern is the question whether the pure Newton linearization will lead to a convergent iteration method.

Best regards,
Mika
bengt
Posts: 119
Joined: 23 Jul 2010, 10:27

Re: Neo-Hooke implementation

Post by bengt »

Hi Mika,

again thanks so much for your reply and for putting so much effort and time into my problem!I would have replied sooner but wasn't able to follow the forum during the last days. As to my implementation attempts I'm quite sure that these must be wrong because I basically replaced formulations without understanding exactly what the subroutines are doing in detail :oops:
It would be really great if you - time permitting - could try the implementation.
Best regards, Bengt
mika
Posts: 230
Joined: 15 Sep 2009, 07:44

Re: Neo-Hooke implementation

Post by mika »

Hi,

I just committed a revision of ElasticSolve.src to enable the simulation of Neo-Hookean material. In this case, the second Piola-Kirchhoff stress is written as

G = lambda/2 * (J*J-1) * Inverse(C) + mu * ( I - Inverse(C) )

with C the right Cauchy-Green tensor and J the determinant of the deformation gradient. The documentation has not yet been revised, but using this model should be easy. To enable this material model the solver section should just contain the additional keyword command

Neo-Hookean Material = Logical True

Due to time constraints the testing of the model has been minimal, so any help in the verification is welcome.

Best regards,
Mika
bengt
Posts: 119
Joined: 23 Jul 2010, 10:27

Re: Neo-Hooke implementation

Post by bengt »

Hi Mika,

again thank you very very much for all the effort and time you put into this problem!! Recently I've been able to start the testing of the new solver and so far the results are simply looking great!!
I'll do some further testing and post the results, but so far - of course :D - I've started with my original model which is made up of several regular sinusoidal bumps being pressed against a flat rigid surface.
Summing up the displacement_loads_z over the deformed surface and implementing force feedback via the "FindOptimum" procedure I got the compressive force-displacement characteristic for a given target normal force. And this characteristic is indeed looking very nice, absolutely as expected for Neo-Hooke material, and without any convergence issues. The deformation behaviour is as expected, too.
Looking at the regular displacement_z pattern (see attached image), however, I'm currently not understanding the according displacement_loads_z map (image attached). Shouldn't this be as regular/periodic as the displacement_z pattern?
I guess the difference is not related to the new material model but to the computation of displacement_loads_z on the boundary nodes. My boundary conditions should be ok: zero displacement in the respective boundary normal direction.
Do you have any idea why we get these (inconsistent?) displacement_loads_z?

I'd very much appreciate your suggestions!
Best regards, Bengt
Attachments
Displ_z.png
(84.69 KiB) Not downloaded yet
Displ_Loads_z.png
(74.5 KiB) Not downloaded yet
udeng85
Posts: 45
Joined: 20 Sep 2010, 06:23

Re: Neo-Hooke implementation

Post by udeng85 »

Hi Mika and Bengt,

I am interested in using the Neo Hookean material model for my analysis and as mentioned by Mika we can actually use the Neo Hookean model by setting logical "True". Have you actually implemented the Neo Hookean model in Elmer or is it still under construction? Do you have the code related to Neo Hookean material model so I can add it to the existing ElasticSolve.f90 solver (is the code ElasticSolveNeoHooke_v5.f90 by Bengt sufficient for Neo Hookean implementation)?

Hope to have some answers soon. Thank you

-Aizat-
raback
Site Admin
Posts: 4812
Joined: 22 Aug 2009, 11:57
Antispam: Yes
Location: Espoo, Finland
Contact:

Re: Neo-Hooke implementation

Post by raback »

Hi, I guess it's the commit by Mika on Oct 20 that makes the Neo-Hooke possible. So you need to grab the ElasticSolve.src from the svn repository and compile it until the installers are fresh enough. -Peter
bengt
Posts: 119
Joined: 23 Jul 2010, 10:27

Re: Neo-Hooke implementation

Post by bengt »

Hi Aizat and Peter

sorry for the late reply, haven't been able to follow the forum during the last days/weeks... It works exactly as Peter explained (Peter: thanks a lot for your quick reply to Aizats question!): take the latest ElasticSolve.src from the repository and recompile on your own. The new material part is in the according neoHookeStressCompose section of the solver. Make sure to have "Neo-Hookean Material = Logical True" included within your sif-file solver section, since it switches to the appropriate subroutine. I'm still working on my model and so far the results are really very encouraging. In order to improve convergence and stability of the coupled system I found that using BiCGStabL with ILUT preconditioning works quite well. However it needs quite some memory, so especially for Poisson ratios higher than 0,495 or so things become difficult (need smaller ILUT tolerances) at least with the 32bit windows version that I'm currently using (mainly because of the ElmerGUI I'm using for mesh inspection).
@Peter: would it be possible for you to make us the 64bit "ElasticSolve.dll"version of the latest ElasticSolve.src available for download which would be compatible with the latest 64bit windows binary package? Using the 32bit version I'm currently running into severe problems with memory allocation errors.

Regards, and -as said- when things are finally running I'll be glad to share results.
Bengt
Post Reply