hp2FEM
0.1
|
00001 #ifndef _NUMERICALINTEGRATION_H_ 00002 #define _NUMERICALINTEGRATION_H_ 00003 // --------------------------------------------- 00004 // company : 00005 // user : 00006 // date : 22 Mar 2015 17:23 00007 // file : NumericalIntegration.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 : 01 Abr 2011 00019 //-------------------------------------------------------------- 00020 // Change history : 00021 // 01 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 "interpolation/numericalintegration/HexaNumericalIntegration.h" 00051 #include "interpolation/numericalintegration/LineNumericalIntegration.h" 00052 #include "interpolation/numericalintegration/SquareNumericalIntegration.h" 00053 #include "interpolation/numericalintegration/TetraNumericalIntegration.h" 00054 #include "interpolation/numericalintegration/TriangleNumericalIntegration.h" 00055 00056 00057 using namespace std; 00058 00059 00069 class NumericalIntegration 00070 { 00071 //#UBLK-BEG-CLASSDEF mm:b0f856a6-f249-11df-9284-bd0feebbfa73 00072 //#UBLK-END-CLASSDEF 00073 00074 public: 00075 00076 // METHOD=mm:a342c6c3-f249-11df-9284-bd0feebbfa73 00077 unsigned long*const GetIndices(ElementShape_E EntityShape, unsigned long IntegrandOrder, unsigned long& NumberIndices); 00078 00079 // METHOD=mm:79f75ada-65cf-11e0-8491-9a6c26cf8b1e 00080 OneIndexTable<unsigned long>& GetIndices(ElementShape_E ElementShape); 00081 00082 // METHOD=mm:28fa59f7-7186-4ebb-8a98-0913a0073f70 00083 unsigned long* GetIndicesBySet(ElementShape_E ElemShape, unsigned long SetNumber, unsigned long& NumberIndices); 00084 00085 // METHOD=mm:a342c6ca-f249-11df-9284-bd0feebbfa73 00086 double*const GetIntegrationPointsCoords(ElementShape_E ElementShape, ElementShape_E EntityShape, unsigned long IntegrandOrder, unsigned long& NumberIntegrationPoints, unsigned long LiDirection = 1); 00087 00088 // METHOD=mm:b3ee3304-4fb6-416a-b58a-649cf7f3687a 00089 double* GetIntegrationPointsCoords(ElementShape_E ElemShape, unsigned long& NumberCoords, unsigned long& NumberIndices, unsigned long** Indices); 00090 00091 // METHOD=mm:ff8c4a92-760a-4c52-9d3d-b34ce231fbbd 00092 double* GetIntegrationPointsCoordsBySets(ElementShape_E ElemShape, unsigned long SetNumber, unsigned long& NumberIntegrationPoints); 00093 00094 // METHOD=mm:2daca27d-f450-43a2-bc1c-af76a544ac8e 00095 long GetIntegrationPointsSetNumber(ElementShape_E ElemShape, NumericalIntegrationAttributes_S& NIAttributes, unsigned long IntegrandOrder); 00096 00097 // METHOD=mm:a342c6cb-f249-11df-9284-bd0feebbfa73 00098 double*const GetIntegrationPointsWeights(ElementShape_E ElementShape, ElementShape_E EntityShape, unsigned long IntegrandOrder, unsigned long& NumberIntegrationPoints, unsigned long LiDirection = 1); 00099 00100 // METHOD=mm:0171cb4e-88af-47e5-9536-a59b19beee40 00101 double* GetIntegrationPointsWeights(ElementShape_E ElemShape, unsigned long& NumberWeights, unsigned long& NumberIndices, unsigned long** Indices); 00102 00103 // METHOD=mm:7117d940-4c4b-458e-b863-087b2b778b17 00104 double* GetIntegrationPointsWeightsBySets(ElementShape_E ElemShape, unsigned long SetNumber, unsigned long& NumberIntegrationPoints); 00105 00106 // METHOD=mm:a0c966a5-ce7a-11e0-8d94-bd74a4bae893 00107 LineNumericalIntegration& GetLineNumericalIntegration(ElementShape_E ElemShape, unsigned long LiDirection = 1); 00108 00109 // METHOD=mm:f353d556-e455-45f2-9e88-2e2fca84caf2 00110 unsigned long GetMaxNumberIntegrationPoints(ElementShape_E ElemShape); 00111 00112 // METHOD=mm:048bceff-48e5-45f8-8a28-f7c3781adc5d 00113 unsigned long GetMaxNumberIntegrationPointsSets(ElementShape_E ElemShape); 00114 00115 // METHOD=mm:8ea05af1-e06f-4be0-8cb3-bed5ce9bcffc 00116 unsigned long GetMaxPolyOrder(ElementShape_E ElemShape); 00117 00118 // METHOD=mm:2b4ba38d-44fa-11e0-9711-cb145d0d686e 00119 unsigned long GetNumberIntegrationPoints(ElementShape_E ElementShape, ElementShape_E EntityShape, unsigned long IntegrandOrder, long& IntegrationPointsSetNumber); 00120 00121 // METHOD=mm:cf7e1af9-f7cc-49dd-944f-e81f201c7bb9 00122 unsigned long GetNumberIntegrationPoints(ElementShape_E ElemShape, ElementShape_E EntityShape, long IntegrationPointsSetNumber, unsigned long LiDirection = 1); 00123 00124 // METHOD=mm:e5f7b07b-4ff2-11e0-90ec-a62df0b89907 00125 unsigned long GetNumberIntegrationPointsSets(ElementShape_E EntityShape); 00126 00127 // METHOD=mm:6d996a59-7fca-11e0-8ee8-bc841070a775 00128 NumericalIntegrationAttributes_S& GetNumericalIntegrationAttributes(); 00129 00130 // METHOD=mm:e57a3c97-8fab-44a3-9671-64f5e7f896f4 00131 unsigned long GetTotalNumberIntegrationPoints(ElementShape_E ElemShape); 00132 00133 // METHOD=mm:86bc939f-f275-11df-9284-bd0feebbfa73 00134 NumericalIntegration(); 00135 00136 // METHOD=mm:79846552-4377-11e0-8507-c0021234afab 00137 NumericalIntegration(NumericalIntegrationAttributes_S& NumericalIntegrationAttributes); 00138 00139 // METHOD=mm:a342c6c2-f249-11df-9284-bd0feebbfa73 00140 NumericalIntegration(ElementShape_E ElementShape, QuadCollocType_E QuadratureType, unsigned long Alpha, unsigned long Beta, unsigned long MaxPolyOrder, unsigned long IntegrandOrderFactor = 2); 00141 00142 // METHOD=mm:0991c365-0461-11e0-8dd1-8aebdd73e214 00143 NumericalIntegration(NumericalIntegration& Instance); 00144 00145 // METHOD=mm:591705e9-8816-43b7-b785-d594f21e23bf 00146 operator NumericalIntegrationAttributes_S &(); 00147 00148 // METHOD=mm:45599683-4409-11e0-82ee-a7df8a6f9bcb 00149 operator HexaNumericalIntegration&(); 00150 00151 // METHOD=mm:117e5303-4409-11e0-82ee-a7df8a6f9bcb 00152 operator LineNumericalIntegration &(); 00153 00154 // METHOD=mm:396db7c3-4409-11e0-82ee-a7df8a6f9bcb 00155 operator SquareNumericalIntegration &(); 00156 00157 // METHOD=mm:4be81082-4409-11e0-82ee-a7df8a6f9bcb 00158 operator TetraNumericalIntegration &(); 00159 00160 // METHOD=mm:3f639643-4409-11e0-82ee-a7df8a6f9bcb 00161 operator TriangleNumericalIntegration &(); 00162 00163 // METHOD=mm:3b0cabee-0465-11e0-8dd1-8aebdd73e214 00164 NumericalIntegration& operator=(NumericalIntegration& Instance); 00165 00166 // METHOD=mm:a342c763-f249-11df-9284-bd0feebbfa73 00167 void Print(FILE* File, ElementShape_E ElementShape, ElementShape_E EntityShape); 00168 00169 // METHOD=mm:a342c762-f249-11df-9284-bd0feebbfa73 00170 void Read(FILE* DefFile, unsigned long GroupNumber, ElementShape_E ElementShape, unsigned long MaxOrder); 00171 00172 // METHOD=mm:007123b5-434f-11e0-8507-c0021234afab 00173 void RunNumericalIntegration(ElementShape_E ElementShape, ElementShape_E EntityShape, BuiltInArray<unsigned long>& PolyOrder); 00174 00175 // METHOD=mm:3fed23c3-9f48-4835-a671-65a25b2d5fed 00176 void SetMaxPolyOrder(ElementShape_E ElemShape, unsigned long MaxOrder); 00177 00178 // METHOD=mm:029f6e03-27a2-455f-8a29-49ab257ebad9 00179 void SetNumberCoordsWeights(ElementShape_E ElemShape, unsigned long NumberRow, unsigned long NumberData); 00180 00181 // METHOD=mm:6923f0c2-ea1e-4782-b6c5-3c325ca1dc95 00182 void SetNumberIntegrationPointsSets(ElementShape_E ElemShape, NumericalIntegrationAttributes_S& NIAttributes, BuiltInArray<unsigned long>& PolyOrder); 00183 00184 // METHOD=mm:f531f601-4376-11e0-8507-c0021234afab 00185 void SetNumericalIntegrationAttributes(NumericalIntegrationAttributes_S& NumericalIntegrationAttributes); 00186 00187 // METHOD=mm:63f84096-4349-11e0-8507-c0021234afab 00188 void SetNumericalIntegrationAttributes(ElementShape_E ElementShape, QuadCollocType_E QuadratureType, unsigned long Alpha, unsigned long Beta, unsigned long MaxPolyOrder, unsigned long IntegrandOrderFactor = 2); 00189 00190 // METHOD=mm:1adae43e-0461-11e0-8dd1-8aebdd73e214 00191 ~NumericalIntegration(); 00192 00193 00194 protected: 00195 00199 // attr=mm:e43bea09-f24b-11df-9284-bd0feebbfa73 00200 HexaNumericalIntegration* HexaNI; 00201 00205 // attr=mm:316b9703-f24b-11df-9284-bd0feebbfa73 00206 LineNumericalIntegration* LineNI; 00207 00211 // attr=mm:bf267453-4fcc-11e0-90ec-a62df0b89907 00212 NumericalIntegrationAttributes_S NIAttributes; 00213 00217 // attr=mm:cb33399f-f24b-11df-9284-bd0feebbfa73 00218 SquareNumericalIntegration* SquareNI; 00219 00223 // attr=mm:f74ecb1b-f24b-11df-9284-bd0feebbfa73 00224 TetraNumericalIntegration* TetraNI; 00225 00229 // attr=mm:ee5df2e3-f24b-11df-9284-bd0feebbfa73 00230 TriangleNumericalIntegration* TriangleNI; 00231 00232 00233 private: 00234 00235 //#UBLK-BEG-CLASSMEMB mm:b0f856a6-f249-11df-9284-bd0feebbfa73 00236 //#UBLK-END-CLASSMEMB 00237 }; 00238 00239 //#UBLK-BEG-GLOBALH 00240 //*** Removed methods: 07 Abr 2011 14:52 00241 //--- 00242 //uuid=mm:67e5e485-4661-11e0-81e9-a37f76cac6d8 00243 // double * const GetIntegPointsCoordsTheoSolution(ElementShape_E EntityShape, unsigned short IntegrandOrder, OneIndexTable<double>& Coords, unsigned short& NumberIntegPoints); 00244 //--- 00245 //uuid=mm:73d192fd-4661-11e0-81e9-a37f76cac6d8 00246 // double * const GetIntegPointsWeightsTheoSolution(ElementShape_E EntityShape, unsigned short IntegrandOrder, unsigned short& NumberIntegPoints); 00247 //--- 00248 //uuid=mm:84821b4e-4661-11e0-81e9-a37f76cac6d8 00249 // unsigned short* const GetIndicesTheoSolution(ElementShape_E EntityShape, unsigned short IntegrandOrder, unsigned short & NumberIndices); 00250 00251 //*** Removed methods: 21 Mar 2015 21:35 00252 //--- 00253 //uuid=mm:be2fa860-3e6f-4aed-8bd3-31f4c1c98540 00254 // operator NumericalIntegrationAttributes_S &(); 00255 00256 //#UBLK-END-GLOBALH 00257 00258 00259 #endif // _NUMERICALINTEGRATION_H_