Building a scientific simulation environment for finite element methods is a complicated task. The longest part of finite element code development is in dealing with technical problems related to software implementation, rather than resolving the underlying physics that the code is intended to tackle.