$extrastylesheet
inf_elem_builder.h
Go to the documentation of this file.
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