/MPI-SCVT

Parallel spherical centroidal Voronoi tessellation generator. Written in C++ uses MPI.

Primary LanguageC

About:
	MPI-SCVT is a Parallel SCVT Generator written in C++.
	It makes use of boost's mpi and serialization libraries.
	It was written by Douglas Jacobsen as part of his 
	Dissertation work while he was a Ph.D. student at Florida State University.

Compiling:
	To compile, you need the boost mpi and serialization libraries
	to be in your LD_LIBRARY_PATH, and the header files in your PATH variables.
	Afterwards, compilation is as simple as typing "make", a debug version can be compiled
	using "make debug" as well. These commands create MpiScvt.x which can be run from the
	command line.

Boost:
	Boost can be downloaded from:
	http://www.boost.org/

	The only libraries that need to be setup at mpi, and serialization. Please refer to boost's documentation
	to set up correctly.

Running:
	To run, simply type:
		./MpiScvt.x
	
	To run using mpi, simply type:
		mpirun -n P ./MpiScvt.x
	Where P is replaced with the number of processors used. The number of Processors has to be either
	1 or the number of points in RegionList as described below.

Input:
	To run MPI-SCVT 4 Files can be used. Each file has a label saying if it is required or not.

	Params: (Required)
		This file contains parameters required to run MPI-SCVT. If the file does not exist
		a run of MPI-SCVT will create this file, with default values.


	RegionList: (Required)
		This file contains a list of region centers, for parallelization. Some example lists are provided in the
		original source package. Each region center needs to be given as x, y, z with one region per line.
		One region should be provided for each processor to be used. A simple example two processor setup (the 
		smallest number MPI-SCVT is capable of using) is the north and south pole, with a RegionList file containing
		the following data:
			0 0 1
			0 0 -1

	RegionTriangulation: (Required)
		This file contains the connectivity of the regions in RegionList. Each line contains one "triangle" given as 
		three indices, where each index relates to a point number from the RegionList file. Contradictory to the name, 
		the connectivity does not need to be a Triangulation, though a Triangulation is easy to come by. As an example, 
		the connectivity for the example provided for RegionList would be:
			0 1 0

		However, a triangulation (in triangles.dat) as output from MPI-SCVT can be used as well

	SaveVertices: (Optional)
		This file contains an initial point set for iterating on. These points should be given as x, y, z
		with one point per line. This is required if the method of generating points is set to 0 in Params.

	SaveBoundaries: (Optional)
		This file lists all points which lie along some boundary segment or segments. Generator points can
		be projected onto these segments during generation, but do not have to be.

	SaveLoopCounts: (Optional)
		This file defines the continous segements of boundary lines. The first
		column is a beginning index, and the second column is the number of
		points to read from SaveBoundaries to create a loop.

Output:
	After a successful run of MPI-SCVT, Three files are created.

	end_points.dat:
		This file contains the ending pointset from MPI-SCVT, given as x, y, z with one point per line

	triangles.dat:
		This file contains the final triangulation of the points in end_points.dat, given as one triangle
		per line, with each number being the index of a point in end_points.dat.

	bisected_points.dat:
		This file contains the bisected pointset from end_points.dat. For a full sphere grid, it should have
		4*n - 6 points, where n is the number of points in end_points.dat.