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