#include "IntVect.H"
#include "RealVect.H"
#include "FArrayBox.H"
#include "LevelData.H"
#include "ProblemDomain.H"
#include "RefCountedPtr.H"
#include "DataIndex.H"
#include "NamespaceHeader.H"
#include "NamespaceFooter.H"
Go to the source code of this file.
Classes | |
class | BCFunction |
class | BCHolder |
class | BCValueFunction |
class | BCValueHolder |
class | BCFuncWrapper |
this BCFunction simply wraps a BCFunc More... | |
class | ConstBCFunction |
Typedefs | |
typedef void(* | BCFunc )(FArrayBox &a_state, const Box &a_valid, const ProblemDomain &a_domain, Real a_dx, bool a_homogeneous) |
typedef void(* | BCValueFunc )(Real *a_pos, int *a_dir, Side::LoHiSide *a_side, Real *a_value) |
Functions | |
void | doNothingBC (FArrayBox &a_state, const Box &a_valid, const ProblemDomain &a_domain, Real a_dx, bool a_homogeneous) |
For use with pure periodic BC. | |
RefCountedPtr< BCFunction > | ConstDiriNeumBC (const IntVect &a_loSideType, const RealVect &a_loSideValue, const IntVect &a_hiSideType, const RealVect &a_hiSideValue) |
void | NeumBC (FArrayBox &a_state, const Box &a_valid, Real a_dx, bool a_homogeneous, const BCValueHolder &a_value, int a_dir, Side::LoHiSide a_side, Interval &a_interval) |
void | NeumBC (FArrayBox &a_state, const Box &a_valid, Real a_dx, bool a_homogeneous, const BCValueHolder &a_value, int a_dir, Side::LoHiSide a_side) |
void | NeumBC (FArrayBox &a_state, const Box &a_valid, Real a_dx, bool a_homogeneous, BCValueHolder a_value) |
void | DiriBC (FArrayBox &a_state, const Box &a_valid, Real a_dx, bool a_homogeneous, BCValueHolder a_value, int a_dir, Side::LoHiSide a_side, Interval &a_interval, int a_order=1) |
void | DiriBC (FArrayBox &a_state, const Box &a_valid, Real a_dx, bool a_homogeneous, BCValueHolder a_value, int a_dir, Side::LoHiSide a_side, int a_order=1) |
void | DiriBC (FArrayBox &a_state, const Box &a_valid, Real a_dx, bool a_homogeneous, BCValueHolder a_value, int a_order=1) |
void | NoSlipVectorBC (FArrayBox &a_state, const Box &a_valid, Real a_dx, int a_dir, Side::LoHiSide a_side, int a_order=2) |
void | ReflectiveVectorBC (FArrayBox &a_state, const Box &a_valid, Real a_dx, int a_dir, Side::LoHiSide a_side, int a_order=2) |
void | ExtrapolateBC (FArrayBox &a_state, const Box &a_valid, Real a_dx, int a_dir, Side::LoHiSide a_side, Interval &a_interval, int a_order=1) |
void | ExtrapolateBC (FArrayBox &a_state, const Box &a_valid, Real a_dx, int a_dir, Side::LoHiSide a_side, int a_order=1) |
void | ExtrapolateBC (FArrayBox &a_state, const Box &a_valid, Real a_dx, int a_order=1) |
typedef void(* BCFunc)(FArrayBox &a_state, const Box &a_valid, const ProblemDomain &a_domain, Real a_dx, bool a_homogeneous) |
function interface for ghost cell boundary conditions of AMRPoissonOp. If you are using Neumann or Dirichlet boundary conditions, it is easiest to use the functions provided.
typedef void(* BCValueFunc)(Real *a_pos, int *a_dir, Side::LoHiSide *a_side, Real *a_value) |
given pos [x,y,z] position on center of cell edge int dir direction, x being 0 int side -1 for low, +1 = high, fill in the a_values array
void doNothingBC | ( | FArrayBox & | a_state, | |
const Box & | a_valid, | |||
const ProblemDomain & | a_domain, | |||
Real | a_dx, | |||
bool | a_homogeneous | |||
) |
For use with pure periodic BC.
RefCountedPtr<BCFunction> ConstDiriNeumBC | ( | const IntVect & | a_loSideType, | |
const RealVect & | a_loSideValue, | |||
const IntVect & | a_hiSideType, | |||
const RealVect & | a_hiSideValue | |||
) |
A helper function to produce the needed object for constant Dirichlet/Neumann on all the faces. The return value can be passed to anything expecting a BCFunction/BCHolder.
"a_loSideType/a_hiSideType" specify the type of boundary condition in a given direction by having the enter corresponding to the direction set to 0 for Neumann or 1 for Dirichlet (on the low or high side, respectively). "a_loSideValue/a_hiSideValue" specify the (constant) value for boundary condition specified above.
For example, in 2D if "a_loSideType" = (1,0), "a_hiSideType" = (1,1), "a_loSideValue" = (0.0,1.0) and "a_hiSideValue" = (0.0,0.0) then the boundary conditions are:
Low side x: Dirichlet = 0.0 Low side y: Neumann = 1.0 High side x: Dirichlet = 0.0 High side y: Dirichlet = 0.0
void NeumBC | ( | FArrayBox & | a_state, | |
const Box & | a_valid, | |||
Real | a_dx, | |||
bool | a_homogeneous, | |||
const BCValueHolder & | a_value, | |||
int | a_dir, | |||
Side::LoHiSide | a_side, | |||
Interval & | a_interval | |||
) |
Neumann bc for a particular side, specified component interval For use in AMRPoissonOp.
void NeumBC | ( | FArrayBox & | a_state, | |
const Box & | a_valid, | |||
Real | a_dx, | |||
bool | a_homogeneous, | |||
const BCValueHolder & | a_value, | |||
int | a_dir, | |||
Side::LoHiSide | a_side | |||
) |
Neumann bc for a particular side, all components For use in AMRPoissonOp.
void NeumBC | ( | FArrayBox & | a_state, | |
const Box & | a_valid, | |||
Real | a_dx, | |||
bool | a_homogeneous, | |||
BCValueHolder | a_value | |||
) |
Neumann bcs for all sides For use in AMRPoissonOp.
void DiriBC | ( | FArrayBox & | a_state, | |
const Box & | a_valid, | |||
Real | a_dx, | |||
bool | a_homogeneous, | |||
BCValueHolder | a_value, | |||
int | a_dir, | |||
Side::LoHiSide | a_side, | |||
Interval & | a_interval, | |||
int | a_order = 1 | |||
) |
Dirichlet boundary conditions for a side, specified component interval For use in AMRPoissonOp.
void DiriBC | ( | FArrayBox & | a_state, | |
const Box & | a_valid, | |||
Real | a_dx, | |||
bool | a_homogeneous, | |||
BCValueHolder | a_value, | |||
int | a_dir, | |||
Side::LoHiSide | a_side, | |||
int | a_order = 1 | |||
) |
Dirichlet boundary conditions for a side, all components. For use in AMRPoissonOp.
void DiriBC | ( | FArrayBox & | a_state, | |
const Box & | a_valid, | |||
Real | a_dx, | |||
bool | a_homogeneous, | |||
BCValueHolder | a_value, | |||
int | a_order = 1 | |||
) |
Dirichlet boundary conditions for one side. For use in AMRPoissonOp.
void NoSlipVectorBC | ( | FArrayBox & | a_state, | |
const Box & | a_valid, | |||
Real | a_dx, | |||
int | a_dir, | |||
Side::LoHiSide | a_side, | |||
int | a_order = 2 | |||
) |
No slip vector bc (zero all comps). need a_state.ncomp == spacedim For use in ResistivityOp, for example.
void ReflectiveVectorBC | ( | FArrayBox & | a_state, | |
const Box & | a_valid, | |||
Real | a_dx, | |||
int | a_dir, | |||
Side::LoHiSide | a_side, | |||
int | a_order = 2 | |||
) |
0 normal comp, reflective for all other comps need a_state.ncomp == spacedim For use in ResistivityOp, for example.
void ExtrapolateBC | ( | FArrayBox & | a_state, | |
const Box & | a_valid, | |||
Real | a_dx, | |||
int | a_dir, | |||
Side::LoHiSide | a_side, | |||
Interval & | a_interval, | |||
int | a_order = 1 | |||
) |
Extrapolation boundary conditions for a side, specified component interval For use in AMRPoissonOp.
void ExtrapolateBC | ( | FArrayBox & | a_state, | |
const Box & | a_valid, | |||
Real | a_dx, | |||
int | a_dir, | |||
Side::LoHiSide | a_side, | |||
int | a_order = 1 | |||
) |
Extrapolation boundary conditions for a side, all components. For use in AMRPoissonOp.
Extrapolation boundary conditions for one side. For use in AMRPoissonOp.