FaceNodeBC Class Reference

#include <NodeBC.H>

Collaboration diagram for FaceNodeBC:

Collaboration graph
[legend]

List of all members.


Detailed Description

A class to encapsulate the operations of boundary conditions on a face.

FaceNodeBC is a class to encapsulate the operations of boundary conditions at a face.

If the solution is phi and the face normal direction is x, the boundary conditions usually used can be expressed as
A*dphi/dx + B*phi = C.
The derived class provides a function to fill A and B and C.

These functions are meant to be called by DomainNodeBC only.

Constructors, destructor and defines

 FaceNodeBC ()
 FaceNodeBC (int a_dir, Side::LoHiSide a_sd)
 FaceNodeBC (int a_dir, Side::LoHiSide a_sd, const Interval &a_comps)
virtual ~FaceNodeBC ()
virtual FaceNodeBCnew_boxBC () const =0
void define (int a_dir, Side::LoHiSide a_sd)
void define (int a_dir, Side::LoHiSide a_sd, const Interval &a_comps)

Protected Member Functions

Functions to apply boundary conditions
virtual void applyInhomogeneousBCs (FArrayBox &a_state, const ProblemDomain &a_domain, Real a_dx) const
virtual void applyInhomogeneousBCs (FArrayBox &a_state, const Box &a_domain, Real a_dx) const
virtual void applyHomogeneousBCs (FArrayBox &a_state, const ProblemDomain &domain, Real a_dx) const
virtual void applyHomogeneousBCs (FArrayBox &a_state, const Box &domain, Real a_dx) const
virtual void applyEitherBCs (FArrayBox &a_state, const ProblemDomain &domain, Real a_dx, bool a_homogeneous) const
virtual void applyEitherBCs (FArrayBox &a_state, const Box &domain, Real a_dx, bool a_homogeneous) const
virtual void applyBCs (const Box &a_bcbox, FArrayBox &a_state, const FArrayBox &a_neumfac, const FArrayBox &a_dircfac, const FArrayBox &a_inhmval, Real a_dx) const
Functions to fill in boundary-condition coefficients
virtual void fillBCValues (FArrayBox &a_neumfac, FArrayBox &a_dircfac, FArrayBox &a_inhmval, Real a_dx, const ProblemDomain &domain) const =0
virtual void fillBCValues (FArrayBox &a_neumfac, FArrayBox &a_dircfac, FArrayBox &a_inhmval, Real a_dx, const Box &domain) const =0

Protected Attributes

Side::LoHiSide m_side
int m_direction
Interval m_components

Private Member Functions

 FaceNodeBC (const FaceNodeBC &)
virtual void operator= (const FaceNodeBC &)

Friends

class DomainNodeBC


Constructor & Destructor Documentation

FaceNodeBC::FaceNodeBC (  )  [inline]

Default constructor, sets interval to (-1:-1).

FaceNodeBC::FaceNodeBC ( int  a_dir,
Side::LoHiSide  a_sd 
)

Constructor for face on side a_sd in direction a_idir. This constructor sets the components interval to be (0:0).

FaceNodeBC::FaceNodeBC ( int  a_dir,
Side::LoHiSide  a_sd,
const Interval a_comps 
)

Constructor for face on side a_sd in direction a_idir, for data components a_comps.

virtual FaceNodeBC::~FaceNodeBC (  )  [inline, virtual]

Destructor.

FaceNodeBC::FaceNodeBC ( const FaceNodeBC  )  [inline, private]


Member Function Documentation

virtual FaceNodeBC* FaceNodeBC::new_boxBC (  )  const [protected, pure virtual]

Virtual constructor workaround. Need this in derived class.

void FaceNodeBC::define ( int  a_dir,
Side::LoHiSide  a_sd 
) [protected]

Defines face on side a_sd in direction a_idir. Sets the components interval to be (0:0).

void FaceNodeBC::define ( int  a_dir,
Side::LoHiSide  a_sd,
const Interval a_comps 
) [protected]

Defines face on side a_sd in direction a_idir, for data components a_comps.

virtual void FaceNodeBC::applyInhomogeneousBCs ( FArrayBox a_state,
const ProblemDomain a_domain,
Real  a_dx 
) const [protected, virtual]

Apply inhomogeneous boundary conditions on this face.

