Loading...
Searching...
No Matches
LocalMeshCoarsening.h
// Copyright (C) 2006 Johan Hoffman
//
// This file is part of DOLFIN.
//
// DOLFIN is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// DOLFIN is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with DOLFIN. If not, see <http://www.gnu.org/licenses/>.
//
// First added: 2006-11-01
#ifndef __LOCAL_MESH_COARSENING_H
#define __LOCAL_MESH_COARSENING_H
#include <vector>
namespace dolfin
{
class Mesh;
class Edge;
class Vertex;
class MeshEditor;
template <typename T> class MeshFunction;
class LocalMeshCoarsening
{
public:
static void coarsen_mesh_by_edge_collapse(Mesh& mesh,
MeshFunction<bool>& cell_marker,
bool coarsen_boundary = false);
private:
static bool coarsen_mesh_ok(Mesh& mesh, std::size_t edge_index, std::size_t* edge_vertex,
MeshFunction<bool>& vertex_forbidden);
static void collapse_edge(Mesh& mesh, Edge& edge,
Vertex& vertex_to_remove,
MeshFunction<bool>& cell_to_remove,
std::vector<int>& old2new_vertex,
std::vector<int>& old2new_cell,
MeshEditor& editor,
std::size_t& current_cell);
static bool coarsen_cell(Mesh& mesh, Mesh& coarse_mesh,
int cell_id,
std::vector<int>& old2new_vertex,
std::vector<int>& old2new_cell,
bool coarsen_boundary = false);
};
}
#endif
dolfin::Edge
An Edge is a MeshEntity of topological dimension 1.
Definition Edge.h:40
dolfin::LocalMeshCoarsening
This class implements local mesh coarsening for different mesh types.
Definition LocalMeshCoarsening.h:37
dolfin::LocalMeshCoarsening::coarsen_mesh_by_edge_collapse
static void coarsen_mesh_by_edge_collapse(Mesh &mesh, MeshFunction< bool > &cell_marker, bool coarsen_boundary=false)
Coarsen simplicial mesh locally by edge collapse.
Definition LocalMeshCoarsening.cpp:45
dolfin::MeshEditor
Definition MeshEditor.h:37
dolfin::MeshFunction
Definition MeshFunction.h:58
dolfin::Mesh
Definition Mesh.h:84
dolfin::Vertex
A Vertex is a MeshEntity of topological dimension 0.
Definition Vertex.h:38
dolfin
Definition adapt.h:30