The InsertionAlgorithm extends the generic algorithm class to simulate needle insertion. It assumes the needle is modelled as a beam with edge topology, which is standard for this type of simulation.
Currently, the algorithm is tightly coupled to specific proximity and element types. Many operations rely on dynamic casts, and are hardcoded within the algorithm body.
We should implement specialized operations in the Operation classes and dispatch them from the top-level algorithm. This could also enable future additions and maybe make our lives easier.