KASKADE 7 development version
Classes | Namespaces | Typedefs | Functions
boundaryInterpolation.hh File Reference
#include <algorithm>
#include <cmath>
#include <limits>
#include <map>
#include <optional>
#include <set>
#include <vector>
#include <boost/math/constants/constants.hpp>
#include "dune/common/fvector.hh"
#include "dune/grid/common/boundarysegment.hh"
#include "dune/grid/uggrid.hh"
#include "fem/barycentric.hh"
#include "fem/fixdune.hh"
#include "fem/forEach.hh"
#include "fem/gridBasics.hh"
#include "fem/gridcombinatorics.hh"
#include "utilities/detailed_exception.hh"
#include "utilities/power.hh"

Go to the source code of this file.

Classes

class  Kaskade::BoundaryEdge< Index, Vector >
 A class storing a boundary edge consisting of two vertex indices and associated boundary curve tangents. More...
 
struct  Kaskade::Corner< Index, ctype, dim >
 A class storing algebraic and geometric information about a vertex-boundaryface incidence in simplicial grids. More...
 
struct  Kaskade::BoundaryStar< Index, ctype, dim >
 A class storing all the corners (vertex-boundaryface incidences) at a boundary vertex. More...
 
class  Kaskade::GeometricFeatureDetector< Index, ctype, dim >
 The interface for specifying feature edges and feature vertices. More...
 
class  Kaskade::AngleFeatureDetector< Index, ctype, dim >
 Specifying geometric features in terms of angles between face normals and edge tangents. More...
 
class  Kaskade::BoundaryTangents< dim, Index, ctype >
 A class providing information about domain boundary tangent vectors. More...
 
class  Kaskade::BoundaryInterpolationDisplacement< GridView >
 The BoundaryInterpolationDisplacement class provides a Kaskade WeakFunctionView on the displacement from grid to actual domain boundary (which is computed by boundary interpolation). More...
 
class  Kaskade::BoundaryDisplacementByInterpolation< GridView >
 

Namespaces

namespace  Kaskade
 
 
namespace  Kaskade::Simplex
 
namespace  Kaskade::BoundaryInterpolationDetail
 

Typedefs

template<class Scalar , int dim>
using Kaskade::Simplex::Vector = Dune::FieldVector< Scalar, dim >
 
template<class Scalar , int dim>
using Kaskade::Simplex::Barycentric = Dune::FieldVector< Scalar, dim+1 >
 
template<class Scalar , int dim>
using Kaskade::Simplex::VertexPositions = std::array< Vector< Scalar, dim >, dim+1 >
 
template<class Scalar , int dim>
using Kaskade::Simplex::EdgeDirections = std::array< BoundaryEdge< int, Vector< Scalar, dim > >, dim *(dim+1)/2 >
 
template<int dim>
using Kaskade::Simplex::FaceFlags = std::array< bool, dim+1 >
 
template<class GridView >
using Kaskade::GridAngleFeatureDetector = AngleFeatureDetector< typename GridView::IndexSet::IndexType, typename GridView::ctype, GridView::dimension >
 

Functions

template<class Scalar , int dim>
Vector< Scalar, dim > Kaskade::Simplex::cellInterpolation (VertexPositions< Scalar, dim > const &vertices, EdgeDirections< Scalar, dim > const &boundaryEdges, FaceFlags< dim > const &isBoundaryFace, Barycentric< Scalar, dim > b)
 Computes a boundary displacement based on blended cubic rational Bezier curves. More...
 
template<class Scalar , int dim>
Dune::FieldMatrix< Scalar, dim, dim+1 > Kaskade::Simplex::cellInterpolationDerivative (VertexPositions< Scalar, dim > const &vertices, EdgeDirections< Scalar, dim > const &boundaryEdges, FaceFlags< dim > const &isBoundaryFace, Barycentric< Scalar, dim > b)
 
template<class GridView >
std::map< typename GridView::IndexSet::IndexType, BoundaryStar< typename GridView::IndexSet::IndexType, typename GridView::ctype, GridView::dimension > > Kaskade::computeBoundaryStars (GridView const &gv)
 Computes the boundary stars (i.e. corners around a vertex) for all boundary vertices of the grid view. More...
 
template<class Index , class ctype >
void Kaskade::adjustEdgeTangents (BoundaryStar< Index, ctype, 3 > &star, std::map< std::array< Index, 2 >, Dune::FieldVector< ctype, 3 > > &orientedEdges, GeometricFeatureDetector< Index, ctype, 3 > const &features)
 Detects feature edges and adjusts the edge tangent vectors accordingly. More...
 
template<class Index , class ctype >
void Kaskade::adjustEdgeTangents (BoundaryStar< Index, ctype, 2 > &star, std::map< std::array< Index, 2 >, Dune::FieldVector< ctype, 2 > > &orientedEdges, GeometricFeatureDetector< Index, ctype, 2 > const &features)
 
template<class Cell >
auto Kaskade::BoundaryInterpolationDetail::getVertexPositions (Cell const &cell)
 
template<class Cell , class GridView , class Vector , class Index >
auto Kaskade::BoundaryInterpolationDetail::getCellEdges (Cell const &cell, GridView const &gv, std::set< BoundaryEdge< Index, Vector > > const &boundaryEdges, std::array< Vector, Cell::dimension+1 > const &vertexPositions)
 
template<class Cell , class GridView >
auto Kaskade::BoundaryInterpolationDetail::getIsBoundaryFace (Cell const &cell, GridView const &gv)
 
template<class Cell , class GridView , class Vector , class Index >
void Kaskade::BoundaryInterpolationDetail::getChildVertexDisplacements (Cell const &cell, GridView const &gv, std::set< BoundaryEdge< Index, Vector > > const &boundaryEdges, std::vector< Vector > &xs, bool computeDisplacements)
 
template<class GridView >
std::vector< Dune::FieldVector< typename GridView::ctype, GridView::dimension > > Kaskade::interpolateVertexPositions (GridView const &gv, GridBoundaryTangents< GridView > const &tangents, bool computeDisplacements=false)
 Computes a new position for each grid vertex based on boundary interpolation. More...