hp2FEM  0.1
include/interpolation/shapefunctions/HexaShapeFunctions.h
00001 #ifndef _HEXASHAPEFUNCTIONS_H_
00002 #define _HEXASHAPEFUNCTIONS_H_
00003 // ---------------------------------------------
00004 // company   : 
00005 // user      : 
00006 // date      : 22 Mar 2015 17:24
00007 // file      : HexaShapeFunctions.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     : 20 Abr 2011
00019 //--------------------------------------------------------------
00020 // Change history : 
00021 //   20 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 "ds/OneIndexTable.h"
00049 #include "ds/TwoIndexTable.h"
00050 #include "enumerations/QuadCollocType_E.h"
00051 #include "enumerations/ElementShape_E.h"
00052 #include "enumerations/PolynomialType_E.h"
00053 #include "enumerations/SchemeType_E.h"
00054 #include "enumerations/BasisType_E.h"
00055 #include "enumerations/HierarchicalType_E.h"
00056 #include "enumerations/IPCP_E.h"
00057 #include "interpolation/collocationpoints/collocationPoints.h"
00058 #include "interpolation/numericalintegration/NumericalIntegration.h"
00059 #include "interpolation/numericalintegration/LineNumericalIntegration.h"
00060 #include "interpolation/numericalintegration/HexaNumericalIntegration.h"
00061 #include "interpolation/shapefunctions/ShapeFunctionsAttributes_S.h"
00062 #include "interpolation/shapefunctions/LineShapeFunctions.h"
00063 #include "interpolation/shapefunctions/SquareShapeFunctions.h"
00064 
00065 
00066 using namespace std;
00067 
00068 
00078 class HexaShapeFunctions
00079 {
00080 //#UBLK-BEG-CLASSDEF mm:d7b9c48c-f41a-11df-9959-9236c3ff6ea9
00081 //#UBLK-END-CLASSDEF
00082 
00083  public:
00084 
00085    // METHOD=mm:d6887e8d-f41a-11df-9959-9236c3ff6ea9
00086    HexaShapeFunctions();
00087 
00088    // METHOD=mm:c4857e87-4345-11e0-8507-c0021234afab
00089    HexaShapeFunctions(unsigned long MaxPolyOrder);
00090 
00091    // METHOD=mm:6a7fcd56-433b-11e0-8507-c0021234afab
00092    HexaShapeFunctions(HexaShapeFunctions& Instance);
00093 
00094    // METHOD=mm:c918ff01-203f-11e0-8d8b-c50b4717fe48
00095    ~HexaShapeFunctions();
00096 
00097    // METHOD=mm:468db4e1-4376-11e0-8507-c0021234afab
00098    HexaShapeFunctions& operator=(HexaShapeFunctions& Instance);
00099 
00100    // METHOD=mm:c43cabdd-434c-11e0-8507-c0021234afab
00101    void SetMaxPolyOrder(unsigned long MaxPolyOrder);
00102 
00103    // METHOD=mm:7798e05d-cdc1-11e0-993d-c2f620367c46
00104    LineShapeFunctions& GetLineShapeFunctions();
00105 
00106    // METHOD=mm:1d0c5047-434d-11e0-8507-c0021234afab
00107    unsigned long GetMaxPolyOrder();
00108 
00109    // METHOD=mm:9ffedbe3-7816-11e0-81d8-f37e89126ddd
00110    long GetShapeFunctionSetNumber(unsigned long PolyOrder);
00111 
00112    // METHOD=mm:c41da50b-6e3a-43f8-aab7-56edc43223d0
00113    void GetShapeFunctions(unsigned long PolyOrder, long SFSetNumber, long IPSetNumber, IPCP_E IPCPFlag, unsigned long* TensorIndicesNI, unsigned long NumberIndicesNI, double* ShapeFunctions);
00114 
00115    // METHOD=mm:d6887f23-f41a-11df-9959-9236c3ff6ea9
00116    double*const GetShapeFunctions(ElementShape_E EntityShape, long SFSetNumber, long IPSetNumber, IPCP_E IPCPFlag, unsigned long& NumberSFValues);
00117 
00118    // METHOD=mm:c14148f5-6fa7-4648-b9e8-b43a85d0262f
00119    double*const GetShapeFunctions(ElementShape_E EntityShape, long SFSetNumber, long IPSetNumber, IPCP_E IPCPFlag, unsigned long& TotalNumberSFValues, unsigned long& NumberSFValues, unsigned long& NumberPoints);
00120 
00121    // METHOD=mm:d6887f25-f41a-11df-9959-9236c3ff6ea9
00122    double*const GetdShapeFunctions(ElementShape_E EntityShape, long SFSetNumber, long IPSetNumber, IPCP_E IPCPFlag, unsigned long& NumberSFValues);
00123 
00124    // METHOD=mm:d6887e90-f41a-11df-9959-9236c3ff6ea9
00125    unsigned long*const GetIndices(ElementShape_E EntityShape, unsigned long PolyOrder, unsigned long& NumberIndices);
00126 
00127    // METHOD=mm:1265a48e-aec8-4c06-8709-0520af407809
00128    OneIndexTable<unsigned long>& GetIndices();
00129 
00130    // METHOD=mm:d6887f22-f41a-11df-9959-9236c3ff6ea9
00131    void RunShapeFunctions(ElementShape_E EntityShape, ShapeFunctionsAttributes_S SFunctions, NumericalIntegration& NI, collocationPoints& CP, BuiltInArray<unsigned long>& PolyOrder);
00132 
00133    // METHOD=mm:d6887f2a-f41a-11df-9959-9236c3ff6ea9
00134    void Print(FILE* File, ElementShape_E EntityShape, BuiltInArray<unsigned long>& PolyOrder);
00135 
00136    // METHOD=mm:d6887e8f-f41a-11df-9959-9236c3ff6ea9
00137    void BuildIndices(BuiltInArray<unsigned long>& PolyOrder, ShapeFunctionsAttributes_S SFAttributes);
00138 
00139 
00140  protected:
00141 
00145    // attr=mm:d6887df0-f41a-11df-9959-9236c3ff6ea9
00146    OneIndexTable<unsigned long> TensorIndices;
00147 
00151    // attr=mm:952b10c5-6b59-11e0-9496-ab93ef007735
00152    LineShapeFunctions LineSF;
00153 
00157    // attr=mm:d6887def-f41a-11df-9959-9236c3ff6ea9
00158    SquareShapeFunctions SquareSF;
00159 
00163    // attr=mm:d6887ded-f41a-11df-9959-9236c3ff6ea9
00164    TwoIndexTable<double> SFIP;
00165 
00169    // attr=mm:c489939d-434d-11e0-8507-c0021234afab
00170    TwoIndexTable<double> dSFIP;
00171 
00175    // attr=mm:1ed7d8cf-4054-11e0-9dd5-8e5be057fed3
00176    TwoIndexTable<double> SFCP;
00177 
00181    // attr=mm:27301c35-4054-11e0-9dd5-8e5be057fed3
00182    TwoIndexTable<double> dSFCP;
00183 
00187    // attr=mm:a9036035-4f29-46bf-9bc6-08ba33bb4a4c
00188    BuiltInArray<unsigned long> NumbIntegPoints;
00189 
00193    // attr=mm:6dd04a2a-9d3d-452b-a842-6be19d860fb6
00194    BuiltInArray<unsigned long> NumbCollocPoints;
00195 
00200    // attr=mm:f4845a57-434c-11e0-8507-c0021234afab
00201    unsigned long Pmax;
00202 
00203 
00204  private:
00205 
00206 //#UBLK-BEG-CLASSMEMB mm:d7b9c48c-f41a-11df-9959-9236c3ff6ea9
00207 //#UBLK-END-CLASSMEMB
00208 };
00209 
00210 //#UBLK-BEG-GLOBALH
00211 //#UBLK-END-GLOBALH
00212 
00213 
00214 #endif // _HEXASHAPEFUNCTIONS_H_
 All Classes Files Functions Variables Typedefs Friends Defines