Hello
I have solved a linear elasticity problem : A clamped beam under the end load. The left side is clamped and I want to apply a vertical end load on the right edge. A part of my code:
# Create mesh and define function space
mesh = RectangleMesh(Point(0, 0), Point(L, W), 10, 3)
V = VectorFunctionSpace(mesh, 'P', 1)
class LeftEdge(SubDomain):
def inside(self, x, on_boundary):
tol = 1e-6
return on_boundary and abs(x[0]) < tol
class RightEdge(SubDomain):
def inside(self, x, on_boundary):
tol = 1e-6
return on_boundary and abs(x[0] - L) < tol
left_edge = LeftEdge()
right_edge = RightEdge()
sub_domains = FacetFunction("size_t", mesh, mesh.topology().dim() - 1)
sub_domains.set_all(0)
right_edge.mark(sub_domains, 1)
left_edge.mark(sub_domains, 2)
ds = Measure("ds")[sub_domains]
#Zero Dirichlet B.C on the left side
bc = DirichletBC(V, Constant((0, 0)), left_edge)
# Define variational problem
u = TrialFunction(V)
v = TestFunction(V)
#End Load
T = Constant((0, -10))
#Solve
a = inner(sigma(u), eps(v))*dx
L =dot(T, v)*ds(1)
# Compute solution
u = Function(V)
solve(a == L, u, bc)
The question is, when I plot the end load:
p=interpolate(T,V)
plot(p, title='Load')
This is what comes up:
As you can see this is not a load applied on only one edge. I mean this is like a distributed load started from the one end to the other end. In addition when I import my results to the Paraview I get the below pattern for the end load:
Again, as you can see it looks like a distributed load (some arrows started from the beginning to the end of the beam), while I just expect one arrow on the right edge.
Could you please tell me why it looks like this?