B7Y552HZXBV2PD22T7ZXGFJKUYU23A7XDWV4XZK46SGQKX7U45PQC BAQQ7LB2OIGZRJTXWQHNOQD7GZU5VBDSBUE6TNUYMZM7HDMWV3ZAC 4B36MBHKEUSFI2TUH67YRHFSCMZNI7RXMY6VZN74OLNYAQT55NEAC 7ZADVX7EO4SLIPEVVF3DECABHSS4JAYTQ3LFK2KIIIRSCCAIOSOAC Q4BI3KHPY7G275UHURXZ23GQTMCI7OQAVQOFK7XR62KFH7SFHRQQC EJWFGXTWIBKJ62LO6QM62LM7MGTYEHOCZDKA3UVR5UYWQZ2O54DQC EDCG66UHCEDCQV3XMBGFL3CLW3TRQ25C4YWA53TD5LC5EK6K2GYQC WMCMZILMWKIKL6K5ROISXT23A6XTZQGSBQ3IAWMDOJMK2JERGJKQC UZOSQIXOP7ARW3JJET3VDRQKNTN6FTSAD66YAIXZHIQWIJEOQVLQC GKKJ75HX2ERLVBZVE2CUB6T3J2SUT7R3UKEKTEYNOG43ZKX6X5MQC BVR7DVINVPQG7PA6Z7QYVYNQ43YZL7XCC6AOMSMWMGAAB2Q43STAC 722HZ7UFINNE3YKSYKP2NHZ5XEG5QQLQHSKC7PREJZR3EX6RDYUAC M5R6KQLXLGYSVKHVAX5AJKD6NYE6IM5Z6WVTR3BTKPJDNNKF3ARAC VMCDMDXKME66ESRMB3PYSUZZH2XG2GIQMEOEKRH33WGCEBPXTWUQC KG47IF4CPCUT3BHS34WDRHTH5HYMBTY4OSTB3X7APR2E5ZJ32IYQC TVBD244E7Q7WV44CRBTFST535NUP3JAZH6OLL4IKDR3OWEXSU7HAC U77PE56ICORZNQW33NXGSEMW7GDHCSSZ4EXB6OHBJSHEG6WHYSSQC ZARZZPSISIOCXZOWNJQMMQSQPXFSZLDDIDAFY35X2GV37RBB7WUAC 2DKSL6DKZAIYQUJGDULORCKU5K4Z5Z3W4RIKQYDSLKMCNQNDZFBAC JN2TPHENEBIY2OE5FRCQ2E6QCL6FPVHJHUCP4UODD6DITRVV2LIQC BPRNUTY7MHK7LK4EY5MY5OFFG3ABOL7LWXD574L35M74YSQPULFAC MSBBCXVGD3GRLE5KAI6BKAFRV7SQUWI2SNN43AJAUD3ISRCEXY6QC BJDGFYBMECTJG7BHLNHLSCUCBVYHAY6OGY37FIJP6JDGNDXQNQVAC NUOLOGCKMF5UOBGBYEOX4O7NQ5AEVVLCH6KRBQRJQXIRDNJ2C2ZQC 5XGIB7XMEZNBLA5ZLQTXRTC3AZ5CTRGMXWBPVMWXG4DPHKWDF4ZAC FEMASUBNU32NSG4DNXZX54CGCA57PVRGYO46L3A6F2EJ4BCSJ3SAC GQVQJCNQNO2KD7ZMC7RESCUAMUAP7OED6CTA6SYLZKQGXKXZ6T3QC PU3YB5FX7NK65435O3H3AHCTUDHFRW7IOARLJJ4NBFG3GTIYVLCQC 33IC3UHCEPZLGS5ACS2JXHGT6CRU5LXU6PM6RDHCERPOIELVRVXQC YIQN7NJTGEVKW7JZHL6CTH6EPCIXCNBYNURIGXPYZAOUX3VAJQMAC 24A4OZBZBQ6QXIQ3EOOCQIBTOWRA32TMSQ4CCL3LKIJVJPKZFHVQC BVO33OXTG3QDBJ5YLBBVMUDHZGVFE777UOGZKVAHQK6MSDVR5RRAC XU5HOJREK4XY4NBCJINLZPKQNKSYOLUDTWR47REFSNQKDOSNDXLQC KCIWCVZOHG44WBOLKI2XK33WPHPRI5FWCETF4AOGTPZISKCW3CLQC QNV4LD7UGYSSNYDXGJC6SRP6Y3USUVDQLEERBMBWRC7LILWREB7AC 5IAXY3XZJTRMMVT2OVIJ6OXQJI6OJPTPCHHA4IVLVMHANCCC5NKAC QN2UTSQP4IMCMVXZNR24J22N24ASGXF6EWXQ2P3VWVQERUPFAFDQC DHFIRBK6SZI7R5QBVGMX2M5ADXIVQWNLCVBE6MKVPGHZ4USEC3VQC XQFT6DACFOMNNXDYUZRGRCMEPWF34KW5PRZ7RVMVJHYCS76JIZSAC IK2JHY4Z47WMJWXFYMKNXWFBBOMACMJWP737SUCRYHSEOY7HD6AQC J3SP5HQRWGMM6EM4ZIWPNUIY5HYFRJA4SH2X4OWGESSK7AWA3RNQC IVHURSHY4636OGIF3PNDO5CWOVRLJ75M4LP65J6I2E6KAM4QKF4AC VAF66DTVLDWNG7N2PEQYEH4OH5SPSMFBXKPR2PU67IIM6CVPCJ7AC TOBGHRPKEPSXDN56WGSZNWOMCBVJ4KUSLWYWI56MC2RR3MM3KLZAC WASO7G5FJXRXWNH2U2FLUNEKU6VE63OI3HUYP64BVD4LMD6KE7OQC UZAKARMGORRQG733ZUPJOEGL5FG243I32NCC2SRSFDCZKUQ5A52QC TUDUMVD5MTJJJGVYVOCALOOKOUYNB7LOFJRCYCZDVGN536JAO2OQC RCLGQ2LZMFVPBPTU2G55DJ6HZPOGGTPZRZCY54VGP6YLHANJ2LAQC N42E473LAYAM5NC4UXPM6WD37FLCUM26JCCKCARQEMXM7V6GWYNQC OJZWEAJRLOA5FZAC6FMGBQ6XFQFDNO55IRWLFWDAYWM54MUIU5LAC 2MTD37PDBF7KZKC6LXG2IVDYMMUMNNS557WMFVSCZM3SAKOGDC5QC 6D6MZBKTLXUK4ZCIFUPNV7XT64XSFFG4CL6HN6ONK5ONM6MR64AAC JHHVFKSN2L3YMG4JKXUDS6EBBYCDUDO56LNAZMG4QYS2FFPZF3SQC T3ARO5SWCVNUDSQHQYD3QLIJ3JLSFFNOWXPC2VTDOERWSFOFV47QC DGEGTDYVGRHEGNFDHCCVTD6AVLRJ2XHDXQPWR5MMR62V5NU2XGIQC DQZRKU4B6C3WWWXFMBBSVKYD5AXDGUMHHPACVWKERGKB5WLHZGYAC FS7Q6TUHBK5WSRDC3TM6KV2BPGWATRBLDHFGEJ72BR3FRDEOC3WAC I4P6OKQG6OD3JX2KV23QLKMG7DSNYMTYUZCIOKNPTHOFHOFLMSNAC PQB3EKQ6MBCXPTW4HB7SGMSTOTYMB3EFZX2573OFCQI6PSOEKCSQC M4Z75FVGV5XY2N3JHOSZZZ33VORN3WASHPP6X4IY43YNEIPFOC3QC T35FSMI7CA2CFZSRLTCZQBT2KDSEPDZD5UAPNNGR4YYAJ67LT4PAC 2D74GU7KGIN5GTSMCY7752YYQN62T5UY2FIKMWKYVMGKS2CDAJKAC 3HPNY5XHNPWR6RVX4LYEVDFJQWSB2CMS7J6XPAKATQ2UPFTXD33QC BSMJ4V7GV3EOGY4KCSTOJQUOFE2OOCIKQETE4WC2WRNLWBQIBW3QC GECUITHDXKCWB7HBCM7EA5Q56JDDWUVUWHMW2K6OM7UW36DFAZ3QC 67UXOK4QSZFAPVZXU2MJMD7I2232JCK4QDMIOMVMEQNQUGN7632AC USPPNUMNL5HU5WEOIWJMIFAX6TBZERVAV67XJUJQ6KSNLG55JAGQC 2DD222JSYRPHTXKSRXLSOMSCQPZUORNFLLO2P3GMIDELAAMD5MEQC 2XYZZL42IEZHGDJA6NDKGSQKGJP24LOTLFJ6RNHOKWHHSUYIHGKQC UUGQGVC4WEKN64WAP7F5QPS2UHGQB5ZLMFRIYNWKMIEBDO3QRX4AC CactusAmrCore::CactusAmrCore(const RealBox *rb, int max_level_in,const Vector<int> &n_cell_in, int coord,Vector<IntVect> ref_ratios, const int *is_per): AmrCore(rb, max_level_in, n_cell_in, coord, ref_ratios, is_per) {
CactusAmrCore::CactusAmrCore(const amrex::RealBox *rb, int max_level_in,const amrex::Vector<int> &n_cell_in, int coord,amrex::Vector<amrex::IntVect> ref_ratios,const int *is_per): amrex::AmrCore(rb, max_level_in, n_cell_in, coord, ref_ratios, is_per) {
CactusAmrCore::CactusAmrCore(const RealBox &rb, int max_level_in,const Vector<int> &n_cell_in, int coord,Vector<IntVect> const &ref_ratios,Array<int, AMREX_SPACEDIM> const &is_per): AmrCore(rb, max_level_in, n_cell_in, coord, ref_ratios, is_per) {
CactusAmrCore::CactusAmrCore(const amrex::RealBox &rb, int max_level_in,const amrex::Vector<int> &n_cell_in, int coord,amrex::Vector<amrex::IntVect> const &ref_ratios,amrex::Array<int, AMREX_SPACEDIM> const &is_per): amrex::AmrCore(rb, max_level_in, n_cell_in, coord, ref_ratios, is_per) {
grid.loop_idx(where_t::boundary, groupdata.indextype,[&](const Loop::PointDesc &p) {tags_array4(grid.cactus_offset.x + p.i,grid.cactus_offset.y + p.j,grid.cactus_offset.z + p.k) = TagBox::CLEAR;});
grid.loop_idx(where_t::boundary, groupdata.indextype,[&](const Loop::PointDesc &p) {tags_array4(grid.cactus_offset.x + p.i, grid.cactus_offset.y + p.j,grid.cactus_offset.z + p.k) = amrex::TagBox::CLEAR;});
leveldata.fab = make_unique<FabArrayBase>(ba, dm, 1, ghost_size);assert(ba.ixType() ==IndexType(IndexType::CELL, IndexType::CELL, IndexType::CELL));
leveldata.fab = make_unique<amrex::FabArrayBase>(ba, dm, 1, ghost_size);assert(ba.ixType() == amrex::IndexType(amrex::IndexType::CELL,amrex::IndexType::CELL,amrex::IndexType::CELL));
const BoxArray &gba = convert(ba,IndexType(groupdata.indextype[0] ? IndexType::CELL : IndexType::NODE,groupdata.indextype[1] ? IndexType::CELL : IndexType::NODE,groupdata.indextype[2] ? IndexType::CELL : IndexType::NODE));
const amrex::BoxArray &gba = convert(ba, amrex::IndexType(groupdata.indextype[0] ? amrex::IndexType::CELL: amrex::IndexType::NODE,groupdata.indextype[1] ? amrex::IndexType::CELL: amrex::IndexType::NODE,groupdata.indextype[2] ? amrex::IndexType::CELL: amrex::IndexType::NODE));
void apply_physbcs(const Box &, const FArrayBox &, int, int, const Geometry &,CCTK_REAL, const Vector<BCRec> &, int, int) { // do nothing
void apply_physbcs(const amrex::Box &, const amrex::FArrayBox &, int, int,const amrex::Geometry &, CCTK_REAL,const amrex::Vector<amrex::BCRec> &, int,int) { // do nothing
bcs.at(vi) = BCRec(makebc(vi, 0, 0), makebc(vi, 1, 0), makebc(vi, 2, 0),makebc(vi, 0, 1), makebc(vi, 1, 1), makebc(vi, 2, 1));const auto apply_physbc{[](const Box &, const FArrayBox &, int, int,const Geometry &, CCTK_REAL, const Vector<BCRec> &,int, int) {}};
bcs.at(vi) =amrex::BCRec(makebc(vi, 0, 0), makebc(vi, 1, 0), makebc(vi, 2, 0),makebc(vi, 0, 1), makebc(vi, 1, 1), makebc(vi, 2, 1));const auto apply_physbc{[](const amrex::Box &, const amrex::FArrayBox &, int,int, const amrex::Geometry &, CCTK_REAL,const amrex::Vector<amrex::BCRec> &, int, int) {}};
void CactusAmrCore::MakeNewLevelFromScratch(int level, Real time,const BoxArray &ba,const DistributionMapping &dm) {
void CactusAmrCore::MakeNewLevelFromScratch(int level, amrex::Real time, const amrex::BoxArray &ba,const amrex::DistributionMapping &dm) {
void CactusAmrCore::MakeNewLevelFromCoarse(const int level, const Real time,const BoxArray &ba,const DistributionMapping &dm) {
void CactusAmrCore::MakeNewLevelFromCoarse(const int level, const amrex::Real time, const amrex::BoxArray &ba,const amrex::DistributionMapping &dm) {
void CactusAmrCore::RemakeLevel(const int level, const Real time,const BoxArray &ba,const DistributionMapping &dm) {
void CactusAmrCore::RemakeLevel(const int level, const amrex::Real time,const amrex::BoxArray &ba,const amrex::DistributionMapping &dm) {
leveldata.fab = make_unique<FabArrayBase>(ba, dm, 1, ghost_size);assert(ba.ixType() ==IndexType(IndexType::CELL, IndexType::CELL, IndexType::CELL));
leveldata.fab = make_unique<amrex::FabArrayBase>(ba, dm, 1, ghost_size);assert(ba.ixType() == amrex::IndexType(amrex::IndexType::CELL,amrex::IndexType::CELL,amrex::IndexType::CELL));
const BoxArray &gba = convert(ba,IndexType(groupdata.indextype[0] ? IndexType::CELL : IndexType::NODE,groupdata.indextype[1] ? IndexType::CELL : IndexType::NODE,groupdata.indextype[2] ? IndexType::CELL : IndexType::NODE));
const amrex::BoxArray &gba = convert(ba, amrex::IndexType(groupdata.indextype[0] ? amrex::IndexType::CELL: amrex::IndexType::NODE,groupdata.indextype[1] ? amrex::IndexType::CELL: amrex::IndexType::NODE,groupdata.indextype[2] ? amrex::IndexType::CELL: amrex::IndexType::NODE));
// CCTK_VINFO("BoxArray level %d:", level);// cout << ghext->amrcore->boxArray(level) << "\n";
// CCTK_VINFO("amrex::Boxamrex::Array level %d:", level);// cout << ghext->amrcore->boxamrex::Array(level) << "\n";
CactusAmrCore(const RealBox *rb, int max_level_in,const Vector<int> &n_cell_in, int coord = -1,Vector<IntVect> ref_ratios = Vector<IntVect>(),
CactusAmrCore(const amrex::RealBox *rb, int max_level_in,const amrex::Vector<int> &n_cell_in, int coord = -1,amrex::Vector<amrex::IntVect> ref_ratios =amrex::Vector<amrex::IntVect>(),
CactusAmrCore(const RealBox &rb, int max_level_in,const Vector<int> &n_cell_in, int coord,Vector<IntVect> const &ref_ratios,Array<int, AMREX_SPACEDIM> const &is_per);CactusAmrCore(const AmrCore &rhs) = delete;CactusAmrCore &operator=(const AmrCore &rhs) = delete;
CactusAmrCore(const amrex::RealBox &rb, int max_level_in,const amrex::Vector<int> &n_cell_in, int coord,amrex::Vector<amrex::IntVect> const &ref_ratios,amrex::Array<int, AMREX_SPACEDIM> const &is_per);CactusAmrCore(const amrex::AmrCore &rhs) = delete;CactusAmrCore &operator=(const amrex::AmrCore &rhs) = delete;
virtual void MakeNewLevelFromScratch(int level, Real time, const BoxArray &ba,const DistributionMapping &dm) override;virtual void MakeNewLevelFromCoarse(int level, Real time, const BoxArray &ba,const DistributionMapping &dm) override;virtual void RemakeLevel(int level, Real time, const BoxArray &ba,const DistributionMapping &dm) override;
virtual voidMakeNewLevelFromScratch(int level, amrex::Real time,const amrex::BoxArray &ba,const amrex::DistributionMapping &dm) override;virtual voidMakeNewLevelFromCoarse(int level, amrex::Real time, const amrex::BoxArray &ba,const amrex::DistributionMapping &dm) override;virtual void RemakeLevel(int level, amrex::Real time,const amrex::BoxArray &ba,const amrex::DistributionMapping &dm) override;
// each MultiFab has numvars componentsvector<unique_ptr<MultiFab> > mfab; // [time level]
// each amrex::MultiFab has numvars componentsvector<unique_ptr<amrex::MultiFab> > mfab; // [time level]
typedef void apply_physbcs_t(const Box &, const FArrayBox &, int, int,const Geometry &, CCTK_REAL, const Vector<BCRec> &,int, int);typedef PhysBCFunct<apply_physbcs_t *> CarpetXPhysBCFunct;tuple<CarpetXPhysBCFunct, Vector<BCRec> >
typedef void apply_physbcs_t(const amrex::Box &, const amrex::FArrayBox &, int,int, const amrex::Geometry &, CCTK_REAL,const amrex::Vector<amrex::BCRec> &, int, int);typedef amrex::PhysBCFunct<apply_physbcs_t *> CarpetXPhysBCFunct;tuple<CarpetXPhysBCFunct, amrex::Vector<amrex::BCRec> >
const int nprocs = ParallelDescriptor::NProcs();const MPI_Comm comm = ParallelDescriptor::Communicator();
const int nprocs = amrex::ParallelDescriptor::NProcs();const MPI_Comm comm = amrex::ParallelDescriptor::Communicator();
Vector<const MultiFab *> mfabs(ghext->leveldata.size());Vector<Geometry> geoms(ghext->leveldata.size());Vector<int> iters(ghext->leveldata.size());Vector<IntVect> reffacts(ghext->leveldata.size());
amrex::Vector<const amrex::MultiFab *> mfabs(ghext->leveldata.size());amrex::Vector<amrex::Geometry> geoms(ghext->leveldata.size());amrex::Vector<int> iters(ghext->leveldata.size());amrex::Vector<amrex::IntVect> reffacts(ghext->leveldata.size());
MultiFab &mfab = *groupdata.mfab[tl];const IndexType &indextype = mfab.ixType();const IntVect &ngrow = mfab.nGrowVect();const DistributionMapping &dm = mfab.DistributionMap();
amrex::MultiFab &mfab = *groupdata.mfab[tl];const amrex::IndexType &indextype = mfab.ixType();const amrex::IntVect &ngrow = mfab.nGrowVect();const amrex::DistributionMapping &dm = mfab.DistributionMap();
const MultiFab &mfab = *groupdata.mfab[tl];const IndexType &indextype = mfab.ixType();const IntVect &ngrow = mfab.nGrowVect();const DistributionMapping &dm = mfab.DistributionMap();
const amrex::MultiFab &mfab = *groupdata.mfab[tl];const amrex::IndexType &indextype = mfab.ixType();const amrex::IntVect &ngrow = mfab.nGrowVect();const amrex::DistributionMapping &dm = mfab.DistributionMap();
const MultiFab &mfab0 = *groupdata0.mfab[tl];const IndexType &indextype = mfab0.ixType();const IntVect &ngrow = mfab0.nGrowVect();
const amrex::MultiFab &mfab0 = *groupdata0.mfab[tl];const amrex::IndexType &indextype = mfab0.ixType();const amrex::IntVect &ngrow = mfab0.nGrowVect();
// const MultiFab &mfab = *groupdata.mfab[tl];// const Geometry &geom = ghext->amrcore->Geom(leveldata.level);// const double *const x0 = geom.ProbLo();// const double *const dx = geom.CellSize();// const int nfabs = mfab.size();// for (int c = 0; c < nfabs; ++c) {// const Box &fabbox = mfab.fabbox(c); // exterior
// const amrex::MultiFab &mfab = *groupdata.mfab[tl];// const amrex::Geometry &geom =// ghext->amrcore->Geom(leveldata.level); const double *const x0 =// geom.ProbLo(); const double *const dx = geom.CellSize(); const int// nfabs = mfab.size(); for (int c = 0; c < nfabs; ++c) {// const amrex::Box &fabbox = mfab.fabbox(c); // exterior
Vector<Geometry> geoms(ghext->leveldata.size());Vector<BoxArray> grids(ghext->leveldata.size());Vector<DistributionMapping> dmaps(ghext->leveldata.size());
amrex::Vector<amrex::Geometry> geoms(ghext->leveldata.size());amrex::Vector<amrex::BoxArray> grids(ghext->leveldata.size());amrex::Vector<amrex::DistributionMapping> dmaps(ghext->leveldata.size());
{LinOpBCType::Periodic, LinOpBCType::Periodic, LinOpBCType::Periodic},{LinOpBCType::Periodic, LinOpBCType::Periodic, LinOpBCType::Periodic});
{amrex::LinOpBCType::Periodic, amrex::LinOpBCType::Periodic,amrex::LinOpBCType::Periodic},{amrex::LinOpBCType::Periodic, amrex::LinOpBCType::Periodic,amrex::LinOpBCType::Periodic});
Vector<MultiFab *> ress(ghext->leveldata.size());Vector<MultiFab *> sols(ghext->leveldata.size());Vector<const MultiFab *> rhss(ghext->leveldata.size());
amrex::Vector<amrex::MultiFab *> ress(ghext->leveldata.size());amrex::Vector<amrex::MultiFab *> sols(ghext->leveldata.size());amrex::Vector<const amrex::MultiFab *> rhss(ghext->leveldata.size());
void interp3d(const T *restrict const crseptr, const Box &restrict crsebox,T *restrict const fineptr, const Box &restrict finebox,const Box &restrict targetbox) {
void interp3d(const T *restrict const crseptr,const amrex::Box &restrict crsebox, T *restrict const fineptr,const amrex::Box &restrict finebox,const amrex::Box &restrict targetbox) {
const IntVect fineind(targetbox.loVect());IntVect crseind = fineind;crseind.getVect()[D] = coarsen(fineind.getVect()[D], 2) - required_ghosts;
const amrex::IntVect fineind(targetbox.loVect());amrex::IntVect crseind = fineind;crseind.getVect()[D] =amrex::coarsen(fineind.getVect()[D], 2) - required_ghosts;
const IntVect fineind(targetbox.hiVect());IntVect crseind = fineind;crseind.getVect()[D] = coarsen(fineind.getVect()[D], 2) + required_ghosts;
const amrex::IntVect fineind(targetbox.hiVect());amrex::IntVect crseind = fineind;crseind.getVect()[D] =amrex::coarsen(fineind.getVect()[D], 2) + required_ghosts;
assert(finebox.index(IntVect(1, 0, 0)) - fined0 == finedi);const ptrdiff_t finedj = finebox.index(IntVect(0, 1, 0)) - fined0;const ptrdiff_t finedk = finebox.index(IntVect(0, 0, 1)) - fined0;
assert(finebox.index(amrex::IntVect(1, 0, 0)) - fined0 == finedi);const ptrdiff_t finedj = finebox.index(amrex::IntVect(0, 1, 0)) - fined0;const ptrdiff_t finedk = finebox.index(amrex::IntVect(0, 0, 1)) - fined0;
assert(crsebox.index(IntVect(1, 0, 0)) - crsed0 == crsedi);const ptrdiff_t crsedj = crsebox.index(IntVect(0, 1, 0)) - crsed0;const ptrdiff_t crsedk = crsebox.index(IntVect(0, 0, 1)) - crsed0;
assert(crsebox.index(amrex::IntVect(1, 0, 0)) - crsed0 == crsedi);const ptrdiff_t crsedj = crsebox.index(amrex::IntVect(0, 1, 0)) - crsed0;const ptrdiff_t crsedk = crsebox.index(amrex::IntVect(0, 0, 1)) - crsed0;
Box prolongate_3d_rf2<CENTI, CENTJ, CENTK, CONSI, CONSJ, CONSK, ORDERI, ORDERJ,ORDERK>::CoarseBox(const Box &fine, int ratio) {return CoarseBox(fine, IntVect(ratio));
amrex::Box prolongate_3d_rf2<CENTI, CENTJ, CENTK, CONSI, CONSJ, CONSK, ORDERI,ORDERJ, ORDERK>::CoarseBox(const amrex::Box &fine,int ratio) {return CoarseBox(fine, amrex::IntVect(ratio));
Box prolongate_3d_rf2<CENTI, CENTJ, CENTK, CONSI, CONSJ, CONSK, ORDERI, ORDERJ,ORDERK>::CoarseBox(const Box &fine,const IntVect &ratio) {
amrex::Boxprolongate_3d_rf2<CENTI, CENTJ, CENTK, CONSI, CONSJ, CONSK, ORDERI, ORDERJ,ORDERK>::CoarseBox(const amrex::Box &fine,const amrex::IntVect &ratio) {
ORDERK>::interp(const FArrayBox &crse, int crse_comp,FArrayBox &fine, int fine_comp,int ncomp, const Box &fine_region,const IntVect &ratio,const Geometry &crse_geom,const Geometry &fine_geom,Vector<BCRec> const &bcr,
ORDERK>::interp(const amrex::FArrayBox &crse,int crse_comp, amrex::FArrayBox &fine,int fine_comp, int ncomp,const amrex::Box &fine_region,const amrex::IntVect &ratio,const amrex::Geometry &crse_geom,const amrex::Geometry &fine_geom,amrex::Vector<amrex::BCRec> const &bcr,
const BCRec bcrec(BCType::int_dir, BCType::int_dir, BCType::int_dir,BCType::int_dir, BCType::int_dir, BCType::int_dir);
const amrex::BCRec bcrec(amrex::BCType::int_dir, amrex::BCType::int_dir,amrex::BCType::int_dir, amrex::BCType::int_dir,amrex::BCType::int_dir, amrex::BCType::int_dir);
virtual Box CoarseBox(const Box &fine, int ratio) override;virtual Box CoarseBox(const Box &fine, const IntVect &ratio) override;
virtual amrex::Box CoarseBox(const amrex::Box &fine, int ratio) override;virtual amrex::Box CoarseBox(const amrex::Box &fine,const amrex::IntVect &ratio) override;
virtual void interp(const FArrayBox &crse, int crse_comp, FArrayBox &fine,int fine_comp, int ncomp, const Box &fine_region,const IntVect &ratio, const Geometry &crse_geom,const Geometry &fine_geom, Vector<BCRec> const &bcr,int actual_comp, int actual_state,RunOn gpu_or_cpu) override;
virtual void interp(const amrex::FArrayBox &crse, int crse_comp,amrex::FArrayBox &fine, int fine_comp, int ncomp,const amrex::Box &fine_region,const amrex::IntVect &ratio,const amrex::Geometry &crse_geom,const amrex::Geometry &fine_geom,amrex::Vector<amrex::BCRec> const &bcr, int actual_comp,int actual_state, amrex::RunOn gpu_or_cpu) override;
reduction<T, dim> reduce_array(const Array4<const T> &restrict vars,const int n, const array<int, dim> &imin,const array<int, dim> &imax,const Array4<const int> *restrict const finemask,const vect<T, dim> &x0, const vect<T, dim> &dx) {
reduction<T, dim>reduce_array(const amrex::Array4<const T> &restrict vars, const int n,const array<int, dim> &imin, const array<int, dim> &imax,const amrex::Array4<const int> *restrict const finemask,const vect<T, dim> &x0, const vect<T, dim> &dx) {
for (MFIter mfi(mfab, mfitinfo); mfi.isValid(); ++mfi) {const Box &bx = mfi.tilebox(); // current region (without ghosts)
for (amrex::MFIter mfi(mfab, mfitinfo); mfi.isValid(); ++mfi) {const amrex::Box &bx = mfi.tilebox(); // current region (without ghosts)
const Box &fbx = mfp.fabbox(); // allocated arrayconst Box &vbx = mfp.validbox(); // interior region (without ghosts)const Box &gbx = mfp.growntilebox(); // current region (with ghosts)const Box &domain = ghext->amrcore->Geom(leveldata.level).Domain();
const amrex::Box &fbx = mfp.fabbox(); // allocated arrayconst amrex::Box &vbx = mfp.validbox(); // interior region (without ghosts)const amrex::Box &gbx = mfp.growntilebox(); // current region (with ghosts)const amrex::Box &domain = ghext->amrcore->Geom(leveldata.level).Domain();
// Note: The MFIter uses global variables and OpenMP barriersfor (MFIter mfi(*leveldata.fab, mfitinfo); mfi.isValid(); ++mfi) {
// Note: The amrex::MFIter uses global variables and OpenMP barriersfor (amrex::MFIter mfi(*leveldata.fab, mfitinfo); mfi.isValid(); ++mfi) {
constexpr Box fabbox() const noexcept { return m_fabbox; }constexpr Box growntilebox() const noexcept { return m_growntilebox; }constexpr Box validbox() const noexcept { return m_validbox; }constexpr IntVect nGrowVect() const noexcept { return m_nGrowVect; }
constexpr amrex::Box fabbox() const noexcept { return m_fabbox; }constexpr amrex::Box growntilebox() const noexcept { return m_growntilebox; }constexpr amrex::Box validbox() const noexcept { return m_validbox; }constexpr amrex::IntVect nGrowVect() const noexcept { return m_nGrowVect; }