# Rigid bodies and point loads

**URL:** <https://getfem.discourse.group/t/rigid-bodies-and-point-loads/116>\
**Category:** General\
**Created:** [April 24, 2026, 7:33am UTC](https://getfem.discourse.group/t/rigid-bodies-and-point-loads/116 "2026-04-24T07:33:45Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Francesco](https://avatars.discourse-cdn.com/v4/letter/f/e47c2d/32.png) [@Francesco](https://getfem.discourse.group/u/Francesco)\
**Post date:** [April 24, 2026, 7:33am UTC](https://getfem.discourse.group/t/rigid-bodies-and-point-loads/116/1 "2026-04-24T07:33:45Z")

</div>

Hi all,

- Are there any quick workarounds to model situations where contact occurs between a slave **rigid** body (say, a rigid ring) and a master deformable/rigid body, but using the user’s own solver instead of GetFEM predefined methods, based on Lagrange multipliers?  
Generally speaking, is there any way in GetFEM to specify that a domain under consideration is rigid, without having to specify the form of the displacement field?

- How to prescribe point loads instead of volume/surface density of loads? I would like to simulate a rigid sphere indenting a deformable half-plane, where the rigid sphere is the slave, which is pushed by a point load, say P, applied on its North pole, against a rectangular domain representing the half-space.

Thanks for your feedback.

---

<div class="post-metadata">

**Author:** ![Konstantinos.Poulios](https://avatars.discourse-cdn.com/v4/letter/k/ac91a4/32.png) [@Konstantinos.Poulios](https://getfem.discourse.group/u/Konstantinos.Poulios)\
**Post date:** [April 24, 2026, 9:04am UTC](https://getfem.discourse.group/t/rigid-bodies-and-point-loads/116/2 "2026-04-24T09:04:12Z")

</div>

Hi,

- If the rigid part geometry is simple, it is best to use its analytical (implicit) description. For example in a metal sheet rolling model I use this definition of frictional contact

```auto
md.add_raytracing_transformation("contact_trans", release_dist)
md.add_slave_contact_boundary_to_raytracing_transformation("contact_trans", mesh, "u", T_RG)
md.add_rigid_obstacle_to_raytracing_transformation("contact_trans", f"sqrt(sqr(x)+sqr(y-{R+0.5*h}))-{R}", N)
md.add_nonlinear_term(mim_contact, "-contact_mult.Test_u", T_RG)
md.add_nonlinear_term(mim_contact, "-(1/r)*contact_mult.Test_contact_mult", T_RG)
md.add_macro("n", "Transformed_unit_vector(Grad_u,Normal)")
md.add_macro("Vs", "(u-u0-[[1-c,s],[-s,1-c]]"\
                        f"*(Interpolate(X,contact_trans)-[0;{R+0.5*h}]))*alpha")
md.add_macro("g", "(Interpolate(X,contact_trans)-X-u).n")
md.add_macro("C", "(1/r)*Coulomb_friction_coupled_projection(contact_mult,n,Vs,g,f,r)")
md.add_nonlinear_term(mim_contact,
                      "Interpolate_filter(contact_trans, C.Test_contact_mult, 2)", T_RG)

```

where the expression `f"sqrt(sqr(x)+sqr(y-{R+0.5*h}))-{R}"` defines the roller.

- For more complex geometries, create a mesh for the rigid body, add a displacement field u1 for your deformable body and a displacement field u2 for the rigid body. Define a deformable-deformable contact between the two, disable the u2 variable in the model with `md.disable_variable("u2")`.

- For point loads you can do it with the `model.add_explicit_rhs(...)` function, but I strongly encourage you to avoid point loads. They are never a good idea.
