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< DisjointBoxLayoutm_vectGrids
 grids

Vector< DisjointBoxLayoutm_vectParticleGrids
 grids which particles will be on

Vector< DisjointBoxLayoutm_vectGrownGrids
 grids which are grown to include image particles

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

Vector< ProblemDomainm_vectDomain
Vector< ProblemDomainm_vectGrownDomain
Vector< int > m_vectRefRatio
Vector< int > m_vectGrownRefRatio
Vector< Realm_vectDx
 cell spacing

Vector< Realm_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< DragParticlem_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