Feel++ 0.111.0-preview.14
Finite Element Embedded Library in C++
Feel::OperatorInterpolation< DomainSpaceType, ImageSpaceType, IteratorRange, InterpType > Class Template Reference

Global interpolation operator. More...

+ Inheritance diagram for Feel::OperatorInterpolation< DomainSpaceType, ImageSpaceType, IteratorRange, InterpType >:
+ Collaboration diagram for Feel::OperatorInterpolation< DomainSpaceType, ImageSpaceType, IteratorRange, InterpType >:

Methods

constexpr interpolation_type const & type () const noexcept
 
virtual void update ()
 

Typedefs

typedef super::domain_space_type domain_space_type
 
typedef super::domain_space_ptrtype domain_space_ptrtype
 
typedef domain_space_type::mesh_type domain_mesh_type
 
typedef domain_mesh_type::element_type domain_geoelement_type
 
typedef domain_mesh_type::element_iterator domain_mesh_element_iterator
 
typedef super::backend_ptrtype backend_ptrtype
 
using size_type = typename domain_mesh_type::size_type
 
using datamap_type = DataMap< size_type >
 
using datamap_ptrtype = std::shared_ptr< datamap_type >
 
typedef super::dual_image_space_type dual_image_space_type
 
typedef super::dual_image_space_ptrtype dual_image_space_ptrtype
 
typedef dual_image_space_type::value_type value_type
 
typedef dual_image_space_type::mesh_type image_mesh_type
 
typedef image_mesh_type::element_type image_geoelement_type
 
typedef image_mesh_type::element_iterator image_mesh_element_iterator
 
typedef dual_image_space_type::dof_type dof_type
 
typedef dual_image_space_type::basis_type image_basis_type
 
typedef domain_space_type::basis_type domain_basis_type
 
using idim_type = typename IteratorRange::idim_t
 
using iterator_type = typename IteratorRange::iterator_t
 
typedef IteratorRange range_iterator
 
using interpolation_type = std::remove_reference_t< std::remove_const_t< InterpType > >
 
typedef GraphCSR graph_type
 
typedef std::shared_ptr< graph_type > graph_ptrtype
 
typedef matrix_node< typenameimage_mesh_type::value_type >::type matrix_node_type
 
using matrix_setup_type = OperatorInterpolationMatrixSetup< typename super::matrix_type::value_type >
 
static const uint16_type nLocalDofInDualImageElt
 

Constructors, destructor

 OperatorInterpolation ()=default
 default constructor
 
 OperatorInterpolation (domain_space_ptrtype const &domainspace, dual_image_space_ptrtype const &imagespace, backend_ptrtype const &backend, InterpType const &interptype, bool ddmethod=false, matrix_setup_type const &matSetup=matrix_setup_type{})
 Construction the global interpolation operator from domainspace to imagespace and represent it in matrix form using the backend backend.
 
 OperatorInterpolation (domain_space_ptrtype const &domainspace, dual_image_space_ptrtype const &imagespace, IteratorRange const &r, backend_ptrtype const &backend, InterpType const &interptype, bool ddmethod=false, matrix_setup_type const &matSetup=matrix_setup_type{})
 
 OperatorInterpolation (domain_space_ptrtype const &domainspace, dual_image_space_ptrtype const &imagespace, std::list< IteratorRange > const &r, backend_ptrtype const &backend, InterpType const &interptype, bool ddmethod=false, matrix_setup_type const &matSetup=matrix_setup_type{})
 
 OperatorInterpolation (OperatorInterpolation const &oi)=default
 copy constructor
 
 OperatorInterpolation (OperatorInterpolation &&oi)=default
 
 ~OperatorInterpolation () override=default
 

Operator overloads

OperatorInterpolation & operator= (OperatorInterpolation const &)=default
 
OperatorInterpolation & operator= (OperatorInterpolation &&)=default
 

Accessors

WorldComm const & worldCommFusion () const
 
InterpType const & interpolationType () const
 
bool isDomainMeshRelatedToImageMesh () const
 
bool isImageMeshRelatedToDomainMesh () const
 

Additional Inherited Members

- Public Types inherited from Feel::OperatorLinear< DomainSpaceType, ImageSpaceType >
typedef std::shared_ptr< adjoint_type > adjoint_ptrtype
 
typedef OperatorLinear< ImageSpaceType, DomainSpaceType > adjoint_type
 
typedef super::backend_ptrtype backend_ptrtype
 
typedef super::backend_type backend_type
 
typedef domain_space_type::element_type domain_element_type
 
typedef super::domain_space_ptrtype domain_space_ptrtype
 
typedef super::domain_space_type domain_space_type
 
typedef dual_image_space_type::element_type dual_image_element_type
 
typedef super::dual_image_space_ptrtype dual_image_space_ptrtype
 
typedef super::dual_image_space_type dual_image_space_type
 
typedef FsFunctionalLinear< ImageSpaceType > image_element_type
 
typedef std::shared_ptr< matrix_type > matrix_ptrtype
 
typedef backend_type::sparse_matrix_type matrix_type
 
typedef Operator< DomainSpaceType, ImageSpaceType > super_type
 
typedef OperatorLinear< DomainSpaceType, ImageSpaceType > this_type
 
typedef backend_type::vector_ptrtype vector_ptrtype
 
typedef backend_type::vector_type vector_type
 
- Public Types inherited from Feel::Operator< DomainSpaceType, ImageSpaceType >
typedef std::shared_ptr< backend_type > backend_ptrtype
 
typedef Backend< value_type > backend_type
 
typedef domain_space_type::element_type domain_element_type
 
typedef std::shared_ptr< domain_space_type > domain_space_ptrtype
 
