A computer-implemented method for modeling three-dimensional geological fractures, the method comprising: receiving by a processor a 3D domain that includes a set of 3D fracture surfaces with geometry that has been discretized in a 2D manifold by a collection of polygons; intersecting by the processor the 3D domain with a set of non-intersecting 2D slicing surfaces to generate a set of 2D fracture line segments on each 2D slicing surface at the intersection of a respective slicing surface and the 2D manifolds defining the 3D fracture surfaces; for each 2D slicing surface: for each straight line segment in each fracture line segment of the set of fracture line segments, by the processor: generating a set of stadia, each at a specified radius from the straight line segment, generating closed loops around all the straight line segments of the fracture line segment using the generated stadia, and generating various shape cells within the closed loops of the straight line segment; generating by the processor a constrained cell mesh around the closed loops of the set of fracture line segments to fill in a remainder space of the 2D slicing surface; for each stadia of each fracture line segment by the processor, connecting points on a first stadia to a corresponding point on a second stadia generated on a neighboring 2D slicing surface and corresponding to the same fracture to form 3D shells; generating by the processor 3D cell elements in between successive 3D shells to fill a region between the successive 3D shells; and assigning reservoir properties to each 3D cell to produce a 3D model. receiving by a processor a 3D domain that includes a set of 3D fracture surfaces with geometry that has been discretized in a 2D manifold by a collection of polygons; intersecting by the processor the 3D domain with a set of non-intersecting 2D slicing surfaces to generate a set of 2D fracture line segments on each 2D slicing surface at the intersection of a respective slicing surface and the 2D manifolds defining the 3D fracture surfaces; for each 2D slicing surface: for each straight line segment in each fracture line segment of the set of fracture line segments, by the processor: generating a set of stadia, each at a specified radius from the straight line segment, generating closed loops around all the straight line segments of the fracture line segment using the generated stadia, and generating various shape cells within the closed loops of the straight line segment; generating by the processor a constrained cell mesh around the closed loops of the set of fracture line segments to fill in a remainder space of the 2D slicing surface; for each stadia of each fracture line segment by the processor, connecting points on a first stadia to a corresponding point on a second stadia generated on a neighboring 2D slicing surface and corresponding to the same fracture to form 3D shells; generating by the processor 3D cell elements in between successive 3D shells to fill a region between the successive 3D shells; and assigning reservoir properties to each 3D cell to produce a 3D model. for each straight line segment in each fracture line segment of the set of fracture line segments, by the processor: generating a set of stadia, each at a specified radius from the straight line segment, generating closed loops around all the straight line segments of the fracture line segment using the generated stadia, and generating various shape cells within the closed loops of the straight line segment; generating by the processor a constrained cell mesh around the closed loops of the set of fracture line segments to fill in a remainder space of the 2D slicing surface; for each stadia of each fracture line segment by the processor, connecting points on a first stadia to a corresponding point on a second stadia generated on a neighboring 2D slicing surface and corresponding to the same fracture to form 3D shells; generating by the processor 3D cell elements in between successive 3D shells to fill a region between the successive 3D shells; and assigning reservoir properties to each 3D cell to produce a 3D model.