hp2FEM  0.1
include/fegroups/FiniteElementGroup.h
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_
 All Classes Files Functions Variables Typedefs Friends Defines