MCPcopy Create free account
hub / github.com/AMReX-Astro/Castro / addLevel

Method addLevel

Source/radiation/HypreMultiABec.cpp:702–783  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

700}
701
702void HypreMultiABec::addLevel(int level,
703 const Geometry& _geom,
704 const BoxArray& _grids,
705 const DistributionMapping& _dmap,
706 IntVect _fine_ratio)
707{
708 int part = level - crse_level;
709
710 geom[level] = _geom;
711 grids[level] = _grids;
712 dmap[level] = _dmap;
713 fine_ratio[level] = _fine_ratio;
714
715#if (AMREX_SPACEDIM == 1)
716
717 if (geom[level].isAnyPeriodic()) {
718 BL_ASSERT(geom[level].isPeriodic(0));
719 BL_ASSERT(geom[level].Domain().smallEnd(0) == 0);
720
721 int is_periodic[2];
722 is_periodic[0] = geom[level].period(0);
723 is_periodic[1] = 0;
724 BL_ASSERT(ispow2(is_periodic[0]));
725
726 HYPRE_SStructGridSetPeriodic(hgrid, part, is_periodic);
727 }
728
729#else
730
731 if (geom[level].isAnyPeriodic()) {
732 int is_periodic[AMREX_SPACEDIM];
733 for (int i = 0; i < AMREX_SPACEDIM; i++) {
734 is_periodic[i] = 0;
735 if (geom[level].isPeriodic(i)) {
736 is_periodic[i] = geom[level].period(i);
737 BL_ASSERT(ispow2(is_periodic[i]));
738 BL_ASSERT(geom[level].Domain().smallEnd(i) == 0);
739 }
740 }
741 HYPRE_SStructGridSetPeriodic(hgrid, part, is_periodic);
742 }
743
744#endif
745
746 int myid = ParallelDescriptor::MyProc();
747
748 subgrids[level].resize(grids[level].size());
749
750 if (!use_subgrids || level == fine_level || grids[level+1].size() == 0) {
751 for (int i = 0; i < grids[level].size(); i++) {
752 if (dmap[level][i] == myid) {
753 HYPRE_SStructGridSetExtents(hgrid, part,
754 loV(grids[level][i]),
755 hiV(grids[level][i]));
756 }
757 }
758 }
759 else {

Callers 1

RadSolveMethod · 0.80

Calls 4

loVFunction · 0.85
hiVFunction · 0.85
sizeMethod · 0.80
ispow2Function · 0.70

Tested by

no test coverage detected