Main Page | Namespace List | Class Hierarchy | Alphabetical List | Compound List | File List | Compound Members | File Members

channelBC.H

Go to the documentation of this file.
00001 /* _______              __
00002   / ___/ /  ___  __ _  / /  ___
00003  / /__/ _ \/ _ \/  ' \/ _ \/ _ \
00004  \___/_//_/\___/_/_/_/_.__/\___/ 
00005 */
00006 
00007 // channelBC.H
00008 
00009 //
00010 // This software is copyright (C) by the Lawrence Berkeley
00011 // National Laboratory.  Permission is granted to reproduce
00012 // this software for non-commercial purposes provided that
00013 // this notice is left intact.
00014 // 
00015 // It is acknowledged that the U.S. Government has rights to
00016 // this software under Contract DE-AC03-765F00098 between
00017 // the U.S.  Department of Energy and the University of
00018 // California.
00019 //
00020 // This software is provided as a professional and academic
00021 // contribution for joint exchange. Thus it is experimental,
00022 // is provided ``as is'', with no warranties of any kind
00023 // whatsoever, no support, no promise of updates, or printed
00024 // documentation. By using this software, you acknowledge
00025 // that the Lawrence Berkeley National Laboratory and
00026 // Regents of the University of California shall have no
00027 // liability with respect to the infringement of other
00028 // copyrights by any part of this software.
00029 //
00030 // Dan Martin, Fri, Jan 14, 2000
00031 
00032 #ifndef _channelBC_H_
00033 #define _channelBC_H_
00034 
00035 #include "PhysBCUtil.H"
00036 #include "scalarDirichletBC.H"
00037 #include "basicVelBC.H"
00038 #include "ExtrapBC.H"
00039 #include "PoissonBC.H"
00040 
00041 
00043 class channelBC : public PhysBCUtil
00044 {
00045 
00046 public:
00048   channelBC();
00049 
00051   virtual ~channelBC();
00052 
00054   virtual PhysBCUtil* newPhysBCUtil() const;
00055 
00057   
00058 
00060   void setMaxInflowVel(Real a_maxInflowVel);
00061 
00063   Real maxInflowVel() const;
00064 
00066   virtual void setBCs();
00067   
00068 
00070   virtual void computeBoundaryDt(Real& a_dt, Real a_cfl, Real a_dx) const;
00071 
00072 
00074   virtual DomainGhostBC* gradMacPressureBC() const;
00075 
00077   virtual DomainGhostBC* gradELambdaBC() const;
00078 
00080   virtual DomainGhostBC* diffusiveBC(int a_scalarType) const;
00081 
00082 
00083 protected:
00084 
00086   virtual DomainGhostBC* basicScalBC(bool a_isHomogeneous,
00087                                      int a_scalType) const;
00088   
00089 
00091   virtual void basicCCVelBC(DomainGhostBC& a_newBC,
00092                             bool a_isHomogeneous,
00093                             bool a_isViscous,
00094                             int a_velComponent,
00095                             Interval& a_interval) const;
00096 
00098   virtual basicEdgeVelBC* basicECVelBC(bool a_isHomogeneous,
00099                                        bool a_isViscous,
00100                                        bool a_isSingleComponent) const;
00101 
00103   Real m_maxInflowVel;
00104 
00105 private:
00106 
00108   channelBC(const channelBC& rhs) {;}
00109 
00110 };
00111 
00112 
00114 class scalarInflowChannelBC : public scalarInflowBC
00115 {
00116   
00117 public:
00118   friend class DomainGhostBC;
00119 
00121   scalarInflowChannelBC();
00122 
00124   scalarInflowChannelBC(int dir, Side::LoHiSide sd);
00125 
00127   scalarInflowChannelBC(int dir, Side::LoHiSide sd,
00128                         const Interval& a_comps);
00129 
00131   virtual ~scalarInflowChannelBC();
00132 
00133 private:
00134   virtual void fillBCValues(FArrayBox& a_neumfac,
00135                             FArrayBox& a_dirfac,
00136                             FArrayBox& a_inhmval,
00137                             Real a_dx,
00138                             const Box& a_domain) const;
00139 
00140   virtual BoxGhostBC* new_boxghostbc() const;
00141 
00142 
00143 };
00144 
00145 
00147 class NormalInflowVelBC : public InflowVelBC
00148 {
00149 
00150 public:
00151   friend class DomainGhostBC;
00152 
00154   NormalInflowVelBC();
00155 
00157   virtual ~NormalInflowVelBC();
00158 
00160   NormalInflowVelBC(int dir, Side::LoHiSide sd);
00161 
00163   NormalInflowVelBC(int dir, Side::LoHiSide sd,
00164                     const Interval& a_comps);
00165 
00166 
00167 protected:
00168   
00170   virtual void fillBCValues(FArrayBox& a_neumfac,
00171                             FArrayBox& a_dirfac,
00172                             FArrayBox& a_inhmval,
00173                             Real a_dx,
00174                             const Box& a_domain) const;
00175 
00177   virtual BoxGhostBC* new_boxghostbc() const;
00178 
00179 private:
00180 
00181   NormalInflowVelBC(const NormalInflowVelBC& bcin) {;}
00182   void operator =(const NormalInflowVelBC& bcin) {;}
00183 
00184 };
00185 
00186 
00187 
00188 
00189 #endif
00190 
00191 

Generated on Wed Jun 2 13:53:32 2004 for Chombo&INSwithParticles by doxygen 1.3.2