hp2FEM  0.1
include/interpolation/shapefunctions/TriangleShapeFunctions.h
00001 #ifndef _TRIANGLESHAPEFUNCTIONS_H_
00002 #define _TRIANGLESHAPEFUNCTIONS_H_
00003 // ---------------------------------------------
00004 // company   : 
00005 // user      : 
00006 // date      : 22 Mar 2015 17:24
00007 // file      : TriangleShapeFunctions.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     : 25 Abr 2011
00019 //--------------------------------------------------------------
00020 // Change history : 
00021 //   25 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 "enumerations/PolynomialType_E.h"
00051 #include "enumerations/SchemeType_E.h"
00052 #include "enumerations/BasisType_E.h"
00053 #include "enumerations/HierarchicalType_E.h"
00054 #include "enumerations/IPCP_E.h"
00055 #include "interpolation/collocationpoints/collocationPoints.h"
00056 #include "interpolation/numericalintegration/NumericalIntegration.h"
00057 #include "interpolation/shapefunctions/LineShapeFunctions.h"
00058 
00059 
00060 using namespace std;
00061 
00062 
00070 class TriangleShapeFunctions
00071 {
00072 //#UBLK-BEG-CLASSDEF mm:d76de9d0-f41b-11df-9959-9236c3ff6ea9
00073 //#UBLK-END-CLASSDEF
00074 
00075  public:
00076 
00077    // METHOD=mm:d63cc4bf-f41b-11df-9959-9236c3ff6ea9
00078    TriangleShapeFunctions();
00079 
00080    // METHOD=mm:bd5e6ef7-4345-11e0-8507-c0021234afab
00081    TriangleShapeFunctions(unsigned long MaxPolyOrder);
00082 
00083    // METHOD=mm:5a67d6b7-433b-11e0-8507-c0021234afab
00084    TriangleShapeFunctions(TriangleShapeFunctions& Instance);
00085 
00086    // METHOD=mm:d3da9961-20e6-11e0-8536-f06391048513
00087    ~TriangleShapeFunctions();
00088 
00089    // METHOD=mm:0ed12351-4373-11e0-8507-c0021234afab
00090    TriangleShapeFunctions& operator=(TriangleShapeFunctions& Instance);
00091 
00092    // METHOD=mm:bdae4d17-434c-11e0-8507-c0021234afab
00093    void SetMaxPolyOrder(unsigned long MaxPolyOrder);
00094 
00095    // METHOD=mm:a792c3d5-cdbe-11e0-993d-c2f620367c46
00096    LineShapeFunctions& GetLineShapeFunctions(unsigned long LiDirection = 1);
00097 
00098    // METHOD=mm:12ea6207-434d-11e0-8507-c0021234afab
00099    unsigned long GetMaxPolyOrder();
00100 
00101    // METHOD=mm:0f73bc2f-7815-11e0-81d8-f37e89126ddd
00102    long GetShapeFunctionSetNumber(unsigned long PolyOrder);
00103 
00104    // METHOD=mm:ed977dd2-cd40-4df4-9be7-5fb02ba13894
00105    void GetShapeFunctions(unsigned long PolyOrder, long SFSetNumber, long IPSetNumber, IPCP_E IPCPFlag, unsigned long NumberIndicesNI, double* ShapeFunctions);
00106 
00107    // METHOD=mm:d63cc555-f41b-11df-9959-9236c3ff6ea9
00108    double*const GetShapeFunctions(ElementShape_E EntityShape, long SFSetNumber, long IPSetNumber, IPCP_E IPCPFlag, unsigned long& NumberSFValues, unsigned long LiDirection = 1);
00109 
00110    // METHOD=mm:f6dd2930-39c9-4664-b57d-4a7dc921ca90
00111    double*const GetShapeFunctions(ElementShape_E EntityShape, long SFSetNumber, long IPSetNumber, IPCP_E IPCPFlag, unsigned long& TotalNumberSFValues, unsigned long& NumberSFValues, unsigned long& NumberPoints, unsigned long LiDirection = 1);
00112 
00113    // METHOD=mm:d63cc557-f41b-11df-9959-9236c3ff6ea9
00114    double*const GetdShapeFunctions(ElementShape_E EntityShape, long SFSetNumber, long IPSetNumber, IPCP_E IPCPFlag, unsigned long& NumberSFValues, unsigned long LiDirection = 1);
00115 
00116    // METHOD=mm:d63cc4c2-f41b-11df-9959-9236c3ff6ea9
00117    unsigned long*const GetIndices(unsigned long PolyOrder, unsigned long& NumberIndices);
00118 
00119    // METHOD=mm:2a96daa3-3299-40a1-9811-a827f9619876
00120    OneIndexTable<unsigned long>& GetIndices();
00121 
00122    // METHOD=mm:d63cc554-f41b-11df-9959-9236c3ff6ea9
00123    void RunShapeFunctions(ElementShape_E EntityShape, ShapeFunctionsAttributes_S SFunctions, NumericalIntegration& NI, collocationPoints& CP, BuiltInArray<unsigned long>& PolyOrder);
00124 
00125    // METHOD=mm:432452f6-3b7f-4d44-94c4-b7094b695910
00126    void RunShapeFunctions(ElementShape_E EntityShape, ShapeFunctionsAttributes_S SFunctions, NumericalIntegration& NI, collocationPoints& CP, TriangleNumericalIntegration& TetraTriNI, TriangleCollocationPoints& TetraTriCP, BuiltInArray<unsigned long>& PolyOrder);
00127 
00128    // METHOD=mm:d63cc55c-f41b-11df-9959-9236c3ff6ea9
00129    void Print(FILE* File, ElementShape_E ElementShape, BuiltInArray<unsigned long>& PolyOrder);
00130 
00131    // METHOD=mm:d63cc4c1-f41b-11df-9959-9236c3ff6ea9
00132    void BuildIndices(BuiltInArray<unsigned long>& PolyOrder, ShapeFunctionsAttributes_S SFAttributes);
00133 
00134 
00135  protected:
00136 
00140    // attr=mm:d63cc422-f41b-11df-9959-9236c3ff6ea9
00141    OneIndexTable<unsigned long> TensorIndices;
00142 
00146    // attr=mm:63263eef-a8bc-445d-b128-ad440e905e74
00147    LineShapeFunctions LineSF;
00148 
00152    // attr=mm:d63cc421-f41b-11df-9959-9236c3ff6ea9
00153    LineShapeFunctions LineSF1;
00154 
00158    // attr=mm:eb196645-f41b-11df-9959-9236c3ff6ea9
00159    LineShapeFunctions LineSF2;
00160 
00164    // attr=mm:ff5d65bb-f41b-11df-9959-9236c3ff6ea9
00165    LineShapeFunctions LineSF3;
00166 
00170    // attr=mm:d63cc41f-f41b-11df-9959-9236c3ff6ea9
00171    TwoIndexTable<double> SFIP;
00172 
00176    // attr=mm:44afb025-4051-11e0-9dd5-8e5be057fed3
00177    TwoIndexTable<double> dSFIP;
00178 
00182    // attr=mm:d63cc420-f41b-11df-9959-9236c3ff6ea9
00183    TwoIndexTable<double> SFCP;
00184 
00188    // attr=mm:4f6a38a5-4051-11e0-9dd5-8e5be057fed3
00189    TwoIndexTable<double> dSFCP;
00190 
00194    // attr=mm:28573c71-3d5a-49a2-b85a-419546bdf5b8
00195    BuiltInArray<unsigned long> NumbIntegPoints;
00196 
00200    // attr=mm:b0f05463-7bb8-45cc-acfb-3639f8c045d3
00201    BuiltInArray<unsigned long> NumbCollocPoints;
00202 
00206    // attr=mm:edf5ece1-434c-11e0-8507-c0021234afab
00207    unsigned long Pmax;
00208 
00209 
00210  private:
00211 
00212 //#UBLK-BEG-CLASSMEMB mm:d76de9d0-f41b-11df-9959-9236c3ff6ea9
00213 //#UBLK-END-CLASSMEMB
00214 };
00215 
00216 //#UBLK-BEG-GLOBALH
00217 //#UBLK-END-GLOBALH
00218 
00219 
00220 #endif // _TRIANGLESHAPEFUNCTIONS_H_
 All Classes Files Functions Variables Typedefs Friends Defines