Chombo + EB  3.2
Public Member Functions | Static Public Member Functions | List of all members
BaseIF Class Referenceabstract

#include <BaseIF.H>

Inheritance diagram for BaseIF:
Inheritance graph
[legend]

Public Member Functions

 BaseIF ()
 Default constructor. More...
 
virtual ~BaseIF ()
 Default destructor. More...
 
virtual IndMomSpaceDim getExactVolumeMoments (const VolIndex &a_vof, const Real &a_dx) const
 return int x^p dV for the vof More...
 
virtual IndMomSpaceDim getExactEBMoments (const VolIndex &a_vof, const Real &a_dx) const
 return int_eb x^p dA for the eb More...
 
virtual IndMomSpaceDim getExactEBNormalMoments (const VolIndex &a_vof, const Real &a_dx, const int &a_ni) const
 return int_eb x^p n_i dA for the eb More...
 
virtual IndMomSpaceDim getExactEBNormalPartialDerivs (const VolIndex &a_vof, const Real &a_dx, const int &a_ni) const
 
virtual IndMomSDMinOne getExactFaceMoments (const FaceIndex &a_face, const Real &a_dx) const
 return int x^p dA for the face More...
 
virtual Real value (const RealVect &a_point) const =0
 
virtual Real derivative (const IntVect &a_deriv, const RealVect &a_point) const
 return the partial derivative at the point More...
 
virtual Real value (const IndexTM< int, GLOBALDIM > &a_partialDerivative, const IndexTM< Real, GLOBALDIM > &a_point) const
 
virtual Real value (const IntVect &a_deriv, const RealVect &a_point) const
 
virtual bool fastIntersection (const Box &a_region, const ProblemDomain &a_domain, const RealVect &a_origin, const Real &a_dx) const
 
virtual bool fastIntersection (const RealVect &a_low, const RealVect &a_high) const
 
virtual GeometryService::InOut InsideOutside (const Box &a_region, const ProblemDomain &a_domain, const RealVect &a_origin, const Real &a_dx) const
 
virtual GeometryService::InOut InsideOutside (const RealVect &a_low, const RealVect &a_high) const
 
virtual Real value (const IndexTM< Real, GLOBALDIM > &a_point) const
 
virtual Real derivative (const IndexTM< int, GLOBALDIM > &a_deriv, const IndexTM< Real, GLOBALDIM > &a_point) const
 
virtual BaseIF * newImplicitFunction () const =0
 
virtual void print (ostream &out) const
 
virtual void makeGrids (const ProblemDomain &a_domain, DisjointBoxLayout &a_grids, const int &a_maxGridSize, const int &a_maxIrregGridSize)
 
virtual void boxLayoutChanged (const DisjointBoxLayout &a_newBoxLayout, const RealVect &a_dx)
 

Static Public Member Functions

static void corners (const Box &a_region, const RealVect &a_origin, const Real &a_dx, RealVect &a_lo, RealVect &a_hi)
 

Detailed Description

This is the base class for an implicit function specification of geometry. All that is needed is a constructor/destructor, a method to give the value of the function at any point in space (in 2D or 3D), and a factory method (these will probably all be very similar).

Constructor & Destructor Documentation

◆ BaseIF()

BaseIF::BaseIF ( )
inline

Default constructor.

◆ ~BaseIF()

virtual BaseIF::~BaseIF ( )
inlinevirtual

Default destructor.

Member Function Documentation

◆ getExactVolumeMoments()

virtual IndMomSpaceDim BaseIF::getExactVolumeMoments ( const VolIndex &  a_vof,
const Real &  a_dx 
) const
inlinevirtual

return int x^p dV for the vof

Reimplemented in MonomialIF.

References MayDay::Error(), and IndexedMoments< Dim, P >::setToZero().

◆ getExactEBMoments()

virtual IndMomSpaceDim BaseIF::getExactEBMoments ( const VolIndex &  a_vof,
const Real &  a_dx 
) const
inlinevirtual

return int_eb x^p dA for the eb

Reimplemented in MonomialIF.

References MayDay::Error(), and IndexedMoments< Dim, P >::setToZero().

◆ getExactEBNormalMoments()

virtual IndMomSpaceDim BaseIF::getExactEBNormalMoments ( const VolIndex &  a_vof,
const Real &  a_dx,
const int &  a_ni 
) const
inlinevirtual

return int_eb x^p n_i dA for the eb

Reimplemented in MonomialIF.

References MayDay::Error(), and IndexedMoments< Dim, P >::setToZero().

◆ getExactEBNormalPartialDerivs()

virtual IndMomSpaceDim BaseIF::getExactEBNormalPartialDerivs ( const VolIndex &  a_vof,
const Real &  a_dx,
const int &  a_ni 
) const
inlinevirtual

◆ getExactFaceMoments()

virtual IndMomSDMinOne BaseIF::getExactFaceMoments ( const FaceIndex &  a_face,
const Real &  a_dx 
) const
inlinevirtual

return int x^p dA for the face

