Implementation of Bogner Fox Schmit elements

Hi all! I’m quite new to NGSolve, but I would like to use it for a paper I’m working on – it’s just an excuse to learn it :).
I need to use C^1 elements, and the simplest that came to mind is BFS – I say I need it because the formulation I’m trying to test requires C^1 elements (I have the evaluation of gradients over elements interfaces and Laplacian in the formulation).

I have no problem writing my own stuff in C++, but I would like to understand a bit better what I need to implement. From what I understood reading here, I should implement implement:

  • Elements Basis Functions, Gradients – Since I need the laplacian as well, should I implement the Hessian of basis functions?
  • Differential operators (Probably just the Laplacian)
  • Finite elements themselves
    Am I missing something? Also, I would like to understand if BFS can be constructed more easily by constructing Hermite element and then defining BFS as the tensor product of two Hermite elements.
    Thank you in advance for the answers