hp2FEM  0.1
include/meshtopology/HighOrder.h
00001 #ifndef _HIGHORDER_H_
00002 #define _HIGHORDER_H_
00003 // ---------------------------------------------
00004 // company   : 
00005 // user      : 
00006 // date      : 22 Mar 2015 17:25
00007 // file      : HighOrder.h
00008 // markers   : Full
00009 // language  : C++
00010 // generator : Metamill 6.0
00011 // ---------------------------------------------
00012 
00013 //#UBLK-BEG-HEADERH
00014 //#UBLK-END-HEADERH
00015 
00016 /*=================================================================================================
00017 =                                                                                                 =
00018 =       Copyright 2010-2015  Marco Lucio Bittencourt / Fabiano Fernandes Bargos                       =
00019 =                        Gilberto Luis Valente / Jorge Luis Suzuki / Allan Patrick Cordeiro Dias  =
00020 =                                                                                                 =
00021 =       Licensed under the Apache License, Version 2.0 (the "License");                               =
00022 =       you may not use this file except in compliance with the License.                              =
00023 =       You may obtain a copy of the License at                                                       =
00024 =                                                                                                 =
00025 =               http://www.apache.org/licenses/LICENSE-2.0                                                =
00026 =                                                                                                 =
00027 =       Unless required by applicable law or agreed to in writing, software                           =
00028 =       distributed under the License is distributed on an "AS IS" BASIS,                             =
00029 =       WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                      =
00030 =       See the License for the specific language governing permissions and                           =
00031 =       limitations under the License.                                                                =
00032 =                                                                                                 =
00033 =================================================================================================*/
00034 
00035 
00036 #include <cstdio>
00037 #include "ds/Vector.h"
00038 #include "enumerations/MeshID_E.h"
00039 #include "fegroups/FEGroups.h"
00040 #include "fegroups/Mapping.h"
00041 #include "meshtopology/ElementElementTable.h"
00042 #include "nurbs/BoundaryData.h"
00043 #include "geometrymesh/GeometryMesh.h"
00044 
00045 
00053 class HighOrder
00054 {
00055 //#UBLK-BEG-CLASSDEF mm:9ebbc6d5-2faf-11e0-910c-c6aeb3c5d33e
00056 //#UBLK-END-CLASSDEF
00057 
00058  public:
00059 
00060    // METHOD=mm:60320423-2fc7-11e0-910c-c6aeb3c5d33e
00061    HighOrder();
00062 
00063    // METHOD=mm:8567be15-5e46-11e0-8e9e-d80bb329630b
00064    HighOrder(HighOrder& Instance);
00065 
00066    // METHOD=mm:7da811d9-5e46-11e0-8e9e-d80bb329630b
00067    ~HighOrder();
00068 
00069    // METHOD=mm:aa5c223e-5e46-11e0-8e9e-d80bb329630b
00070    HighOrder& operator=(HighOrder& Instance);
00071 
00072    // METHOD=mm:f82570db-5e47-11e0-8e9e-d80bb329630b
00073    unsigned long GetNumberVertexNodes();
00074 
00075    // METHOD=mm:10957bbb-5e48-11e0-8e9e-d80bb329630b
00076    unsigned long GetNumberEdgeNodes();
00077 
00078    // METHOD=mm:1ab7788d-5e48-11e0-8e9e-d80bb329630b
00079    unsigned long GetNumberFaceNodes();
00080 
00081    // METHOD=mm:2440ef65-5e48-11e0-8e9e-d80bb329630b
00082    unsigned long GetNumberBodyNodes();
00083 
00084    // METHOD=mm:42a6d25d-5e48-11e0-8e9e-d80bb329630b
00085    unsigned long GetNumberVertexDOFs();
00086 
00087    // METHOD=mm:52bec1e1-5e48-11e0-8e9e-d80bb329630b
00088    unsigned long GetNumberEdgeDOFs();
00089 
00090    // METHOD=mm:5eaa7d1f-5e48-11e0-8e9e-d80bb329630b
00091    unsigned long GetNumberFaceDOFs();
00092 
00093    // METHOD=mm:6833f22b-5e48-11e0-8e9e-d80bb329630b
00094    unsigned long GetNumberBodyDOFs();
00095 
00096    // METHOD=mm:ef66b09f-c496-4378-a284-866d3ba31eed
00097    unsigned long GetGlobalNumNodes();
00098 
00099    // METHOD=mm:6704b94f-5e4c-11e0-8e9e-d80bb329630b
00100    void Print(FILE* File, char* Message = "");
00101 
00102    // METHOD=mm:ee9e0119-5e4b-11e0-8e9e-d80bb329630b
00103    void Save(char* Tabname, int Version, char* Filename);
00104 
00105    // METHOD=mm:36bd161f-5e4c-11e0-8e9e-d80bb329630b
00106    void Save(FILE* File);
00107 
00108    // METHOD=mm:beef06b1-5e4b-11e0-8e9e-d80bb329630b
00109    void Restore(char* Tabname, int Version, char* Filename);
00110 
00111    // METHOD=mm:1c833153-5e4c-11e0-8e9e-d80bb329630b
00112    void Restore(FILE* File);
00113 
00114    // METHOD=mm:505e73ed-5e4c-11e0-8e9e-d80bb329630b
00115    void Free();
00116 
00117    // METHOD=mm:3695e65c-ddc5-419a-9de0-e9992a780368
00118    void BuildHighOrder(FEGroups& Groups, BoundaryData& BData, GeometryMesh& GeoMsh, ElementElementTable& ElemElemTab, unsigned long NumInputNodes, unsigned long Dimension);
00119 
00120    // METHOD=mm:d083c0de-5e4a-11e0-8e9e-d80bb329630b
00121    void BuildHighOrderNodes(FEGroups& Groups, BoundaryData& BData, GeometryMesh& GeoMsh, ElementElementTable& ElemElemTab, MeshID_E MeshID);
00122 
00123    // METHOD=mm:a0aa4f44-ccf6-4c45-b84e-17d366379c84
00124    void BuildHighOrderNodes1DMatrices(FEGroups& Groups, ElementElementTable& ElemElemTab, MeshID_E MeshID);
00125 
00126 
00127  protected:
00128 
00129    // METHOD=mm:6b245db9-5256-46c0-9265-620e216433dc
00130    void pUniformMatching2DEdgeNodes(FEGroups& Groups, ElementElementTable& ElemElemTab, MeshID_E MeshID);
00131 
00132    // METHOD=mm:1137b693-2fc6-11e0-910c-c6aeb3c5d33e
00133    void pUniformMatching3DEdgeNodes(FEGroups& Groups, ElementElementTable& ElemElemTab, MeshID_E MeshID);
00134 
00135    // METHOD=mm:19ac3169-ba3d-4a7d-bd91-d71a2e767040
00136    void pUniformMatching3DFaceNodes(FEGroups& Groups, ElementElementTable& ElemElemTab, MeshID_E MeshID);
00137 
00138    // METHOD=mm:cfaeee1c-be8d-46d1-bea2-d8d124da1fd8
00139    void pUniformNumberingInternalNodes(FEGroups& Groups, MeshID_E MeshID);
00140 
00141 
00145    // attr=mm:0a52ce3f-5e47-11e0-8e9e-d80bb329630b
00146    unsigned long TotalNumVertexNodes;
00147 
00151    // attr=mm:2d7d8945-5e47-11e0-8e9e-d80bb329630b
00152    unsigned long TotalNumEdgeNodes;
00153 
00157    // attr=mm:40906377-5e47-11e0-8e9e-d80bb329630b
00158    unsigned long TotalNumFaceNodes;
00159 
00163    // attr=mm:498137b3-5e47-11e0-8e9e-d80bb329630b
00164    unsigned long TotalNumBodyNodes;
00165 
00169    // attr=mm:63225cd3-5e47-11e0-8e9e-d80bb329630b
00170    unsigned long TotalNumVertexDOFs;
00171 
00175    // attr=mm:63bb17cf-5e47-11e0-8e9e-d80bb329630b
00176    unsigned long TotalNumEdgeDOFs;
00177 
00181    // attr=mm:64ec2c51-5e47-11e0-8e9e-d80bb329630b
00182    unsigned long TotalNumFaceDOFs;
00183 
00187    // attr=mm:6584d81b-5e47-11e0-8e9e-d80bb329630b
00188    unsigned long TotalNumBodyDOFs;
00189 
00193    // attr=mm:322eec20-d971-46d4-9523-e9af8b665cc7
00194    unsigned long GlobalNumNodes;
00195 
00199    // attr=mm:64e833bd-190e-4981-aab9-e9d33d58a1dc
00200    unsigned long Dim;
00201 
00202 
00203  private:
00204 
00205 //#UBLK-BEG-CLASSMEMB mm:9ebbc6d5-2faf-11e0-910c-c6aeb3c5d33e
00206 //#UBLK-END-CLASSMEMB
00207 };
00208 
00209 //#UBLK-BEG-GLOBALH
00210 //*** Removed methods: 06 Apr 2012 23:00
00211 //---
00212 //uuid=mm:d241ce36-7cf5-431d-96b8-5fc46af98429
00213 //   unsigned long GetGlobalNumNodes();
00214 
00215 //#UBLK-END-GLOBALH
00216 
00217 
00218 #endif // _HIGHORDER_H_
 All Classes Files Functions Variables Typedefs Friends Defines