$extrastylesheet
00001 // The libMesh Finite Element Library. 00002 // Copyright (C) 2002-2014 Benjamin S. Kirk, John W. Peterson, Roy H. Stogner 00003 00004 // This library is free software; you can redistribute it and/or 00005 // modify it under the terms of the GNU Lesser General Public 00006 // License as published by the Free Software Foundation; either 00007 // version 2.1 of the License, or (at your option) any later version. 00008 00009 // This library is distributed in the hope that it will be useful, 00010 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00011 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00012 // Lesser General Public License for more details. 00013 00014 // You should have received a copy of the GNU Lesser General Public 00015 // License along with this library; if not, write to the Free Software 00016 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00017 00018 #ifndef LIBMESH_INF_ELEM_BUILDER_H 00019 #define LIBMESH_INF_ELEM_BUILDER_H 00020 00021 00022 #include "libmesh/libmesh_config.h" 00023 00024 00025 #ifdef LIBMESH_ENABLE_INFINITE_ELEMENTS 00026 00027 // Local includes 00028 #include "libmesh/id_types.h" 00029 #include "libmesh/point.h" 00030 00031 // C++ includes 00032 #include <cstddef> 00033 #include <set> 00034 #include <utility> 00035 #include <vector> 00036 00037 namespace libMesh 00038 { 00039 00040 // Forward Declarations 00041 class MeshBase; 00042 class Node; 00043 00052 class InfElemBuilder 00053 { 00054 public: 00058 explicit 00059 InfElemBuilder(MeshBase& mesh) : _mesh(mesh) {} 00060 00064 typedef std::pair<bool, double> InfElemOriginValue; 00065 00075 const Point build_inf_elem (const bool be_verbose = false); 00076 00099 const Point build_inf_elem (const InfElemOriginValue& origin_x, 00100 const InfElemOriginValue& origin_y, 00101 const InfElemOriginValue& origin_z, 00102 const bool x_sym = false, 00103 const bool y_sym = false, 00104 const bool z_sym = false, 00105 const bool be_verbose = false, 00106 std::vector<const Node*>* inner_boundary_nodes = NULL); 00107 00108 00109 00110 private: 00115 void build_inf_elem (const Point& origin, 00116 const bool x_sym = false, 00117 const bool y_sym = false, 00118 const bool z_sym = false, 00119 const bool be_verbose = false, 00120 std::set<std::pair<dof_id_type, 00121 unsigned int> >* inner_faces = NULL); 00126 MeshBase& _mesh; 00127 }; 00128 00129 00130 } // namespace libMesh 00131 00132 #endif // LIBMESH_ENABLE_INFINITE_ELEMENTS 00133 #endif // LIBMESH_INF_ELEM_BUILDER_H