hp2FEM  0.1
include/interpolation/numericalintegration/TetraNumericalIntegration.h
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_
 All Classes Files Functions Variables Typedefs Friends Defines