hp2FEM  0.1
include/interpolation/numericalintegration/NumericalIntegration.h
00001 #ifndef _NUMERICALINTEGRATION_H_
00002 #define _NUMERICALINTEGRATION_H_
00003 // ---------------------------------------------
00004 // company   : 
00005 // user      : 
00006 // date      : 22 Mar 2015 17:23
00007 // file      : NumericalIntegration.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/Vector.h"
00047 #include "ds/Matrix.h"
00048 #include "enumerations/QuadCollocType_E.h"
00049 #include "enumerations/ElementShape_E.h"
00050 #include "interpolation/numericalintegration/HexaNumericalIntegration.h"
00051 #include "interpolation/numericalintegration/LineNumericalIntegration.h"
00052 #include "interpolation/numericalintegration/SquareNumericalIntegration.h"
00053 #include "interpolation/numericalintegration/TetraNumericalIntegration.h"
00054 #include "interpolation/numericalintegration/TriangleNumericalIntegration.h"
00055 
00056 
00057 using namespace std;
00058 
00059 
00069 class NumericalIntegration
00070 {
00071 //#UBLK-BEG-CLASSDEF mm:b0f856a6-f249-11df-9284-bd0feebbfa73
00072 //#UBLK-END-CLASSDEF
00073 
00074  public:
00075 
00076    // METHOD=mm:a342c6c3-f249-11df-9284-bd0feebbfa73
00077    unsigned long*const GetIndices(ElementShape_E EntityShape, unsigned long IntegrandOrder, unsigned long& NumberIndices);
00078 
00079    // METHOD=mm:79f75ada-65cf-11e0-8491-9a6c26cf8b1e
00080    OneIndexTable<unsigned long>& GetIndices(ElementShape_E ElementShape);
00081 
00082    // METHOD=mm:28fa59f7-7186-4ebb-8a98-0913a0073f70
00083    unsigned long* GetIndicesBySet(ElementShape_E ElemShape, unsigned long SetNumber, unsigned long& NumberIndices);
00084 
00085    // METHOD=mm:a342c6ca-f249-11df-9284-bd0feebbfa73
00086    double*const GetIntegrationPointsCoords(ElementShape_E ElementShape, ElementShape_E EntityShape, unsigned long IntegrandOrder, unsigned long& NumberIntegrationPoints, unsigned long LiDirection = 1);
00087 
00088    // METHOD=mm:b3ee3304-4fb6-416a-b58a-649cf7f3687a
00089    double* GetIntegrationPointsCoords(ElementShape_E ElemShape, unsigned long& NumberCoords, unsigned long& NumberIndices, unsigned long** Indices);
00090 
00091    // METHOD=mm:ff8c4a92-760a-4c52-9d3d-b34ce231fbbd
00092    double* GetIntegrationPointsCoordsBySets(ElementShape_E ElemShape, unsigned long SetNumber, unsigned long& NumberIntegrationPoints);
00093 
00094    // METHOD=mm:2daca27d-f450-43a2-bc1c-af76a544ac8e
00095    long GetIntegrationPointsSetNumber(ElementShape_E ElemShape, NumericalIntegrationAttributes_S& NIAttributes, unsigned long IntegrandOrder);
00096 
00097    // METHOD=mm:a342c6cb-f249-11df-9284-bd0feebbfa73
00098    double*const GetIntegrationPointsWeights(ElementShape_E ElementShape, ElementShape_E EntityShape, unsigned long IntegrandOrder, unsigned long& NumberIntegrationPoints, unsigned long LiDirection = 1);
00099 
00100    // METHOD=mm:0171cb4e-88af-47e5-9536-a59b19beee40
00101    double* GetIntegrationPointsWeights(ElementShape_E ElemShape, unsigned long& NumberWeights, unsigned long& NumberIndices, unsigned long** Indices);
00102 
00103    // METHOD=mm:7117d940-4c4b-458e-b863-087b2b778b17
00104    double* GetIntegrationPointsWeightsBySets(ElementShape_E ElemShape, unsigned long SetNumber, unsigned long& NumberIntegrationPoints);
00105 
00106    // METHOD=mm:a0c966a5-ce7a-11e0-8d94-bd74a4bae893
00107    LineNumericalIntegration& GetLineNumericalIntegration(ElementShape_E ElemShape, unsigned long LiDirection = 1);
00108 
00109    // METHOD=mm:f353d556-e455-45f2-9e88-2e2fca84caf2
00110    unsigned long GetMaxNumberIntegrationPoints(ElementShape_E ElemShape);
00111 
00112    // METHOD=mm:048bceff-48e5-45f8-8a28-f7c3781adc5d
00113    unsigned long GetMaxNumberIntegrationPointsSets(ElementShape_E ElemShape);
00114 
00115    // METHOD=mm:8ea05af1-e06f-4be0-8cb3-bed5ce9bcffc
00116    unsigned long GetMaxPolyOrder(ElementShape_E ElemShape);
00117 
00118    // METHOD=mm:2b4ba38d-44fa-11e0-9711-cb145d0d686e
00119    unsigned long GetNumberIntegrationPoints(ElementShape_E ElementShape, ElementShape_E EntityShape, unsigned long IntegrandOrder, long& IntegrationPointsSetNumber);
00120 
00121    // METHOD=mm:cf7e1af9-f7cc-49dd-944f-e81f201c7bb9
00122    unsigned long GetNumberIntegrationPoints(ElementShape_E ElemShape, ElementShape_E EntityShape, long IntegrationPointsSetNumber, unsigned long LiDirection = 1);
00123 
00124    // METHOD=mm:e5f7b07b-4ff2-11e0-90ec-a62df0b89907
00125    unsigned long GetNumberIntegrationPointsSets(ElementShape_E EntityShape);
00126 
00127    // METHOD=mm:6d996a59-7fca-11e0-8ee8-bc841070a775
00128    NumericalIntegrationAttributes_S& GetNumericalIntegrationAttributes();
00129 
00130    // METHOD=mm:e57a3c97-8fab-44a3-9671-64f5e7f896f4
00131    unsigned long GetTotalNumberIntegrationPoints(ElementShape_E ElemShape);
00132 
00133    // METHOD=mm:86bc939f-f275-11df-9284-bd0feebbfa73
00134    NumericalIntegration();
00135 
00136    // METHOD=mm:79846552-4377-11e0-8507-c0021234afab
00137    NumericalIntegration(NumericalIntegrationAttributes_S& NumericalIntegrationAttributes);
00138 
00139    // METHOD=mm:a342c6c2-f249-11df-9284-bd0feebbfa73
00140    NumericalIntegration(ElementShape_E ElementShape, QuadCollocType_E QuadratureType, unsigned long Alpha, unsigned long Beta, unsigned long MaxPolyOrder, unsigned long IntegrandOrderFactor = 2);
00141 
00142    // METHOD=mm:0991c365-0461-11e0-8dd1-8aebdd73e214
00143    NumericalIntegration(NumericalIntegration& Instance);
00144 
00145    // METHOD=mm:591705e9-8816-43b7-b785-d594f21e23bf
00146    operator NumericalIntegrationAttributes_S &();
00147 
00148    // METHOD=mm:45599683-4409-11e0-82ee-a7df8a6f9bcb
00149    operator HexaNumericalIntegration&();
00150 
00151    // METHOD=mm:117e5303-4409-11e0-82ee-a7df8a6f9bcb
00152    operator LineNumericalIntegration &();
00153 
00154    // METHOD=mm:396db7c3-4409-11e0-82ee-a7df8a6f9bcb
00155    operator SquareNumericalIntegration &();
00156 
00157    // METHOD=mm:4be81082-4409-11e0-82ee-a7df8a6f9bcb
00158    operator TetraNumericalIntegration &();
00159 
00160    // METHOD=mm:3f639643-4409-11e0-82ee-a7df8a6f9bcb
00161    operator TriangleNumericalIntegration &();
00162 
00163    // METHOD=mm:3b0cabee-0465-11e0-8dd1-8aebdd73e214
00164    NumericalIntegration& operator=(NumericalIntegration& Instance);
00165 
00166    // METHOD=mm:a342c763-f249-11df-9284-bd0feebbfa73
00167    void Print(FILE* File, ElementShape_E ElementShape, ElementShape_E EntityShape);
00168 
00169    // METHOD=mm:a342c762-f249-11df-9284-bd0feebbfa73
00170    void Read(FILE* DefFile, unsigned long GroupNumber, ElementShape_E ElementShape, unsigned long MaxOrder);
00171 
00172    // METHOD=mm:007123b5-434f-11e0-8507-c0021234afab
00173    void RunNumericalIntegration(ElementShape_E ElementShape, ElementShape_E EntityShape, BuiltInArray<unsigned long>& PolyOrder);
00174 
00175    // METHOD=mm:3fed23c3-9f48-4835-a671-65a25b2d5fed
00176    void SetMaxPolyOrder(ElementShape_E ElemShape, unsigned long MaxOrder);
00177 
00178    // METHOD=mm:029f6e03-27a2-455f-8a29-49ab257ebad9
00179    void SetNumberCoordsWeights(ElementShape_E ElemShape, unsigned long NumberRow, unsigned long NumberData);
00180 
00181    // METHOD=mm:6923f0c2-ea1e-4782-b6c5-3c325ca1dc95
00182    void SetNumberIntegrationPointsSets(ElementShape_E ElemShape, NumericalIntegrationAttributes_S& NIAttributes, BuiltInArray<unsigned long>& PolyOrder);
00183 
00184    // METHOD=mm:f531f601-4376-11e0-8507-c0021234afab
00185    void SetNumericalIntegrationAttributes(NumericalIntegrationAttributes_S& NumericalIntegrationAttributes);
00186 
00187    // METHOD=mm:63f84096-4349-11e0-8507-c0021234afab
00188    void SetNumericalIntegrationAttributes(ElementShape_E ElementShape, QuadCollocType_E QuadratureType, unsigned long Alpha, unsigned long Beta, unsigned long MaxPolyOrder, unsigned long IntegrandOrderFactor = 2);
00189 
00190    // METHOD=mm:1adae43e-0461-11e0-8dd1-8aebdd73e214
00191    ~NumericalIntegration();
00192 
00193 
00194  protected:
00195 
00199    // attr=mm:e43bea09-f24b-11df-9284-bd0feebbfa73
00200    HexaNumericalIntegration* HexaNI;
00201 
00205    // attr=mm:316b9703-f24b-11df-9284-bd0feebbfa73
00206    LineNumericalIntegration* LineNI;
00207 
00211    // attr=mm:bf267453-4fcc-11e0-90ec-a62df0b89907
00212    NumericalIntegrationAttributes_S NIAttributes;
00213 
00217    // attr=mm:cb33399f-f24b-11df-9284-bd0feebbfa73
00218    SquareNumericalIntegration* SquareNI;
00219 
00223    // attr=mm:f74ecb1b-f24b-11df-9284-bd0feebbfa73
00224    TetraNumericalIntegration* TetraNI;
00225 
00229    // attr=mm:ee5df2e3-f24b-11df-9284-bd0feebbfa73
00230    TriangleNumericalIntegration* TriangleNI;
00231 
00232 
00233  private:
00234 
00235 //#UBLK-BEG-CLASSMEMB mm:b0f856a6-f249-11df-9284-bd0feebbfa73
00236 //#UBLK-END-CLASSMEMB
00237 };
00238 
00239 //#UBLK-BEG-GLOBALH
00240 //*** Removed methods: 07 Abr 2011 14:52
00241 //---
00242 //uuid=mm:67e5e485-4661-11e0-81e9-a37f76cac6d8
00243 //   double * const GetIntegPointsCoordsTheoSolution(ElementShape_E EntityShape, unsigned short IntegrandOrder, OneIndexTable<double>& Coords, unsigned short& NumberIntegPoints);
00244 //---
00245 //uuid=mm:73d192fd-4661-11e0-81e9-a37f76cac6d8
00246 //   double * const GetIntegPointsWeightsTheoSolution(ElementShape_E EntityShape, unsigned short IntegrandOrder, unsigned short& NumberIntegPoints);
00247 //---
00248 //uuid=mm:84821b4e-4661-11e0-81e9-a37f76cac6d8
00249 //   unsigned short* const GetIndicesTheoSolution(ElementShape_E EntityShape, unsigned short IntegrandOrder, unsigned short & NumberIndices);
00250 
00251 //*** Removed methods: 21 Mar 2015 21:35
00252 //---
00253 //uuid=mm:be2fa860-3e6f-4aed-8bd3-31f4c1c98540
00254 //   operator NumericalIntegrationAttributes_S &();
00255 
00256 //#UBLK-END-GLOBALH
00257 
00258 
00259 #endif // _NUMERICALINTEGRATION_H_
 All Classes Files Functions Variables Typedefs Friends Defines