The employed techniques in the current study include partitioning the mesh and distributing the partitions among available computing nodes in a parallel computing setup (handled by Firedrake) and preconditioning the resulting discrete linear system as well as using high-performance direct and iterative solvers. For the latter, the preconditioners and solver functionalities available in the Portable, Extensible Toolkit for Scientific Computation (PETSc) toolkit were utilized. Notably, different strategies were adopted for handling 2D and 3D simulations.