KASKADE 7 development version
Classes | Namespaces | Functions
contactConstraints.hh File Reference
#include <algorithm>
#include <limits>
#include <mutex>
#include <optional>
#include <dune/common/fvector.hh>
#include "dune/istl/bvector.hh"
#include "fem/boundaryLocator.hh"
#include "fem/gridBasics.hh"
#include "fem/quadrature.hh"
#include "linalg/threadedMatrix.hh"
#include "utilities/bezier.hh"
#include "utilities/threading.hh"

Go to the source code of this file.

Classes

class  Kaskade::Mortar< Scalar, dim >
 Abstract base class for computation of constraints from constraint samples. More...
 
class  Kaskade::DiracMortar< Scalar, dim >
 Defines a constraint formulation where each sample is taken as a single constraint of its own. More...
 
class  Kaskade::BezierMortar< Scalar, dim >
 Defines a constraint formulation where samples are weighted by Bezier test functions. More...
 
struct  Kaskade::MortarB
 Defines the sample-based contact constraint formulation. More...
 

Namespaces

namespace  Kaskade
 
 

Functions

template<class Space , class DisplacedFace , class Displacement >
auto Kaskade::getContactConstraint (Space const &space, BoundaryLocator< typename Space::GridView, Displacement > const &boundaryLocator, DisplacedFace const &face, Dune::FieldVector< typename Space::GridView::ctype, Space::GridView::Grid::dimension-1 > const &xi, double overlap)
 Computes a single multibody contact point constraint. More...
 
template<class Space1 , class DisplacedFace1 , class Displacement1 , int dimw1 = Space1::GridView::Grid::dimension, class Space2 , class Displacement2 , int dimw2 = Space2::GridView::Grid::dimension>
auto Kaskade::getContactConstraint (Space1 const &space1, BoundaryLocator< typename Space1::GridView, Displacement1, Space1::GridView::Grid::dimension > const &boundaryLocator1, Space2 const &space2, BoundaryLocator< typename Space2::GridView, Displacement2, Space2::GridView::Grid::dimension > const &boundaryLocator2, DisplacedFace1 const &face, Dune::FieldVector< typename Space1::GridView::ctype, Space1::GridView::Grid::dimension-1 > const &xi, double overlap, int which=0)
 Computes a single multibody contact point constraint. More...
 
template<int dim>
std::vector< Dune::QuadraturePoint< double, dim > > Kaskade::constraintPositions (Dune::GeometryType gt, int nodesPerEdge)
 Computes contact sample points on faces. More...
 
template<class Space , class Displacement >
auto Kaskade::getContactConstraints (Space const &space, BoundaryLocator< typename Space::GridView, Displacement > const &boundaryLocator, int pointsPerEdge, double overlap=std::numeric_limits< double >::lowest(), Mortar< typename Space::Grid::ctype, Space::Grid::dimension > const &mortar=ContactConstraintsDetail::defaultMortar< typename Space::Grid::ctype, Space::Grid::dimension >())
 Computes a complete set of pointwise multibody contact constraints. More...
 
template<class Space1 , class Displacement1 , class Space2 , class Displacement2 , bool flattened = false>
auto Kaskade::getContactConstraints (Space1 const &space1, BoundaryLocator< typename Space1::GridView, Displacement1, Space1::GridView::Grid::dimension > const &boundaryLocator1, Space2 const &space2, BoundaryLocator< typename Space2::GridView, Displacement2, Space1::GridView::Grid::dimension > const &boundaryLocator2, int order, double overlap=std::numeric_limits< double >::lowest(), bool symmetric=true)
 Computes a complete pointwise twobody contact constraint. More...
 
template<class GridView , class Displacement >
double Kaskade::getContactArea (BoundaryLocator< GridView, Displacement > const &boundaryLocator1, BoundaryLocator< GridView, Displacement > const &boundaryLocator2, int order, double overlap=std::numeric_limits< double >::lowest(), double maxGap=1e-4)
 Computes the contact area for the first body. More...
 
template<class Displacement , class BoundaryDisplacement >
double Kaskade::contactLinesearch (Displacement const &u, BoundaryLocator< typename Displacement::GridView, BoundaryDisplacement > &boundaryLocator, Displacement const &direction, int pointsPerEdge, double trialStepSize=0.2, double overlap=std::numeric_limits< double >::lowest(), double targetOverlap=0, Mortar< typename Displacement::ctype, Displacement::GridView::dimension > const &mortar=ContactConstraintsDetail::defaultMortar< typename Displacement::ctype, Displacement::GridView::dimension >())
 Computes a feasible step size for contact constraints. More...
 
template<class Displacement1 , class BoundaryDisplacement1 , class Displacement2 , class BoundaryDisplacement2 >
double Kaskade::contactLinesearch (Displacement1 const &u1, BoundaryLocator< typename Displacement1::GridView, BoundaryDisplacement1 > &boundaryLocator1, Displacement1 const &direction1, Displacement2 const &u2, BoundaryLocator< typename Displacement2::GridView, BoundaryDisplacement2 > &boundaryLocator2, Displacement2 const &direction2, int order, double trialStepSize=0.2, double overlap=std::numeric_limits< double >::lowest(), double targetOverlap=0)
 Computes a feasible step size for contact constraints. More...