00001 /* 00002 * SundanceSurf3DCalc.hpp 00003 * 00004 * Created on: Oct 25, 2011 00005 * Author: benk 00006 */ 00007 00008 #ifndef SUNDANCESURF3DCALC_HPP_ 00009 #define SUNDANCESURF3DCALC_HPP_ 00010 00011 #include "SundanceParametrizedCurve.hpp" 00012 #include "SundanceOut.hpp" 00013 #include "SundancePoint.hpp" 00014 #include "SundanceQuadratureFamily.hpp" 00015 #include "SundanceCellType.hpp" 00016 #include "SundanceMesh.hpp" 00017 00018 namespace Sundance { 00019 00020 /** This class contains the computational methods which are necessary for the 3D surface and cut-cell 00021 * calculations.*/ 00022 class SundanceSurf3DCalc { 00023 public: 00024 00025 /** empty Ctor */ 00026 SundanceSurf3DCalc() {;} 00027 00028 /** empty Dtor */ 00029 virtual ~SundanceSurf3DCalc() {;} 00030 00031 /** method to compute the intersection surface between one curve and a brick cell. 00032 * The resulted surface is represented by a triangle surface. 00033 * @param maxCellType [IN] 00034 * @param maxCellLID [IN] 00035 * @param mesh [IN] 00036 * @param paramCurve [IN] the surface object 00037 * @param intersectPoints [OUT] the array with the intersection points in the reference coordinate 00038 * @param brickPoints [OUT] 12 points of the brick cell 00039 * @param edgeIndex [OUT] the intersection points are by default on the edges of the brick 00040 * @param triangleIndex [OUT] contains the triangles, the size of this vector is 3*nrTriags. */ 00041 static void getCurveQuadPoints(CellType maxCellType , 00042 int maxCellLID , 00043 const Mesh& mesh , 00044 const ParametrizedCurve& paramCurve, 00045 const Array<Point>& brickPoints, 00046 Array<Point>& intersectPoints , 00047 Array<int>& edgeIndex, 00048 Array<int>& triangleIndex); 00049 00050 00051 static const int edegIndex[12][2]; 00052 00053 static const int faceEdges[6][4]; 00054 00055 static const int edgeFaces[12][2]; 00056 00057 static const int edgeNeighboredges[12][12]; 00058 00059 }; 00060 00061 00062 } 00063 #endif /* SUNDANCESURF3DCALC_HPP_ */