getfem-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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 
for large deformations. May be he could help you.

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
> someone need more informations.
>
> 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

---------



reply via email to

[Prev in Thread] Current Thread [Next in Thread]