hp2FEM
0.1
|
00001 #ifndef _HEXANUMERICALINTEGRATION_H_ 00002 #define _HEXANUMERICALINTEGRATION_H_ 00003 // --------------------------------------------- 00004 // company : 00005 // user : 00006 // date : 22 Mar 2015 17:23 00007 // file : HexaNumericalIntegration.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/SquareNumericalIntegration.h" 00050 00051 00052 using namespace std; 00053 00054 00064 class HexaNumericalIntegration 00065 { 00066 //#UBLK-BEG-CLASSDEF mm:8f648b4e-f27c-11df-9284-bd0feebbfa73 00067 //#UBLK-END-CLASSDEF 00068 00069 public: 00070 00071 // METHOD=mm:714d6c21-f281-11df-9284-bd0feebbfa73 00072 HexaNumericalIntegration(); 00073 00074 // METHOD=mm:3a282fff-0466-11e0-8dd1-8aebdd73e214 00075 HexaNumericalIntegration(HexaNumericalIntegration& Instance); 00076 00077 // METHOD=mm:3268a565-0466-11e0-8dd1-8aebdd73e214 00078 ~HexaNumericalIntegration(); 00079 00080 // METHOD=mm:20d3c3be-0467-11e0-8dd1-8aebdd73e214 00081 HexaNumericalIntegration& operator=(HexaNumericalIntegration& Instance); 00082 00083 // METHOD=mm:08c75213-7740-11e0-9b8c-c071a750a625 00084 operator LineNumericalIntegration &(); 00085 00086 // METHOD=mm:a8504063-5005-11e0-90ec-a62df0b89907 00087 operator SquareNumericalIntegration &(); 00088 00089 // METHOD=mm:87a4ee29-f27c-11df-9284-bd0feebbfa73 00090 void SetMaxPolyOrder(unsigned long MaxPolyOrder); 00091 00092 // METHOD=mm:bd990891-cfa8-4c8c-a0dd-f874e3b9a5f7 00093 void SetNumberCoordsWeights(unsigned long NumberRow, unsigned long NumberData); 00094 00095 // METHOD=mm:87a4ee2a-f27c-11df-9284-bd0feebbfa73 00096 unsigned long GetMaxPolyOrder(); 00097 00098 // METHOD=mm:04a183ad-ce7e-11e0-8d94-bd74a4bae893 00099 LineNumericalIntegration& GetLineNumericalIntegration(); 00100 00101 // METHOD=mm:6247ac13-5006-11e0-90ec-a62df0b89907 00102 unsigned long GetNumberIntegrationPointsSets(); 00103 00104 // METHOD=mm:fcd9d315-8771-4a00-b4f8-a7e98a0873c3 00105 unsigned long GetMaxNumberIntegrationPointsSets(); 00106 00107 // METHOD=mm:2e26955b-7816-11e0-81d8-f37e89126ddd 00108 long GetIntegrationPointsSetNumber(NumericalIntegrationAttributes_S& NIAttributes, unsigned long IntegrandOrder); 00109 00110 // METHOD=mm:79f94883-44fa-11e0-9711-cb145d0d686e 00111 unsigned long GetNumberIntegrationPoints(NumericalIntegrationAttributes_S& NIAttributes, ElementShape_E EntityShape, unsigned long IntegrandOrder, long& IntegrationPointsSetNumber); 00112 00113 // METHOD=mm:a654cb38-6d35-4933-bbdc-f8a69f2b0ef4 00114 unsigned long GetNumberIntegrationPoints(ElementShape_E EntityShape, long IntegrationPointsSetNumber); 00115 00116 // METHOD=mm:28847dcb-05ac-4ae7-a19b-cea3ff23eb87 00117 unsigned long GetTotalNumberIntegrationPoints(); 00118 00119 // METHOD=mm:87a4ee2b-f27c-11df-9284-bd0feebbfa73 00120 double*const GetIntegrationPointsCoords(NumericalIntegrationAttributes_S& NIAttributes, ElementShape_E EntityShape, unsigned long IntegrandOrder, unsigned long& NumberIntegrationPoints); 00121 00122 // METHOD=mm:87a4ee2c-f27c-11df-9284-bd0feebbfa73 00123 double*const GetIntegrationPointsWeights(NumericalIntegrationAttributes_S& NIAttributes, ElementShape_E EntityShape, unsigned long IntegrandOrder, unsigned long& NumberIntegrationPoints); 00124 00125 // METHOD=mm:87a4ee26-f27c-11df-9284-bd0feebbfa73 00126 unsigned long*const GetIndices(NumericalIntegrationAttributes_S& NIAttributes, unsigned long IntegrandOrder, unsigned long& NumIndices); 00127 00128 // METHOD=mm:8681c2bf-65db-11e0-8491-9a6c26cf8b1e 00129 OneIndexTable<unsigned long>& GetIndices(); 00130 00131 // METHOD=mm:8568fc25-6b6c-11e0-9496-ab93ef007735 00132 unsigned long* GetIndicesBySet(unsigned long SetNumber, unsigned long& NumberIndices); 00133 00134 // METHOD=mm:9c9b2a5b-434f-11e0-8507-c0021234afab 00135 void RunNumericalIntegration(NumericalIntegrationAttributes_S& NIAttributes, ElementShape_E EntityShape, BuiltInArray<unsigned long>& PolyOrder); 00136 00137 // METHOD=mm:87a4ee2e-f27c-11df-9284-bd0feebbfa73 00138 void Print(FILE* File, ElementShape_E EntityShape); 00139 00140 00141 protected: 00142 00146 // attr=mm:0533aa4d-608e-11e0-8c00-dd53cdc87961 00147 LineNumericalIntegration LineNI; 00148 00152 // attr=mm:87a4ed87-f27c-11df-9284-bd0feebbfa73 00153 SquareNumericalIntegration SquareNI; 00154 00158 // attr=mm:87a4ed8b-f27c-11df-9284-bd0feebbfa73 00159 OneIndexTable<double> Weights; 00160 00164 // attr=mm:dba74ded-5fb5-11e0-89bf-82ea5c842841 00165 OneIndexTable<double> Coords; 00166 00170 // attr=mm:87a4ed8d-f27c-11df-9284-bd0feebbfa73 00171 OneIndexTable<unsigned long> TensorIndices; 00172 00176 // attr=mm:d451a137-4346-11e0-8507-c0021234afab 00177 unsigned long Pmax; 00178 00179 00180 private: 00181 00182 //#UBLK-BEG-CLASSMEMB mm:8f648b4e-f27c-11df-9284-bd0feebbfa73 00183 //#UBLK-END-CLASSMEMB 00184 }; 00185 00186 //#UBLK-BEG-GLOBALH 00187 //*** Removed methods: 07 Abr 2011 14:52 00188 //--- 00189 //uuid=mm:61e2c997-434a-11e0-8507-c0021234afab 00190 // HexaNumericalIntegration(unsigned short MaxPolyOrder); 00191 00192 //#UBLK-END-GLOBALH 00193 00194 00195 #endif // _HEXANUMERICALINTEGRATION_H_