|
ERF
Energy Research and Forecasting: An Atmospheric Modeling Code
|
#include <ERF_FillPatcher.H>

Public Member Functions | |
| ERFFillPatcher (amrex::BoxArray const &fba, amrex::DistributionMapping const &fdm, amrex::Geometry const &fgeom, amrex::BoxArray const &cba, amrex::DistributionMapping const &cdm, amrex::Geometry const &cgeom, int nghost, int nghost_set, int ncomp, amrex::InterpBase *interp) | |
| void | Define (amrex::BoxArray const &fba, amrex::DistributionMapping const &fdm, amrex::Geometry const &fgeom, amrex::BoxArray const &cba, amrex::DistributionMapping const &cdm, amrex::Geometry const &cgeom, int nghost, int nghost_set, int ncomp, amrex::InterpBase *interp) |
| void | BuildMask (amrex::BoxArray const &fba, int nghost, int nghost_set) |
| void | RegisterCoarseData (amrex::Vector< amrex::MultiFab const * > const &crse_data, amrex::Vector< double > const &crse_time) |
| void | InterpFace (amrex::MultiFab &fine, amrex::MultiFab const &crse, int mask_val) |
| void | InterpCell (amrex::MultiFab &fine, amrex::MultiFab const &crse, amrex::Vector< amrex::BCRec > const &bcr, int mask_val) |
| int | GetSetMaskVal () |
| int | GetRelaxMaskVal () |
| amrex::iMultiFab * | GetMask () |
| template<typename BC > | |
| void | FillSet (amrex::MultiFab &mf, double time, BC &cbc, amrex::Vector< amrex::BCRec > const &bcs) |
| template<typename BC > | |
| void | FillRelax (amrex::MultiFab &mf, double time, BC &cbc, amrex::Vector< amrex::BCRec > const &bcs) |
| template<typename BC > | |
| void | Fill (amrex::MultiFab &mf, double time, BC &cbc, amrex::Vector< amrex::BCRec > const &bcs, int mask_val) |
Private Attributes | |
| amrex::BoxArray | m_fba |
| amrex::BoxArray | m_cba |
| amrex::DistributionMapping | m_fdm |
| amrex::DistributionMapping | m_cdm |
| amrex::Geometry | m_fgeom |
| amrex::Geometry | m_cgeom |
| int | m_nghost |
| int | m_nghost_subset |
| int | m_ncomp |
| amrex::InterpBase * | m_interp |
| amrex::IntVect | m_ratio |
| std::unique_ptr< amrex::MultiFab > | m_cf_crse_data_old |
| std::unique_ptr< amrex::MultiFab > | m_cf_crse_data_new |
| std::unique_ptr< amrex::iMultiFab > | m_cf_mask |
| amrex::Vector< double > | m_crse_times |
| double | m_dt_crse |
| int | m_set_mask {2} |
| int | m_relax_mask {1} |
| ERFFillPatcher::ERFFillPatcher | ( | amrex::BoxArray const & | fba, |
| amrex::DistributionMapping const & | fdm, | ||
| amrex::Geometry const & | fgeom, | ||
| amrex::BoxArray const & | cba, | ||
| amrex::DistributionMapping const & | cdm, | ||
| amrex::Geometry const & | cgeom, | ||
| int | nghost, | ||
| int | nghost_set, | ||
| int | ncomp, | ||
| amrex::InterpBase * | interp | ||
| ) |
Construct a coarse-fine fill patcher.
| [in] | fba | fine-level BoxArray |
| [in] | fdm | fine-level DistributionMapping |
| [in] | fgeom | fine-level Geometry |
| [in] | cba | coarse-level BoxArray |
| [in] | cdm | coarse-level DistributionMapping |
| [in] | cgeom | coarse-level Geometry |
| [in] | nghost | number of ghost cells in the fill region |
| [in] | nghost_set | number of ghost cells in the set region |
| [in] | ncomp | number of components |
| [in] | interp | interpolation operator |
Fill valid and ghost data with the "state data" at the given time
| [in] | fba | BoxArray of data to be filled at fine level |
| [in] | fdm | DistributionMapping of data to be filled at fine level |
| [in] | fgeom | container of geometry information at fine level |
| [in] | cba | BoxArray of data to be filled at coarse level |
| [in] | cdm | DistributionMapping of data to be filled at coarse level |
| [in] | cgeom | container of geometry information at coarse level |
| [in] | nghost | number of ghost cells to be filled |
| [in] | nghost_set | number of ghost cells in the set region |
| [in] | ncomp | number of components to be filled |
| [in] | interp | interpolation operator to be used |

