14 #ifndef _VELOCITYBC_H_ 15 #define _VELOCITYBC_H_ 17 #include "PetscCompGridVTO.H" 20 #include "NamespaceHeader.H" 36 for (
int comp = 0; comp < SpaceDim; comp++)
38 CompGridVTOBC::setDiri(m_dir,m_side,comp,
true);
44 const ProblemDomain& a_domain,
48 const IntVect ghostVect = IntVect::Unit;
50 if (!(a_domain.isPeriodic(m_dir)))
53 Box ghostBox = adjCellBox(a_valid, m_dir, m_side, 1);
54 if(!a_domain.domainBox().contains(ghostBox))
56 ghostBox &= a_vel.box();
57 a_vel.mult(-1.0,ghostBox,0,SpaceDim);
64 Side::LoHiSide m_side;
68 MayDay::Error(
" NoSlipCompGridVTOBC(const NoSlipCompGridVTOBC&) not implemented");
73 MayDay::Error(
" NoSlipCompGridVTOBC& operator= (const NoSlipCompGridVTOBC&) not implemented");
93 CompGridVTOBC::setDiri(m_dir,m_side,m_dir,
true);
94 for (
int i = 1; i < SpaceDim; i++)
95 CompGridVTOBC::setDiri(m_dir,m_side,(m_dir+i)%SpaceDim,
false);
101 const ProblemDomain& a_domain,
105 const IntVect ghostVect = IntVect::Unit;
107 if (!(a_domain.isPeriodic(m_dir)))
110 Box ghostBox = adjCellBox(a_valid, m_dir, m_side, 1);
111 if(!a_domain.domainBox().contains(ghostBox))
113 ghostBox &= a_vel.box();
114 a_vel.mult(-1.0,ghostBox,m_dir,1);
121 Side::LoHiSide m_side;
125 MayDay::Error(
" IceDivideCompGridVTOBC(const IceDivideCompGridVTOBC&) not implemented");
130 MayDay::Error(
" IceDivideCompGridVTOBC& operator= (const IceDivideCompGridVTOBC&) not implemented");
150 for (
int comp = 0; comp < SpaceDim; comp++)
152 CompGridVTOBC::setDiri(m_dir,m_side,comp,
false);
158 const ProblemDomain& a_domain,
162 const IntVect ghostVect = IntVect::Unit;
164 if (!(a_domain.isPeriodic(m_dir)))
172 Side::LoHiSide m_side;
176 MayDay::Error(
" NaturalCompGridVTOBC(const NaturalCompGridVTOBC&) not implemented");
181 MayDay::Error(
" NaturalCompGridVTOBC& operator= (const NaturalCompGridVTOBC&) not implemented");
190 Vector<RefCountedPtr<CompGridVTOBC> > m_loBC;
191 Vector<RefCountedPtr<CompGridVTOBC> > m_hiBC;
196 Vector<RefCountedPtr<CompGridVTOBC> > a_hiBC)
197 :m_loBC(a_loBC), m_hiBC(a_hiBC)
199 CH_assert(m_loBC.size() == SpaceDim);
200 CH_assert(m_hiBC.size() == SpaceDim);
201 for (
int dir = 0; dir < SpaceDim; dir++)
203 for (
int comp = 0; comp < SpaceDim; comp++)
205 CompGridVTOBC::setDiri(dir,Side::Lo,comp,a_loBC[dir]->isDiri(dir,Side::Lo,comp));
206 CompGridVTOBC::setDiri(dir,Side::Hi,comp,a_hiBC[dir]->isDiri(dir,Side::Hi,comp));
217 MayDay::Error(
" PerEdgeCompGridVTOBC(const PerEdgeCompGridVTOBC&) not implemented");
222 MayDay::Error(
" PerEdgeCompGridVTOBC& operator= (const PerEdgeCompGridVTOBC&) not implemented");
229 const ProblemDomain& a_domain,
233 for (
int dir = 0; dir < SpaceDim; dir++)
235 (*m_loBC[dir])(a_vel, a_valid, a_domain, a_dx, a_homogeneous);
236 (*m_hiBC[dir])(a_vel, a_valid, a_domain, a_dx, a_homogeneous);
246 #include "NamespaceFooter.H" NaturalCompGridVTOBC(int a_dir, Side::LoHiSide a_side)
Definition: VelocityBC.H:146
virtual void operator()(FArrayBox &a_vel, const Box &a_valid, const ProblemDomain &a_domain, Real a_dx, bool a_homogeneous)
Definition: VelocityBC.H:156
Apply natural conditions along one boundary.
Definition: VelocityBC.H:141
Apply ice divide conditions along one boundary.
Definition: VelocityBC.H:83
virtual void operator()(FArrayBox &a_vel, const Box &a_valid, const ProblemDomain &a_domain, Real a_dx, bool a_homogeneous)
Definition: VelocityBC.H:227
Apply no-slip conditions along one boundary.
Definition: VelocityBC.H:27
PerEdgeCompGridVTOBC(const PerEdgeCompGridVTOBC &)
Definition: VelocityBC.H:215
PerEdgeCompGridVTOBC & operator=(const PerEdgeCompGridVTOBC &)
Definition: VelocityBC.H:220
NoSlipCompGridVTOBC(int a_dir, Side::LoHiSide a_side)
Definition: VelocityBC.H:32
virtual void operator()(FArrayBox &a_vel, const Box &a_valid, const ProblemDomain &a_domain, Real a_dx, bool a_homogeneous)
Definition: VelocityBC.H:42
IceDivideCompGridVTOBC(int a_dir, Side::LoHiSide a_side)
Definition: VelocityBC.H:88
Apply a different CompGridVTOBC along each boundary.
Definition: VelocityBC.H:188
void ReflectGhostCells(LevelData< FArrayBox > &a_phi, const ProblemDomain &a_domain, const int a_dir, const Side::LoHiSide a_side)
Definition: ReflectGhostCells.cpp:15
PerEdgeCompGridVTOBC(Vector< RefCountedPtr< CompGridVTOBC > > a_loBC, Vector< RefCountedPtr< CompGridVTOBC > > a_hiBC)
Definition: VelocityBC.H:195
virtual void operator()(FArrayBox &a_vel, const Box &a_valid, const ProblemDomain &a_domain, Real a_dx, bool a_homogeneous)
Definition: VelocityBC.H:99
PerEdgeCompGridVTOBC()
Definition: VelocityBC.H:211