Go to the documentation of this file.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
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050 #ifndef SUNDANCECURVEINTEGRALCALC_HPP_
00051 #define SUNDANCECURVEINTEGRALCALC_HPP_
00052
00053 #include "SundanceParametrizedCurve.hpp"
00054 #include "SundanceOut.hpp"
00055 #include "SundancePoint.hpp"
00056 #include "SundanceQuadratureFamily.hpp"
00057 #include "SundanceCellType.hpp"
00058 #include "SundanceMesh.hpp"
00059
00060 namespace Sundance {
00061
00062
00063 class CurveIntegralCalc {
00064 public:
00065
00066
00067 CurveIntegralCalc();
00068
00069 virtual ~CurveIntegralCalc() {;}
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080 static void getCurveQuadPoints(CellType maxCellType ,
00081 int maxCellLID ,
00082 const Mesh& mesh ,
00083 const ParametrizedCurve& paramCurve,
00084 const QuadratureFamily& quad ,
00085 Array<Point>& curvePoints ,
00086 Array<Point>& curveDerivs ,
00087 Array<Point>& curveNormals );
00088
00089
00090 static bool usePolygoneCurveQuadrature(
00091 const CellType& cellType ,
00092 const Mesh& mesh ,
00093 const ParametrizedCurve& paramCurve);
00094
00095
00096 static bool use3DSurfQuadrature(
00097 const CellType& cellType ,
00098 const Mesh& mesh ){
00099 if ( (mesh.cellType(mesh.spatialDim()) == BrickCell) && (cellType == BrickCell) ) { return true; }
00100 else {return false;}
00101 }
00102
00103 private :
00104
00105
00106
00107 static void getCurveQuadPoints_line(
00108 int maxCellLID ,
00109 CellType maxCellType ,
00110 const Mesh& mesh ,
00111 const Array<Point>& cellPoints,
00112 const ParametrizedCurve& paramCurve,
00113 const QuadratureFamily& quad ,
00114 Array<Point>& curvePoints ,
00115 Array<Point>& curveDerivs ,
00116 Array<Point>& curveNormals );
00117
00118
00119 static void get3DRealCoordsOnSurf(const Point &refP ,
00120 const Array<Point>& cellPoints,
00121 const Array<int> &triangles ,
00122 const int nrTriag ,
00123 const Array<Point> edgeIntersectPoint,
00124 int &triagIndex ,
00125 Point &realPoint);
00126
00127
00128
00129 static void getCurveQuadPoints_polygon(
00130 int maxCellLID ,
00131 CellType maxCellType ,
00132 const Mesh& mesh ,
00133 const Array<Point>& cellPoints,
00134 const ParametrizedCurve& paramCurve,
00135 const QuadratureFamily& quad ,
00136 Array<Point>& curvePoints ,
00137 Array<Point>& curveDerivs ,
00138 Array<Point>& curveNormals );
00139
00140
00141
00142 static void getSurfQuadPoints(
00143 int maxCellLID ,
00144 CellType maxCellType ,
00145 const Mesh& mesh ,
00146 const Array<Point>& cellPoints,
00147 const ParametrizedCurve& paramCurve,
00148 const QuadratureFamily& quad ,
00149 Array<Point>& curvePoints ,
00150 Array<Point>& curveDerivs ,
00151 Array<Point>& curveNormals );
00152 };
00153
00154 }
00155
00156 #endif