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
109 void CrseAdd (const MFIter& mfi,
110 const std::array<FArrayBox const*, AMREX_SPACEDIM>& flux,
111 const Real* dx, Real dt,
112 const FArrayBox& volfrac,
113 const std::array<FArrayBox const*, AMREX_SPACEDIM>& areafrac,
114 RunOn runon);
116 void CrseAdd (const MFIter& mfi,
117 const std::array<FArrayBox const*, AMREX_SPACEDIM>& flux,
118 const Real* dx, Real dt,
119 const FArrayBox& volfrac,
120 const std::array<FArrayBox const*, AMREX_SPACEDIM>& areafrac,
121 int srccomp, int destcomp, int numcomp, RunOn runon);
122
136 void FineAdd (const MFIter& mfi,
137 const std::array<FArrayBox const*, AMREX_SPACEDIM>& flux,
138 const Real* dx, Real dt,
139 const FArrayBox& volfrac,
140 const std::array<FArrayBox const*, AMREX_SPACEDIM>& areafrac,
141 const FArrayBox& dm,
142 RunOn runon);
144 void FineAdd (const MFIter& mfi,
145 const std::array<FArrayBox const*, AMREX_SPACEDIM>& flux,
146 const Real* dx, Real dt,
147 const FArrayBox& volfrac,
148 const std::array<FArrayBox const*, AMREX_SPACEDIM>& areafrac,
149 const FArrayBox& dm,
150 int srccomp, int destcomp, int numcomp, RunOn runon);
152 void FineAdd (const MFIter& mfi,
153 const std::array<FArrayBox const*, AMREX_SPACEDIM>& flux,
154 const Real* dx, Real dt,
155 const FArrayBox& volfrac,
156 const std::array<FArrayBox const*, AMREX_SPACEDIM>& areafrac,
157 int srccomp, int destcomp, int numcomp, RunOn runon);
158
167 void Reflux (MultiFab& crse_state, const amrex::MultiFab& crse_vfrac,
168 MultiFab& fine_state, const amrex::MultiFab& fine_vfrac);
170 void Reflux (MultiFab& crse_state, const amrex::MultiFab& crse_vfrac,
171 MultiFab& fine_state, const amrex::MultiFab& fine_vfrac,
172 int srccomp, int destcomp, int numcomp);
174 void Reflux (MultiFab& crse_state, const amrex::MultiFab& crse_vfrac,
175 int srccomp, int destcomp, int numcomp);
176
179 return &(m_crse_data[mfi]);
180 }
181
183 const IArrayBox* getCrseFlag (const MFIter& mfi) const {
184 return &(m_crse_flag[mfi]);
185 }
186
187private:
188
189 iMultiFab m_cfp_inside_mask;
190
191public: // for cuda
192
194 void defineExtra (const BoxArray& fba, const DistributionMapping& fdm);
195};
196
197}
198
199#endif
void amrex_eb_disable_reredistribution()
amrex::Real amrex_eb_get_reredistribution_threshold()
Yet-another flux register for refluxing.
A collection of Boxes stored in an Array.
Definition AMReX_BoxArray.H:568
Calculates the distribution of FABs to MPI processes.
Definition AMReX_DistributionMapping.H:43
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:289
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:76
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:136
const IArrayBox * getCrseFlag(const MFIter &mfi) const
Flag FAB describing which coarse cells are covered/boundary/genuine.
Definition AMReX_EBFluxRegister.H:183
FArrayBox * getCrseData(const MFIter &mfi)
Access coarse accumulation buffer for the tile referenced by mfi.
Definition AMReX_EBFluxRegister.H:178
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:231
Rectangular problem domain geometry.
Definition AMReX_Geometry.H:74
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:479
iMultiFab m_crse_flag
Definition AMReX_YAFluxRegister.H:173
MF m_crse_data
Definition AMReX_YAFluxRegister.H:172
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:421
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:49
RunOn
Definition AMReX_GpuControl.H:69