typedef DomainSpaceType domain_space_type
 
typedef std::shared_ptr< dual_image_space_type > dual_image_space_ptrtype
 
typedef ImageSpaceType dual_image_space_type
 
typedef FsFunctionalLinear< dual_image_space_type > image_element_type
 
typedef domain_space_type::value_type value_type
 
- Public Member Functions inherited from Feel::OperatorLinear< DomainSpaceType, ImageSpaceType >
OperatorLinear & add (T const &scalar, OperatorLinear const &ol)
 
OperatorLinear & add (T const &scalar, std::shared_ptr< OperatorLinear > ol)
 
adjoint_ptrtype adjoint (size_type options=MATRIX_TRANSPOSE_ASSEMBLED) const
 
void apply (const domain_element< typename domain_element_type::value_type, Storage > &de, image_element_type &ie) const
 
void apply (const domain_element_type &de, image_element_type &ie) const override
 
virtual void apply (const typename domain_space_type::element_type &de, typename dual_image_space_type::element_type &ie)
 
virtual void applyInverse (domain_element_type &de, const image_element_type &ie)
 apply the inverse of the operator: \(de = O^{-1} ie\)
 
backend_ptrtype & backend ()
 
void close ()
 
virtual double energy (const typename domain_space_type::element_type &de, const typename dual_image_space_type::element_type &ie) const
 
virtual void init (domain_space_ptrtype domainSpace, dual_image_space_ptrtype dualImageSpace, backend_ptrtype backend, bool buildMatrix=true, size_type pattern=Pattern::COUPLED)
 
domain_element_type inv (RhsExpr const &rhs_expr)
 
matrix_type & mat ()
 
matrix_type const & mat () const
 
matrix_ptrtype & matPtr ()
 
matrix_ptrtype const & matPtr () const
 
virtual void matPtr (matrix_ptrtype &matrix)
 
std::string name () const
 
T2 operator() (std::shared_ptr< T1 > de)
 
T2 operator() (T1 &de)
 
OperatorLinear & operator+ (OperatorLinear const &ol)
 
OperatorLinear & operator+ (std::shared_ptr< OperatorLinear > ol)
 
this_type & operator+= (ExprT const &e)
 
this_type & operator= (ExprT const &e)
 
this_type & operator= (this_type &&m)=default
 
this_type & operator= (this_type const &m)=default
 
 OperatorLinear (domain_space_ptrtype domainSpace, dual_image_space_ptrtype dualImageSpace, backend_ptrtype backend, bool buildMatrix=true, size_type pattern=Pattern::COUPLED)
 
 OperatorLinear (OperatorLinear &&ol)=default
 
 OperatorLinear (OperatorLinear const &ol)=default
 
size_type pattern ()
 
void setMatrix (matrix_ptrtype m)
 
void setName (std::string name)
 
- Public Member Functions inherited from Feel::Operator< DomainSpaceType, ImageSpaceType >
virtual void apply (const domain_element_type &de, image_element_type &ie) const=0
 
domain_space_ptrtype domainSpace ()
 
const domain_space_ptrtype domainSpace () const
 
dual_image_space_ptrtype dualImageSpace ()
 
const dual_image_space_ptrtype dualImageSpace () const
 
 Operator (domain_space_ptrtype domainSpace, dual_image_space_ptrtype dualImageSpace)
 
 Operator (Operator< domain_space_type, ImageSpaceType > &&)=default
 
 Operator (Operator< domain_space_type, ImageSpaceType > const &)=default
 
image_element_type operator() (const domain_element_type &de) const
 
Operator & operator= (Operator &&)=default
 
Operator & operator= (Operator const &)=default
 
void setDomainSpace (domain_space_ptrtype const &domainspace)
 
void setDualImageSpace (dual_image_space_ptrtype const &dualImageSpace)
 

Detailed Description

template<typename DomainSpaceType, typename ImageSpaceType, typename IteratorRange = Range<typename ImageSpaceType::mesh_type,MESH_ELEMENTS>, typename InterpType = decltype(makeInterpolation<nonconforming_t>(nonconforming_t()))>
class Feel::OperatorInterpolation< DomainSpaceType, ImageSpaceType, IteratorRange, InterpType >

Global interpolation operator.

Author
Christophe Prud'homme
See also

Member Function Documentation

◆ type()

template<typename DomainSpaceType , typename ImageSpaceType , typename IteratorRange = Range<typename ImageSpaceType::mesh_type,MESH_ELEMENTS>, typename InterpType = decltype(makeInterpolation<nonconforming_t>(nonconforming_t()))>
constexpr interpolation_type const & Feel::OperatorInterpolation< DomainSpaceType, ImageSpaceType, IteratorRange, InterpType >::type ( ) const
constexprnoexcept
Returns
interpolation type

Member Data Documentation

◆ nLocalDofInDualImageElt

template<typename DomainSpaceType , typename ImageSpaceType , typename IteratorRange = Range<typename ImageSpaceType::mesh_type,MESH_ELEMENTS>, typename InterpType = decltype(makeInterpolation<nonconforming_t>(nonconforming_t()))>
const uint16_type Feel::OperatorInterpolation< DomainSpaceType, ImageSpaceType, IteratorRange, InterpType >::nLocalDofInDualImageElt
static
Initial value:
= mpl::if_< mpl::equal_to< idim_type ,mpl::size_t<MESH_ELEMENTS> >,
mpl::int_< image_mesh_type::face_type::numVertices*dual_image_space_type::fe_type::nDofPerVertex +
image_mesh_type::face_type::numEdges*dual_image_space_type::fe_type::nDofPerEdge +
image_mesh_type::face_type::numFaces*dual_image_space_type::fe_type::nDofPerFace > >::type::value