Chombo + EB + MF  3.2
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
MultiBlockMeshRefine Class Reference

#include <MultiBlockMeshRefine.H>

Inheritance diagram for MultiBlockMeshRefine:
Inheritance graph
[legend]

Public Member Functions

virtual ~MultiBlockMeshRefine ()
 Destructor. More...
 
 MultiBlockMeshRefine (const ProblemDomain &a_baseDomain, RealVect dxCoarse, const RefCountedPtr< MultiBlockCoordSysFactory > &a_factory, const Vector< int > &a_refRatios, const Real a_fillRatio, const int a_blockFactor, const int a_bufferSize, const int a_maxSize)
 Full constructor – leaves object in usable state. More...
 
- Public Member Functions inherited from BRMeshRefine
 BRMeshRefine ()
 Default constructor – leaves object in an unusable state. More...
 
 BRMeshRefine (const Box &a_baseDomain, const Vector< int > &a_refRatios, const Real a_fillRatio, const int a_blockFactor, const int a_bufferSize, const int a_maxSize)
 Full constructor – leaves object in usable state. More...
 
 BRMeshRefine (const ProblemDomain &a_baseDomain, const Vector< int > &a_refRatios, const Real a_fillRatio, const int a_blockFactor, const int a_bufferSize, const int a_maxSize)
 Full constructor – leaves object in usable state. More...
 
virtual ~BRMeshRefine ()
 Destructor. More...
 
void define (const Box &a_baseDomain, const Vector< int > &a_refRatios, const Real a_fillRatio, const int a_blockFactor, const int a_bufferSize, const int a_maxSize)
 Define function – size of RefRatios will define maximum number of levels. More...
 
void define (const ProblemDomain &a_baseDomain, const Vector< int > &a_refRatios, const Real a_fillRatio, const int a_blockFactor, const int a_bufferSize, const int a_maxSize)
 Define function – size of RefRatios will define maximum number of levels. More...
 
void makeBoxes (Vector< Box > &a_mesh, const IntVectSet &a_tags, const IntVectSet &a_pnd, const ProblemDomain &a_domain, const int a_maxSize, const int a_totalBufferSize) const
 Constructs a set of boxes which covers a set of tagged cells. More...
 
void makeBoxes (std::list< Box > &a_mesh, IntVectSet &a_tags, const IntVectSet &a_pnd, const ProblemDomain &a_domain, const int a_maxSize, const int a_depth, const int a_totalBufferSize) const
 
- Public Member Functions inherited from MeshRefine
 MeshRefine ()
 default constructor – leaves object in an unusable state More...
 
 MeshRefine (const Box &a_baseDomain, const Vector< int > &a_refRatios, const Real a_fillRatio, const int a_blockFactor, const int a_bufferSize, const int a_maxSize)
 full constructor – leaves object in usable state More...
 
 MeshRefine (const ProblemDomain &a_baseDomain, const Vector< int > &a_refRatios, const Real a_fillRatio, const int a_blockFactor, const int a_bufferSize, const int a_maxSize)
 full constructor – leaves object in usable state More...
 
virtual ~MeshRefine ()
 destructor More...
 
void define (const Box &a_baseDomain, const Vector< int > &a_refRatios, const Real a_fillRatio, const int a_blockFactor, const int a_bufferSize, const int a_maxSize)
 define function – size of RefRatios will define maximum number of levels More...
 
virtual int regrid (Vector< Vector< Box > > &a_newmeshes, const IntVectSet &a_tags, const int a_baseLevel, const int a_topLevel, const Vector< Vector< Box > > &a_oldMeshes)
 create hierarchy of grids from a single level of tags More...
 
virtual int regrid (Vector< Vector< Box > > &a_newmeshes, Vector< IntVectSet > &a_tags, const int a_baseLevel, const int a_topLevel, const Vector< Vector< Box > > &a_oldMeshes)
 create hierarchy of grids from tags at all levels More...
 
const Vector< int > & refRatios () const
 returns vector of refinement ratios More...
 
Real fillRatio () const
 returns fillRatio More...
 
int blockFactor () const
 returns blocking factor More...
 
int bufferSize () const
 returns proper nesting buffer size More...
 
