hp2FEM
0.1
|
00001 #ifndef _SQUARESHAPEFUNCTIONS_H_ 00002 #define _SQUARESHAPEFUNCTIONS_H_ 00003 // --------------------------------------------- 00004 // company : 00005 // user : 00006 // date : 22 Mar 2015 17:24 00007 // file : SquareShapeFunctions.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 : 15 Abr 2011 00019 //-------------------------------------------------------------- 00020 // Change history : 00021 // 15 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/collocationpoints/SquareCollocationPoints.h" 00057 #include "interpolation/numericalintegration/NumericalIntegration.h" 00058 #include "interpolation/numericalintegration/SquareNumericalIntegration.h" 00059 #include "interpolation/shapefunctions/LineShapeFunctions.h" 00060 00061 00062 using namespace std; 00063 00064 00072 class SquareShapeFunctions 00073 { 00074 //#UBLK-BEG-CLASSDEF mm:80ecc707-f3f3-11df-9959-9236c3ff6ea9 00075 //#UBLK-END-CLASSDEF 00076 00077 public: 00078 00079 // METHOD=mm:3fb8ccb1-f414-11df-9959-9236c3ff6ea9 00080 SquareShapeFunctions(); 00081 00082 // METHOD=mm:b7688fd7-4345-11e0-8507-c0021234afab 00083 SquareShapeFunctions(unsigned long MaxPolyOrder); 00084 00085 // METHOD=mm:46bc82a7-433b-11e0-8507-c0021234afab 00086 SquareShapeFunctions(SquareShapeFunctions& Instance); 00087 00088 // METHOD=mm:2a08db77-1e9e-11e0-9165-9fcf68b76eb1 00089 ~SquareShapeFunctions(); 00090 00091 // METHOD=mm:8f436b21-4372-11e0-8507-c0021234afab 00092 SquareShapeFunctions& operator=(SquareShapeFunctions& Instance); 00093 00094 // METHOD=mm:b7b87405-434c-11e0-8507-c0021234afab 00095 void SetMaxPolyOrder(unsigned long MaxPolyOrder); 00096 00097 // METHOD=mm:035b38a9-cdbb-11e0-993d-c2f620367c46 00098 LineShapeFunctions& GetLineShapeFunctions(); 00099 00100 // METHOD=mm:0ebe32b7-434d-11e0-8507-c0021234afab 00101 unsigned long GetMaxPolyOrder(); 00102 00103 // METHOD=mm:6cbb4d09-7814-11e0-81d8-f37e89126ddd 00104 long GetShapeFunctionSetNumber(unsigned long PolyOrder); 00105 00106 // METHOD=mm:5d070dbb-daec-4ba4-ac4f-ace3176f65ad 00107 void GetShapeFunctions(unsigned long PolyOrder, long SFSetNumber, long IPSetNumber, IPCP_E IPCPFlag, unsigned long* TensorIndicesNI, unsigned long NumberIndicesNI, double* ShapeFunctions); 00108 00109 // METHOD=mm:61558fe2-f3f3-11df-9959-9236c3ff6ea9 00110 double*const GetShapeFunctions(ElementShape_E EntityShape, long SFSetNumber, long IPSetNumber, IPCP_E IPCPFlag, unsigned long& NumberSFValues); 00111 00112 // METHOD=mm:e2a11f2d-1295-45d7-a207-2ae60aec7f15 00113 double*const GetShapeFunctions(ElementShape_E EntityShape, long SFSetNumber, long IPSetNumber, IPCP_E IPCPFlag, unsigned long& TotalNumberSFValues, unsigned long& NumberSFValues, unsigned long& NumberPoints); 00114 00115 // METHOD=mm:6dcbe2b4-67b3-11e0-8598-c81883b28fcd 00116 double*const GetdShapeFunctions(ElementShape_E EntityShape, long SFSetNumber, long IPSetNumber, IPCP_E IPCPFlag, unsigned long& NumberSFValues); 00117 00118 // METHOD=mm:61558f45-f3f3-11df-9959-9236c3ff6ea9 00119 unsigned long*const GetIndices(unsigned long PolyOrder, unsigned long& NumberIndices); 00120 00121 // METHOD=mm:c3527dc3-baf7-49e4-b6e4-540d939e8682 00122 OneIndexTable<unsigned long>& GetIndices(); 00123 00124 // METHOD=mm:61558fe1-f3f3-11df-9959-9236c3ff6ea9 00125 void RunShapeFunctions(ElementShape_E EntityShape, ShapeFunctionsAttributes_S SFunctions, NumericalIntegration& NI, collocationPoints& CP, BuiltInArray<unsigned long>& PolyOrder); 00126 00127 // METHOD=mm:ca2270a8-6230-49c9-ba84-f3d10fd10125 00128 void RunShapeFunctions(ElementShape_E EntityShape, ShapeFunctionsAttributes_S SFunctions, NumericalIntegration& NI, collocationPoints& CP, SquareNumericalIntegration& HexaSquareNI, SquareCollocationPoints& HexaSquareCP, BuiltInArray<unsigned long>& PolyOrder); 00129 00130 // METHOD=mm:61559074-f3f3-11df-9959-9236c3ff6ea9 00131 void Print(FILE* File, ElementShape_E ElementShape, BuiltInArray<unsigned long>& PolyOrder); 00132 00133 // METHOD=mm:61558f44-f3f3-11df-9959-9236c3ff6ea9 00134 void BuildIndices(BuiltInArray<unsigned long>& PolyOrder, ShapeFunctionsAttributes_S& SFAttributes); 00135 00136 00137 protected: 00138 00142 // attr=mm:61558eb0-f3f3-11df-9959-9236c3ff6ea9 00143 OneIndexTable<unsigned long> TensorIndices; 00144 00148 // attr=mm:61558eaf-f3f3-11df-9959-9236c3ff6ea9 00149 LineShapeFunctions LineSF; 00150 00154 // attr=mm:61558ead-f3f3-11df-9959-9236c3ff6ea9 00155 TwoIndexTable<double> SFIP; 00156 00160 // attr=mm:61558eae-f3f3-11df-9959-9236c3ff6ea9 00161 TwoIndexTable<double> dSFIP; 00162 00166 // attr=mm:fdc1b9bf-4050-11e0-9dd5-8e5be057fed3 00167 TwoIndexTable<double> SFCP; 00168 00172 // attr=mm:1336d6e5-4051-11e0-9dd5-8e5be057fed3 00173 TwoIndexTable<double> dSFCP; 00174 00178 // attr=mm:9d7a8351-9490-47f6-b6c5-c3a1600e45b3 00179 BuiltInArray<unsigned long> NumbIntegPoints; 00180 00184 // attr=mm:33f3ce6a-cff4-455a-871b-027ec467427e 00185 BuiltInArray<unsigned long> NumbCollocPoints; 00186 00191 // attr=mm:e8988641-434c-11e0-8507-c0021234afab 00192 unsigned long Pmax; 00193 00194 00195 private: 00196 00197 //#UBLK-BEG-CLASSMEMB mm:80ecc707-f3f3-11df-9959-9236c3ff6ea9 00198 //#UBLK-END-CLASSMEMB 00199 }; 00200 00201 //#UBLK-BEG-GLOBALH 00202 //*** Removed methods: 19 Abr 2011 11:21 00203 //--- 00204 //uuid=mm:61558fe4-f3f3-11df-9959-9236c3ff6ea9 00205 // double * const GetdShapeFunctions(ElementShape_E Shape, unsigned short PolyOrder, unsigned short IntegrandOrder, IPCP_E IPCPFlag); 00206 00207 //#UBLK-END-GLOBALH 00208 00209 00210 #endif // _SQUARESHAPEFUNCTIONS_H_