hp2FEM
0.1
|
00001 #ifndef _LINENUMERICALINTEGRATION_H_ 00002 #define _LINENUMERICALINTEGRATION_H_ 00003 // --------------------------------------------- 00004 // company : 00005 // user : 00006 // date : 22 Mar 2015 17:23 00007 // file : LineNumericalIntegration.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/OneIndexTable.h" 00047 #include "enumerations/QuadCollocType_E.h" 00048 #include "enumerations/ElementShape_E.h" 00049 #include "interpolation/quadrature1d/Quadrature1D.h" 00050 #include "interpolation/numericalintegration/NumericalIntegrationAttributes_S.h" 00051 00052 00053 using namespace std; 00054 00055 00063 class LineNumericalIntegration 00064 { 00065 //#UBLK-BEG-CLASSDEF mm:b0f856a9-f249-11df-9284-bd0feebbfa73 00066 //#UBLK-END-CLASSDEF 00067 00068 public: 00069 00070 // METHOD=mm:37c73101-f27e-11df-9284-bd0feebbfa73 00071 LineNumericalIntegration(); 00072 00073 // METHOD=mm:f6cdded5-0465-11e0-8dd1-8aebdd73e214 00074 LineNumericalIntegration(LineNumericalIntegration& Instance); 00075 00076 // METHOD=mm:0483540b-0466-11e0-8dd1-8aebdd73e214 00077 ~LineNumericalIntegration(); 00078 00079 // METHOD=mm:db16e195-0466-11e0-8dd1-8aebdd73e214 00080 LineNumericalIntegration& operator=(LineNumericalIntegration& Instance); 00081 00082 // METHOD=mm:a342c9d8-f249-11df-9284-bd0feebbfa73 00083 void SetMaxPolyOrder(unsigned long MaxPolyOrder); 00084 00085 // METHOD=mm:7835b740-71d1-11e0-88af-a96615e3269c 00086 void SetNumberCoordsWeights(unsigned long NumberRow, unsigned long NumberData); 00087 00088 // METHOD=mm:f22154cb-9bae-11e0-9921-c037e02cca7f 00089 void SetNumberIntegrationPointsSets(NumericalIntegrationAttributes_S& NIAttributes, BuiltInArray<unsigned long>& PolyOrder); 00090 00091 // METHOD=mm:a342ca6e-f249-11df-9284-bd0feebbfa73 00092 unsigned long GetMaxPolyOrder(); 00093 00094 // METHOD=mm:a4b4ce2f-4ff5-11e0-90ec-a62df0b89907 00095 unsigned long GetNumberIntegrationPointsSets(); 00096 00097 // METHOD=mm:adbce7cb-7d3b-40fc-9c8d-1a290152579b 00098 unsigned long GetMaxNumberIntegrationPoints(); 00099 00100 // METHOD=mm:444ee8c1-6068-11e0-8c00-dd53cdc87961 00101 unsigned long GetMaxNumberIntegrationPointsSets(); 00102 00103 // METHOD=mm:e328a78f-5ba3-11e0-9948-a5a3aa8c4071 00104 long GetIntegrationPointsSetNumber(NumericalIntegrationAttributes_S& NIAttributes, unsigned long IntegrandOrder); 00105 00106 // METHOD=mm:5504c6c9-44fa-11e0-9711-cb145d0d686e 00107 unsigned long GetNumberIntegrationPoints(NumericalIntegrationAttributes_S& NIAttributes, unsigned long IntegrandOrder, long& IntegrationPointsSetNumber); 00108 00109 // METHOD=mm:8f690401-6068-11e0-8c00-dd53cdc87961 00110 unsigned long GetNumberIntegrationPoints(long IPSetNumberIndex); 00111 00112 // METHOD=mm:e8631b3b-3267-4c43-a270-ca7d9b298bed 00113 unsigned long GetNumberIntegPointsUsingSetNumber(long IPSetNumber); 00114 00115 // METHOD=mm:d7cdf7ef-605b-11e0-8c00-dd53cdc87961 00116 unsigned long GetTotalNumberIntegrationPoints(); 00117 00118 // METHOD=mm:a342ca6f-f249-11df-9284-bd0feebbfa73 00119 double*const GetIntegrationPointsCoords(NumericalIntegrationAttributes_S& NIAttributes, unsigned long IntegrandOrder, unsigned long& NumberCoords); 00120 00121 // METHOD=mm:76b5c14c-71cc-11e0-88af-a96615e3269c 00122 double* GetIntegrationPointsCoords(unsigned long& NumberCoords, unsigned long& NumberIndices, unsigned long** Indices); 00123 00124 // METHOD=mm:ffcad0a3-65d6-11e0-8491-9a6c26cf8b1e 00125 double* GetIntegrationPointsCoordsBySets(unsigned long SetNumber, unsigned long& NumberIntegrationPoints); 00126 00127 // METHOD=mm:a342ca70-f249-11df-9284-bd0feebbfa73 00128 double*const GetIntegrationPointsWeights(NumericalIntegrationAttributes_S& NIAttributes, unsigned long IntegrandOrder, unsigned long& NumberIntegrationPoints); 00129 00130 // METHOD=mm:4ae6f866-71cd-11e0-88af-a96615e3269c 00131 double* GetIntegrationPointsWeights(unsigned long& NumberWeights, unsigned long& NumberIndices, unsigned long** Indices); 00132 00133 // METHOD=mm:58d867eb-91ec-11e0-9e75-93f82ff5ac83 00134 double* GetIntegrationPointsWeightsBySets(unsigned long SetNumber, unsigned long& NumberIntegrationPoints); 00135 00136 // METHOD=mm:167ecd14-434f-11e0-8507-c0021234afab 00137 void RunNumericalIntegration(NumericalIntegrationAttributes_S& NIAttributes, BuiltInArray<unsigned long>& PolyOrder); 00138 00139 // METHOD=mm:00d0d57b-61eb-11e0-8159-a04df7924cef 00140 void Convert2NaturalCoordinates(); 00141 00142 // METHOD=mm:d52a7613-679c-11e0-8598-c81883b28fcd 00143 void Convert2LocalCoordinates(); 00144 00145 // METHOD=mm:a342ca72-f249-11df-9284-bd0feebbfa73 00146 void Print(FILE* File); 00147 00148 00149 protected: 00150 00154 // attr=mm:a342c9ce-f249-11df-9284-bd0feebbfa73 00155 Quadrature1D Quad; 00156 00160 // attr=mm:a342c9d2-f249-11df-9284-bd0feebbfa73 00161 OneIndexTable<double> Weights; 00162 00166 // attr=mm:a342c9d3-f249-11df-9284-bd0feebbfa73 00167 OneIndexTable<double> Coords; 00168 00173 // attr=mm:9b275f85-5086-11e0-90ec-a62df0b89907 00174 BuiltInArray<long> IPSets; 00175 00179 // attr=mm:a38294d5-4ff3-11e0-90ec-a62df0b89907 00180 unsigned long NumbIPSets; //= 0; 00181 00185 // attr=mm:a342c9d4-f249-11df-9284-bd0feebbfa73 00186 unsigned long Pmax; 00187 00188 00189 private: 00190 00191 //#UBLK-BEG-CLASSMEMB mm:b0f856a9-f249-11df-9284-bd0feebbfa73 00192 //#UBLK-END-CLASSMEMB 00193 }; 00194 00195 //#UBLK-BEG-GLOBALH 00196 //*** Removed methods: 07 Abr 2011 14:52 00197 //--- 00198 //uuid=mm:a342c9d5-f249-11df-9284-bd0feebbfa73 00199 // LineNumericalIntegration(unsigned short MaxPolyOrder, pMesh_E pMeshFlag); 00200 //--- 00201 //uuid=mm:dfd2687e-5fb3-11e0-89bf-82ea5c842841 00202 // void SetpMesh(pMesh_E pMeshFlag); 00203 //--- 00204 //uuid=mm:f678c0d0-5fb3-11e0-89bf-82ea5c842841 00205 // pMesh_E GetpMesh(); 00206 00207 //*** Removed methods: 09 May 2011 11:02 00208 //--- 00209 //uuid=mm:5b9a72b9-71d3-11e0-88af-a96615e3269c 00210 // void SetNumberWeights(unsigned short NumberRow, unsigned short NumberData); 00211 00212 //*** Removed methods: 21 Mar 2015 21:35 00213 //--- 00214 //uuid=mm:2baff596-1ed2-4441-809a-2a45d4801379 00215 // LineNumericalIntegration& operator=(LineNumericalIntegration& Instance); 00216 00217 //#UBLK-END-GLOBALH 00218 00219 00220 #endif // _LINENUMERICALINTEGRATION_H_