← Back to team overview

ffc team mailing list archive

Re: stable finite element for incompressible nonlinear elasticity?

 

Sorry, I forgot to attach my code in the previous email.

Best,
Chong Luo
----- Original Message ----
From: Chong Luo <luo.chong@xxxxxxxxx>
To: Andy Ray Terrel <aterrel@xxxxxxxxxxxx>
Cc: ffc-dev@xxxxxxxxxx
Sent: Tuesday, March 25, 2008 5:05:31 PM
Subject: Re: [FFC-dev] stable finite element for incompressible nonlinear elasticity?

Thank you very much for all those suggestions.

I've attached my code for solving neoHookean elasticity (the 2D version, which is much faster than the 3D one, but still blows up). 

I took "u" to be the mixture of (displacement, pressure), because the NonlinearPDE solver
subroutine pde.solve(u, t, T, dt) seems not accepting two functions simultaneously. So I mix the (displacement, pressure) to be one function "u" so that I can use the subroutine pde.solve(u, t, T, dt) to solve.

I'm not quite sure about how the NonlinearPDE solver works (I copied the code from the /demo/pde/nonlinear-poisson). It seems that it  does the job beautifully simple, but I don't know where to specify the initial value of (displacement, pressure).


Best,

Chong Luo

----- Original Message ----
From: Andy Ray Terrel <aterrel@xxxxxxxxxxxx>
To: Chong Luo <luo.chong@xxxxxxxxx>; Discussion of FFC development <ffc-dev@xxxxxxxxxx>
Sent: Tuesday, March 25, 2008 9:04:06 AM
Subject: Re: [FFC-dev] stable finite element for incompressible nonlinear elasticity?


> On the other hand, the one with (P1-P1) does compile, but the computation is
> not stable. What a life ...
> 
> Also, maybe my NeoHookean.form is too complicated, it takes a lot of time (5-10
> minutes) to compile the form file.
> And the size of NeoHookean.h is 4.8M, so it also takes a lot of time to compile
> main.cpp. Is there any way to speed up the compiling?
> 


You need to add stabilization terms for P1-P1 to be a stable stokes 
element this is why the bilinear form has the delta*dot(grad(q), 
grad(p)) term in it.   I can't really see what is going on in your form 
but it appears that you are setting your trial and test functions to be 
the entire mixed space, this seems incorrect behaviour but it really 
depends on the parts that were left out of the form posted to the list.

Another step is to try a P1-P0 element, this won't be as large (or 
accurate) as the P2-P1 element but should be more stable than just P1-P1 
with no stabilization terms.  For a long list of stable stokes elements 
I recommend Brezzi-Fortin.

When compiling with very large .h files generated from ffc, one speedup 
I have found is to turn off all compiler optimizations.  (in g++ do -O0)
 

Andy





      Looking for last minute shopping deals?  
Find them fast with Yahoo! Search.





      ____________________________________________________________________________________
Never miss a thing.  Make Yahoo your home page. 
http://www.yahoo.com/r/hs

Attachment: neoHookean.zip
Description: Zip archive


Follow ups