hp2FEM
0.1
|
00001 #ifndef _TRIANGLESHAPEFUNCTIONS_H_ 00002 #define _TRIANGLESHAPEFUNCTIONS_H_ 00003 // --------------------------------------------- 00004 // company : 00005 // user : 00006 // date : 22 Mar 2015 17:24 00007 // file : TriangleShapeFunctions.h 00008 // markers : Full 00009 // language : C++ 00010 // generator : Metamill 6.0 00011 // --------------------------------------------- 00012 00013 //#UBLK-BEG-HEADERH 00014 //============================================================== 00015 // Description : 00016 //-------------------------------------------------------------- 00017 // Author : Gilberto Luis 00018 // Created : 25 Abr 2011 00019 //-------------------------------------------------------------- 00020 // Change history : 00021 // 25 Abr 2011 (Gilberto Luis) Initial version generated 00022 // 00023 //============================================================== 00024 //#UBLK-END-HEADERH 00025 00026 /*================================================================================================= 00027 = = 00028 = Copyright 2010-2015 Marco Lucio Bittencourt / Fabiano Fernandes Bargos = 00029 = Gilberto Luis Valente / Jorge Luis Suzuki / Allan Patrick Cordeiro Dias = 00030 = = 00031 = Licensed under the Apache License, Version 2.0 (the "License"); = 00032 = you may not use this file except in compliance with the License. = 00033 = You may obtain a copy of the License at = 00034 = = 00035 = http://www.apache.org/licenses/LICENSE-2.0 = 00036 = = 00037 = Unless required by applicable law or agreed to in writing, software = 00038 = distributed under the License is distributed on an "AS IS" BASIS, = 00039 = WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. = 00040 = See the License for the specific language governing permissions and = 00041 = limitations under the License. = 00042 = = 00043 =================================================================================================*/ 00044 00045 00046 #include "ds/Vector.h" 00047 #include "ds/Matrix.h" 00048 #include "enumerations/QuadCollocType_E.h" 00049 #include "enumerations/ElementShape_E.h" 00050 #include "enumerations/PolynomialType_E.h" 00051 #include "enumerations/SchemeType_E.h" 00052 #include "enumerations/BasisType_E.h" 00053 #include "enumerations/HierarchicalType_E.h" 00054 #include "enumerations/IPCP_E.h" 00055 #include "interpolation/collocationpoints/collocationPoints.h" 00056 #include "interpolation/numericalintegration/NumericalIntegration.h" 00057 #include "interpolation/shapefunctions/LineShapeFunctions.h" 00058 00059 00060 using namespace std; 00061 00062 00070 class TriangleShapeFunctions 00071 { 00072 //#UBLK-BEG-CLASSDEF mm:d76de9d0-f41b-11df-9959-9236c3ff6ea9 00073 //#UBLK-END-CLASSDEF 00074 00075 public: 00076 00077 // METHOD=mm:d63cc4bf-f41b-11df-9959-9236c3ff6ea9 00078 TriangleShapeFunctions(); 00079 00080 // METHOD=mm:bd5e6ef7-4345-11e0-8507-c0021234afab 00081 TriangleShapeFunctions(unsigned long MaxPolyOrder); 00082 00083 // METHOD=mm:5a67d6b7-433b-11e0-8507-c0021234afab 00084 TriangleShapeFunctions(TriangleShapeFunctions& Instance); 00085 00086 // METHOD=mm:d3da9961-20e6-11e0-8536-f06391048513 00087 ~TriangleShapeFunctions(); 00088 00089 // METHOD=mm:0ed12351-4373-11e0-8507-c0021234afab 00090 TriangleShapeFunctions& operator=(TriangleShapeFunctions& Instance); 00091 00092 // METHOD=mm:bdae4d17-434c-11e0-8507-c0021234afab 00093 void SetMaxPolyOrder(unsigned long MaxPolyOrder); 00094 00095 // METHOD=mm:a792c3d5-cdbe-11e0-993d-c2f620367c46 00096 LineShapeFunctions& GetLineShapeFunctions(unsigned long LiDirection = 1); 00097 00098 // METHOD=mm:12ea6207-434d-11e0-8507-c0021234afab 00099 unsigned long GetMaxPolyOrder(); 00100 00101 // METHOD=mm:0f73bc2f-7815-11e0-81d8-f37e89126ddd 00102 long GetShapeFunctionSetNumber(unsigned long PolyOrder); 00103 00104 // METHOD=mm:ed977dd2-cd40-4df4-9be7-5fb02ba13894 00105 void GetShapeFunctions(unsigned long PolyOrder, long SFSetNumber, long IPSetNumber, IPCP_E IPCPFlag, unsigned long NumberIndicesNI, double* ShapeFunctions); 00106 00107 // METHOD=mm:d63cc555-f41b-11df-9959-9236c3ff6ea9 00108 double*const GetShapeFunctions(ElementShape_E EntityShape, long SFSetNumber, long IPSetNumber, IPCP_E IPCPFlag, unsigned long& NumberSFValues, unsigned long LiDirection = 1); 00109 00110 // METHOD=mm:f6dd2930-39c9-4664-b57d-4a7dc921ca90 00111 double*const GetShapeFunctions(ElementShape_E EntityShape, long SFSetNumber, long IPSetNumber, IPCP_E IPCPFlag, unsigned long& TotalNumberSFValues, unsigned long& NumberSFValues, unsigned long& NumberPoints, unsigned long LiDirection = 1); 00112 00113 // METHOD=mm:d63cc557-f41b-11df-9959-9236c3ff6ea9 00114 double*const GetdShapeFunctions(ElementShape_E EntityShape, long SFSetNumber, long IPSetNumber, IPCP_E IPCPFlag, unsigned long& NumberSFValues, unsigned long LiDirection = 1); 00115 00116 // METHOD=mm:d63cc4c2-f41b-11df-9959-9236c3ff6ea9 00117 unsigned long*const GetIndices(unsigned long PolyOrder, unsigned long& NumberIndices); 00118 00119 // METHOD=mm:2a96daa3-3299-40a1-9811-a827f9619876 00120 OneIndexTable<unsigned long>& GetIndices(); 00121 00122 // METHOD=mm:d63cc554-f41b-11df-9959-9236c3ff6ea9 00123 void RunShapeFunctions(ElementShape_E EntityShape, ShapeFunctionsAttributes_S SFunctions, NumericalIntegration& NI, collocationPoints& CP, BuiltInArray<unsigned long>& PolyOrder); 00124 00125 // METHOD=mm:432452f6-3b7f-4d44-94c4-b7094b695910 00126 void RunShapeFunctions(ElementShape_E EntityShape, ShapeFunctionsAttributes_S SFunctions, NumericalIntegration& NI, collocationPoints& CP, TriangleNumericalIntegration& TetraTriNI, TriangleCollocationPoints& TetraTriCP, BuiltInArray<unsigned long>& PolyOrder); 00127 00128 // METHOD=mm:d63cc55c-f41b-11df-9959-9236c3ff6ea9 00129 void Print(FILE* File, ElementShape_E ElementShape, BuiltInArray<unsigned long>& PolyOrder); 00130 00131 // METHOD=mm:d63cc4c1-f41b-11df-9959-9236c3ff6ea9 00132 void BuildIndices(BuiltInArray<unsigned long>& PolyOrder, ShapeFunctionsAttributes_S SFAttributes); 00133 00134 00135 protected: 00136 00140 // attr=mm:d63cc422-f41b-11df-9959-9236c3ff6ea9 00141 OneIndexTable<unsigned long> TensorIndices; 00142 00146 // attr=mm:63263eef-a8bc-445d-b128-ad440e905e74 00147 LineShapeFunctions LineSF; 00148 00152 // attr=mm:d63cc421-f41b-11df-9959-9236c3ff6ea9 00153 LineShapeFunctions LineSF1; 00154 00158 // attr=mm:eb196645-f41b-11df-9959-9236c3ff6ea9 00159 LineShapeFunctions LineSF2; 00160 00164 // attr=mm:ff5d65bb-f41b-11df-9959-9236c3ff6ea9 00165 LineShapeFunctions LineSF3; 00166 00170 // attr=mm:d63cc41f-f41b-11df-9959-9236c3ff6ea9 00171 TwoIndexTable<double> SFIP; 00172 00176 // attr=mm:44afb025-4051-11e0-9dd5-8e5be057fed3 00177 TwoIndexTable<double> dSFIP; 00178 00182 // attr=mm:d63cc420-f41b-11df-9959-9236c3ff6ea9 00183 TwoIndexTable<double> SFCP; 00184 00188 // attr=mm:4f6a38a5-4051-11e0-9dd5-8e5be057fed3 00189 TwoIndexTable<double> dSFCP; 00190 00194 // attr=mm:28573c71-3d5a-49a2-b85a-419546bdf5b8 00195 BuiltInArray<unsigned long> NumbIntegPoints; 00196 00200 // attr=mm:b0f05463-7bb8-45cc-acfb-3639f8c045d3 00201 BuiltInArray<unsigned long> NumbCollocPoints; 00202 00206 // attr=mm:edf5ece1-434c-11e0-8507-c0021234afab 00207 unsigned long Pmax; 00208 00209 00210 private: 00211 00212 //#UBLK-BEG-CLASSMEMB mm:d76de9d0-f41b-11df-9959-9236c3ff6ea9 00213 //#UBLK-END-CLASSMEMB 00214 }; 00215 00216 //#UBLK-BEG-GLOBALH 00217 //#UBLK-END-GLOBALH 00218 00219 00220 #endif // _TRIANGLESHAPEFUNCTIONS_H_