chombo-discharge
Loading...
Searching...
No Matches
CD_EBMultigridInterpolator.H
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2021-2026 SINTEF Energy Research
3 *
4 * SPDX-License-Identifier: GPL-3.0-or-later
5 */
6
13#ifndef CD_EBMULTIGRIDINTERPOLATOR_H
14#define CD_EBMULTIGRIDINTERPOLATOR_H
15
16// Chombo includes
17#include <EBLevelGrid.H>
18#include <EBCellFAB.H>
19#include <DerivStencil.H>
20
21// Our includes
22#include <CD_NamespaceHeader.H>
23
28{
29public:
34
39
44
49 virtual int
50 getGhostCF() const = 0;
51
59 virtual std::pair<VoFStencil, VoFStencil>
60 getInterpolationStencilEB(const VolIndex& a_fineGhost, const DataIndex& a_din) const noexcept = 0;
61
72 virtual std::pair<DerivStencil, DerivStencil>
73 getInterpolationStencilRegular(const IntVect& a_fineGhost,
74 const DataIndex& a_din,
75 const int a_dir,
76 const Side::LoHiSide a_side) const noexcept = 0;
77
84 virtual void
85 coarseFineInterp(LevelData<EBCellFAB>& a_phiFine,
86 const LevelData<EBCellFAB>& a_phiCoar,
87 const Interval a_variables) const = 0;
88
94 virtual void
95 coarseFineInterpH(LevelData<EBCellFAB>& a_phiFine, const Interval a_variables) const = 0;
96
107 virtual void
108 coarseFineInterpH(EBCellFAB& a_phiFine, const Interval a_variables, const DataIndex& a_din) const = 0;
109};
110
111#include <CD_NamespaceFooter.H>
112
113#endif
Multigrid interpolator class.
Definition CD_EBMGLeastSquaresInterpolator.H:55
EBMultigridInterpolator()
Basic constructor.
virtual std::pair< DerivStencil, DerivStencil > getInterpolationStencilRegular(const IntVect &a_fineGhost, const DataIndex &a_din, const int a_dir, const Side::LoHiSide a_side) const noexcept=0
Get the interpolation stencil near the refinement boundary.
virtual void coarseFineInterpH(EBCellFAB &a_phiFine, const Interval a_variables, const DataIndex &a_din) const =0
Do homogeneous coarse-fine interpolation on a grid patch.
EBMultigridInterpolator(const EBMultigridInterpolator &a_other)=delete
Disallowed copy constructor.
virtual int getGhostCF() const =0
Return number of ghost cells across CF interface.
virtual std::pair< VoFStencil, VoFStencil > getInterpolationStencilEB(const VolIndex &a_fineGhost, const DataIndex &a_din) const noexcept=0
Get an explicit stencil for a ghost cell near the EB.
virtual ~EBMultigridInterpolator()
Destructor (does nothing)
virtual void coarseFineInterpH(LevelData< EBCellFAB > &a_phiFine, const Interval a_variables) const =0
Do homogeneous interpolation.
virtual void coarseFineInterp(LevelData< EBCellFAB > &a_phiFine, const LevelData< EBCellFAB > &a_phiCoar, const Interval a_variables) const =0
Do inhomogeneous interpolation.