chombo-discharge
CD_MultifluidAlias.H
Go to the documentation of this file.
1 /* chombo-discharge
2  * Copyright © 2021 SINTEF Energy Research.
3  * Please refer to Copyright.txt and LICENSE in the chombo-discharge root directory.
4  */
5 
12 #ifndef CD_MultifluidAlias_H
13 #define CD_MultifluidAlias_H
14 
15 // Chombo includes
16 #include <MFFluxFAB.H>
17 #include <MFCellFAB.H>
18 
19 // Our includes
20 #include <CD_MFBaseIVFAB.H>
21 #include <CD_NamespaceHeader.H>
22 
29 {
30 public:
37  static void
38  aliasMF(LevelData<EBCellFAB>& a_alias, const int a_phase, const LevelData<MFCellFAB>& a_input);
39 
46  static void
47  aliasMF(LevelData<EBFluxFAB>& a_alias, const int a_phase, const LevelData<MFFluxFAB>& a_input);
48 
55  static void
56  aliasMF(LevelData<BaseIVFAB<Real>>& a_alias, const int a_phase, const LevelData<MFBaseIVFAB>& a_input);
57 
58 private:
62  class MfCellAliasFactory : public DataFactory<EBCellFAB>
63  {
64  public:
68  MfCellAliasFactory() = delete;
69 
73  MfCellAliasFactory(LevelData<MFCellFAB>* a_mf, const int a_phase);
74 
78  virtual EBCellFAB*
79  create(const Box& box, int ncomps, const DataIndex& a_datInd) const override;
80 
84  virtual bool
85  callDelete() const override;
86 
87  private:
91  LevelData<MFCellFAB>* m_mf;
92 
96  int m_phase;
97  };
98 
102  class MfFluxAliasFactory : public DataFactory<EBFluxFAB>
103  {
104  public:
108  MfFluxAliasFactory() = delete;
109 
113  MfFluxAliasFactory(LevelData<MFFluxFAB>* a_mf, const int a_phase);
114 
118  virtual EBFluxFAB*
119  create(const Box& box, int ncomps, const DataIndex& a_datInd) const override;
120 
124  virtual bool
125  callDelete() const override;
126 
127  private:
131  LevelData<MFFluxFAB>* m_mf;
132 
136  int m_phase;
137  };
138 
142  class MfIVAliasFactory : public DataFactory<BaseIVFAB<Real>>
143  {
144  public:
148  MfIVAliasFactory() = delete;
149 
153  MfIVAliasFactory(LevelData<MFBaseIVFAB>* a_mf, const int a_phase);
154 
158  virtual BaseIVFAB<Real>*
159  create(const Box& box, int ncomps, const DataIndex& a_datInd) const override;
160 
164  virtual bool
165  callDelete() const override;
166 
167  private:
171  LevelData<MFBaseIVFAB>* m_mf;
172 
176  int m_phase;
177  };
178 };
179 
180 #include <CD_NamespaceFooter.H>
181 
182 #endif
Declaration of a multiphase BaseIVFAB<Real>
Class with static public interface for aliasing multifluid data into single-phase data.
Definition: CD_MultifluidAlias.H:29
static void aliasMF(LevelData< EBCellFAB > &a_alias, const int a_phase, const LevelData< MFCellFAB > &a_input)
Alias MFCellFABs.
Definition: CD_MultifluidAlias.cpp:18