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

#include <DirichletViscousTensorEBBC.H>

Inheritance diagram for DirichletViscousTensorEBBC:
Inheritance graph
[legend]

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)
 
- Public Member Functions inherited from ViscousBaseEBBC
 ViscousBaseEBBC ()
 
virtual ~ViscousBaseEBBC ()
 
void setCoef (EBLevelGrid &a_eblg, Real &a_beta, RefCountedPtr< LevelData< BaseIVFAB< Real > > > &a_eta, RefCountedPtr< LevelData< BaseIVFAB< Real > > > &a_lambda, RefCountedPtr< LevelData< EBFluxFAB > > &a_etaOpen, RefCountedPtr< LevelData< EBFluxFAB > > &a_lambdaOpen)
 
virtual void setValue (Real a_value)
 
virtual void setFunction (RefCountedPtr< BaseBCFuncEval > a_func)
 
void getBoundaryGrad (Real a_grad[CH_SPACEDIM][CH_SPACEDIM], const VolIndex &a_vof, const RealVect &a_dx, const RealVect &a_probLo, const EBISBox &a_ebisBox)
 
void getFluxFromGrad (Real a_flux[CH_SPACEDIM][CH_SPACEDIM], const Real a_grad[CH_SPACEDIM][CH_SPACEDIM], const VolIndex &a_vof, const DataIndex &a_dit)
 
void getChangeInSolution (Real a_deltaLph[CH_SPACEDIM], const Real a_flux[CH_SPACEDIM][CH_SPACEDIM], const RealVect &a_dx, const VolIndex &a_vof, const DataIndex &a_dit, const EBISBox &a_ebisBox)
 
- Public Member Functions inherited from BaseEBBC
 BaseEBBC ()
 
virtual ~BaseEBBC ()
 
virtual void getEBFlux (Real &a_flux, const VolIndex &a_vof, const LevelData< EBCellFAB > &a_phi, const LayoutData< IntVectSet > &a_cfivs, const DataIndex &a_dit, const RealVect &a_probLo, const RealVect &a_dx, const bool &a_useHomogeneous, const Real &a_time, const pair< int, Real > *a_cacheHint=0)
 deprecated interface. More...
 
virtual void setData (RefCountedPtr< LevelData< BaseIVFAB< Real > > > &a_data)
 
bool dataBased () const
 
virtual void setType (RefCountedPtr< LevelData< BaseIVFAB< int > > > &a_type)
 

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
 
- Protected Attributes inherited from ViscousBaseEBBC
bool m_isFunction
 
Real m_value
 
RefCountedPtr< BaseBCFuncEvalm_func
 
EBLevelGrid m_eblg
 
bool m_coefSet
 
Real m_beta
 
RefCountedPtr< LevelData< BaseIVFAB< Real > > > m_eta
 
RefCountedPtr< LevelData< BaseIVFAB< Real > > > m_lambda
 
RefCountedPtr< LevelData< EBFluxFAB > > m_etaOpen
 
RefCountedPtr< LevelData< EBFluxFAB > > m_lambdaOpen
 
- Protected Attributes inherited from BaseEBBC
RefCountedPtr< LevelData< BaseIVFAB< Real > > > m_data
 
bool m_dataBased
 

Static Protected Attributes

static int s_leastSquaresRad
 

Constructor & Destructor Documentation

◆ DirichletViscousTensorEBBC() [1/2]

DirichletViscousTensorEBBC::DirichletViscousTensorEBBC ( )

◆ DirichletViscousTensorEBBC() [2/2]

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.

◆ ~DirichletViscousTensorEBBC()

virtual DirichletViscousTensorEBBC::~DirichletViscousTensorEBBC ( )
virtual

Member Function Documentation

◆ define()

virtual void DirichletViscousTensorEBBC::define ( const LayoutData< IntVectSet > &  a_cfivs,
const Real a_factor 
)
virtual

Implements BaseEBBC.

◆ getFluxStencil() [1/2]

virtual LayoutData<BaseIVFAB<VoFStencil> >* DirichletViscousTensorEBBC::getFluxStencil ( int  ivar)
inlinevirtual

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 applyEBFlux(), getCartesianGradientStencil(), getFirstOrderStencil(), getFlux(), getGradient(), getGradientFunction(), getGradientStenValue(), getGradInhomOnly(), getInhomogeneousContribution(), getJacobianAndInverse(), getNormalStencil(), getSecondOrderStencil(), m_fluxStencil, and SpaceDim.

◆ applyEBFlux()

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.

Referenced by getFluxStencil().

◆ getGradient()

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).

Referenced by getFluxStencil().

◆ getGradientStenValue()

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 
)

Referenced by getFluxStencil().

◆ getGradInhomOnly()

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

Referenced by getFluxStencil().

◆ getNormalStencil()

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

Referenced by getFluxStencil().

◆ getFluxStencil() [2/2]

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

◆ getGradientFunction()

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

Referenced by getFluxStencil().

◆ getSecondOrderStencil()

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

Referenced by getFluxStencil().

◆ getFirstOrderStencil()

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

Referenced by getFluxStencil().

◆ getJacobianAndInverse()

void DirichletViscousTensorEBBC::getJacobianAndInverse ( Real  a_Jacobian[SpaceDim][SpaceDim],
Real  a_Jinverse[SpaceDim][SpaceDim],
RealVect a_normal,
RealVect  a_tangents[SpaceDim-1] 
)
protected

Referenced by getFluxStencil().

◆ getInhomogeneousContribution()

virtual RealVect DirichletViscousTensorEBBC::getInhomogeneousContribution ( const VolIndex a_vof,
const EBCellFAB a_phi,
const EBISBox a_ebisBox,
const DataIndex a_dit,
const Real a_dx 
)
protectedvirtual

Referenced by getFluxStencil().

◆ getFlux()

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

Referenced by getFluxStencil().

◆ getCartesianGradientStencil()

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

Referenced by getFluxStencil().

Member Data Documentation

◆ s_leastSquaresRad

int DirichletViscousTensorEBBC::s_leastSquaresRad
staticprotected

◆ m_isDefined

bool DirichletViscousTensorEBBC::m_isDefined
protected

◆ m_domain

ProblemDomain DirichletViscousTensorEBBC::m_domain
protected

◆ m_ebisl

EBISLayout DirichletViscousTensorEBBC::m_ebisl
protected

◆ m_dx

RealVect DirichletViscousTensorEBBC::m_dx
protected

◆ m_fluxStencil

LayoutData<BaseIVFAB<VoFStencil> > DirichletViscousTensorEBBC::m_fluxStencil[CH_SPACEDIM]
protected

Referenced by getFluxStencil().

◆ m_fluxWeight

LayoutData<BaseIVFAB<Real> > DirichletViscousTensorEBBC::m_fluxWeight[CH_SPACEDIM]
protected

◆ m_ghostCellsPhi

const IntVect DirichletViscousTensorEBBC::m_ghostCellsPhi
protected

◆ m_ghostCellsRHS

const IntVect DirichletViscousTensorEBBC::m_ghostCellsRHS
protected

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