Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

AMRParticleProjector Class Reference

class to manage projection of particle drag force onto the fluid More...

#include <AMRParticleProjector.H>

Collaboration diagram for AMRParticleProjector:

Collaboration graph
[legend]
List of all members.

Public Methods

 AMRParticleProjector ()
 default constructor

 AMRParticleProjector (const Vector< DisjointBoxLayout > &a_vectGrids, const Vector< DisjointBoxLayout > &a_vectParticleGrids, const Vector< ProblemDomain > &a_vectDomain, const Vector< int > &a_vectRefRatio, const Vector< Real > &a_vectDx, const Vector< LevelData< BinFab< DragParticle > > * > &a_vectParticles, Real a_spreadingRadius, Real a_correctionRadius=2, int a_gridsGrow=0)
 defining full constructor -- calls matching define function

 ~AMRParticleProjector ()
 destructor

void define (const Vector< DisjointBoxLayout > &a_vectGrids, const Vector< DisjointBoxLayout > &a_vectParticleGrids, const Vector< ProblemDomain > &a_vectDomain, const Vector< int > &a_vectRefRatio, const Vector< Real > &a_vectDx, const Vector< LevelData< BinFab< DragParticle > > * > &a_vectParticles, Real a_spreadingRadius, Real a_correctionRadius=2, int a_gridsGrow=0)
 define function

void clear ()
 the opposite of define

void projectForce (Vector< LevelData< FArrayBox > * > &a_vectForce, const Vector< LevelData< BinFab< DragParticle > > * > &a_particles)
 projects force due to particles

void setSpreadingRadius (const Real a_rad)
 set spreading radius for MLC part of algorithm

void setCorrectionRadius (const Real a_rad)
 set correction radius for MLC part of algorithm

Real getSpreadingRadius () const
 get spreading radius for MLC part of algorithm

Real getCorrectionRadius () const
 get correction radius for MLC part of algorithm

void doImages (bool m_doImages)
 set whether to do image particles at physical boundaries

bool doImages () const
 do images at physical boundaries?

void setGridsGrow (int a_gridsGrow)
 set amount by which to pad grown grids

void infDomainCoarsenFactor (int a_factor)
 set refinement ratio down to coarser level for infDomain solve

bool isDefined () const
bool grownGridsDefined () const
 has grown grid hierarchy been defined?

void setVerbosity (int a_verbosity)
 set verbosity level

int verbosity () const
 get verbosity level

void computeD (Vector< LevelData< FArrayBox > * > &a_vectD, const Vector< LevelData< BinFab< DragParticle > > * > &a_particles)
 compute RHS for elliptic solve.

void solveForProjForce (Vector< LevelData< FArrayBox > * > &a_projectedForce, const Vector< LevelData< FArrayBox > * > &a_D, int a_lbase)
void defineImages (List< DragParticle > &a_imageParticles, const Vector< LevelData< BinFab< DragParticle > > * > &a_particles)
 compute image particles near boundary, if necessary

void defineGrownGrids (const Vector< DisjointBoxLayout > &a_grids, const Vector< LevelData< BinFab< DragParticle > > * > &a_vectParticles)
 helper function to define grown grids


Protected Methods

void createImageParticle (DragParticle &a_image, const DragParticle &a_particle, Real bndryLoc, int dir, Side::LoHiSide a_side)
 helper function

void setDefaultValues ()
 set default values


Protected Attributes

Vector< DisjointBoxLayout > m_vectGrids
 grids

Vector< DisjointBoxLayout > m_vectParticleGrids
 grids which particles will be on

Vector< DisjointBoxLayout > m_vectGrownGrids
 grids which are grown to include image particles

Vector< DisjointBoxLayout > m_vectGrownParticleGrids
 grids which are grown to include image particles, load balanced by particles

Vector< ProblemDomain > m_vectDomain
Vector< ProblemDomain > m_vectGrownDomain
Vector< int > m_vectRefRatio
Vector< int > m_vectGrownRefRatio
Vector< Real > m_vectDx
 cell spacing

