IBAMR
An adaptive and distributed-memory parallel implementation of the immersed boundary (IB) method
Public Member Functions | List of all members
IBTK::CartCellDoubleCubicCoarsen Class Reference

Class CartCellDoubleCubicCoarsen is a concrete SAMRAI::xfer::CoarsenOperator for restricting cell-centered double precision patch data via cubic interpolation. More...

#include </home/runner/work/IBAMR/IBAMR/ibtk/include/ibtk/CartCellDoubleCubicCoarsen.h>

Inheritance diagram for IBTK::CartCellDoubleCubicCoarsen:
Inheritance graph
[legend]

Public Member Functions

 CartCellDoubleCubicCoarsen ()=default
 Default constructor.
 
 ~CartCellDoubleCubicCoarsen ()=default
 Destructor.
 

Implementation of SAMRAI::xfer::CoarsenOperator interface.

bool findCoarsenOperator (const SAMRAI::tbox::Pointer< SAMRAI::hier::Variable< NDIM > > &var, const std::string &op_name) const override
 
const std::stringgetOperatorName () const override
 
int getOperatorPriority () const override
 
SAMRAI::hier::IntVector< NDIM > getStencilWidth () const override
 
void coarsen (SAMRAI::hier::Patch< NDIM > &coarse, const SAMRAI::hier::Patch< NDIM > &fine, int dst_component, int src_component, const SAMRAI::hier::Box< NDIM > &coarse_box, const SAMRAI::hier::IntVector< NDIM > &ratio) const override
 

Detailed Description

Class CartCellDoubleCubicCoarsen is a concrete SAMRAI::xfer::CoarsenOperator for restricting cell-centered double precision patch data via cubic interpolation.

Note
This coarsen operator requires that the refinement ratio between coarse and fine index spaces is even.
To avoid complicating the interpolation scheme at coarse-fine interfaces, the use of cubic coarsening is restricted to cases where the refinement ratio is at least 4. For refinement ratios less than 4, a warning is emitted and simple weighted averaging is used instead.

Member Function Documentation

◆ coarsen()

void IBTK::CartCellDoubleCubicCoarsen::coarsen ( SAMRAI::hier::Patch< NDIM > &  coarse,
const SAMRAI::hier::Patch< NDIM > &  fine,
int  dst_component,
int  src_component,
const SAMRAI::hier::Box< NDIM > &  coarse_box,
const SAMRAI::hier::IntVector< NDIM > &  ratio 
) const
overridevirtual

Coarsen the source component on the fine patch to the destination component on the coarse patch. The coarsening operation is performed on the intersection of the destination patch and the coarse box. The fine patch is guaranteed to contain sufficient data for the stencil width of the coarsening operator.

Implements SAMRAI::xfer::CoarsenOperator< NDIM >.

◆ findCoarsenOperator()

bool IBTK::CartCellDoubleCubicCoarsen::findCoarsenOperator ( const SAMRAI::tbox::Pointer< SAMRAI::hier::Variable< NDIM > > &  var,
const std::string op_name 
) const
overridevirtual

Return true if the coarsening operation matches the variable and name string identifier request; false, otherwise.

Implements SAMRAI::xfer::CoarsenOperator< NDIM >.

◆ getOperatorName()

const std::string & IBTK::CartCellDoubleCubicCoarsen::getOperatorName ( ) const
overridevirtual

Return name string identifier of the coarsening operation.

Implements SAMRAI::xfer::CoarsenOperator< NDIM >.

◆ getOperatorPriority()

int IBTK::CartCellDoubleCubicCoarsen::getOperatorPriority ( ) const
overridevirtual

Return the priority of this operator relative to other coarsening operators. The SAMRAI transfer routines guarantee that coarsening using operators with lower priority will be performed before those with higher priority.

Implements SAMRAI::xfer::CoarsenOperator< NDIM >.

◆ getStencilWidth()

IntVector< NDIM > IBTK::CartCellDoubleCubicCoarsen::getStencilWidth ( ) const
overridevirtual

Return the stencil width associated with the coarsening operator. The SAMRAI transfer routines guarantee that the source patch will contain sufficient ghost cell data surrounding the interior to satisfy the stencil width requirements for each coarsening operator.

Implements SAMRAI::xfer::CoarsenOperator< NDIM >.


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