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

LevelOp.H

Go to the documentation of this file.
00001 /*   _______              __
00002     / ___/ /  ___  __ _  / /  ___
00003    / /__/ _ \/ _ \/  ' \/ _ \/ _ \
00004    \___/_//_/\___/_/_/_/_.__/\___/
00005 */
00006 //
00007 // This software is copyright (C) by the Lawrence Berkeley
00008 // National Laboratory.  Permission is granted to reproduce
00009 // this software for non-commercial purposes provided that
00010 // this notice is left intact.
00011 //
00012 // It is acknowledged that the U.S. Government has rights to
00013 // this software under Contract DE-AC03-765F00098 between
00014 // the U.S.  Department of Energy and the University of
00015 // California.
00016 //
00017 // This software is provided as a professional and academic
00018 // contribution for joint exchange. Thus it is experimental,
00019 // is provided ``as is'', with no warranties of any kind
00020 // whatsoever, no support, no promise of updates, or printed
00021 // documentation. By using this software, you acknowledge
00022 // that the Lawrence Berkeley National Laboratory and
00023 // Regents of the University of California shall have no
00024 // liability with respect to the infringement of other
00025 // copyrights by any part of this software.
00026 //
00027 // DTGraves, Mon, July 26, 1999
00028 
00029 #ifndef _LEVELOP_H_
00030 #define _LEVELOP_H_
00031 
00032 #include <iostream>
00033 #include <cmath>
00034 #include <cassert>
00035 #include <cstdlib>
00036 
00037 #include "REAL.H"
00038 #include "IntVect.H"
00039 #include "Box.H"
00040 #include "DisjointBoxLayout.H"
00041 #include "LevelData.H"
00042 #include "FArrayBox.H"
00043 #include "LoHiSide.H"
00044 #include "ProblemDomain.H"
00045 
00047 
00052 class LevelOp
00053 {
00054 public:
00056   LevelOp() {};
00057 
00059   virtual ~LevelOp(){};
00060 
00062 
00066   virtual void define(
00067                       const DisjointBoxLayout& a_grids,
00069                       const DisjointBoxLayout* a_baseBAPtr,
00071                       Real                     a_dxLevel,
00073                       int                      a_refRatio,
00075                       const ProblemDomain&     a_domain,
00077                       bool                     a_homogeneousOnly,
00079                       int                      a_ncomp = 1) = 0;
00080 
00082 
00086   virtual void define(const DisjointBoxLayout& a_grids,
00087                       const DisjointBoxLayout* a_baseBAPtr,
00088                       Real                     a_dxLevel,
00089                       int                      a_refRatio,
00090                       const Box&               a_domain,
00091                       bool                     a_homogeneousOnly,
00092                       int                      a_ncomp = 1) = 0;
00093 
00095 
00100   virtual void define(
00101                       const LevelOp* a_opfine,
00103                       int            a_reftoFine) = 0;
00104 
00106 
00110   virtual void CFInterp(
00111                         LevelData<FArrayBox>&       a_phif,
00113                         const LevelData<FArrayBox>& a_phic) = 0;
00114 
00116 
00118   virtual void homogeneousCFInterp(LevelData<FArrayBox>& a_phif) = 0;
00119 
00121 
00123   virtual LevelOp* new_levelop() const = 0;
00124 
00126   virtual bool isDefined() const = 0;
00127 
00129 
00134   virtual void smooth(
00135                       LevelData<FArrayBox>&       a_phi,
00137                       const LevelData<FArrayBox>& a_rhs) = 0;
00138 
00140 
00143   virtual void levelPreconditioner(LevelData<FArrayBox>&       a_phihat,
00144                                    const LevelData<FArrayBox>& a_rhshat) = 0;
00145 
00147 
00151   virtual void applyOpI(LevelData<FArrayBox>&       a_phi,
00152                         const LevelData<FArrayBox>* a_phicPtr,
00153                         LevelData<FArrayBox>&       a_lofPhi) = 0;
00154 
00156 
00160   virtual void applyOpIcfHphys(LevelData<FArrayBox>&       a_phi,
00161                                const LevelData<FArrayBox>* a_phicPtr,
00162                                LevelData<FArrayBox>&       a_lofPhi)  = 0;
00163 
00165 
00169   virtual void applyOpHcfIphys(LevelData<FArrayBox>& a_phi,
00170                                LevelData<FArrayBox>& a_lofPhi) = 0;
00171 
00173 
00177   virtual void applyOpH(LevelData<FArrayBox>& a_phi,
00178                         LevelData<FArrayBox>& a_lofPhi) = 0;
00179 
00181 
00183   virtual void bottomSmoother(LevelData<FArrayBox>&       a_phi,
00184                               const LevelData<FArrayBox>& a_rhs) = 0;
00185 
00187 
00192   virtual void getFlux(
00193                        FArrayBox&       a_fineFlux,
00195                        const FArrayBox& a_data,
00197                        const DataIndex& a_datInd,
00199                        int              a_dir) = 0;
00200 
00201   
00203 
00208   virtual void setConvergenceMetric(Real a_metric, int a_comp) = 0;
00209 
00210 
00211 };
00212 
00213 #endif

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