int maxSize () const
 returns maximum box size in any dimension – 0 means no limit More...
 
void refRatios (const Vector< int > &a_nRefVect)
 sets vector of refinement ratios More...
 
virtual void fillRatio (const Real a_fill_ratio)
 sets fillRatio More...
 
virtual void blockFactor (const int a_block_factor)
 sets blocking factor More...
 
virtual void bufferSize (const int a_buffer_size)
 sets proper nesting buffer size More...
 
virtual void maxSize (const int a_max_size)
 sets maximum box size in any dimension – 0 means no limit More...
 
bool isDefined () const
 has this object been defined properly? More...
 
void granularity (int a_granularity)
 sets proper nesting region granularity. More...
 
void setPNDMode (int a_mode)
 
void setRefineDirs (const IntVect &a_refineDirs)
 set each component to 1 or 0 according to whether or not we refine in that direction. Default IntVect::Unit. More...
 
IntVect inRefineDirs (int a_val) const
 returns IntVect with component d set to a_val if m_refineDirs[d] == 1; else 1. More...
 
void restrictUnrefined (Box &a_box) const
 
void restrictUnrefined (IntVectSet &a_ivs) const
 

Protected Member Functions

virtual bool properlyNested (const Box &a_box, const ProblemDomain &a_domain, const IntVectSet &a_pnd, int a_totalBufferSize) const
 This one is to let Mapped Multiblock grids respect the PND across mapped boundaries. More...
 
virtual void buildSupport (const ProblemDomain &lvldomain, Vector< Box > &lvlboxes, IntVectSet &modifiedTags)
 These two are to get the tagging to respect Mapped Boundaries. More...
 
virtual void clipBox (Box &a_box, const ProblemDomain &a_domain) const
 
const MultiBlockCoordSysgetCoords (const ProblemDomain &a_lvldomain) const
 
 MultiBlockMeshRefine ()
 
- Protected Member Functions inherited from BRMeshRefine
void splitBox (std::list< Box > &a_boxes, const std::list< Box >::iterator &a_boxindex, const int a_dimension, const int a_maxboxsize) const
 
void splitBox (std::list< Box > &a_boxes, const std::list< Box >::iterator &a_boxindex, const int a_maxboxsize) const
 
Vector< int > makeTrace (const IntVectSet &a_Ivs, int a_dir) const
 
void makeTraces (const IntVectSet &a_Ivs, Vector< int > *a_traces) const
 
int findSplit (const Vector< int > &a_trace) const
 
int findSplit (const Vector< int > &a_trace, const int a_maxSize) const
 
int findMaxInflectionPoint (const Vector< int > &a_trace, int &a_maxVal) const
 
int findMaxInflectionPoint (const Vector< int > &a_trace, int &a_maxVal, const int a_maxSize) const
 
void splitTags (const IntVectSet &a_tags, const int a_split_dir, const int a_split_indx, IntVectSet &a_tags_lo, IntVectSet &a_tags_hi) const
 
void splitTagsInPlace (const int a_split_dir, const int a_split_indx, IntVectSet &a_tags_inout_lo, IntVectSet &a_tags_hi) const
 
void splitTagsInBestDimension (IntVectSet &a_tags_inout_lo, IntVectSet &a_tags_hi, const int a_maxSize) const
 
void breakBoxes (Vector< Box > &a_vboxin, const int &a_maxSize, const int &a_idir) const
 
int maxloc (const int *a_V, const int a_Size) const
 
void makeBoxesParallel (std::list< Box > &a_mesh, IntVectSet &a_tags, const IntVectSet &a_pnd, const ProblemDomain &a_domain, const int a_maxSize, const int a_depth, const int a_totalBufferSize, const int a_minSize, const Interval &a_procInterval) const
 
void sendBoxesParallel (const std::list< Box > &a_mesh, int tag) const
 
void receiveBoxesParallel (const Interval &a_from, const Interval &a_to, std::list< Box > &a_mesh, int tag) const
 
int longsideRefineDirs (const Box &a_bx, int &a_dir) const
 
- Protected Member Functions inherited from MeshRefine
virtual void computeLocalBlockFactors ()
 computes local blockFactors used internally to enforce the BlockFactor More...
 
