hp2FEM
0.1
|
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_