#include <DirichletViscousTensorEBBC.H>
Public Member Functions | |
DirichletViscousTensorEBBC () | |
DirichletViscousTensorEBBC (const ProblemDomain &a_domain, const EBISLayout &a_layout, const RealVect &a_dx, const IntVect *a_ghostCellsPhi, const IntVect *a_ghostCellsRhs) | |
virtual | ~DirichletViscousTensorEBBC () |
virtual void | define (const LayoutData< IntVectSet > &a_cfivs, const Real &a_factor) |
virtual LayoutData< BaseIVFAB < VoFStencil > > * | getFluxStencil (int ivar) |
virtual void | applyEBFlux (EBCellFAB &a_lphi, const EBCellFAB &a_phi, VoFIterator &a_vofit, const LayoutData< IntVectSet > &a_cfivs, const DataIndex &a_dit, const RealVect &a_probLo, const RealVect &a_dx, const Real &a_factor, const bool &a_useHomogeneous, const Real &a_time) |
void | getGradient (Real a_grad[SpaceDim][SpaceDim], const VolIndex &a_vof, const EBCellFAB &a_phi, const EBISBox &a_ebisBox, const DataIndex &a_dit, const Real &a_dx, bool a_homogeneous) |
void | getGradientStenValue (Real a_grad[SpaceDim][SpaceDim], const VolIndex &a_vof, const EBCellFAB &a_phi, const EBISBox &a_ebisBox, const DataIndex &a_dit, const Real &a_dx, bool a_homogeneous) |
Protected Member Functions | |
void | getGradInhomOnly (Real a_grad[SpaceDim][SpaceDim], const Real &a_weight, const VolIndex &a_vof, const EBISBox &a_ebisBox, const Real &a_dx) |
void | getNormalStencil (VoFStencil &a_stencil, Real &a_weight, const VolIndex &a_vof, const EBISBox &a_ebisBox, const RealVect &a_dx, const IntVectSet &a_cfivs) |
void | getFluxStencil (VoFStencil a_stencil[SpaceDim], Real a_weight[SpaceDim], const DataIndex &a_dit, const VolIndex &a_vof, const EBISBox &a_ebisBox, const RealVect &a_dx, const IntVectSet &a_cfivs) |
void | getGradientFunction (Real a_grad[SpaceDim][SpaceDim], const VolIndex &a_vof, const EBCellFAB &a_phi, const EBISBox &a_ebisBox, const DataIndex &a_dit, const Real &a_dx, bool a_homogeneous) |
bool | getSecondOrderStencil (VoFStencil &a_stencil, Real &a_weight, Vector< VoFStencil > &a_pointStencil, Vector< Real > &a_distanceAlongLine, const VolIndex &a_vof, const EBISBox &a_ebisBox, const RealVect &a_dx, const IntVectSet &a_cfivs) |
void | getFirstOrderStencil (VoFStencil &a_stencil, Real &a_weight, const VolIndex &a_vof, const EBISBox &a_ebisBox, const RealVect &a_dx, const IntVectSet &a_cfivs) |
void | getJacobianAndInverse (Real a_Jacobian[SpaceDim][SpaceDim], Real a_Jinverse[SpaceDim][SpaceDim], RealVect &a_normal, RealVect a_tangents[SpaceDim-1]) |
virtual RealVect | getInhomogeneousContribution (const VolIndex &a_vof, const EBCellFAB &a_phi, const EBISBox &a_ebisBox, const DataIndex &a_dit, const Real &a_dx) |
void | getFlux (Real a_flux[SpaceDim][SpaceDim], const VolIndex &a_vof, const EBCellFAB &a_phi, const EBISBox &a_ebisBox, const DataIndex &a_dit, const Real &a_dx, bool a_homogeneous) |
void | getCartesianGradientStencil (VoFStencil a_gradStencils[SpaceDim][SpaceDim], VoFStencil &a_normalStencil, const DataIndex &a_dit, const VolIndex &a_vof, const EBISBox &a_ebisBox, const RealVect &a_dx) |
Protected Attributes | |
bool | m_isDefined |
ProblemDomain | m_domain |
EBISLayout | m_ebisl |
RealVect | m_dx |
LayoutData< BaseIVFAB < VoFStencil > > | m_fluxStencil [CH_SPACEDIM] |
LayoutData< BaseIVFAB< Real > > | m_fluxWeight [CH_SPACEDIM] |
const IntVect | m_ghostCellsPhi |
const IntVect | m_ghostCellsRHS |
Static Protected Attributes | |
static int | s_leastSquaresRad |
DirichletViscousTensorEBBC::DirichletViscousTensorEBBC | ( | ) |
DirichletViscousTensorEBBC::DirichletViscousTensorEBBC | ( | const ProblemDomain & | a_domain, | |
const EBISLayout & | a_layout, | |||
const RealVect & | a_dx, | |||
const IntVect * | a_ghostCellsPhi, | |||
const IntVect * | a_ghostCellsRhs | |||
) |
If the optional a_ghostCells(Phi,Rhs) args are NULL, we won't use the VoF cache.
virtual DirichletViscousTensorEBBC::~DirichletViscousTensorEBBC | ( | ) | [virtual] |
virtual void DirichletViscousTensorEBBC::define | ( | const LayoutData< IntVectSet > & | a_cfivs, | |
const Real & | a_factor | |||
) | [virtual] |
Implements BaseEBBC.
virtual LayoutData<BaseIVFAB<VoFStencil> >* DirichletViscousTensorEBBC::getFluxStencil | ( | int | ivar | ) | [inline, virtual] |
Return a pointer to the homogenous flux stencil for the boundary condition. contribution. In the case where there in no contribution in the homogeneous case (ie. homogeneous Neumann) return NULL.
Implements BaseEBBC.
References m_fluxStencil.
virtual void DirichletViscousTensorEBBC::applyEBFlux | ( | EBCellFAB & | a_lphi, | |
const EBCellFAB & | a_phi, | |||
VoFIterator & | a_vofit, | |||
const LayoutData< IntVectSet > & | a_cfivs, | |||
const DataIndex & | a_dit, | |||
const RealVect & | a_probLo, | |||
const RealVect & | a_dx, | |||
const Real & | a_factor, | |||
const bool & | a_useHomogeneous, | |||
const Real & | a_time | |||
) | [virtual] |
add change in lphi due to eb flux
Implements BaseEBBC.
void DirichletViscousTensorEBBC::getGradient | ( | Real | a_grad[SpaceDim][SpaceDim], | |
const VolIndex & | a_vof, | |||
const EBCellFAB & | a_phi, | |||
const EBISBox & | a_ebisBox, | |||
const DataIndex & | a_dit, | |||
const Real & | a_dx, | |||
bool | a_homogeneous | |||
) |
public for testing. gets the gradient of the solution at centroid of the embedded boundary given the boundary condition and the solution. In both cases, it uses the johansen stencil for the normal gradient. For the tangential gradient, in the function case, it calls the derivative function (in the value case, it sets tangential gradients to zero). Since the derivative function operates in cartesian space there is some complication (set all cartesian gradients. rotate to NT space. overwrite normal gradient. rotate back to cartesian space).
void DirichletViscousTensorEBBC::getGradientStenValue | ( | Real | a_grad[SpaceDim][SpaceDim], | |
const VolIndex & | a_vof, | |||
const EBCellFAB & | a_phi, | |||
const EBISBox & | a_ebisBox, | |||
const DataIndex & | a_dit, | |||
const Real & | a_dx, | |||
bool | a_homogeneous | |||
) |
void DirichletViscousTensorEBBC::getGradInhomOnly | ( | Real | a_grad[SpaceDim][SpaceDim], | |
const Real & | a_weight, | |||
const VolIndex & | a_vof, | |||
const EBISBox & | a_ebisBox, | |||
const Real & | a_dx | |||
) | [protected] |
void DirichletViscousTensorEBBC::getNormalStencil | ( | VoFStencil & | a_stencil, | |
Real & | a_weight, | |||
const VolIndex & | a_vof, | |||
const EBISBox & | a_ebisBox, | |||
const RealVect & | a_dx, | |||
const IntVectSet & | a_cfivs | |||
) | [protected] |
void DirichletViscousTensorEBBC::getFluxStencil | ( | VoFStencil | a_stencil[SpaceDim], | |
Real | a_weight[SpaceDim], | |||
const DataIndex & | a_dit, | |||
const VolIndex & | a_vof, | |||
const EBISBox & | a_ebisBox, | |||
const RealVect & | a_dx, | |||
const IntVectSet & | a_cfivs | |||
) | [protected] |
void DirichletViscousTensorEBBC::getGradientFunction | ( | Real | a_grad[SpaceDim][SpaceDim], | |
const VolIndex & | a_vof, | |||
const EBCellFAB & | a_phi, | |||
const EBISBox & | a_ebisBox, | |||
const DataIndex & | a_dit, | |||
const Real & | a_dx, | |||
bool | a_homogeneous | |||
) | [protected] |
bool DirichletViscousTensorEBBC::getSecondOrderStencil | ( | VoFStencil & | a_stencil, | |
Real & | a_weight, | |||
Vector< VoFStencil > & | a_pointStencil, | |||
Vector< Real > & | a_distanceAlongLine, | |||
const VolIndex & | a_vof, | |||
const EBISBox & | a_ebisBox, | |||
const RealVect & | a_dx, | |||
const IntVectSet & | a_cfivs | |||
) | [protected] |
void DirichletViscousTensorEBBC::getFirstOrderStencil | ( | VoFStencil & | a_stencil, | |
Real & | a_weight, | |||
const VolIndex & | a_vof, | |||
const EBISBox & | a_ebisBox, | |||
const RealVect & | a_dx, | |||
const IntVectSet & | a_cfivs | |||
) | [protected] |
void DirichletViscousTensorEBBC::getJacobianAndInverse | ( | Real | a_Jacobian[SpaceDim][SpaceDim], | |
Real | a_Jinverse[SpaceDim][SpaceDim], | |||
RealVect & | a_normal, | |||
RealVect | a_tangents[SpaceDim-1] | |||
) | [protected] |
virtual RealVect DirichletViscousTensorEBBC::getInhomogeneousContribution | ( | const VolIndex & | a_vof, | |
const EBCellFAB & | a_phi, | |||
const EBISBox & | a_ebisBox, | |||
const DataIndex & | a_dit, | |||
const Real & | a_dx | |||
) | [protected, virtual] |
void DirichletViscousTensorEBBC::getFlux | ( | Real | a_flux[SpaceDim][SpaceDim], | |
const VolIndex & | a_vof, | |||
const EBCellFAB & | a_phi, | |||
const EBISBox & | a_ebisBox, | |||
const DataIndex & | a_dit, | |||
const Real & | a_dx, | |||
bool | a_homogeneous | |||
) | [protected] |
void DirichletViscousTensorEBBC::getCartesianGradientStencil | ( | VoFStencil | a_gradStencils[SpaceDim][SpaceDim], | |
VoFStencil & | a_normalStencil, | |||
const DataIndex & | a_dit, | |||
const VolIndex & | a_vof, | |||
const EBISBox & | a_ebisBox, | |||
const RealVect & | a_dx | |||
) | [protected] |
int DirichletViscousTensorEBBC::s_leastSquaresRad [static, protected] |
bool DirichletViscousTensorEBBC::m_isDefined [protected] |
ProblemDomain DirichletViscousTensorEBBC::m_domain [protected] |
EBISLayout DirichletViscousTensorEBBC::m_ebisl [protected] |
RealVect DirichletViscousTensorEBBC::m_dx [protected] |
LayoutData<BaseIVFAB<VoFStencil> > DirichletViscousTensorEBBC::m_fluxStencil[CH_SPACEDIM] [protected] |
Referenced by getFluxStencil().
LayoutData<BaseIVFAB<Real> > DirichletViscousTensorEBBC::m_fluxWeight[CH_SPACEDIM] [protected] |
const IntVect DirichletViscousTensorEBBC::m_ghostCellsPhi [protected] |
const IntVect DirichletViscousTensorEBBC::m_ghostCellsRHS [protected] |