← Back to team overview

ffc team mailing list archive

Re: stable finite element for incompressible nonlinear elasticity?

 

So the code built for me quite quickly (using a macbook - 1GB ram, dual core intel processor). I am using the development version of ffc, fiat, and dolfin; perhaps that would help. Just so you know your problem diverged when I used a P4-P3 element and the Crouziex-Raviart element (see below), I'm guessing that you need to look at something other than just the element.


vector = VectorElement("Crouzeix-Raviart", "triangle", 1)
scalar = FiniteElement("Discontinuous Lagrange", "triangle", 0)
mixed = vector+scalar

-- Andy

Chong Luo wrote:
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. <http://us.rd.yahoo.com/evt=51734/*http://tools.search.yahoo.com/newsearch/category.php?category=shopping>


------------------------------------------------------------------------
Never miss a thing. Make Yahoo your homepage. <http://us.rd.yahoo.com/evt=51438/*http://www.yahoo.com/r/hs>


--

====================
Andy Terrel
Computer Science Dept
University of Chicago
aterrel@xxxxxxxxxxxx
---------------------

One machine can do the work of fifty men. No machine can do the work of one extraordinary man.
                                    -Elbert Hubbard



References