Skip to content

Latest commit

 

History

History
36 lines (24 loc) · 2.41 KB

README.md

File metadata and controls

36 lines (24 loc) · 2.41 KB

Paraboloid Curvature

This is a fork of Pececillo which reproduces the results for the paper "A Paraboloid Fitting Technique for Calculating Curvature from Piecewise-Linear Interface Reconstructions on 3D Unstructured Meshes" by Z. Jibben, N. N. Carlson, and M. M. Francois, 2017.

Building

This depends on the libraries necessary for building Pececillo. A superbuild may be found here. Tests successfully run with the Intel compilers v17.0.4.

$ mkdir build
$ cd build
$ cmake -DCMAKE_PREFIX_PATH=/your/pececillo-tpl/install/path ..
$ make

Running

$ cd run
$ ../build/src/parabfit/pececillo-parabfit

By default, this will calculate the curvature error norms for the ellipsoid test case on the coarsest tetrahedral mesh, which should take 5-20 minutes, depending on your hardware.

To reproduce all results in the paper, you must first download all tetrahedral and distorted hexahedral meshes from here and unpack them in the run directory. Then, execute $ ../build/src/parabfit/pececillo-parabfit full. This will take days to weeks to calculate on a single workstation, due to the high cost of initializing volume fraction fields, and to a lesser extent calculating normal vectors via LVIRA. You can speed this up by instead downloading volume fraction fields and normal vectors from here, unpacking them in the run directory. By reading in these fields, all paper results will be calculated in a few hours.

Both the fields and meshes tarballs are identified by DOI.

Paraboloid Fitting Algorithm in the Source

To find the source code for the paraboloid fitting algorithm, look at the following in the src/lib directory:

  • surface_type.F90, function local_patch returns a collection of interface reconstruction polygons surrounding a target cell.
  • interface_patch_type.F90, function curvature_from_patch takes a collection of polygons and drives other routines to fit a paraboloid and calculate curvature.
  • paraboloid_type.F90, subroutine volumetricFit fits a paraboloid to a given set of polygons.
  • paraboloid_type.F90, function curvature calculates curvature at a point on the paraboloid.