Reimplemented in MonomialIF.

References MayDay::Error(), IndexedMoments< Dim, P >::setToZero(), and value().

◆ value() [1/4]

virtual Real BaseIF::value ( const RealVect &  a_point) const
pure virtual

◆ derivative() [1/2]

virtual Real BaseIF::derivative ( const IntVect &  a_deriv,
const RealVect &  a_point 
) const
inlinevirtual

return the partial derivative at the point

Reimplemented in GaussianSphereIF, SmoothIntersection, and SmoothUnion.

References MayDay::Error().

Referenced by derivative(), and value().

◆ value() [2/4]

virtual Real BaseIF::value ( const IndexTM< int, GLOBALDIM > &  a_partialDerivative,
const IndexTM< Real, GLOBALDIM > &  a_point 
) const
inlinevirtual

◆ value() [3/4]

virtual Real BaseIF::value ( const IntVect &  a_deriv,
const RealVect &  a_point 
) const
inlinevirtual

References SpaceDim, and value().

◆ fastIntersection() [1/2]

virtual bool BaseIF::fastIntersection ( const Box &  a_region,
const ProblemDomain &  a_domain,
const RealVect &  a_origin,
const Real &  a_dx 
) const
inlinevirtual

References corners().

Referenced by ComplementIF::fastIntersection().

◆ fastIntersection() [2/2]

virtual bool BaseIF::fastIntersection ( const RealVect &  a_low,
const RealVect &  a_high 
) const
inlinevirtual

◆ InsideOutside() [1/2]

virtual GeometryService::InOut BaseIF::InsideOutside ( const Box &  a_region,
const ProblemDomain &  a_domain,
const RealVect &  a_origin,
const Real &  a_dx 
) const
inlinevirtual

References corners().

◆ InsideOutside() [2/2]

virtual GeometryService::InOut BaseIF::InsideOutside ( const RealVect &  a_low,
const RealVect &  a_high 
) const
inlinevirtual

◆ value() [4/4]

virtual Real BaseIF::value ( const IndexTM< Real, GLOBALDIM > &  a_point) const
inlinevirtual

Return the value of the function at a_point (of type INdexTM).

Reimplemented in DataFileIF, ReferenceHeightIF, TransformIF, ComplementIF, HyperSphereIF, BilinearIF, MollifyIF, SumIF, IntersectionIF, UnionIF, and HyperPlaneIF.

References CH_assert, GLOBALDIM, SpaceDim, and value().

◆ derivative() [2/2]

virtual Real BaseIF::derivative ( const IndexTM< int, GLOBALDIM > &  a_deriv,
const IndexTM< Real, GLOBALDIM > &  a_point 
) const
inlinevirtual

Return the derivative of the function at a_point (of type INdexTM).

References CH_assert, derivative(), GLOBALDIM, newImplicitFunction(), and SpaceDim.

◆ newImplicitFunction()

virtual BaseIF* BaseIF::newImplicitFunction ( ) const
pure virtual

◆ print()

virtual void BaseIF::print ( ostream &  out) const
inlinevirtual

Reimplemented in ReferenceHeightIF.

References MayDay::Abort().

Referenced by ReferenceHeightIF::print().

◆ makeGrids()

virtual void BaseIF::makeGrids ( const ProblemDomain &  a_domain,
DisjointBoxLayout &  a_grids,
const int &  a_maxGridSize,
const int &  a_maxIrregGridSize 
)
inlinevirtual

An Implicit Function has three options for implementing this function 1) do nothing, allow the empty base implementation to remain in place as a null-op 2) take the makeGrids call as a directive: Here are the grids EBIndexSpace is wanting to use, configure yourself accordingly to make this efficient for you. 3) discard the DisjointBoxLayout EBIndexSpace would like and insert your own implementation of layout EBIndexSpace will faithfully use a_grids returned from this function, including it's load balance.

◆ corners()

static void BaseIF::corners ( const Box &  a_region,
const RealVect &  a_origin,
const Real &  a_dx,
RealVect &  a_lo,
RealVect &  a_hi 
)
inlinestatic

◆ boxLayoutChanged()

virtual void BaseIF::boxLayoutChanged ( const DisjointBoxLayout &  a_newBoxLayout,
const RealVect &  a_dx 
)
inlinevirtual

Inform the implicit function, IF, of a BoxLayout change in the application that is using it. If the implicit function uses distributed data, this gives it a chance to react to the spatial layout of the application that is using it.

This is a empty implementation for IFs that don't need this functionality.

Reimplemented in ReferenceHeightIF, LatheIF, TransformIF, ComplementIF, IntersectionIF, UnionIF, MollifyIF, SumIF, HelixIF, and HelicoilIF.

Referenced by HelicoilIF::boxLayoutChanged(), HelixIF::boxLayoutChanged(), MollifyIF::boxLayoutChanged(), ComplementIF::boxLayoutChanged(), TransformIF::boxLayoutChanged(), LatheIF::boxLayoutChanged(), and ReferenceHeightIF::boxLayoutChanged().


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