00001 /*************************************************************************** 00002 femaxmesh.h - description 00003 ------------------- 00004 begin : Fri Dec 19 2003 00005 copyright : (C) 2003 by Roman Geus 00006 email : roman.geus@psi.ch 00007 ***************************************************************************/ 00008 00009 /*************************************************************************** 00010 * * 00011 * This program is free software; you can redistribute it and/or modify * 00012 * it under the terms of the GNU General Public License as published by * 00013 * the Free Software Foundation; either version 2 of the License, or * 00014 * (at your option) any later version. * 00015 * * 00016 ***************************************************************************/ 00017 00018 #ifndef FEMAXMESH_H 00019 #define FEMAXMESH_H 00020 00021 #include "Epetra_CrsMatrix.h" 00022 #include "nedelecmesh.h" 00023 #include "lagrangemesh.h" 00024 #include "tetmesh/tetmesh.h" 00025 #include "tetmesh/paralleltetmesh.h" 00026 00031 class FemaxMesh { 00032 public: 00035 FemaxMesh(mesh::TetMesh& mesh, int order, int sym_plane_config); 00036 ~FemaxMesh(); 00037 00038 private: 00041 FemaxMesh(const FemaxMesh&); 00042 00045 FemaxMesh& operator=(const FemaxMesh&); 00046 00047 public: 00049 void constructY(Epetra_FECrsMatrix& Y,Epetra_Map& domain_map, Epetra_Map& range_map); 00051 void constructY_transp(Epetra_FECrsMatrix& Y_transp, Epetra_Map& domain_map, Epetra_Map& range_map); 00053 LagrangeMesh& get_lagrange_mesh() const 00054 { return *mesh_lagrange_; } 00056 NedelecMesh& get_nedelec_mesh() const 00057 { return *mesh_nedelec_; } 00059 mesh::TetMesh& get_tet_mesh() const 00060 { return mesh_; } 00061 00062 private: 00064 mesh::TetMesh& mesh_; 00065 mesh::ParallelTetMesh* _pmesh; 00066 00068 int order_; 00070 NedelecMesh* mesh_nedelec_; 00072 LagrangeMesh* mesh_lagrange_; 00073 }; 00074 00075 #endif