Block-Structured AMR Software Framework
Loading...
Searching...
No Matches
AMReX_EBFluxRegister.H
Go to the documentation of this file.
1#ifndef AMREX_EBFLUXREGISTER_H_
2#define AMREX_EBFLUXREGISTER_H_
3#include <AMReX_Config.H>
4
6#include <AMReX_EBCellFlag.H>
7
14extern "C" {
17}
18
19namespace amrex {
20
63 : public YAFluxRegister
64{
65public:
66
67 EBFluxRegister () = default;
68
82 EBFluxRegister (const BoxArray& fba, const BoxArray& cba,
83 const DistributionMapping& fdm, const DistributionMapping& cdm,
84 const Geometry& fgeom, const Geometry& cgeom,
85 const IntVect& ref_ratio, int fine_lev, int nvar);
86
92 void define (const BoxArray& fba, const BoxArray& cba,
93 const DistributionMapping& fdm, const DistributionMapping& cdm,
94 const Geometry& fgeom, const Geometry& cgeom,
95 const IntVect& ref_ratio, int fine_lev, int nvar);
96
98 void clear ();
99
112 void CrseAdd (const MFIter& mfi,
113 const std::array<FArrayBox const*, AMREX_SPACEDIM>& flux,
114 const Real* dx, Real dt,
115 const FArrayBox& volfrac,
116 const std::array<FArrayBox const*, AMREX_SPACEDIM>& areafrac,
117 RunOn runon);
119 void CrseAdd (const MFIter& mfi,
120 const std::array<FArrayBox const*, AMREX_SPACEDIM>& flux,
121 const Real* dx, Real dt,
122 const FArrayBox& volfrac,
123 const std::array<FArrayBox const*, AMREX_SPACEDIM>& areafrac,
124 int srccomp, int destcomp, int numcomp, RunOn runon);
125
139 void FineAdd (const MFIter& mfi,
140 const std::array<FArrayBox const*, AMREX_SPACEDIM>& flux,
141 const Real* dx, Real dt,
142 const FArrayBox& volfrac,
143 const std::array<FArrayBox const*, AMREX_SPACEDIM>& areafrac,
144 const FArrayBox& dm,
145 RunOn runon);
147 void FineAdd (const MFIter& mfi,
148 const std::array<FArrayBox const*, AMREX_SPACEDIM>& flux,
149 const Real* dx, Real dt,
150 const FArrayBox& volfrac,
151 const std::array<FArrayBox const*, AMREX_SPACEDIM>& areafrac,
152 const FArrayBox& dm,
153 int srccomp, int destcomp, int numcomp, RunOn runon);
155 void FineAdd (const MFIter& mfi,
156 const std::array<FArrayBox const*, AMREX_SPACEDIM>& flux,
157 const Real* dx, Real dt,
158 const FArrayBox& volfrac,
159 const std::array<FArrayBox const*, AMREX_SPACEDIM>& areafrac,
160 int srccomp, int destcomp, int numcomp, RunOn runon);
161
170 void Reflux (MultiFab& crse_state, const amrex::MultiFab& crse_vfrac,
171 MultiFab& fine_state, const amrex::MultiFab& fine_vfrac);
173 void Reflux (MultiFab& crse_state, const amrex::MultiFab& crse_vfrac,
174 MultiFab& fine_state, const amrex::MultiFab& fine_vfrac,
175 int srccomp, int destcomp, int numcomp);
177 void Reflux (MultiFab& crse_state, const amrex::MultiFab& crse_vfrac,
178 int srccomp, int destcomp, int numcomp);
179
182 return &(m_crse_data[mfi]);
183 }
184
186 const IArrayBox* getCrseFlag (const MFIter& mfi) const {
187 return &(m_crse_flag[mfi]);
188 }
189
190private:
191
192 iMultiFab m_cfp_inside_mask;
193
194public: // for cuda
195
197 void defineExtra (const BoxArray& fba, const DistributionMapping& fdm);
198};
199
200}
201
202#endif
void amrex_eb_disable_reredistribution()
amrex::Real amrex_eb_get_reredistribution_threshold()
Yet-another flux register for refluxing.
Reference-counted collection of Boxes.
Definition AMReX_BoxArray.H:676
Calculates the distribution of FABs to MPI processes.
Definition AMReX_DistributionMapping.H:51
Definition AMReX_EBFluxRegister.H:64
void Reflux(MultiFab &crse_state, const amrex::MultiFab &crse_vfrac, MultiFab &fine_state, const amrex::MultiFab &fine_vfrac)
Perform reflux and re-redistribution using accumulated data.
Definition AMReX_EBFluxRegister.cpp:296
void CrseAdd(const MFIter &mfi, const std::array< FArrayBox const *, 3 > &flux, const Real *dx, Real dt, const FArrayBox &volfrac, const std::array< FArrayBox const *, 3 > &areafrac, RunOn runon)
Add coarse fluxes for tiles containing cut cells (all components).
Definition AMReX_EBFluxRegister.cpp:83
void defineExtra(const BoxArray &fba, const DistributionMapping &fdm)
Allocate auxiliary masks/data structures required on GPUs.
Definition AMReX_EBFluxRegister.cpp:44
void FineAdd(const MFIter &mfi, const std::array< FArrayBox const *, 3 > &flux, const Real *dx, Real dt, const FArrayBox &volfrac, const std::array< FArrayBox const *, 3 > &areafrac, const FArrayBox &dm, RunOn runon)
Add fine-level fluxes for tiles with cut cells.
Definition AMReX_EBFluxRegister.cpp:143
void clear()
Deallocate all data and reset to default-constructed state.
Definition AMReX_EBFluxRegister.cpp:76
const IArrayBox * getCrseFlag(const MFIter &mfi) const
Flag FAB describing which coarse cells are covered/boundary/genuine.
Definition AMReX_EBFluxRegister.H:186
FArrayBox * getCrseData(const MFIter &mfi)
Access coarse accumulation buffer for the tile referenced by mfi.
Definition AMReX_EBFluxRegister.H:181
void define(const BoxArray &fba, const BoxArray &cba, const DistributionMapping &fdm, const DistributionMapping &cdm, const Geometry &fgeom, const Geometry &cgeom, const IntVect &ref_ratio, int fine_lev, int nvar)
Define the register geometry and allocate storage.
Definition AMReX_EBFluxRegister.cpp:33
A Fortran Array of REALs.
Definition AMReX_FArrayBox.H:237
Rectangular problem domain geometry.
Definition AMReX_Geometry.H:75
A Fortran Array of ints.
Definition AMReX_IArrayBox.H:49
Iterator for looping ever tiles and boxes of amrex::FabArray based containers.
Definition AMReX_MFIter.H:88
A collection (stored as an array) of FArrayBox objects.
Definition AMReX_MultiFab.H:40
Definition AMReX_YAFluxRegister.H:33
void FineAdd(const MFIter &mfi, const std::array< FAB const *, 3 > &flux, const Real *dx, Real dt, RunOn runon) noexcept
Add fine-level fluxes for the tile identified by mfi.
Definition AMReX_YAFluxRegister.H:509
iMultiFab m_crse_flag
Definition AMReX_YAFluxRegister.H:176
MF m_crse_data
Definition AMReX_YAFluxRegister.H:175
void CrseAdd(const MFIter &mfi, const std::array< FAB const *, 3 > &flux, const Real *dx, Real dt, RunOn runon) noexcept
Add coarse-level fluxes for the tile indicated by mfi.
Definition AMReX_YAFluxRegister.H:451
A Collection of IArrayBoxes.
Definition AMReX_iMultiFab.H:34
amrex_real Real
Floating Point Type for Fields.
Definition AMReX_REAL.H:79
Definition AMReX_Amr.cpp:50
RunOn
Definition AMReX_GpuControl.H:65