PottsMeshGenerator.hpp
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef POTTSMESHGENERATOR_HPP_
00030 #define POTTSMESHGENERATOR_HPP_
00031
00032 #include <cmath>
00033 #include <vector>
00034
00035 #include "PottsMesh.hpp"
00036
00044 template<unsigned DIM>
00045 class PottsMeshGenerator
00046 {
00047 protected:
00048
00050 PottsMesh<DIM>* mpMesh;
00051
00052 public:
00053
00072 PottsMeshGenerator(unsigned numNodesAcross,
00073 unsigned numElementsAcross,
00074 unsigned elementWidth,
00075 unsigned numNodesUp=1u,
00076 unsigned numElementsUp=1u,
00077 unsigned elementHeight=1u,
00078 unsigned numNodesDeep=1u,
00079 unsigned numElementsDeep=1u,
00080 unsigned elementDepth=1u,
00081 bool startAtBottomLeft = false,
00082 bool isPeriodicInX = false,
00083 bool isPeriodicInY = false,
00084 bool isPeriodicInZ = false);
00085
00089 PottsMeshGenerator()
00090 {
00091 }
00092
00096 virtual ~PottsMeshGenerator();
00097
00103 void CaclulateNeighbouringNodeIndices(bool isPeriodicInX);
00104
00105
00109 virtual PottsMesh<DIM>* GetMesh();
00110 };
00111
00112 #endif