dune-assembler 2.12
Loading...
Searching...
No Matches
Dune::Assembler::Concepts::Archetypes::LocalInteriorIntersectionMatrixAssembler< RowLocalView, ColLocalView > Class Template Reference

#include <dune/assembler/archetypes/localinteriorintersectionmatrixassembler.hh>

Public Types

using GridView = typename RowLocalView::GridView
 
using Element = typename GridView::template Codim< 0 >::Entity
 
using Intersection = typename GridView::Intersection
 

Public Member Functions

void bindLocalViews (const RowLocalView &rlv, const ColLocalView &clv) noexcept
 
void bindOutsideLocalViews (const RowLocalView &rlv, const ColLocalView &clv) noexcept
 
void bindElement (const Element &e) noexcept
 
template<Concepts::BlockMatrix LocalMatrices>
void assembleInteriorIntersectionMatrix (const Intersection &is, LocalMatrices &m) noexcept
 
template<Concepts::BlockLocalMatrixPattern LocalPatterns>
void assembleInteriorIntersectionMatrixPattern (const Intersection &is, LocalPatterns &p) noexcept
 

Detailed Description

template<Concepts::LocalView RowLocalView, Concepts::LocalView ColLocalView>
class Dune::Assembler::Concepts::Archetypes::LocalInteriorIntersectionMatrixAssembler< RowLocalView, ColLocalView >

Local assembler of a linear Matrix on an interior intersection.

Template Parameters
RowLocalViewType of the local view associated to the test space.
ColLocalViewType of the local view associated to the trial space.

Requirements:

  • RowLocalView is a model of Concepts::LocalView,
  • ColLocalView is a model of Concepts::LocalView.

Member Typedef Documentation

◆ Element

template<Concepts::LocalView RowLocalView, Concepts::LocalView ColLocalView>
using Dune::Assembler::Concepts::Archetypes::LocalInteriorIntersectionMatrixAssembler< RowLocalView, ColLocalView >::Element = typename GridView::template Codim<0>::Entity

◆ GridView

template<Concepts::LocalView RowLocalView, Concepts::LocalView ColLocalView>
using Dune::Assembler::Concepts::Archetypes::LocalInteriorIntersectionMatrixAssembler< RowLocalView, ColLocalView >::GridView = typename RowLocalView::GridView

◆ Intersection

template<Concepts::LocalView RowLocalView, Concepts::LocalView ColLocalView>
using Dune::Assembler::Concepts::Archetypes::LocalInteriorIntersectionMatrixAssembler< RowLocalView, ColLocalView >::Intersection = typename GridView::Intersection

Member Function Documentation

◆ assembleInteriorIntersectionMatrix()

template<Concepts::LocalView RowLocalView, Concepts::LocalView ColLocalView>
template<Concepts::BlockMatrix LocalMatrices>
void Dune::Assembler::Concepts::Archetypes::LocalInteriorIntersectionMatrixAssembler< RowLocalView, ColLocalView >::assembleInteriorIntersectionMatrix ( const Intersection &  is,
LocalMatrices &  m 
)
noexcept

The matrix m is a 2x2 block-matrix for [ii, io; oi, oo] couplings with i...inside and o...outside. Each submatrixm[i][j]` is assumed to be large enough to be indexable by all corresponding inside/outside local view indices. It is not guaranteed that the submatrices havae the exact size as the local views. It is not allowed to resize the submatrices. The matrix is initialized and the assembler must only add its contributions to the matrix and not replace values.

Parameters
isAn intersection to assembler the local matrix on.
mA 2x2 block-matrix to be filled with the local element contributions.
Note
The local assembler implementation should allow flexible matrix types as argument.
This function is called for all interior intersections. It is not called for domain or processor boundary intersections unless this assembler is also a boundary intersection assembler.
The user might check is.neighbor()
The outside element is accessible via is.outside
The inside element is equal to the element the assembler was bound to in bindElement().

[[pre: m.rows() == 2 && m.cols() == 2]] [[pre: m[0][0].rows() == rowLocalView.size() && m[0][0].cols() == colLocalView.size()]] [[pre: m[0][1].rows() == rowLocalView.size() && m[0][1].cols() == outsideColLocalView.size()]] [[pre: m[1][0].rows() == outsideRowLocalView.size() && m[1][0].cols() == colLocalView.size()]] [[pre: m[1][1].rows() == outsideRowLocalView.size() && m[1][1].cols() == outsideColLocalView.size()]] [[pre: bindElement was called before with current element]]

◆ assembleInteriorIntersectionMatrixPattern()

template<Concepts::LocalView RowLocalView, Concepts::LocalView ColLocalView>
template<Concepts::BlockLocalMatrixPattern LocalPatterns>
void Dune::Assembler::Concepts::Archetypes::LocalInteriorIntersectionMatrixAssembler< RowLocalView, ColLocalView >::assembleInteriorIntersectionMatrixPattern ( const Intersection &  is,
LocalPatterns &  p 
)
noexcept

Similar as assembleInteriorIntersectionMatrix but the 2x2 block matrix contains local patterns. Each local pattern can be accessed by p[i][j].add(row,col). Additionally, it is possible to set a local pattern to be full, by p[i][j].addAll().

◆ bindElement()

template<Concepts::LocalView RowLocalView, Concepts::LocalView ColLocalView>
void Dune::Assembler::Concepts::Archetypes::LocalInteriorIntersectionMatrixAssembler< RowLocalView, ColLocalView >::bindElement ( const Element &  e)
noexcept

When this function is called, the test and trial local views are already bound to this element. The lifetime of the passed element is longer than the lifetime of the local assembler.

Parameters
eGrid element the local assembler can be bound to.
Note
The user might check e.hasBoundaryIntersections()

[[pre: rowLocalView.bound() && colLocalView.bound()]]

◆ bindLocalViews()

template<Concepts::LocalView RowLocalView, Concepts::LocalView ColLocalView>
void Dune::Assembler::Concepts::Archetypes::LocalInteriorIntersectionMatrixAssembler< RowLocalView, ColLocalView >::bindLocalViews ( const RowLocalView &  rlv,
const ColLocalView &  clv 
)
noexcept

This function is called typically before the elements of the grid are traversed. Thus, the local views are not necessarily bound to any element. The lifetime of the passed local view is longer than the lifetime of the local assembler.

Parameters
rlvA local view of the test space
clvA local view of the trial space

◆ bindOutsideLocalViews()

template<Concepts::LocalView RowLocalView, Concepts::LocalView ColLocalView>
void Dune::Assembler::Concepts::Archetypes::LocalInteriorIntersectionMatrixAssembler< RowLocalView, ColLocalView >::bindOutsideLocalViews ( const RowLocalView &  rlv,
const ColLocalView &  clv 
)
noexcept

This function is called typically before the elements of the grid are traversed. Thus, the local views are not necessarily bound to any element. The lifetime of the passed local view is longer than the lifetime of the local assembler.

Parameters
rlvA local view of the test space that will be bound to an intersection-outside element.
clvA local view of the trial space that will be bound to an intersection-outside element.

The documentation for this class was generated from the following file: