hp2FEM
0.1
|
00001 #ifndef _TETRASHAPEFUNCTIONS_H_ 00002 #define _TETRASHAPEFUNCTIONS_H_ 00003 // --------------------------------------------- 00004 // company : 00005 // user : 00006 // date : 22 Mar 2015 17:24 00007 // file : TetraShapeFunctions.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 : 02 May 2011 00019 //-------------------------------------------------------------- 00020 // Change history : 00021 // 02 May 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/collocationpoints/LineCollocationPoints.h" 00057 #include "interpolation/numericalintegration/NumericalIntegration.h" 00058 #include "interpolation/numericalintegration/LineNumericalIntegration.h" 00059 #include "interpolation/shapefunctions/TriangleShapeFunctions.h" 00060 00061 00062 using namespace std; 00063 00064 00072 class TetraShapeFunctions 00073 { 00074 //#UBLK-BEG-CLASSDEF mm:27e54750-f41c-11df-9959-9236c3ff6ea9 00075 //#UBLK-END-CLASSDEF 00076 00077 public: 00078 00079 // METHOD=mm:26b42ddb-f41c-11df-9959-9236c3ff6ea9 00080 TetraShapeFunctions(); 00081 00082 // METHOD=mm:cb13eda0-4345-11e0-8507-c0021234afab 00083 TetraShapeFunctions(unsigned long MaxPolyOrder); 00084 00085 // METHOD=mm:75d2e1ad-433b-11e0-8507-c0021234afab 00086 TetraShapeFunctions(TetraShapeFunctions& Instance); 00087 00088 // METHOD=mm:3a5fc571-20e7-11e0-8536-f06391048513 00089 ~TetraShapeFunctions(); 00090 00091 // METHOD=mm:c3b92bcb-4376-11e0-8507-c0021234afab 00092 TetraShapeFunctions& operator=(TetraShapeFunctions& Instance); 00093 00094 // METHOD=mm:cacb46c1-434c-11e0-8507-c0021234afab 00095 void SetMaxPolyOrder(unsigned long MaxPolyOrder); 00096 00097 // METHOD=mm:f1c96bd1-cdc1-11e0-993d-c2f620367c46 00098 LineShapeFunctions& GetLineShapeFunctions(unsigned long LiDirection = 1); 00099 00100 // METHOD=mm:2269b011-434d-11e0-8507-c0021234afab 00101 unsigned long GetMaxPolyOrder(); 00102 00103 // METHOD=mm:bdcc3071-7816-11e0-81d8-f37e89126ddd 00104 long GetShapeFunctionSetNumber(unsigned long PolyOrder); 00105 00106 // METHOD=mm:e4245bd8-719b-49ab-a9b3-070742554714 00107 void GetShapeFunctions(unsigned long PolyOrder, long SFSetNumber, long IPSetNumber, IPCP_E IPCPFlag, unsigned long NumberIndicesNI, double* ShapeFunctions); 00108 00109 // METHOD=mm:26b42e71-f41c-11df-9959-9236c3ff6ea9 00110 double*const GetShapeFunctions(ElementShape_E EntityShape, long SFSetNumber, long IPSetNumber, IPCP_E IPCPFlag, unsigned long& NumberSFValues, unsigned long LiDirection); 00111 00112 // METHOD=mm:9dbaab93-12f2-4a80-bf82-d862a0796124 00113 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); 00114 00115 // METHOD=mm:26b42e73-f41c-11df-9959-9236c3ff6ea9 00116 double*const GetdShapeFunctions(ElementShape_E EntityShape, long SFSetNumber, long IPSetNumber, IPCP_E IPCPFlag, unsigned long& NumberSFValues, unsigned long LiDirection); 00117 00118 // METHOD=mm:26b42dde-f41c-11df-9959-9236c3ff6ea9 00119 unsigned long*const GetIndices(ElementShape_E EntityShape, unsigned long PolyOrder, unsigned long& NumberIndices); 00120 00121 // METHOD=mm:4116a346-5119-4b9d-b2a2-e3240fdf43fe 00122 OneIndexTable<unsigned long>& GetIndices(); 00123 00124 // METHOD=mm:26b42e70-f41c-11df-9959-9236c3ff6ea9 00125 void RunShapeFunctions(ElementShape_E EntityShape, ShapeFunctionsAttributes_S SFunctions, NumericalIntegration& NI, collocationPoints& CP, BuiltInArray<unsigned long>& PolyOrder); 00126 00127 // METHOD=mm:26b42e78-f41c-11df-9959-9236c3ff6ea9 00128 void Print(FILE* File, ElementShape_E EntityShape, BuiltInArray<unsigned long>& PolyOrder); 00129 00130 // METHOD=mm:26b42ddd-f41c-11df-9959-9236c3ff6ea9 00131 void BuildIndices(BuiltInArray<unsigned long>& PolyOrder, ShapeFunctionsAttributes_S SFAttributes); 00132 00133 00134 protected: 00135 00139 // attr=mm:26b42d3e-f41c-11df-9959-9236c3ff6ea9 00140 OneIndexTable<unsigned long> TensorIndices; 00141 00145 // attr=mm:5fc9ddbd-74d6-11e0-92ee-d87cd6242728 00146 LineShapeFunctions LineSF1; 00147 00151 // attr=mm:c29b9c6d-75c8-11e0-8d0e-c7b381565e64 00152 LineShapeFunctions LineSF2; 00153 00157 // attr=mm:c29bafcd-75c8-11e0-8d0e-c7b381565e64 00158 LineShapeFunctions LineSF3; 00159 00163 // attr=mm:c3342d9d-75c8-11e0-8d0e-c7b381565e64 00164 LineShapeFunctions LineSF4; 00165 00169 // attr=mm:26b42d3b-f41c-11df-9959-9236c3ff6ea9 00170 TriangleShapeFunctions TriangleSF; 00171 00175 // attr=mm:26b42d39-f41c-11df-9959-9236c3ff6ea9 00176 TwoIndexTable<double> SFIP; 00177 00181 // attr=mm:26b42d3a-f41c-11df-9959-9236c3ff6ea9 00182 TwoIndexTable<double> dSFIP; 00183 00187 // attr=mm:4b8bdb5f-4054-11e0-9dd5-8e5be057fed3 00188 TwoIndexTable<double> SFCP; 00189 00193 // attr=mm:56df0635-4054-11e0-9dd5-8e5be057fed3 00194 TwoIndexTable<double> dSFCP; 00195 00199 // attr=mm:1e3b96ec-661c-4bbc-ae2c-6afeaa974c93 00200 BuiltInArray<unsigned long> NumbIntegPoints; 00201 00205 // attr=mm:2e4db952-b757-4373-84cb-24fcd98059a4 00206 BuiltInArray<unsigned long> NumbCollocPoints; 00207 00211 // attr=mm:fa7a4dc7-434c-11e0-8507-c0021234afab 00212 unsigned long Pmax; 00213 00214 00215 private: 00216 00217 //#UBLK-BEG-CLASSMEMB mm:27e54750-f41c-11df-9959-9236c3ff6ea9 00218 //#UBLK-END-CLASSMEMB 00219 }; 00220 00221 //#UBLK-BEG-GLOBALH 00222 //#UBLK-END-GLOBALH 00223 00224 00225 #endif // _TETRASHAPEFUNCTIONS_H_