Block-Structured AMR Software Framework
amrex::YAFluxRegister Class Reference

#include <AMReX_YAFluxRegister.H>

Inheritance diagram for amrex::YAFluxRegister:
amrex::EBFluxRegister

Public Types

enum  CellType : int { crse_cell = 0, crse_fine_boundary_cell, fine_cell }
 

Public Member Functions

 YAFluxRegister ()=default
 
 YAFluxRegister (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)
 
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)
 
void reset ()
 
void CrseAdd (const MFIter &mfi, const std::array< FArrayBox const *, AMREX_SPACEDIM > &flux, const Real *dx, Real dt, RunOn gpu_or_cpu) noexcept
 
void FineAdd (const MFIter &mfi, const std::array< FArrayBox const *, AMREX_SPACEDIM > &flux, const Real *dx, Real dt, RunOn gpu_or_cpu) noexcept
 
void Reflux (MultiFab &state, int dc=0)
 
bool CrseHasWork (const MFIter &mfi) const noexcept
 
bool FineHasWork (const MFIter &mfi) const noexcept
 
MultiFabgetFineData ()
 
MultiFabgetCrseData ()
 

Protected Attributes

MultiFab m_crse_data
 
iMultiFab m_crse_flag
 
Vector< intm_crse_fab_flag
 
MultiFab m_cfpatch
 This is built on crse/fine patches. More...
 
MultiFab m_cfp_mask
 
Vector< Vector< FArrayBox * > > m_cfp_fab
 The size of this is (# of local fine grids (# of crse/fine patches for that grid)) More...
 
Vector< intm_cfp_localindex
 
Geometry m_fine_geom
 
Geometry m_crse_geom
 
IntVect m_ratio
 
int m_fine_level
 
int m_ncomp
 

Detailed Description

YAFluxRegister is yet another Flux Register for refluxing.

At the beginning of a coarse step, reset() is called. In MFIter for the coarse level advance, CrseAdd is called with coarse flux. The flux is not scaled. In MFIter for the fine level advance, FineAdd is called. After the fine level finished its time steps, Reflux is called to update the coarse cells next to the coarse/fine boundary.

Member Enumeration Documentation

◆ CellType

Enumerator
crse_cell 
crse_fine_boundary_cell 
fine_cell 

Constructor & Destructor Documentation

◆ YAFluxRegister() [1/2]

amrex::YAFluxRegister::YAFluxRegister ( )
default

◆ YAFluxRegister() [2/2]

amrex::YAFluxRegister::YAFluxRegister ( 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 
)

Member Function Documentation

◆ CrseAdd()

void amrex::YAFluxRegister::CrseAdd ( const MFIter mfi,
const std::array< FArrayBox const *, AMREX_SPACEDIM > &  flux,
const Real *  dx,
Real  dt,
RunOn  gpu_or_cpu 
)
noexcept

◆ CrseHasWork()

bool amrex::YAFluxRegister::CrseHasWork ( const MFIter mfi) const
inlinenoexcept

◆ define()

void amrex::YAFluxRegister::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 
)

◆ FineAdd()

void amrex::YAFluxRegister::FineAdd ( const MFIter mfi,
const std::array< FArrayBox const *, AMREX_SPACEDIM > &  flux,
const Real *  dx,
Real  dt,
RunOn  gpu_or_cpu 
)
noexcept

◆ FineHasWork()

bool amrex::YAFluxRegister::FineHasWork ( const MFIter mfi) const
inlinenoexcept

◆ getCrseData()

MultiFab & amrex::YAFluxRegister::getCrseData ( )

◆ getFineData()

MultiFab & amrex::YAFluxRegister::getFineData ( )

◆ Reflux()

void amrex::YAFluxRegister::Reflux ( MultiFab state,
int  dc = 0 
)

◆ reset()

void amrex::YAFluxRegister::reset ( )

Member Data Documentation

◆ m_cfp_fab

Vector<Vector<FArrayBox*> > amrex::YAFluxRegister::m_cfp_fab
protected

The size of this is (# of local fine grids (# of crse/fine patches for that grid))

◆ m_cfp_localindex

Vector<int> amrex::YAFluxRegister::m_cfp_localindex
protected

◆ m_cfp_mask

MultiFab amrex::YAFluxRegister::m_cfp_mask
protected

◆ m_cfpatch

MultiFab amrex::YAFluxRegister::m_cfpatch
protected

This is built on crse/fine patches.

◆ m_crse_data

MultiFab amrex::YAFluxRegister::m_crse_data
protected

◆ m_crse_fab_flag

Vector<int> amrex::YAFluxRegister::m_crse_fab_flag
protected

◆ m_crse_flag

iMultiFab amrex::YAFluxRegister::m_crse_flag
protected

◆ m_crse_geom

Geometry amrex::YAFluxRegister::m_crse_geom
protected

◆ m_fine_geom

Geometry amrex::YAFluxRegister::m_fine_geom
protected

◆ m_fine_level

int amrex::YAFluxRegister::m_fine_level
protected

◆ m_ncomp

int amrex::YAFluxRegister::m_ncomp
protected

◆ m_ratio

IntVect amrex::YAFluxRegister::m_ratio
protected

The documentation for this class was generated from the following files: