getfem-users
[Top][All Lists]

Re: [Getfem-users] simulation membrane in 3D space

 From: Yves Renard Subject: Re: [Getfem-users] simulation membrane in 3D space Date: Tue, 24 Mar 2009 17:24:02 +0100 User-agent: KMail/1.9.5

```Dear Jerome,

I think the problem comes from the fact that the elasticity brick is designed
for plane elasticity or volume elasticity not for the deformation of the
membrane. The problem is that with the elasticity brick you have only a 2D
deformation on each triangle and the matching between two triangles should
take into account the 3D, which is not the case. So, I think, you shoud use a
3D displacement. The problem is that the correspondig brick does not exist. I
know that  Jean-Yves Heddebaut (address@hidden) did something similar but

Yves.

On Tuesday 24 March 2009 11:25, jerome chopard wrote:
> Hi,
>
> I'm new at using GetFem++. I wanted to inflate a sphere with a given
> pressure. I used 2D triangles and the 'isotropic_linearized_elasticity'
> brick. Since the result looks quite strange, I think I made a conceptual
> error somewhere. I join to this mail a picture of the result. Below is the
> part of the python code relevant with my problem.
>
> #BEGIN python code
>
> m = Mesh('empty',3)
> geo = GeoTrans('GT_PK(2,1)')
>
> #construction of mesh here
>
> FIXED = 41
> m.set_region(FIXED,50)
>
> displacement = MeshFem(m,3)
> displacement.set_fem(Fem('FEM_PK(2,1)'))
>
> pressure = MeshFem(m,1)
> pressure.set_fem(Fem('FEM_PK(2,1)'))
>
> mim = MeshIm(m)
> mim.set_integ(Integ('IM_TRIANGLE(13)'))
>
> #building model
> E=1e3
> Nu=0.3
> Lambda = E*Nu/((1+Nu)*(1-2*Nu))
> Mu =E/(2*(1+Nu))
> Pturgor = 0.1 #(MPa) #turgor pressure
>
> b0 = MdBrick('isotropic_linearized_elasticity',mim,displacement)
> b0.set_param('lambda',array([Lambda]))
> b0.set_param('mu',array([Mu]))
>
> b1 = MdBrick('dirichlet',b0,FIXED,displacement,'penalized')
> b1.set_param('R',array([(0.,),(0.,),(0.,)]) )
>
> b2 = MdBrick('source_term',b1)
> forces = turgor_forces(mesh,pos,Pturgor)
> b2.set_param('source_term',pressure,forces)
>
> mds = MdState('real')
> b2.solve(mds,'noisy','lsolver','superlu')
> state = mds.state()
>
> #display the result
>
> #END python code
>
> I hope somebody can explain where I'm wrong. Of course, I'm available if
>
> Thanks,
>
> Jérôme Chopard
> PS: description of the associated image "result.png". On the picture, the
> initial mesh (an icosahedre) is represented in plain 'red' faces. The face
> wich is FIXED is the green one below the sphere. The same mesh after
> displacement is represented as a set of edges (dark blue lines).
> Displacement have been multiplied by 30 to be visibles. Notice how the mesh
> deformation is not symetric (inflated on the left but deflated on the
> right) which is couterintuitive for me.

--

Yves Renard (address@hidden)       tel : (33) 04.72.43.87.08
Pole de Mathematiques, INSA-Lyon             fax : (33) 04.72.43.85.29
20, rue Albert Einstein
69621 Villeurbanne Cedex, FRANCE
http://math.univ-lyon1.fr/~renard

---------

```