Vector< Real > m_vectGrownDx
Real m_spreadingRadius
 spreading radius for MLC

Real m_correctionRadius
 correction radius for MLC

int m_gridsGrow
 extra padding to grow grids by

int m_infDomainCoarsenFactor
 amount to coarsen for infinite domain solve

List< DragParticle > m_imageParticles
 list of image particles used to approximate solid walls

bool m_doImages
 should we do the image particle computation near physical boundaries?

bool m_returnInfDomBC
 do we need inifinite domain BC's on projected force?

bool m_isDefined
bool m_grownGridsDefined
int m_verbosity
 verbosity level


Detailed Description

class to manage projection of particle drag force onto the fluid

The AMRParticleProjector class encapsulates the functionality to take the individual drag forces due to a collection of particles and apply them to the mesh in an approximation to P(f), which may be then used as a source term for a Navier-Stokes advance step.


Constructor & Destructor Documentation

AMRParticleProjector::AMRParticleProjector (    ) 
 

default constructor

AMRParticleProjector::AMRParticleProjector (  const Vector< DisjointBoxLayout > &    a_vectGrids,
const Vector< DisjointBoxLayout > &    a_vectParticleGrids,
const Vector< ProblemDomain > &    a_vectDomain,
const Vector< int > &    a_vectRefRatio,
const Vector< Real > &    a_vectDx,
const Vector< LevelData< BinFab< DragParticle > > * > &    a_vectParticles,
Real    a_spreadingRadius,
Real    a_correctionRadius = 2,
int    a_gridsGrow = 0
) 
 

defining full constructor -- calls matching define function

Note that to fully define the particle projector, we need the particles as well, in order to compute where image particles will need to be added, which are needed to figure out where to grow the grids to contain the image particles.

AMRParticleProjector::~AMRParticleProjector (    ) 
 

destructor


Member Function Documentation

void AMRParticleProjector::clear (    ) 
 

the opposite of define

void AMRParticleProjector::computeD (  Vector< LevelData< FArrayBox > * > &    a_vectD,
const Vector< LevelData< BinFab< DragParticle > > * > &    a_particles
) 
 

compute RHS for elliptic solve.

void AMRParticleProjector::createImageParticle (  DragParticle &    a_image,
const DragParticle &    a_particle,
Real    bndryLoc,
int    dir,
Side::LoHiSide    a_side
)  [protected]
 

helper function

void AMRParticleProjector::define (  const Vector< DisjointBoxLayout > &    a_vectGrids,
const Vector< DisjointBoxLayout > &    a_vectParticleGrids,
const Vector< ProblemDomain > &    a_vectDomain,
const Vector< int > &    a_vectRefRatio,
const Vector< Real > &    a_vectDx,
const Vector< LevelData< BinFab< DragParticle > > * > &    a_vectParticles,
Real    a_spreadingRadius,
Real    a_correctionRadius = 2,
int    a_gridsGrow = 0
) 
 

define function

void AMRParticleProjector::defineGrownGrids (  const Vector< DisjointBoxLayout > &    a_grids,
const Vector< LevelData< BinFab< DragParticle > > * > &    a_vectParticles
) 
 

helper function to define grown grids

note that an extra coarse level is created, so there is one more level in the newly created grown hierachy. Particles are needed in order to determine where grids will need to be grown to contain image particles.

void AMRParticleProjector::defineImages (  List< DragParticle > &    a_imageParticles,
const Vector< LevelData< BinFab< DragParticle > > * > &    a_particles
) 
 

compute image particles near boundary, if necessary

bool AMRParticleProjector::doImages (    )  const
 

do images at physical boundaries?

void AMRParticleProjector::doImages (  bool    m_doImages ) 
 

set whether to do image particles at physical boundaries

Real AMRParticleProjector::getCorrectionRadius (    )  const
 

get correction radius for MLC part of algorithm

Real AMRParticleProjector::getSpreadingRadius (    )  const
 

