hp2FEM
0.1
|
00001 #ifndef _TRIANGLENUMERICALINTEGRATION_H_ 00002 #define _TRIANGLENUMERICALINTEGRATION_H_ 00003 // --------------------------------------------- 00004 // company : 00005 // user : 00006 // date : 22 Mar 2015 17:23 00007 // file : TriangleNumericalIntegration.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 00051 00052 using namespace std; 00053 00054 00064 class TriangleNumericalIntegration 00065 { 00066 //#UBLK-BEG-CLASSDEF mm:b0f856ab-f249-11df-9284-bd0feebbfa73 00067 //#UBLK-END-CLASSDEF 00068 00069 public: 00070 00071 // METHOD=mm:d57230f7-f285-11df-9284-bd0feebbfa73 00072 TriangleNumericalIntegration(); 00073 00074 // METHOD=mm:51ffb71f-0466-11e0-8dd1-8aebdd73e214 00075 TriangleNumericalIntegration(TriangleNumericalIntegration& Instance); 00076 00077 // METHOD=mm:4ad8b31f-0466-11e0-8dd1-8aebdd73e214 00078 ~TriangleNumericalIntegration(); 00079 00080 // METHOD=mm:3517bb6f-0467-11e0-8dd1-8aebdd73e214 00081 TriangleNumericalIntegration& operator=(TriangleNumericalIntegration& Instance); 00082 00083 // METHOD=mm:60c5bb95-4ffd-11e0-90ec-a62df0b89907 00084 operator LineNumericalIntegration &(); 00085 00086 // METHOD=mm:a342cc4a-f249-11df-9284-bd0feebbfa73 00087 void SetMaxPolyOrder(unsigned long MaxPolyOrder); 00088 00089 // METHOD=mm:84f520e9-7549-4a2c-b372-55c428ad0326 00090 void SetNumberCoordsWeights(unsigned long NumberRow, unsigned long NumberData); 00091 00092 // METHOD=mm:a342cc4b-f249-11df-9284-bd0feebbfa73 00093 unsigned long GetMaxPolyOrder(); 00094 00095 // METHOD=mm:c906aacb-ce7d-11e0-8d94-bd74a4bae893 00096 LineNumericalIntegration& GetLineNumericalIntegration(unsigned long LiDirection = 1); 00097 00098 // METHOD=mm:0f69e441-4ffe-11e0-90ec-a62df0b89907 00099 unsigned long GetNumberIntegrationPointsSets(); 00100 00101 // METHOD=mm:db9f5faf-f7e4-4bf1-b8b9-db821fe4e4dc 00102 unsigned long GetMaxNumberIntegrationPointsSets(unsigned long LiDirection = 1); 00103 00104 // METHOD=mm:561a4679-5ca6-11e0-88c4-ef15af85152f 00105 long GetIntegrationPointsSetNumber(NumericalIntegrationAttributes_S& NIAttributes, unsigned long IntegrandOrder); 00106 00107 // METHOD=mm:6d74d483-44fa-11e0-9711-cb145d0d686e 00108 unsigned long GetNumberIntegrationPoints(NumericalIntegrationAttributes_S& NIAttributes, ElementShape_E EntityShape, unsigned long IntegrandOrder, long& IntegPointsSetNumber); 00109 00110 // METHOD=mm:fa10bf45-0ee5-4bc6-82fe-936f93264249 00111 unsigned long GetNumberIntegrationPoints(ElementShape_E EntityShape, long IntegrationPointsSetNumber, unsigned long LiDirection = 1); 00112 00113 // METHOD=mm:c01cb7f7-870b-4c27-9003-a73d58685a14 00114 unsigned long GetTotalNumberIntegrationPoints(); 00115 00116 // METHOD=mm:a342cc4c-f249-11df-9284-bd0feebbfa73 00117 double*const GetIntegrationPointsCoords(NumericalIntegrationAttributes_S& NIAttributes, unsigned long EntityShape, unsigned long IntegrandOrder, unsigned long& NumberIntegPoints, unsigned long LiDirection = 1); 00118 00119 // METHOD=mm:a342cc4d-f249-11df-9284-bd0feebbfa73 00120 double*const GetIntegrationPointsWeights(NumericalIntegrationAttributes_S& NIAttributes, ElementShape_E EntityShape, unsigned long IntegrandOrder, unsigned long& NumberIntegPoints, unsigned long LiDirection = 1); 00121 00122 // METHOD=mm:a67fff26-b858-471e-b42f-3c46f42a5db0 00123 double* GetIntegrationPointsWeightsBySets(unsigned long SetNumber, unsigned long& NumberIntegPoints); 00124 00125 // METHOD=mm:a342cc47-f249-11df-9284-bd0feebbfa73 00126 unsigned long*const GetIndices(NumericalIntegrationAttributes_S& NIAttributes, unsigned long IntegrandOrder, unsigned long& NumIndices); 00127 00128 // METHOD=mm:6d78ff8b-65db-11e0-8491-9a6c26cf8b1e 00129 OneIndexTable<unsigned long>& GetIndices(); 00130 00131 // METHOD=mm:dd16c957-79e0-11e0-84f1-f9e805de760d 00132 unsigned long* GetIndicesBySet(unsigned long SetNumber, unsigned long& NumberIndices); 00133 00134 // METHOD=mm:79708675-434f-11e0-8507-c0021234afab 00135 void RunNumericalIntegration(NumericalIntegrationAttributes_S& NIAttributes, ElementShape_E EntityShape, BuiltInArray<unsigned long>& PolyOrder); 00136 00137 // METHOD=mm:a342ccda-f249-11df-9284-bd0feebbfa73 00138 void Print(FILE* File, ElementShape_E EntityShape); 00139 00140 00141 protected: 00142 00146 // attr=mm:52c1765b-4d5b-4ae3-b710-7606b04b5989 00147 LineNumericalIntegration LineNI; 00148 00152 // attr=mm:a342cba8-f249-11df-9284-bd0feebbfa73 00153 LineNumericalIntegration LineNI1; 00154 00158 // attr=mm:04909bd9-71cb-11e0-88af-a96615e3269c 00159 LineNumericalIntegration LineNI2; 00160 00164 // attr=mm:0490a359-71cb-11e0-88af-a96615e3269c 00165 LineNumericalIntegration LineNI3; 00166 00170 // attr=mm:a342cbac-f249-11df-9284-bd0feebbfa73 00171 OneIndexTable<double> Weights; 00172 00176 // attr=mm:bfa3a7a9-5fb5-11e0-89bf-82ea5c842841 00177 OneIndexTable<double> Coords; 00178 00182 // attr=mm:a342cbae-f249-11df-9284-bd0feebbfa73 00183 OneIndexTable<unsigned long> TensorIndices; 00184 // attr=mm:d0257151-4346-11e0-8507-c0021234afab 00185 unsigned long Pmax; 00186 00187 00188 private: 00189 00190 //#UBLK-BEG-CLASSMEMB mm:b0f856ab-f249-11df-9284-bd0feebbfa73 00191 //#UBLK-END-CLASSMEMB 00192 }; 00193 00194 //#UBLK-BEG-GLOBALH 00195 //*** Removed methods: 07 Abr 2011 11:42 00196 //--- 00197 //uuid=mm:57c0c473-434a-11e0-8507-c0021234afab 00198 // TriangleNumericalIntegration(unsigned short MaxPolyOrder); 00199 00200 //*** Removed methods: 07 Abr 2011 14:45 00201 //--- 00202 //uuid=mm:cdcb762d-5c6c-11e0-88c4-ef15af85152f 00203 // unsigned long GetPointsNumber(unsigned short PolyOrder); 00204 00205 //*** Removed methods: 16 Oct 2011 13:28 00206 //--- 00207 //uuid=mm:49dd920b-79e0-11e0-84f1-f9e805de760d 00208 // LineNumericalIntegration& GetLineIntegration(unsigned short LiDirection); 00209 00210 //#UBLK-END-GLOBALH 00211 00212 00213 #endif // _TRIANGLENUMERICALINTEGRATION_H_