On 10/07/2018 09:29 AM, Lucky Qin wrote:
>
> I would like to apply a traction boundary condition on the surface of a
> cantilever beam. Suppose I have a vector named
> /traction[dof_handler.n_dofs()/*], *which gives the various traction on
> each dof.
To augment the answer Jean-Paul has already given:
The way you see things when you define such a traction vector is not the
way you should be thinking of tractions in the finite element context.
There, you should think of a traction boundary condition as a function
g(x) so that
n . sigma(u(x)) = g(x)
where sigma(u) gives you the stress at a point u. In linear elasticity,
for example, this would be something like
sigma(u) = lambda eps(u) + 2*mu*div(u)*I
if I recall correctly. The point I want to make is that the traction is
defined *for every point of the boundary*. This then allows you to
compute contributions to the right hand side of the discrete problem by
approximating the boundary integral
T_i = \int_{\partial \Omega} g(x) phi_i(x) dx
via quadrature. For this to work, you have to have the traction at every
point of the boundary.
On the other hand, you only provide the traction at individual points
(assuming that's how you have defined your 'traction' array), which is
not good enough to actually do the integration.
The reason for all of this is that you will want to work on a sequence
of successively finer meshes to explore convergence of your solution.
For this, it is not enough to just know the traction at individual
points -- you need to be able to evaluate it everywhere.
Best
W.
--
------------------------------------------------------------------------
Wolfgang Bangerth email:
bang...@colostate.edu
www:
http://www.math.colostate.edu/~bangerth/