hp2FEM
0.1
|
00001 #ifndef _TETRANUMERICALINTEGRATION_H_ 00002 #define _TETRANUMERICALINTEGRATION_H_ 00003 // --------------------------------------------- 00004 // company : 00005 // user : 00006 // date : 22 Mar 2015 17:23 00007 // file : TetraNumericalIntegration.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/Matrix.h" 00047 #include "enumerations/QuadCollocType_E.h" 00048 #include "enumerations/ElementShape_E.h" 00049 #include "interpolation/numericalintegration/LineNumericalIntegration.h" 00050 #include "interpolation/numericalintegration/TriangleNumericalIntegration.h" 00051 00052 00053 using namespace std; 00054 00055 00065 class TetraNumericalIntegration 00066 { 00067 //#UBLK-BEG-CLASSDEF mm:b0f856aa-f249-11df-9284-bd0feebbfa73 00068 //#UBLK-END-CLASSDEF 00069 00070 public: 00071 00072 // METHOD=mm:6020710d-f3eb-11df-9959-9236c3ff6ea9 00073 TetraNumericalIntegration(); 00074 00075 // METHOD=mm:6348d1a5-0466-11e0-8dd1-8aebdd73e214 00076 TetraNumericalIntegration(TetraNumericalIntegration& Instance); 00077 00078 // METHOD=mm:6e03705f-0466-11e0-8dd1-8aebdd73e214 00079 ~TetraNumericalIntegration(); 00080 00081 // METHOD=mm:4bbe03bf-0467-11e0-8dd1-8aebdd73e214 00082 TetraNumericalIntegration& operator=(TetraNumericalIntegration& Instance); 00083 00084 // METHOD=mm:c5175911-b372-4972-acc1-6f7f305d7591 00085 operator LineNumericalIntegration&(); 00086 00087 // METHOD=mm:b94e92d1-5008-11e0-90ec-a62df0b89907 00088 operator TriangleNumericalIntegration&(); 00089 00090 // METHOD=mm:a342cb0c-f249-11df-9284-bd0feebbfa73 00091 void SetMaxPolyOrder(unsigned long MaxPolyOrder); 00092 00093 // METHOD=mm:7c9a0d9b-e45c-405b-82af-de2c2ab6aa01 00094 void SetNumberCoordsWeights(unsigned long NumberRow, unsigned long NumberData); 00095 00096 // METHOD=mm:a342cb0d-f249-11df-9284-bd0feebbfa73 00097 unsigned long GetMaxPolyOrder(); 00098 00099 // METHOD=mm:403c4dad-ce7e-11e0-8d94-bd74a4bae893 00100 LineNumericalIntegration& GetLineNumericalIntegration(unsigned long LiDirection = 1); 00101 00102 // METHOD=mm:56110ca7-5009-11e0-90ec-a62df0b89907 00103 unsigned long GetNumberIntegrationPointsSets(); 00104 00105 // METHOD=mm:389d3bbe-654d-425a-8a10-357da5dc281d 00106 unsigned long GetMaxNumberIntegrationPointsSets(unsigned long LiDirection = 1); 00107 00108 // METHOD=mm:54e4b3cb-7816-11e0-81d8-f37e89126ddd 00109 long GetIntegrationPointsSetNumber(NumericalIntegrationAttributes_S& NIAttributes, unsigned long IntegrandOrder); 00110 00111 // METHOD=mm:854c5c43-44fa-11e0-9711-cb145d0d686e 00112 unsigned long GetNumberIntegrationPoints(NumericalIntegrationAttributes_S& NIAttributes, ElementShape_E EntityShape, unsigned long IntegrandOrder, long& IntegPointsSetNumber); 00113 00114 // METHOD=mm:8c990f9e-23f0-4def-ab21-699b87296dd4 00115 unsigned long GetNumberIntegrationPoints(ElementShape_E EntityShape, long IntegrationPointsSetNumber, unsigned long LiDirection = 1); 00116 00117 // METHOD=mm:211b29ea-4999-4d13-8762-33ac32719e5f 00118 unsigned long GetTotalNumberIntegrationPoints(); 00119 00120 // METHOD=mm:a342cb0e-f249-11df-9284-bd0feebbfa73 00121 double*const GetIntegrationPointsCoords(NumericalIntegrationAttributes_S& NIAttributes, ElementShape_E EntityShape, unsigned long IntegrandOrder, unsigned long& NumberIntegPoints, unsigned long LiDirection = 1); 00122 00123 // METHOD=mm:a342cba4-f249-11df-9284-bd0feebbfa73 00124 double*const GetIntegrationPointsWeights(NumericalIntegrationAttributes_S& NIAttributes, ElementShape_E EntityShape, unsigned long IntegrandOrder, unsigned long& NumberIntegPoints, unsigned long LiDirection = 1); 00125 00126 // METHOD=mm:482ef1de-5554-44a6-9c2d-14426fb83a1f 00127 double* GetIntegrationPointsWeightsBySets(unsigned long SetNumber, unsigned long& NumberIntegPoints); 00128 00129 // METHOD=mm:a342cb09-f249-11df-9284-bd0feebbfa73 00130 unsigned long*const GetIndices(NumericalIntegrationAttributes_S& NIAttributes, unsigned long IntegrandOrder, unsigned long& NumberIndices); 00131 00132 // METHOD=mm:9ef1d8e9-65db-11e0-8491-9a6c26cf8b1e 00133 OneIndexTable<unsigned long>& GetIndices(); 00134 00135 // METHOD=mm:d30054a3-75c9-11e0-8d0e-c7b381565e64 00136 unsigned long* GetIndicesBySet(unsigned long SetNumber, unsigned long& NumberIndices); 00137 00138 // METHOD=mm:acb300d2-434f-11e0-8507-c0021234afab 00139 void RunNumericalIntegration(NumericalIntegrationAttributes_S& NIAttributes, ElementShape_E EntityShape, BuiltInArray<unsigned long>& PolyOrder); 00140 00141 // METHOD=mm:a342cba6-f249-11df-9284-bd0feebbfa73 00142 void Print(FILE* File, ElementShape_E EntityShape); 00143 00144 00145 protected: 00146 00150 // attr=mm:438a922f-6142-11e0-81c0-b776f8b86cca 00151 LineNumericalIntegration LineNI1; 00152 00156 // attr=mm:f926ef7f-7664-11e0-813b-c4a984c52f15 00157 LineNumericalIntegration LineNI2; 00158 00162 // attr=mm:f926f817-7664-11e0-813b-c4a984c52f15 00163 LineNumericalIntegration LineNI3; 00164 00168 // attr=mm:f926fecf-7664-11e0-813b-c4a984c52f15 00169 LineNumericalIntegration LineNI4; 00170 00174 // attr=mm:a342ca74-f249-11df-9284-bd0feebbfa73 00175 TriangleNumericalIntegration TriangleNI; 00176 00180 // attr=mm:a342ca78-f249-11df-9284-bd0feebbfa73 00181 OneIndexTable<double> Weights; 00182 00186 // attr=mm:39d421c5-5fb6-11e0-89bf-82ea5c842841 00187 OneIndexTable<double> Coords; 00188 00192 // attr=mm:a342cb05-f249-11df-9284-bd0feebbfa73 00193 OneIndexTable<unsigned long> TensorIndices; 00194 00198 // attr=mm:d87db877-4346-11e0-8507-c0021234afab 00199 unsigned long Pmax; 00200 00201 00202 private: 00203 00204 //#UBLK-BEG-CLASSMEMB mm:b0f856aa-f249-11df-9284-bd0feebbfa73 00205 //#UBLK-END-CLASSMEMB 00206 }; 00207 00208 //#UBLK-BEG-GLOBALH 00209 //*** Removed methods: 07 Abr 2011 14:52 00210 //--- 00211 //uuid=mm:6b6c20c1-434a-11e0-8507-c0021234afab 00212 // TetraNumericalIntegration(unsigned short MaxPolyOrder); 00213 00214 //*** Removed methods: 07 Abr 2011 15:39 00215 //--- 00216 //uuid=mm:c671ac25-5c9f-11e0-88c4-ef15af85152f 00217 // unsigned long GetPointsNumber(unsigned short PolyOrder); 00218 00219 //*** Removed methods: 16 Oct 2011 13:28 00220 //--- 00221 //uuid=mm:1cd9b313-79d9-11e0-84f1-f9e805de760d 00222 // LineNumericalIntegration& GetLineIntegration(unsigned short LiDirection); 00223 00224 //*** Removed methods: 10 Mar 2015 18:52 00225 //--- 00226 //uuid=mm:b3666729-4116-4efc-b69e-94059d23b229 00227 // TriangleNumericalIntegration& GetTriangleNumericalIntegration(); 00228 00229 //#UBLK-END-GLOBALH 00230 00231 00232 #endif // _TETRANUMERICALINTEGRATION_H_