getfem-users
[Top][All Lists]
Advanced

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

Re: [Getfem-users] Computation of forces for prescribed displacements


From: Yves Renard
Subject: Re: [Getfem-users] Computation of forces for prescribed displacements
Date: Wed, 23 Jan 2008 18:10:05 +0100
User-agent: KMail/1.9.5

On Monday 21 January 2008 18:00, Igor Peterlik wrote:
> Hello,
>
> the problem is that I still cannot figure out how the equivalent forces
> should be computed if there is a Dirichlet condition imposed on some
> region.
>
> In my task, a displacement for the top face of a cylinder is prescribed and
> I want to compute the deformation of the cylinder and the reacting force
> F=(fx,fy,fz);
>
> Therefore, besides mf_u object for displacements of nodes, I have another
> mesh_fem object mf_mult for Lagrange multipliers initialized with the mesh
> of the cylinder (together with the correct  dimension and type of the FEM).
> Then I apply the Dirichlet conditions using mf_mult:
>
>
>           .......
>
>           getfem::mesh_fem mf_mult(cylinder_mesh);
>
>           ........
>
>           getfem::mdbrick_Dirichlet<> final_model(volum_src_term,
> DIRICHLET_BNDRY_ID, mf_mult);
>
>           .......
>
>
>   Then I set the boundary conditions and compute the deformation using the
> standard_solve arriving to the solution stored in vector U which contains
> the displacement for each degree of freedom and the Lagrange multipliers
> for DOFs with prescribed displacements. And now I arrive to problem, as I
> do not know how
> to combine the coefficients of Lagrange multipliers stored in the solution
> vector U and the shape functions of mf_mult to get the reacting force  F
> (which is -- I suppose -- the integral of force density over the top face
> of the cylinder for each direction x,y,z separately where the density is
> computed using the shape function over the boundary elements multiplied by
> the Lagrange multipliers...)
> I was trying to understand and employ the generic assembling procedures via
> getfem::generic_assembly but the examples given in documentation were not
> enough for me to adapt them for my task. Also in the examples included in
> getfem, the mf_mult object is defined several times, but it is never used
> for some further computations.
>
> Thank you in advance.
>
>
>                                                          Igor
>

If I understand well you want to compute the global reacting force. 
If W is the vector of multipliers (sub-vector of the solution) and mf_mult the 
corresponding fem description then you can compute the global force with 
something like

getfem::generic_assembly assem;
std::vector<double> vx(1), vy(1), vz(1);
assem.set("u=data(#1); t = comp(vBase(#1))(i,:).u(i)
                   V$1()+=t(1); V$2()+=t(2); V$3+=t(3)");
assem.push_mi(mim);
assem.push_mf(mf_mult);
assem.push_data(W);
assem.push_vec(vx);
assem.push_vec(vy);
assem.push_vec(vz);
assem.assembly(k);
 
where mim is a valid integration method and k your boundary.

Yves.

-- 

  Yves Renard (address@hidden)       tel : (33) 04.72.43.87.08
  Pole de Mathematiques, INSA de 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]