Hi, you should consider a distributed surface load q of intensity q=mg/S where w=2 kg and S is your beam cross-section. You should also tag the corresponding end-boundary either using gmsh or manually, for instance, assuming a beam of length L in the x direction:
def end(x, on_boundary):
return near(x[0], L) and on_boundary
facets = MeshFunction("size_t", mesh, 2)
AutoSubDomain(end).mark(facets, 1)
then use a ds
measure with the appropriate facets markers and add the corresponding load:
ds = Measure("ds", domain=mesh, subdomain_data=facets)
S = assemble(1*ds(1))
q = Constant((0, 0, -m*g/S))
l = dot(q, u)*ds(1)