hp2FEM  0.1
include/interpolation/shapefunctions/SquareShapeFunctions.h
00001 #ifndef _SQUARESHAPEFUNCTIONS_H_
00002 #define _SQUARESHAPEFUNCTIONS_H_
00003 // ---------------------------------------------
00004 // company   : 
00005 // user      : 
00006 // date      : 22 Mar 2015 17:24
00007 // file      : SquareShapeFunctions.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     : 15 Abr 2011
00019 //--------------------------------------------------------------
00020 // Change history : 
00021 //   15 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/collocationpoints/SquareCollocationPoints.h"
00057 #include "interpolation/numericalintegration/NumericalIntegration.h"
00058 #include "interpolation/numericalintegration/SquareNumericalIntegration.h"
00059 #include "interpolation/shapefunctions/LineShapeFunctions.h"
00060 
00061 
00062 using namespace std;
00063 
00064 
00072 class SquareShapeFunctions
00073 {
00074 //#UBLK-BEG-CLASSDEF mm:80ecc707-f3f3-11df-9959-9236c3ff6ea9
00075 //#UBLK-END-CLASSDEF
00076 
00077  public:
00078 
00079    // METHOD=mm:3fb8ccb1-f414-11df-9959-9236c3ff6ea9
00080    SquareShapeFunctions();
00081 
00082    // METHOD=mm:b7688fd7-4345-11e0-8507-c0021234afab
00083    SquareShapeFunctions(unsigned long MaxPolyOrder);
00084 
00085    // METHOD=mm:46bc82a7-433b-11e0-8507-c0021234afab
00086    SquareShapeFunctions(SquareShapeFunctions& Instance);
00087 
00088    // METHOD=mm:2a08db77-1e9e-11e0-9165-9fcf68b76eb1
00089    ~SquareShapeFunctions();
00090 
00091    // METHOD=mm:8f436b21-4372-11e0-8507-c0021234afab
00092    SquareShapeFunctions& operator=(SquareShapeFunctions& Instance);
00093 
00094    // METHOD=mm:b7b87405-434c-11e0-8507-c0021234afab
00095    void SetMaxPolyOrder(unsigned long MaxPolyOrder);
00096 
00097    // METHOD=mm:035b38a9-cdbb-11e0-993d-c2f620367c46
00098    LineShapeFunctions& GetLineShapeFunctions();
00099 
00100    // METHOD=mm:0ebe32b7-434d-11e0-8507-c0021234afab
00101    unsigned long GetMaxPolyOrder();
00102 
00103    // METHOD=mm:6cbb4d09-7814-11e0-81d8-f37e89126ddd
00104    long GetShapeFunctionSetNumber(unsigned long PolyOrder);
00105 
00106    // METHOD=mm:5d070dbb-daec-4ba4-ac4f-ace3176f65ad
00107    void GetShapeFunctions(unsigned long PolyOrder, long SFSetNumber, long IPSetNumber, IPCP_E IPCPFlag, unsigned long* TensorIndicesNI, unsigned long NumberIndicesNI, double* ShapeFunctions);
00108 
00109    // METHOD=mm:61558fe2-f3f3-11df-9959-9236c3ff6ea9
00110    double*const GetShapeFunctions(ElementShape_E EntityShape, long SFSetNumber, long IPSetNumber, IPCP_E IPCPFlag, unsigned long& NumberSFValues);
00111 
00112    // METHOD=mm:e2a11f2d-1295-45d7-a207-2ae60aec7f15
00113    double*const GetShapeFunctions(ElementShape_E EntityShape, long SFSetNumber, long IPSetNumber, IPCP_E IPCPFlag, unsigned long& TotalNumberSFValues, unsigned long& NumberSFValues, unsigned long& NumberPoints);
00114 
00115    // METHOD=mm:6dcbe2b4-67b3-11e0-8598-c81883b28fcd
00116    double*const GetdShapeFunctions(ElementShape_E EntityShape, long SFSetNumber, long IPSetNumber, IPCP_E IPCPFlag, unsigned long& NumberSFValues);
00117 
00118    // METHOD=mm:61558f45-f3f3-11df-9959-9236c3ff6ea9
00119    unsigned long*const GetIndices(unsigned long PolyOrder, unsigned long& NumberIndices);
00120 
00121    // METHOD=mm:c3527dc3-baf7-49e4-b6e4-540d939e8682
00122    OneIndexTable<unsigned long>& GetIndices();
00123 
00124    // METHOD=mm:61558fe1-f3f3-11df-9959-9236c3ff6ea9
00125    void RunShapeFunctions(ElementShape_E EntityShape, ShapeFunctionsAttributes_S SFunctions, NumericalIntegration& NI, collocationPoints& CP, BuiltInArray<unsigned long>& PolyOrder);
00126 
00127    // METHOD=mm:ca2270a8-6230-49c9-ba84-f3d10fd10125
00128    void RunShapeFunctions(ElementShape_E EntityShape, ShapeFunctionsAttributes_S SFunctions, NumericalIntegration& NI, collocationPoints& CP, SquareNumericalIntegration& HexaSquareNI, SquareCollocationPoints& HexaSquareCP, BuiltInArray<unsigned long>& PolyOrder);
00129 
00130    // METHOD=mm:61559074-f3f3-11df-9959-9236c3ff6ea9
00131    void Print(FILE* File, ElementShape_E ElementShape, BuiltInArray<unsigned long>& PolyOrder);
00132 
00133    // METHOD=mm:61558f44-f3f3-11df-9959-9236c3ff6ea9
00134    void BuildIndices(BuiltInArray<unsigned long>& PolyOrder, ShapeFunctionsAttributes_S& SFAttributes);
00135 
00136 
00137  protected:
00138 
00142    // attr=mm:61558eb0-f3f3-11df-9959-9236c3ff6ea9
00143    OneIndexTable<unsigned long> TensorIndices;
00144 
00148    // attr=mm:61558eaf-f3f3-11df-9959-9236c3ff6ea9
00149    LineShapeFunctions LineSF;
00150 
00154    // attr=mm:61558ead-f3f3-11df-9959-9236c3ff6ea9
00155    TwoIndexTable<double> SFIP;
00156 
00160    // attr=mm:61558eae-f3f3-11df-9959-9236c3ff6ea9
00161    TwoIndexTable<double> dSFIP;
00162 
00166    // attr=mm:fdc1b9bf-4050-11e0-9dd5-8e5be057fed3
00167    TwoIndexTable<double> SFCP;
00168 
00172    // attr=mm:1336d6e5-4051-11e0-9dd5-8e5be057fed3
00173    TwoIndexTable<double> dSFCP;
00174 
00178    // attr=mm:9d7a8351-9490-47f6-b6c5-c3a1600e45b3
00179    BuiltInArray<unsigned long> NumbIntegPoints;
00180 
00184    // attr=mm:33f3ce6a-cff4-455a-871b-027ec467427e
00185    BuiltInArray<unsigned long> NumbCollocPoints;
00186 
00191    // attr=mm:e8988641-434c-11e0-8507-c0021234afab
00192    unsigned long Pmax;
00193 
00194 
00195  private:
00196 
00197 //#UBLK-BEG-CLASSMEMB mm:80ecc707-f3f3-11df-9959-9236c3ff6ea9
00198 //#UBLK-END-CLASSMEMB
00199 };
00200 
00201 //#UBLK-BEG-GLOBALH
00202 //*** Removed methods: 19 Abr 2011 11:21
00203 //---
00204 //uuid=mm:61558fe4-f3f3-11df-9959-9236c3ff6ea9
00205 //   double * const GetdShapeFunctions(ElementShape_E Shape, unsigned short PolyOrder, unsigned short IntegrandOrder, IPCP_E IPCPFlag);
00206 
00207 //#UBLK-END-GLOBALH
00208 
00209 
00210 #endif // _SQUARESHAPEFUNCTIONS_H_
 All Classes Files Functions Variables Typedefs Friends Defines