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

CFStencil.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 
00028 #ifndef _CFStencil_H_
00029 #define _CFStencil_H_
00030 
00031 #include <iostream>
00032 #include <math.h>
00033 #include <assert.h>
00034 #include <stdlib.h>
00035 #include "DisjointBoxLayout.H"
00036 #include "Box.H"
00037 #include "LoHiSide.H"
00038 #include "IntVectSet.H"
00039 
00041 
00047 class CFStencil
00048 {
00049 
00050 private:
00051 
00052 protected:
00053   //for internal use
00054   void  setDefaultValues();
00055 
00056   //the following variables are mainly for self-identification
00057 
00058   // direction normal to interface
00059   int m_direction;                 
00060 
00061   // interface is on high or low side of grid
00062   Side::LoHiSide m_hiorlo;
00063 
00064   //
00065   DataIndex m_dataIndex;
00066 
00067   //the following variables are to be used by others
00068 
00069   /* fine intvects which need to be interpolated */
00070   IntVectSet m_fineIVS;  
00071 
00072   /* coar intvects where slopes can be computed 
00073       == coarsened version of fiinterp ivs*/
00074   IntVectSet m_coarIVS;  
00075 
00076   bool m_isDefined;
00077 
00078 public:
00080 
00082 
00083   bool isDefined() const;
00084 
00086 
00089   bool isEmpty() const;
00090 
00092 
00094   const IntVectSet& getFineIVS() const ;
00095 
00097 
00101   const IntVectSet& getCoarIVS() const ;
00102 
00104   CFStencil& operator= (const CFStencil& cfs_in);
00105 
00107   CFStencil(const CFStencil& cfs_in);
00108 
00109   /*dummy constructor so i can use this with 
00110      LocalBoxLayoutData
00111    */
00112   CFStencil(const Box& a_b, int a_nComp);
00113 
00114   void define(const Box& a_b, int a_nComp);
00115 
00117   CFStencil();
00118 
00120   ~CFStencil();
00121 
00123   CFStencil(
00124             const Box& FineDomain, 
00125             const Box& grid, 
00126             const DisjointBoxLayout& Levboxes, 
00127             const DisjointBoxLayout& LevCBoxes, 
00128             int RefRatio, 
00129             int Direction, 
00130             Side::LoHiSide hiorlo);
00131 
00133   CFStencil(
00134             const ProblemDomain& FineDomain,
00135             const Box& grid, 
00136             const DisjointBoxLayout& Levboxes, 
00137             const DisjointBoxLayout& LevCBoxes, 
00138             int RefRatio, 
00139             int Direction, 
00140             Side::LoHiSide hiorlo);
00141 
00143   void   define(
00144                 const Box& FineDomain, 
00145                 const Box& grid, 
00146                 const DisjointBoxLayout& fine_boxes, 
00147                 const DisjointBoxLayout& coar_boxes, 
00148                 int Refratio,
00149                 int Direction, 
00150                 Side::LoHiSide hiorlo);
00151 
00153   void   define(
00154                 const ProblemDomain& FineDomain,
00155                 const Box& grid, 
00156                 const DisjointBoxLayout& fine_boxes, 
00157                 const DisjointBoxLayout& coar_boxes, 
00158                 int Refratio,
00159                 int Direction, 
00160                 Side::LoHiSide hiorlo);
00161 
00163   void clear();
00164 
00165 };
00166 #endif

Generated on Wed Apr 16 14:26:49 2003 for Chombo by doxygen1.2.16