version 3.9-dev
Dumux::MultiDomainFVGridGeometry< MDTraits > Class Template Reference

A multidomain wrapper for multiple grid geometries. More...

#include <dumux/multidomain/fvgridgeometry.hh>

Description

template<class MDTraits>
class Dumux::MultiDomainFVGridGeometry< MDTraits >
Template Parameters
MDTraitsThe multidomain traits

Public Types

template<std::size_t i>
using Type = typename MDTraits::template SubDomain< i >::GridGeometry
 export base types of the stored type More...
 
template<std::size_t i>
using PtrType = std::shared_ptr< Type< i > >
 export pointer types the stored type More...
 
using TupleType = typename MDTraits::template Tuple< PtrType >
 export type of tuple of pointers More...
 

Public Member Functions

template<typename... Args>
 MultiDomainFVGridGeometry (Args &&... args)
 Construct grid geometries for all subdomains. More...
 
 MultiDomainFVGridGeometry (TupleType ggTuple)
 Construct wrapper from a tuple of grid geometries. More...
 
template<typename... Args>
void update (Args &&... args)
 Update all grid geometries (do this e.g. after grid adaption) More...
 
template<std::size_t i>
const Type< i > & operator[] (Dune::index_constant< i >) const
 return the grid geometry for domain with index i More...
 
template<std::size_t i>
Type< i > & operator[] (Dune::index_constant< i >)
 return the grid geometry for domain with index i More...
 
template<std::size_t i>
const PtrType< i > & get (Dune::index_constant< i > id=Dune::index_constant< i >{}) const
 ! access the grid geometry pointer for domain with index i More...
 
template<std::size_t i>
PtrType< i > & get (Dune::index_constant< i > id=Dune::index_constant< i >{})
 ! access the the grid geometry pointer for domain with index i More...
 
TupleTypeasTuple ()
 Access the underlying tuple representation. More...
 
const TupleTypeasTuple () const
 Access the underlying tuple representation. More...
 

Member Typedef Documentation

◆ PtrType

template<class MDTraits >
template<std::size_t i>
using Dumux::MultiDomainFVGridGeometry< MDTraits >::PtrType = std::shared_ptr<Type<i> >

◆ TupleType

template<class MDTraits >
using Dumux::MultiDomainFVGridGeometry< MDTraits >::TupleType = typename MDTraits::template Tuple<PtrType>

◆ Type

template<class MDTraits >
template<std::size_t i>
using Dumux::MultiDomainFVGridGeometry< MDTraits >::Type = typename MDTraits::template SubDomain<i>::GridGeometry

Constructor & Destructor Documentation

◆ MultiDomainFVGridGeometry() [1/2]

template<class MDTraits >
template<typename... Args>
Dumux::MultiDomainFVGridGeometry< MDTraits >::MultiDomainFVGridGeometry ( Args &&...  args)
inline
Parameters
argsa list of arguments to pass to the constructors

The number of arguments has to match the number of subdomains. In case a constructor needs multiple arguments, they have to be wrapped in a std::tuple. Use std::make_tuple and possible wrap arguments using std::ref / std::cref or use std::forward_as_tuple. If an argument is a tuple, it will be unpacked and its members will be passed to the constructor. In the corner case where you need to pass a tuple to the constructor, you therefore need to additionally wrap the tuple in a tuple before passing.

◆ MultiDomainFVGridGeometry() [2/2]

template<class MDTraits >
Dumux::MultiDomainFVGridGeometry< MDTraits >::MultiDomainFVGridGeometry ( TupleType  ggTuple)
inline
Parameters
ggTuplea tuple of shared_ptrs to the grid geometries

Member Function Documentation

◆ asTuple() [1/2]

template<class MDTraits >
TupleType & Dumux::MultiDomainFVGridGeometry< MDTraits >::asTuple ( )
inline

◆ asTuple() [2/2]

template<class MDTraits >
const TupleType & Dumux::MultiDomainFVGridGeometry< MDTraits >::asTuple ( ) const
inline

◆ get() [1/2]

template<class MDTraits >
template<std::size_t i>
PtrType< i > & Dumux::MultiDomainFVGridGeometry< MDTraits >::get ( Dune::index_constant< i >  id = Dune::index_constant<i>{})
inline

◆ get() [2/2]

template<class MDTraits >
template<std::size_t i>
const PtrType< i > & Dumux::MultiDomainFVGridGeometry< MDTraits >::get ( Dune::index_constant< i >  id = Dune::index_constant<i>{}) const
inline

◆ operator[]() [1/2]

template<class MDTraits >
template<std::size_t i>
Type< i > & Dumux::MultiDomainFVGridGeometry< MDTraits >::operator[] ( Dune::index_constant< i >  )
inline

◆ operator[]() [2/2]

template<class MDTraits >
template<std::size_t i>
const Type< i > & Dumux::MultiDomainFVGridGeometry< MDTraits >::operator[] ( Dune::index_constant< i >  ) const
inline

◆ update()

template<class MDTraits >
template<typename... Args>
void Dumux::MultiDomainFVGridGeometry< MDTraits >::update ( Args &&...  args)
inline
Parameters
argsa list of arguments to pass to the update functions

The number of arguments has to match the number of subdomains. In case the update function needs multiple arguments, they have to be wrapped in a std::tuple. Use std::make_tuple and possible wrap arguments using std::ref / std::cref or use std::forward_as_tuple. If an argument is a tuple, it will be unpacked and its members will be passed to the constructor. In the corner case where you need to pass a tuple to the constructor, you therefore need to additionally wrap the tuple in a tuple before passing.


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