get spreading radius for MLC part of algorithm

bool AMRParticleProjector::grownGridsDefined (    )  const [inline]
 

has grown grid hierarchy been defined?

void AMRParticleProjector::infDomainCoarsenFactor (  int    a_factor ) 
 

set refinement ratio down to coarser level for infDomain solve

bool AMRParticleProjector::isDefined (    )  const [inline]
 

void AMRParticleProjector::projectForce (  Vector< LevelData< FArrayBox > * > &    a_vectForce,
const Vector< LevelData< BinFab< DragParticle > > * > &    a_particles
) 
 

projects force due to particles

given the collection of DragParticles, returns the projection of the force at cell centers in a_force, suitable for use as a source term in a fluid advance. Assumes that all particles have already computed their forces.

void AMRParticleProjector::setCorrectionRadius (  const Real    a_rad ) 
 

set correction radius for MLC part of algorithm

void AMRParticleProjector::setDefaultValues (    )  [protected]
 

set default values

void AMRParticleProjector::setGridsGrow (  int    a_gridsGrow ) 
 

set amount by which to pad grown grids

we may wish to add extra padding to the grown grids to account for particle motion between regridding steps.

void AMRParticleProjector::setSpreadingRadius (  const Real    a_rad ) 
 

set spreading radius for MLC part of algorithm

void AMRParticleProjector::setVerbosity (  int    a_verbosity ) 
 

set verbosity level

void AMRParticleProjector::solveForProjForce (  Vector< LevelData< FArrayBox > * > &    a_projectedForce,
const Vector< LevelData< FArrayBox > * > &    a_D,
int    a_lbase
) 
 

int AMRParticleProjector::verbosity (    )  const
 

get verbosity level


Member Data Documentation

Real AMRParticleProjector::m_correctionRadius [protected]
 

correction radius for MLC

bool AMRParticleProjector::m_doImages [protected]
 

should we do the image particle computation near physical boundaries?

int AMRParticleProjector::m_gridsGrow [protected]
 

extra padding to grow grids by

this is intended to account for particle motion between regridding

bool AMRParticleProjector::m_grownGridsDefined [protected]
 

List<DragParticle> AMRParticleProjector::m_imageParticles [protected]
 

list of image particles used to approximate solid walls

int AMRParticleProjector::m_infDomainCoarsenFactor [protected]
 

amount to coarsen for infinite domain solve

bool AMRParticleProjector::m_isDefined [protected]
 

bool AMRParticleProjector::m_returnInfDomBC [protected]
 

do we need inifinite domain BC's on projected force?

Real AMRParticleProjector::m_spreadingRadius [protected]
 

spreading radius for MLC

Vector<ProblemDomain> AMRParticleProjector::m_vectDomain [protected]
 

Vector<Real> AMRParticleProjector::m_vectDx [protected]
 

cell spacing

Vector<DisjointBoxLayout> AMRParticleProjector::m_vectGrids [protected]
 

grids

Vector<ProblemDomain> AMRParticleProjector::m_vectGrownDomain [protected]
 

Vector<Real> AMRParticleProjector::m_vectGrownDx [protected]
 

Vector<DisjointBoxLayout> AMRParticleProjector::m_vectGrownGrids [protected]
 

grids which are grown to include image particles

Vector<DisjointBoxLayout> AMRParticleProjector::m_vectGrownParticleGrids [protected]
 

grids which are grown to include image particles, load balanced by particles

Vector<int> AMRParticleProjector::m_vectGrownRefRatio [protected]
 

Vector<DisjointBoxLayout> AMRParticleProjector::m_vectParticleGrids [protected]
 

grids which particles will be on

Vector<int> AMRParticleProjector::m_vectRefRatio [protected]
 

int AMRParticleProjector::m_verbosity [protected]
 

verbosity level


The documentation for this class was generated from the following file:
Generated on Wed Jan 19 17:55:26 2005 for Chombo&INSwithParticles by doxygen1.2.16