Chombo + EB
3.0
|
#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 | ConstBCFunction |
Macros | |
#define | _BCFUNC_H_ |
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. More... | |
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) |
#define _BCFUNC_H_ |
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.