Chombo + EB + MF  3.2
NWOEBQuadCFInterp.H
Go to the documentation of this file.
1 #ifdef CH_LANG_CC
2 /*
3  * _______ __
4  * / ___/ / ___ __ _ / / ___
5  * / /__/ _ \/ _ \/ V \/ _ \/ _ \
6  * \___/_//_/\___/_/_/_/_.__/\___/
7  * Please refer to Copyright.txt, in Chombo's root directory.
8  */
9 #endif
10 
11 #ifndef _NWOEBQUADCFINTERP_H_
12 #define _NWOEBQUADCFINTERP_H_
13 
14 #include <iostream>
15 #include <math.h>
16 #include "SPACE.H"
17 #include <stdlib.h>
18 #include "REAL.H"
19 #include "IntVect.H"
20 #include "Box.H"
21 #include "BaseFab.H"
22 #include "DisjointBoxLayout.H"
23 #include "LevelData.H"
24 #include "FArrayBox.H"
25 #include "QuadCFStencil.H"
26 #include "ProblemDomain.H"
27 #include "TensorFineStencilSet.H"
28 #include "REAL.H"
29 #include "AggStencil.H"
30 #include "FArrayBox.H"
31 #include "LevelData.H"
32 #include "DisjointBoxLayout.H"
33 #include "EBISLayout.H"
34 #include "EBCellFAB.H"
35 #include "Interval.H"
36 #include "Stencils.H"
37 #include "QuadCFInterp.H"
38 #include "BaseIVFAB.H"
39 #include "TensorCFInterp.H"
40 #include "CornerCopier.H"
41 #include "EBCFData.H"
42 #include "EBQuadCFInterp.H"
43 #include "NamespaceHeader.H"
44 
45 /// Quadratic coarse-fine interpolation utility
47 {
48 public:
49 
50  ///
51  NWOEBQuadCFInterp(const DisjointBoxLayout& a_gridsFine,
52  const DisjointBoxLayout& a_gridsCoar,
53  const EBISLayout& a_ebislFine,
54  const EBISLayout& a_ebislCoar,
55  const ProblemDomain& a_domainCoar,
56  const int& a_nref,
57  const int& a_nvar,
58  const Real& a_dxFine,
59  const IntVect& a_ghost,
60  const LayoutData<IntVectSet>& a_cfivs);
61 
62  ///
64  { }
65 
66  ///
67  /**
68  Coarse / Fine interpolation operator.
69  */
71  const LevelData<EBCellFAB>& a_phic,
72  int isrc, int idst, int inco);
73 
74 
75  ///
76  /**
77  Coarse-fine interpolation operator with homogeneous BCs.
78  Does same interpolation as coarseFineInterp function,
79  but with all coarse-level data set to 0.
80  */
82  int isrc, int idst, int inco);
83 
84 
85 protected:
86  void
88  void
89  defineStencils (const LayoutData<IntVectSet>& a_cfivs);
90 
91  void
93  Vector<RefCountedPtr< BaseIndex > > & a_baseDstVoFs,
94  const IntVectSet & a_cfivs,
95  const EBISBox & a_ebisFine,
96  const EBISBox & a_ebisCoFi,
97  const DataIndex & a_dit);
98 
99 
100  void
101  getStencil(VoFStencil & a_stencil,
102  const VolIndex & a_vofFine,
103  const EBISBox & a_ebisFine,
104  const EBISBox & a_ebisCoFi,
105  const DataIndex & a_dit);
106 
114  int m_nref;
115  int m_nvar;
120 
121 
122 private:
123  //weak construction is bad
125  {
126  MayDay::Error("invalid operator");
127  }
128 
129  //disallowed for all the usual reasons
131  {
132  MayDay::Error("invalid operator");
133  }
134 
135  //disallowed for all the usual reasons
137  {
138  MayDay::Error("invalid operator");
139  }
140 
141 };
142 
143 #include "NamespaceFooter.H"
144 #endif
A reference-counting handle class.
Definition: RefCountedPtr.H:173
An irregular domain on an integer lattice.
Definition: IntVectSet.H:44
A class to facilitate interaction with physical boundary conditions.
Definition: ProblemDomain.H:141
int m_nvar
Definition: NWOEBQuadCFInterp.H:115
one dimensional dynamic array
Definition: Vector.H:53
DisjointBoxLayout m_gridsCoFi
Definition: NWOEBQuadCFInterp.H:109
Definition: EBISBox.H:46
EBISLayout m_ebislCoFi
Definition: NWOEBQuadCFInterp.H:112
VoF-centered stencil.
Definition: Stencils.H:60
EBISLayout m_ebislCoar
Definition: NWOEBQuadCFInterp.H:111
DisjointBoxLayout m_gridsCoar
Definition: NWOEBQuadCFInterp.H:108
Real m_dxFine
Definition: NWOEBQuadCFInterp.H:116
EBISLayout m_ebislFine
Definition: NWOEBQuadCFInterp.H:110
void defineInternals(const LayoutData< IntVectSet > &a_cfivs)
double Real
Definition: REAL.H:33
void getStencil(VoFStencil &a_stencil, const VolIndex &a_vofFine, const EBISBox &a_ebisFine, const EBISBox &a_ebisCoFi, const DataIndex &a_dit)
DisjointBoxLayout m_gridsFine
Definition: NWOEBQuadCFInterp.H:107
void defineStencils(const LayoutData< IntVectSet > &a_cfivs)
A BoxLayout that has a concept of disjointedness.
Definition: DisjointBoxLayout.H:30
ProblemDomain m_domainCoar
Definition: NWOEBQuadCFInterp.H:113
static void Error(const char *const a_msg=m_nullString, int m_exitCode=CH_DEFAULT_ERROR_CODE)
Print out message to cerr and exit with the specified exit code.
void getStencils(Vector< RefCountedPtr< BaseStencil > > &a_stencils, Vector< RefCountedPtr< BaseIndex > > &a_baseDstVoFs, const IntVectSet &a_cfivs, const EBISBox &a_ebisFine, const EBISBox &a_ebisCoFi, const DataIndex &a_dit)
int m_nref
Definition: NWOEBQuadCFInterp.H:114
Definition: DataIndex.H:114
Quadratic coarse-fine interpolation utility.
Definition: NWOEBQuadCFInterp.H:46
void coarseFineInterpH(LevelData< EBCellFAB > &a_phif, int isrc, int idst, int inco)
An integer Vector in SpaceDim-dimensional space.
Definition: CHArray.H:42
NWOEBQuadCFInterp()
Definition: NWOEBQuadCFInterp.H:124
~NWOEBQuadCFInterp()
Definition: NWOEBQuadCFInterp.H:63
void coarseFineInterp(LevelData< EBCellFAB > &a_phif, const LevelData< EBCellFAB > &a_phic, int isrc, int idst, int inco)
NWOEBQuadCFInterp(NWOEBQuadCFInterp &a_input)
Definition: NWOEBQuadCFInterp.H:130
Volume of Fluid Index.
Definition: VolIndex.H:31
IntVect m_ghost
Definition: NWOEBQuadCFInterp.H:117
Definition: EBISLayout.H:39
LevelData< EBCellFAB > m_bufferCoFi
Definition: NWOEBQuadCFInterp.H:119
LayoutData< RefCountedPtr< AggStencil< EBCellFAB, EBCellFAB > > > m_stencil
Definition: NWOEBQuadCFInterp.H:118
void operator=(NWOEBQuadCFInterp &a_input)
Definition: NWOEBQuadCFInterp.H:136