| void ERFFillPatcher::BuildMask | ( | amrex::BoxArray const & | fba, |
| int | nghost, | ||
| int | nghost_set | ||
| ) |
Build the coarse-fine mask.
| [in] | fba | fine-level BoxArray |
| [in] | nghost | number of ghost cells in the fill region |
| [in] | nghost_set | number of ghost cells in the set region |
Build the coarse-fine mask for set and relax regions.
| [in] | fba | BoxArray of data to be filled at fine level |
| [in] | nghost | number of ghost cells defining the region width |
| [in] | mask_val | value assigned to selected mask cells |
Referenced by Define().


| void ERFFillPatcher::Define | ( | amrex::BoxArray const & | fba, |
| amrex::DistributionMapping const & | fdm, | ||
| amrex::Geometry const & | fgeom, | ||
| amrex::BoxArray const & | cba, | ||
| amrex::DistributionMapping const & | cdm, | ||
| amrex::Geometry const & | cgeom, | ||
| int | nghost, | ||
| int | nghost_set, | ||
| int | ncomp, | ||
| amrex::InterpBase * | interp | ||
| ) |
Define the coarse-fine fill patcher.
| [in] | fba | fine-level BoxArray |
| [in] | fdm | fine-level DistributionMapping |
| [in] | fgeom | fine-level Geometry |
| [in] | cba | coarse-level BoxArray |
| [in] | cdm | coarse-level DistributionMapping |
| [in] | cgeom | coarse-level Geometry |
| [in] | nghost | number of ghost cells in the fill region |
| [in] | nghost_set | number of ghost cells in the set region |
| [in] | ncomp | number of components |
| [in] | interp | interpolation operator |
Redefine the coarse and fine patch MultiFabs.
| [in] | fba | BoxArray of data to be filled at fine level |
| [in] | fdm | DistributionMapping of data to be filled at fine level |
| [in] | fgeom | container of geometry information at fine level |
| [in] | cba | BoxArray of data to be filled at coarse level |
| [in] | cdm | DistributionMapping of data to be filled at coarse level |
| [in] | cgeom | container of geometry information at coarse level |
| [in] | nghost | number of ghost cells to be filled |
| [in] | nghost_set | number of ghost cells in the set region |
| [in] | ncomp | number of components to be filled |
| [in] | interp | interpolation operator to be used |
Referenced by ERFFillPatcher().


| void ERFFillPatcher::Fill | ( | amrex::MultiFab & | mf, |
| double | time_d, | ||
| BC & | cbc, | ||
| amrex::Vector< amrex::BCRec > const & | bcs, | ||
| int | mask_val | ||
| ) |
Fill fine data in the selected mask region.
| [in,out] | mf | MultiFab to be filled |
| [in] | time | time at which to fill data |
| [in] | cbc | coarse boundary condition |
| [in] | bcs | vector of boundary conditions |
| [in] | mask_val | mask value selecting cells to fill |
Fill fine data in the relax region
| [in,out] | mf | MultiFab to be filled |
| [in] | time_d | Time at which to fill data |
| [in] | cbc | Coarse boundary condition |
| [in] | bcs | Vector of boundary conditions |
| [in] | mask_val | Mask value selecting cells to fill |
Referenced by FillRelax(), and FillSet().


| void ERFFillPatcher::FillRelax | ( | amrex::MultiFab & | mf, |
| double | time, | ||
| BC & | cbc, | ||
| amrex::Vector< amrex::BCRec > const & | bcs | ||
| ) |
Fill fine data in the relax region.
| [in,out] | mf | MultiFab to be filled |
| [in] | time | time at which to fill data |
| [in] | cbc | coarse boundary condition |
| [in] | bcs | vector of boundary conditions |
Fill fine data in the relax region
| [in,out] | mf | MultiFab to be filled |
| [in] | time | Time at which to fill data |
| [in] | cbc | Coarse boundary condition |
| [in] | bcs | Vector of boundary conditions |
Referenced by fine_compute_interior_ghost_rhs().