Parameters:
a_state  NODE-centered data to be modified by boundary condition
a_domain  CELL-centered physical domain
a_dx  mesh spacing

virtual void FaceNodeBC::applyInhomogeneousBCs ( FArrayBox a_state,
const Box a_domain,
Real  a_dx 
) const [protected, virtual]

Apply inhomogeneous boundary conditions on this face.

Parameters:
a_state  NODE-centered data to be modified by boundary condition
a_domain  CELL-centered physical domain
a_dx  mesh spacing

virtual void FaceNodeBC::applyHomogeneousBCs ( FArrayBox a_state,
const ProblemDomain domain,
Real  a_dx 
) const [protected, virtual]

Apply homogeneous boundary conditions on this face.

Parameters:
a_state  NODE-centered data to be modified by boundary condition
domain  CELL-centered physical domain
a_dx  mesh spacing

virtual void FaceNodeBC::applyHomogeneousBCs ( FArrayBox a_state,
const Box domain,
Real  a_dx 
) const [protected, virtual]

Apply homogeneous boundary conditions on this face.

Parameters:
a_state  NODE-centered data to be modified by boundary condition
domain  CELL-centered physical domain
a_dx  mesh spacing

virtual void FaceNodeBC::applyEitherBCs ( FArrayBox a_state,
const ProblemDomain domain,
Real  a_dx,
bool  a_homogeneous 
) const [protected, virtual]

Apply boundary conditions on this face.

Parameters:
a_state  NODE-centered data to be modified by boundary condition
domain  CELL-centered physical domain
a_dx  mesh spacing
a_homogeneous  flag for homogeneous boundary condition

virtual void FaceNodeBC::applyEitherBCs ( FArrayBox a_state,
const Box domain,
Real  a_dx,
bool  a_homogeneous 
) const [protected, virtual]

Apply boundary conditions on this face.

Parameters:
a_state  NODE-centered data to be modified by boundary condition
domain  CELL-centered physical domain
a_dx  mesh spacing
a_homogeneous  flag for homogeneous boundary condition

virtual void FaceNodeBC::applyBCs ( const Box a_bcbox,
FArrayBox a_state,
const FArrayBox a_neumfac,
const FArrayBox a_dircfac,
const FArrayBox a_inhmval,
Real  a_dx 
) const [protected, virtual]

Apply boundary condition A*dphi/dx + B*phi = C, with the coefficients having been set in fillBCValues().

Parameters:
a_bcbox  NODEs on this boundary face
a_state  NODE-centered data to be modified by boundary condition
a_neumfac  coefficients of dphi/dx
a_dircfac  coefficients of phi
a_inhmval  constant coefficients
a_dx  mesh spacing

virtual void FaceNodeBC::fillBCValues ( FArrayBox a_neumfac,
FArrayBox a_dircfac,
FArrayBox a_inhmval,
Real  a_dx,
const ProblemDomain domain 
) const [protected, pure virtual]

Set A and B and C in the boundary condition A*dphi/dx + B*phi = C.
The FArrayBoxes are all based on the NODEs of this face.

Need this function in derived class.

Parameters:
a_neumfac  coefficients of dphi/dx
a_dircfac  coefficients of phi
a_inhmval  constant coefficients
a_dx  mesh spacing
domain  CELL-centered physical domain

virtual void FaceNodeBC::fillBCValues ( FArrayBox a_neumfac,
FArrayBox a_dircfac,
FArrayBox a_inhmval,
Real  a_dx,
const Box domain 
) const [protected, pure virtual]

Set A and B and C in the boundary condition A*dphi/dx + B*phi = C.
The FArrayBoxes are all based on the NODEs of this face.

Need this function in derived class.

Parameters:
a_neumfac  coefficients of dphi/dx
a_dircfac  coefficients of phi
a_inhmval  constant coefficients
a_dx  mesh spacing
domain  CELL-centered physical domain

virtual void FaceNodeBC::operator= ( const FaceNodeBC  )  [inline, private, virtual]


Friends And Related Function Documentation

friend class DomainNodeBC [friend]


Member Data Documentation

low or high face

int FaceNodeBC::m_direction [protected]

dimension of face

components of data


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

Generated on Tue Apr 14 14:23:33 2009 for Chombo + EB by  doxygen 1.5.5