hp2FEM
0.1
|
00001 #ifndef _FINITEELEMENTGROUP_H_ 00002 #define _FINITEELEMENTGROUP_H_ 00003 // --------------------------------------------- 00004 // company : 00005 // user : 00006 // date : 22 Mar 2015 17:22 00007 // file : FiniteElementGroup.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 : 01 Jun 2011 00019 //-------------------------------------------------------------- 00020 // Change history : 00021 // 01 Jun 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 <cstdio> 00047 #include "ds/BuiltInArray.h" 00048 #include "fegroups/Mapping.h" 00049 #include "fegroups/Mesh.h" 00050 #include "fegroups/GeometricProperties.h" 00051 #include "model/DOFs.h" 00052 #include "material/Material.h" 00053 #include "finiteelement/FiniteElement.h" 00054 00055 00064 class FiniteElementGroup 00065 { 00066 //#UBLK-BEG-CLASSDEF mm:6e8efab5-f98c-11df-8309-d7f93716487b 00067 //#UBLK-END-CLASSDEF 00068 00069 public: 00070 00071 // METHOD=mm:9383ecaf-fe54-11df-838c-f19ab1af6b77 00072 FiniteElementGroup(); 00073 00074 // METHOD=mm:6cc5306a-f98c-11df-8309-d7f93716487b 00075 FiniteElementGroup(unsigned long FEGroupNumber, unsigned long NumberElements, unsigned long InitialElemNumber, unsigned long FinalElemNumber); 00076 00077 // METHOD=mm:eea44951-02f8-11e0-89cb-b0660132333d 00078 FiniteElementGroup(FiniteElementGroup& Instance); 00079 00080 // METHOD=mm:6cc530b2-f98c-11df-8309-d7f93716487b 00081 void Free(); 00082 00083 // METHOD=mm:8a1615fa-5952-11e0-8e1d-d62c684a44a5 00084 unsigned long* const GetCardinalityExtraGeneralDOFs(unsigned long& NumberDofs); 00085 00086 // METHOD=mm:f0e6ee2c-5951-11e0-8e1d-d62c684a44a5 00087 unsigned long* const GetCardinalityExtraGradientDOFs(unsigned long& NumberDofs); 00088 00089 // METHOD=mm:43c0b8bc-5952-11e0-8e1d-d62c684a44a5 00090 unsigned long* const GetCardinalityExtraStressDOFs(unsigned long& NumberDofs); 00091 00092 // METHOD=mm:d6ad0a8c-5951-11e0-8e1d-d62c684a44a5 00093 unsigned long* const GetCardinalityMixedDOFs(unsigned long& NumberDofs); 00094 00095 // METHOD=mm:6cc5308a-f98c-11df-8309-d7f93716487b 00096 unsigned long* const GetCardinalityPrimaryDOFs(unsigned long& NumberDofs); 00097 00098 // METHOD=mm:a6fdf8a0-5951-11e0-8e1d-d62c684a44a5 00099 unsigned long* const GetCardinalitySecondaryGradientDOFs(unsigned long& NumberDofs); 00100 00101 // METHOD=mm:15db5aec-5952-11e0-8e1d-d62c684a44a5 00102 unsigned long* const GetCardinalitySecondaryStressDOFs(unsigned long& NumberDofs); 00103 00104 // METHOD=mm:6cc53073-f98c-11df-8309-d7f93716487b 00105 unsigned long GetFinalElement(); 00106 00107 // METHOD=mm:3d639e1f-be41-4d9f-ab67-8e56606f59f7 00108 GeometricProperties& GetGeometricProperties(); 00109 00110 // METHOD=mm:6cc53072-f98c-11df-8309-d7f93716487b 00111 unsigned long GetInitialElement(); 00112 00113 // METHOD=mm:c8a9246a-3ea3-4134-9ab7-fa8947e637d6 00114 Mapping& GetMapping(); 00115 00116 // METHOD=mm:028d0cd1-df32-4e3d-a9b5-dab44f74f533 00117 MappingType_E GetMappingType(); 00118 00119 // METHOD=mm:141137fa-721f-4b57-8e6b-7ab537bd4a31 00120 unsigned long GetMaxMappingOrder(); 00121 00122 // METHOD=mm:05bff7b6-258d-44eb-95da-3b78db07caeb 00123 unsigned long GetMaxSolutionOrder(); 00124 00125 // METHOD=mm:005e6017-3acd-11e0-87c1-fb85dddc7efb 00126 Mesh& GetMesh(MeshID_E MeshID); 00127 00128 // METHOD=mm:4eeebeb7-8bcb-11e0-93aa-c146ba6a39e4 00129 unsigned long GetNumberElements(); 00130 00131 // METHOD=mm:7f0e9e93-5951-11e0-8e1d-d62c684a44a5 00132 unsigned long GetNumberExtraGeneralDOFs(); 00133 00134 // METHOD=mm:4078dbb7-5951-11e0-8e1d-d62c684a44a5 00135 unsigned long GetNumberExtraGradientDOFs(); 00136 00137 // METHOD=mm:5e464e9f-5951-11e0-8e1d-d62c684a44a5 00138 unsigned long GetNumberExtraStressDOFs(); 00139 00140 // METHOD=mm:c8aabdad-5950-11e0-8e1d-d62c684a44a5 00141 unsigned long GetNumberMixedDOFs(); 00142 00143 // METHOD=mm:6cc5308b-f98c-11df-8309-d7f93716487b 00144 unsigned long GetNumberPrimaryDOFs(); 00145 00146 // METHOD=mm:027bcc6b-5951-11e0-8e1d-d62c684a44a5 00147 unsigned long GetNumberSecondaryGradientDOFs(); 00148 00149 // METHOD=mm:20493549-5951-11e0-8e1d-d62c684a44a5 00150 unsigned long GetNumberSecondaryStressDOFs(); 00151 00152 // METHOD=mm:294dcdb8-3dee-4502-9c56-a8b254841df4 00153 void NewMaterial(FILE* DEFFile, MaterialType_E MaterialType); 00154 00155 // METHOD=mm:17efe363-594f-11e0-8e1d-d62c684a44a5 00156 operator FiniteElement&(); 00157 00158 // METHOD=mm:98aee52b-594f-11e0-8e1d-d62c684a44a5 00159 operator GeometricProperties&(); 00160 00161 // METHOD=mm:44a41dc4-594f-11e0-8e1d-d62c684a44a5 00162 operator Mapping&(); 00163 00164 // METHOD=mm:643b2331-594f-11e0-8e1d-d62c684a44a5 00165 operator Material&(); 00166 00167 // METHOD=mm:7ddc7e43-594f-11e0-8e1d-d62c684a44a5 00168 operator Mesh&(); 00169 00170 // METHOD=mm:f2fb82e8-594e-11e0-8e1d-d62c684a44a5 00171 FiniteElementGroup& operator=(FiniteElementGroup& Instance); 00172 00173 // METHOD=mm:6cc530b1-f98c-11df-8309-d7f93716487b 00174 void Print(FILE* File); 00175 00176 // METHOD=mm:6cc530af-f98c-11df-8309-d7f93716487b 00177 void Read(FILE* FEMFile, FILE* DEFFile, DOFs& DOFsParam, unsigned long PostProcessOrder, unsigned long Dimension, unsigned long TheoSolIntegOrder = 0); 00178 00179 // METHOD=mm:0f9bb4ec-2ef0-11e0-84ed-a641fe67a57a 00180 void Restore(FILE* File); 00181 00182 // METHOD=mm:f85cd071-2eef-11e0-84ed-a641fe67a57a 00183 void Save(FILE* File); 00184 00185 // METHOD=mm:d3178c76-594d-11e0-8e1d-d62c684a44a5 00186 void SetFEGroupAttributes(unsigned long FEGroupNumber, unsigned long NumberElements, unsigned long InitialElemNumber, unsigned long FinalElemNumber); 00187 00188 // METHOD=mm:45dd8a14-042e-4873-9115-56e7ab0fa686 00189 void SetMesh(MeshID_E MeshID, Mesh ObjMesh); 00190 00191 // METHOD=mm:81ba2fb5-ff1d-11df-8854-e1ecd2ac2f98 00192 ~FiniteElementGroup(); 00193 00194 00195 protected: 00196 00200 // attr=mm:6cc53061-f98c-11df-8309-d7f93716487b 00201 BuiltInArray<unsigned long> CardExtGenDOFs; 00202 00206 // attr=mm:6cc5305f-f98c-11df-8309-d7f93716487b 00207 BuiltInArray<unsigned long> CardExtGradDOFs; 00208 00212 // attr=mm:6cc53060-f98c-11df-8309-d7f93716487b 00213 BuiltInArray<unsigned long> CardExtStressDOFs; 00214 00218 // attr=mm:6cc53058-f98c-11df-8309-d7f93716487b 00219 BuiltInArray<unsigned long> CardMixedDOFs; 00220 00224 // attr=mm:6cc53057-f98c-11df-8309-d7f93716487b 00225 BuiltInArray<unsigned long> CardPrimDOFs; 00226 00230 // attr=mm:6cc53059-f98c-11df-8309-d7f93716487b 00231 BuiltInArray<unsigned long> CardSecGradDOFs; 00232 00236 // attr=mm:6cc5305e-f98c-11df-8309-d7f93716487b 00237 BuiltInArray<unsigned long> CardSecStressDOFs; 00238 00244 // attr=mm:6cc5302c-f98c-11df-8309-d7f93716487b 00245 FiniteElement FE; 00246 00250 // attr=mm:6cc53031-f98c-11df-8309-d7f93716487b 00251 unsigned long FinalElem; 00252 00256 // attr=mm:fc4d2ddf-3b9b-11e0-8f62-9cadaf298b92 00257 GeometricProperties GeoProp; 00258 00262 // attr=mm:6cc5302e-f98c-11df-8309-d7f93716487b 00263 unsigned long GrpNmbr; 00264 00268 // attr=mm:6cc53030-f98c-11df-8309-d7f93716487b 00269 unsigned long InitialElem; 00270 00276 // attr=mm:46151d0f-3ac1-11e0-87c1-fb85dddc7efb 00277 Mesh InpMesh; 00278 00282 // attr=mm:db042c0d-3a99-11e0-87c1-fb85dddc7efb 00283 Mapping Map; 00284 00288 // attr=mm:bc5c1d86-d138-4790-87e1-b4b965c7209a 00289 Mesh* MapMesh; 00290 00294 // attr=mm:f75a9074-9572-46d1-8c93-3a323f6959fc 00295 MappingType_E MapMeshType; 00296 00302 // attr=mm:e5bece7d-3a99-11e0-87c1-fb85dddc7efb 00303 Material* Mat; 00304 00308 // attr=mm:6cc5302f-f98c-11df-8309-d7f93716487b 00309 unsigned long NmbrElements; 00310 00314 // attr=mm:d766eb7e-88c4-488d-9058-be8acafb567f 00315 Mesh* PostProcMesh; 00316 00322 // attr=mm:54fbd0f7-3ac1-11e0-87c1-fb85dddc7efb 00323 Mesh SolMesh; 00324 00325 00326 private: 00327 00328 //#UBLK-BEG-CLASSMEMB mm:6e8efab5-f98c-11df-8309-d7f93716487b 00329 //#UBLK-END-CLASSMEMB 00330 }; 00331 00332 //#UBLK-BEG-GLOBALH 00333 //#UBLK-END-GLOBALH 00334 00335 00336 #endif // _FINITEELEMENTGROUP_H_