00001 #ifdef CH_LANG_CC
00002
00003
00004
00005
00006
00007
00008
00009 #endif
00010
00011 #ifndef _CFSTENCIL_H_
00012 #define _CFSTENCIL_H_
00013
00014 #include <iostream>
00015 #include <math.h>
00016 #include "SPACE.H"
00017 #include <stdlib.h>
00018 #include "DisjointBoxLayout.H"
00019 #include "Box.H"
00020 #include "LoHiSide.H"
00021 #include "IntVectSet.H"
00022 #include "NamespaceHeader.H"
00023
00025
00031 class CFStencil
00032 {
00033
00034 private:
00035
00036 protected:
00037
00038 void setDefaultValues();
00039
00040
00041
00042
00043 int m_direction;
00044
00045
00046 Side::LoHiSide m_hiorlo;
00047
00048
00049 DataIndex m_dataIndex;
00050
00051
00052
00053
00054 IntVectSet m_fineIVS;
00055
00056
00057
00058 IntVectSet m_coarIVS;
00059
00060 bool m_isDefined;
00061
00062 bool m_isPacked;
00063
00064 Box m_packedBox;
00065
00066 public:
00068
00070
00071 bool isDefined() const;
00072
00074
00077 bool isEmpty() const;
00078
00080 bool isPacked() const
00081 {
00082 return m_isPacked;
00083 }
00085 const Box& packedBox() const
00086
00087 {
00088 return m_packedBox;
00089 }
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
00166 void define(
00167 const ProblemDomain& a_fineDomain,
00168 const Box& a_grid,
00169 const Vector<Box>& a_periodicVector,
00170 int a_refRatio,
00171 int a_direction,
00172 Side::LoHiSide a_hiorlo);
00174 void clear();
00175
00176
00177 static void buildPeriodicVector(Vector<Box>& a_periodicVector,
00178 const ProblemDomain& a_fineDomain,
00179 const DisjointBoxLayout& a_fineBoxes);
00180
00181 };
00182 #include "NamespaceFooter.H"
00183 #endif