  Fractures are ubiquitous in the subsurface and strongly affect flow and
deformation. The physical shape of the fractures, they are long and thin
objects, puts strong limitations on how the effect of this dynamics can be
incorporated into standard reservoir simulation tools. This paper reports the
development of an open-source software framework, termed PorePy, which is aimed
at simulation of flow and transport in three-dimensional fractured reservoirs,
as well as deformation of the reservoir due to shearing along fracture and
fault planes. Starting from a description of fractures as polygons embedded in
a 3D domain, PorePy provides semi-automatic gridding to construct a
discrete-fracture-matrix model, which forms the basis for subsequent
simulations. PorePy allows for flow and transport in all lower-dimensional
objects, including planes (2D) representing fractures, and lines (1D) and
points (0D), representing fracture intersections. Interaction between processes
in neighboring domains of different dimension is implemented as a sequence of
couplings of objects one dimension apart. This readily allows for handling of
complex fracture geometries compared to capabilities of existing software. In
addition to flow and transport, PorePy provides models for rock mechanics,
poro-elasticity and coupling with fracture deformation models. The software is
fully open, and can serve as a framework for transparency and reproducibility
of simulations. We describe the design principles of PorePy from a user
perspective, with focus on possibilities within gridding, covered physical
processes and available discretizations. The power of the framework is
illustrated with two sets of simulations; involving respectively coupled flow
and transport in a fractured porous medium, and low-pressure stimulation of a
geothermal reservoir.