virtual void makePNDs (Vector< IntVectSet > &a_pnds, Vector< int > &a_totalBufferSize, const int a_baseLevel, const int a_topLevel, const Vector< ProblemDomain > &a_domains, const IntVectSet &a_baseMesh, const Vector< int > &a_bufferSize) const
 Computes proper nesting domains. More...
 
virtual void makePNDs (Vector< IntVectSet > &a_pnds, Vector< int > &a_totalBufferSize, const int a_baseLevel, const int a_topLevel, const Vector< ProblemDomain > &a_domains, const Vector< Box > &a_baseMesh, const Vector< int > &a_bufferSize) const
 

Protected Attributes

RefCountedPtr
< MultiBlockCoordSysFactory
m_factory
 
std::map< ProblemDomain,
MultiBlockCoordSys * > 
m_coords
 
RealVect m_dxCoarse
 
- Protected Attributes inherited from BRMeshRefine
Vector< int > m_messageBuffer
 
- Protected Attributes inherited from MeshRefine
bool m_isDefined
 
Vector< ProblemDomainm_vectDomains
 
Vector< IntVectSetm_pnds
 
int m_lastBase
 
int m_lastTop
 
int m_lastBuffer
 
Vector< int > m_nRefVect
 
Real m_fillRatio
 
int m_blockFactor
 
Vector< int > m_level_blockfactors
 
int m_bufferSize
 
int m_maxSize
 
int m_granularity
 
int m_PNDMode
 
IntVect m_refineDirs
 
int m_lowestRefineDir
 

Detailed Description

A BRMeshRefine algorithm for MultiBlock domains. Only needs to cleverly intercept the virtual makePND operation.

bvs: March 2012

Constructor & Destructor Documentation

virtual MultiBlockMeshRefine::~MultiBlockMeshRefine ( )
virtual

Destructor.

MultiBlockMeshRefine::MultiBlockMeshRefine ( const ProblemDomain a_baseDomain,
RealVect  dxCoarse,
const RefCountedPtr< MultiBlockCoordSysFactory > &  a_factory,
const Vector< int > &  a_refRatios,
const Real  a_fillRatio,
const int  a_blockFactor,
const int  a_bufferSize,
const int  a_maxSize 
)

Full constructor – leaves object in usable state.

Parameters
a_baseDomainLevel 0 domain. used to index into factory object for levels
dxCoarselevel 0 grid spacing. needed for mapping information
a_refRatiosRefinement ratios – refRatio[0] is btwn levels 0 and 1
a_fillRatioMeasure of how efficiently tagged cells will be covered
a_blockFactorAmount by which grids are guaranteed to be coarsenable
a_bufferSizeProper nesting buffer amount
a_maxSizeMaximum grid length in any direction – 0 means no limit.
MultiBlockMeshRefine::MultiBlockMeshRefine ( )
inlineprotected

Implementation/helper class Default constructor – leaves object in an unusable state. not callable by outside classes strong construction only for now.

Member Function Documentation

virtual bool MultiBlockMeshRefine::properlyNested ( const Box a_box,
const ProblemDomain a_domain,
const IntVectSet a_pnd,
int  a_totalBufferSize 
) const
protectedvirtual

This one is to let Mapped Multiblock grids respect the PND across mapped boundaries.

Reimplemented from MeshRefine.

virtual void MultiBlockMeshRefine::buildSupport ( const ProblemDomain lvldomain,
Vector< Box > &  lvlboxes,
IntVectSet modifiedTags 
)
protectedvirtual

These two are to get the tagging to respect Mapped Boundaries.

Reimplemented from MeshRefine.

virtual void MultiBlockMeshRefine::clipBox ( Box a_box,
const ProblemDomain a_domain 
) const
protectedvirtual

Reimplemented from MeshRefine.

const MultiBlockCoordSys* MultiBlockMeshRefine::getCoords ( const ProblemDomain a_lvldomain) const
protected

Member Data Documentation

RefCountedPtr<MultiBlockCoordSysFactory> MultiBlockMeshRefine::m_factory
protected
std::map<ProblemDomain, MultiBlockCoordSys*> MultiBlockMeshRefine::m_coords
mutableprotected
RealVect MultiBlockMeshRefine::m_dxCoarse
protected

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