00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
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
00054 void setDefaultValues();
00055
00056
00057
00058
00059 int m_direction;
00060
00061
00062 Side::LoHiSide m_hiorlo;
00063
00064
00065 DataIndex m_dataIndex;
00066
00067
00068
00069
00070 IntVectSet m_fineIVS;
00071
00072
00073
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
00110
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