  FEMPAR is an open source object oriented Fortran200X scientific software
library for the high-performance scalable simulation of complex multiphysics
problems governed by partial differential equations at large scales, by
exploiting state-of-the-art supercomputing resources. It is a highly
modularized, flexible, and extensible library, that provides a set of modules
that can be combined to carry out the different steps of the simulation
pipeline. FEMPAR includes a rich set of algorithms for the discretization step,
namely (arbitrary-order) grad, div, and curl-conforming finite element methods,
discontinuous Galerkin methods, B-splines, and unfitted finite element
techniques on cut cells, combined with $h$-adaptivity. The linear solver module
relies on state-of-the-art bulk-asynchronous implementations of multilevel
domain decomposition solvers for the different discretization alternatives and
block-preconditioning techniques for multiphysics problems. FEMPAR is a
framework that provides users with out-of-the-box state-of-the-art
discretization techniques and highly scalable solvers for the simulation of
complex applications, hiding the dramatic complexity of the underlying
algorithms. But it is also a framework for researchers that want to experience
with new algorithms and solvers, by providing a highly extensible framework. In
this work, the first one in a series of articles about FEMPAR, we provide a
detailed introduction to the software abstractions used in the discretization
module and the related geometrical module. We also provide some ingredients
about the assembly of linear systems arising from finite element
discretizations, but the software design of complex scalable multilevel solvers
is postponed to a subsequent work.
