hp2FEM
0.1
|
00001 #ifndef _HEXASHAPEFUNCTIONS_H_ 00002 #define _HEXASHAPEFUNCTIONS_H_ 00003 // --------------------------------------------- 00004 // company : 00005 // user : 00006 // date : 22 Mar 2015 17:24 00007 // file : HexaShapeFunctions.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 : 20 Abr 2011 00019 //-------------------------------------------------------------- 00020 // Change history : 00021 // 20 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 "ds/OneIndexTable.h" 00049 #include "ds/TwoIndexTable.h" 00050 #include "enumerations/QuadCollocType_E.h" 00051 #include "enumerations/ElementShape_E.h" 00052 #include "enumerations/PolynomialType_E.h" 00053 #include "enumerations/SchemeType_E.h" 00054 #include "enumerations/BasisType_E.h" 00055 #include "enumerations/HierarchicalType_E.h" 00056 #include "enumerations/IPCP_E.h" 00057 #include "interpolation/collocationpoints/collocationPoints.h" 00058 #include "interpolation/numericalintegration/NumericalIntegration.h" 00059 #include "interpolation/numericalintegration/LineNumericalIntegration.h" 00060 #include "interpolation/numericalintegration/HexaNumericalIntegration.h" 00061 #include "interpolation/shapefunctions/ShapeFunctionsAttributes_S.h" 00062 #include "interpolation/shapefunctions/LineShapeFunctions.h" 00063 #include "interpolation/shapefunctions/SquareShapeFunctions.h" 00064 00065 00066 using namespace std; 00067 00068 00078 class HexaShapeFunctions 00079 { 00080 //#UBLK-BEG-CLASSDEF mm:d7b9c48c-f41a-11df-9959-9236c3ff6ea9 00081 //#UBLK-END-CLASSDEF 00082 00083 public: 00084 00085 // METHOD=mm:d6887e8d-f41a-11df-9959-9236c3ff6ea9 00086 HexaShapeFunctions(); 00087 00088 // METHOD=mm:c4857e87-4345-11e0-8507-c0021234afab 00089 HexaShapeFunctions(unsigned long MaxPolyOrder); 00090 00091 // METHOD=mm:6a7fcd56-433b-11e0-8507-c0021234afab 00092 HexaShapeFunctions(HexaShapeFunctions& Instance); 00093 00094 // METHOD=mm:c918ff01-203f-11e0-8d8b-c50b4717fe48 00095 ~HexaShapeFunctions(); 00096 00097 // METHOD=mm:468db4e1-4376-11e0-8507-c0021234afab 00098 HexaShapeFunctions& operator=(HexaShapeFunctions& Instance); 00099 00100 // METHOD=mm:c43cabdd-434c-11e0-8507-c0021234afab 00101 void SetMaxPolyOrder(unsigned long MaxPolyOrder); 00102 00103 // METHOD=mm:7798e05d-cdc1-11e0-993d-c2f620367c46 00104 LineShapeFunctions& GetLineShapeFunctions(); 00105 00106 // METHOD=mm:1d0c5047-434d-11e0-8507-c0021234afab 00107 unsigned long GetMaxPolyOrder(); 00108 00109 // METHOD=mm:9ffedbe3-7816-11e0-81d8-f37e89126ddd 00110 long GetShapeFunctionSetNumber(unsigned long PolyOrder); 00111 00112 // METHOD=mm:c41da50b-6e3a-43f8-aab7-56edc43223d0 00113 void GetShapeFunctions(unsigned long PolyOrder, long SFSetNumber, long IPSetNumber, IPCP_E IPCPFlag, unsigned long* TensorIndicesNI, unsigned long NumberIndicesNI, double* ShapeFunctions); 00114 00115 // METHOD=mm:d6887f23-f41a-11df-9959-9236c3ff6ea9 00116 double*const GetShapeFunctions(ElementShape_E EntityShape, long SFSetNumber, long IPSetNumber, IPCP_E IPCPFlag, unsigned long& NumberSFValues); 00117 00118 // METHOD=mm:c14148f5-6fa7-4648-b9e8-b43a85d0262f 00119 double*const GetShapeFunctions(ElementShape_E EntityShape, long SFSetNumber, long IPSetNumber, IPCP_E IPCPFlag, unsigned long& TotalNumberSFValues, unsigned long& NumberSFValues, unsigned long& NumberPoints); 00120 00121 // METHOD=mm:d6887f25-f41a-11df-9959-9236c3ff6ea9 00122 double*const GetdShapeFunctions(ElementShape_E EntityShape, long SFSetNumber, long IPSetNumber, IPCP_E IPCPFlag, unsigned long& NumberSFValues); 00123 00124 // METHOD=mm:d6887e90-f41a-11df-9959-9236c3ff6ea9 00125 unsigned long*const GetIndices(ElementShape_E EntityShape, unsigned long PolyOrder, unsigned long& NumberIndices); 00126 00127 // METHOD=mm:1265a48e-aec8-4c06-8709-0520af407809 00128 OneIndexTable<unsigned long>& GetIndices(); 00129 00130 // METHOD=mm:d6887f22-f41a-11df-9959-9236c3ff6ea9 00131 void RunShapeFunctions(ElementShape_E EntityShape, ShapeFunctionsAttributes_S SFunctions, NumericalIntegration& NI, collocationPoints& CP, BuiltInArray<unsigned long>& PolyOrder); 00132 00133 // METHOD=mm:d6887f2a-f41a-11df-9959-9236c3ff6ea9 00134 void Print(FILE* File, ElementShape_E EntityShape, BuiltInArray<unsigned long>& PolyOrder); 00135 00136 // METHOD=mm:d6887e8f-f41a-11df-9959-9236c3ff6ea9 00137 void BuildIndices(BuiltInArray<unsigned long>& PolyOrder, ShapeFunctionsAttributes_S SFAttributes); 00138 00139 00140 protected: 00141 00145 // attr=mm:d6887df0-f41a-11df-9959-9236c3ff6ea9 00146 OneIndexTable<unsigned long> TensorIndices; 00147 00151 // attr=mm:952b10c5-6b59-11e0-9496-ab93ef007735 00152 LineShapeFunctions LineSF; 00153 00157 // attr=mm:d6887def-f41a-11df-9959-9236c3ff6ea9 00158 SquareShapeFunctions SquareSF; 00159 00163 // attr=mm:d6887ded-f41a-11df-9959-9236c3ff6ea9 00164 TwoIndexTable<double> SFIP; 00165 00169 // attr=mm:c489939d-434d-11e0-8507-c0021234afab 00170 TwoIndexTable<double> dSFIP; 00171 00175 // attr=mm:1ed7d8cf-4054-11e0-9dd5-8e5be057fed3 00176 TwoIndexTable<double> SFCP; 00177 00181 // attr=mm:27301c35-4054-11e0-9dd5-8e5be057fed3 00182 TwoIndexTable<double> dSFCP; 00183 00187 // attr=mm:a9036035-4f29-46bf-9bc6-08ba33bb4a4c 00188 BuiltInArray<unsigned long> NumbIntegPoints; 00189 00193 // attr=mm:6dd04a2a-9d3d-452b-a842-6be19d860fb6 00194 BuiltInArray<unsigned long> NumbCollocPoints; 00195 00200 // attr=mm:f4845a57-434c-11e0-8507-c0021234afab 00201 unsigned long Pmax; 00202 00203 00204 private: 00205 00206 //#UBLK-BEG-CLASSMEMB mm:d7b9c48c-f41a-11df-9959-9236c3ff6ea9 00207 //#UBLK-END-CLASSMEMB 00208 }; 00209 00210 //#UBLK-BEG-GLOBALH 00211 //#UBLK-END-GLOBALH 00212 00213 00214 #endif // _HEXASHAPEFUNCTIONS_H_