| void ERFFillPatcher::FillSet | ( | amrex::MultiFab & | mf, |
| double | time, | ||
| BC & | cbc, | ||
| amrex::Vector< amrex::BCRec > const & | bcs | ||
| ) |
Fill fine data in the set region.
| [in,out] | mf | MultiFab to be filled |
| [in] | time | time at which to fill data |
| [in] | cbc | coarse boundary condition |
| [in] | bcs | vector of boundary conditions |
Fill fine data in the set region
| [in,out] | mf | MultiFab to be filled |
| [in] | time | Time at which to fill data |
| [in] | cbc | Coarse boundary condition |
| [in] | bcs | Vector of boundary conditions |

|
inline |
Return the coarse-fine mask.
Referenced by fine_compute_interior_ghost_rhs().

|
inline |
Return the mask value for the relax region.
Referenced by fine_compute_interior_ghost_rhs().

|
inline |
Return the mask value for the set region.
Referenced by fine_compute_interior_ghost_rhs().

| void ERFFillPatcher::InterpCell | ( | amrex::MultiFab & | fine, |
| amrex::MultiFab const & | crse, | ||
| amrex::Vector< amrex::BCRec > const & | bcr, | ||
| int | mask_val | ||
| ) |
Interpolate coarse data to fine cell-centered data.
| [in,out] | fine | fine-level data to fill |
| [in] | crse | coarse-level source data |
| [in] | bcr | boundary-condition records |
| [in] | mask_val | mask value selecting cells to fill |
Interpolate coarse data to fine cell-centered data selected by the mask.
| [in,out] | fine | fine-level data to fill |
| [in] | crse | coarse-level data to interpolate from |
| [in] | bcr | boundary-condition records used by the interpolater |
| [in] | mask_val | mask value selecting cells to fill |
Referenced by Fill().

| void ERFFillPatcher::InterpFace | ( | amrex::MultiFab & | fine, |
| amrex::MultiFab const & | crse, | ||
| int | mask_val | ||
| ) |
Interpolate coarse data to fine face data.
| [in,out] | fine | fine-level data to fill |
| [in] | crse | coarse-level source data |
| [in] | mask_val | mask value selecting cells to fill |
Interpolate coarse data to fine face-centered data selected by the mask.
| [in,out] | fine | fine-level data to fill |
| [in] | crse | coarse-level data to interpolate from |
| [in] | mask_val | mask value selecting cells to fill |
Referenced by Fill().

| void ERFFillPatcher::RegisterCoarseData | ( | amrex::Vector< amrex::MultiFab const * > const & | crse_data, |
| amrex::Vector< double > const & | crse_time | ||
| ) |
Register coarse data bracketing the fill time.
| [in] | crse_data | coarse MultiFabs |
| [in] | crse_time | times associated with crse_data |
Register the coarse data to be used by the ERFFillPatcher
| [in] | crse_data | data at old and new time at coarse level |
| [in] | crse_time | times at which crse_data is defined |

|
private |
Referenced by Define().
|
private |
Referenced by Define().
|
private |
Referenced by Define(), Fill(), and RegisterCoarseData().
|
private |
Referenced by Define(), Fill(), and RegisterCoarseData().
|
private |
Referenced by BuildMask(), Define(), GetMask(), InterpCell(), and InterpFace().
|
private |
Referenced by Define(), InterpCell(), InterpFace(), and RegisterCoarseData().
|
private |
Referenced by ERFFillPatcher(), Fill(), and RegisterCoarseData().
|
private |
Referenced by Fill(), and RegisterCoarseData().
|
private |
Referenced by Define().
|
private |
Referenced by Define().
|
private |
Referenced by BuildMask(), Define(), and InterpCell().
|
private |
Referenced by Define(), and InterpCell().
|
private |
Referenced by Define(), Fill(), InterpCell(), and RegisterCoarseData().
|
private |
Referenced by Define().
|
private |
Referenced by Define().
|
private |
Referenced by Define(), InterpCell(), and InterpFace().
|
private |
Referenced by Define(), FillRelax(), and GetRelaxMaskVal().
|
private |
Referenced by Define(), FillSet(), and GetSetMaskVal().