diff options
Diffstat (limited to 'Source/BoundaryConditions/PML.cpp')
-rw-r--r-- | Source/BoundaryConditions/PML.cpp | 34 |
1 files changed, 24 insertions, 10 deletions
diff --git a/Source/BoundaryConditions/PML.cpp b/Source/BoundaryConditions/PML.cpp index 316a2bd2b..f880ebc56 100644 --- a/Source/BoundaryConditions/PML.cpp +++ b/Source/BoundaryConditions/PML.cpp @@ -119,6 +119,8 @@ SigmaBox::SigmaBox (const Box& box, const BoxArray& grids, const Real* dx, int n sigma_star_cum_fac[idim].m_hi = hi[idim]; } + amrex::Print()<<box<<std::endl; + pml_type = ""; pml_type_array = {3, 3, 3, 3, 3}; @@ -187,6 +189,7 @@ SigmaBox::SigmaBox (const Box& box, const BoxArray& grids, const Real* dx, int n #endif Box looverlap = lobox & box; if (looverlap.ok()) { + amrex::Print()<<"["<<idim<<"] FillLo"<<std::endl; FillLo(idim, sigma[idim], sigma_cum[idim], sigma_star[idim], sigma_star_cum[idim], looverlap, grid_box, fac[idim]); if (idim == 0){ pml_type = "crn-++"; // for 2d only use the two first components @@ -210,6 +213,7 @@ SigmaBox::SigmaBox (const Box& box, const BoxArray& grids, const Real* dx, int n #endif Box hioverlap = hibox & box; if (hioverlap.ok()) { + amrex::Print()<<"["<<idim<<"] FillHi"<<std::endl; FillHi(idim, sigma[idim], sigma_cum[idim], sigma_star[idim], sigma_star_cum[idim], hioverlap, grid_box, fac[idim]); if (idim == 0){ pml_type = "crn+++"; // for 2d only use the two first components @@ -237,6 +241,7 @@ SigmaBox::SigmaBox (const Box& box, const BoxArray& grids, const Real* dx, int n const Box& grid_box = grids[gid]; const Box& overlap = amrex::grow(amrex::grow(grid_box,jdim,ncell),kdim,ncell) & box; if (overlap.ok()) { + amrex::Print()<<"["<<idim<<"] FillZero"<<std::endl; FillZero(idim, sigma[idim], sigma_cum[idim], sigma_star[idim], sigma_star_cum[idim], overlap); if (idim==0){ pml_type="sed33--"; @@ -255,6 +260,7 @@ SigmaBox::SigmaBox (const Box& box, const BoxArray& grids, const Real* dx, int n Box lobox = amrex::adjCellLo(grid_box, idim, ncell); Box looverlap = lobox.grow(jdim,ncell).grow(kdim,ncell) & box; if (looverlap.ok()) { + amrex::Print()<<"["<<idim<<"] FillLo"<<std::endl; FillLo(idim, sigma[idim], sigma_cum[idim], sigma_star[idim], sigma_star_cum[idim], looverlap, grid_box, fac[idim]); if (idim == 0){ pml_type = "sed03-+"; // for 2d only use the two first components @@ -283,6 +289,7 @@ SigmaBox::SigmaBox (const Box& box, const BoxArray& grids, const Real* dx, int n Box hibox = amrex::adjCellHi(grid_box, idim, ncell); Box hioverlap = hibox.grow(jdim,ncell).grow(kdim,ncell) & box; if (hioverlap.ok()) { + amrex::Print()<<"["<<idim<<"] FillHi"<<std::endl; FillHi(idim, sigma[idim], sigma_cum[idim], sigma_star[idim], sigma_star_cum[idim], hioverlap, grid_box, fac[idim]); if (idim == 0){ pml_type = "sed03++"; // for 2d only use the two first components @@ -323,6 +330,7 @@ SigmaBox::SigmaBox (const Box& box, const BoxArray& grids, const Real* dx, int n const Box& overlap = amrex::grow(amrex::grow(grid_box,jdim,ncell),kdim,ncell) & box; #endif if (overlap.ok()) { + amrex::Print()<<"["<<idim<<"] FillZero"<<std::endl; FillZero(idim, sigma[idim], sigma_cum[idim], sigma_star[idim], sigma_star_cum[idim], overlap); } else { amrex::Abort("SigmaBox::SigmaBox(): side_faces, how did this happen?\n"); @@ -336,6 +344,7 @@ SigmaBox::SigmaBox (const Box& box, const BoxArray& grids, const Real* dx, int n const Box& lobox = amrex::adjCellLo(grid_box, idim, ncell); Box looverlap = lobox & box; if (looverlap.ok()) { + amrex::Print()<<"["<<idim<<"] FillLo"<<std::endl; FillLo(idim, sigma[idim], sigma_cum[idim], sigma_star[idim], sigma_star_cum[idim], looverlap, grid_box, fac[idim]); pml_type = "df0-"; pml_type_array[0] = 0; @@ -347,6 +356,7 @@ SigmaBox::SigmaBox (const Box& box, const BoxArray& grids, const Real* dx, int n const Box& hibox = amrex::adjCellHi(grid_box, idim, ncell); Box hioverlap = hibox & box; if (hioverlap.ok()) { + amrex::Print()<<"["<<idim<<"] FillHi"<<std::endl; FillHi(idim, sigma[idim], sigma_cum[idim], sigma_star[idim], sigma_star_cum[idim], hioverlap, grid_box, fac[idim]); pml_type = "df0+"; pml_type_array[0] = 0; @@ -364,6 +374,7 @@ SigmaBox::SigmaBox (const Box& box, const BoxArray& grids, const Real* dx, int n amrex::Abort("SigmaBox::SigmaBox(): direct_faces.size() > 1, Box gaps not wide enough?\n"); } } + amrex::Print()<<pml_type<<std::endl; } @@ -483,7 +494,7 @@ PML::PML (const BoxArray& grid_ba, const DistributionMapping& grid_dm, } const BoxArray grid_ba_reduced = BoxArray(grid_ba.boxList().intersect(domain0)); - const BoxArray& ba = (do_pml_in_domain)? MakeBoxArray(*geom, grid_ba_reduced, ncell) : MakeBoxArray(*geom, grid_ba, ncell); + const BoxArray& ba = (do_pml_in_domain)? MakeBoxArray(*geom, grid_ba_reduced, ncell, do_pml_Lo, do_pml_Hi) : MakeBoxArray(*geom, grid_ba, ncell, do_pml_Lo, do_pml_Hi); if (ba.size() == 0) { m_ok = false; @@ -545,7 +556,7 @@ PML::PML (const BoxArray& grid_ba, const DistributionMapping& grid_dm, grid_cba.coarsen(ref_ratio); const BoxArray grid_cba_reduced = BoxArray(grid_cba.boxList().intersect(domain0)); // domain to change ? This domain was built for a fine grid: the reduced domain is only valid for the fine level... // const BoxArray& cba = MakeBoxArray(*cgeom, grid_cba_reduced, ncell); - const BoxArray& cba = (do_pml_in_domain) ? MakeBoxArray(*cgeom, grid_cba_reduced, ncell) : MakeBoxArray(*cgeom, grid_cba, ncell); + const BoxArray& cba = (do_pml_in_domain) ? MakeBoxArray(*cgeom, grid_cba_reduced, ncell, do_pml_Lo, do_pml_Hi) : MakeBoxArray(*cgeom, grid_cba, ncell, do_pml_Lo, do_pml_Hi); DistributionMapping cdm{cba}; @@ -592,6 +603,9 @@ PML::MakeBoxArray (const amrex::Geometry& geom, const amrex::BoxArray& grid_ba, const amrex::IntVect do_pml_Lo, const amrex::IntVect do_pml_Hi) { Box domain = geom.Domain(); + amrex::Print()<<domain<<std::endl; + amrex::Print()<<do_pml_Lo<<std::endl; + amrex::Print()<<do_pml_Hi<<std::endl; for (int idim = 0; idim < AMREX_SPACEDIM; ++idim) { if ( ! geom.isPeriodic(idim) ) { // domain.grow(idim, ncell); @@ -603,7 +617,7 @@ PML::MakeBoxArray (const amrex::Geometry& geom, const amrex::BoxArray& grid_ba, } } } - + amrex::Print()<<domain<<std::endl; BoxList bl; for (int i = 0, N = grid_ba.size(); i < N; ++i) { @@ -650,13 +664,13 @@ PML::MakeBoxArray (const amrex::Geometry& geom, const amrex::BoxArray& grid_ba, BoxArray ba(bl); ba.removeOverlap(false); - // amrex::Print()<< "####### PML BOXES #######" <<std::endl; - // amrex::Print()<<"["<<std::endl; - // const BoxList& bl2 = BoxList(ba); - // for (const Box& b : bl2) { - // amrex::Print()<<"["<<b.smallEnd()[0]<<", "<<b.smallEnd()[1]<<", "<<b.bigEnd()[0]<<", "<<b.bigEnd()[1]<<"],"<<std::endl; - // } - // amrex::Print()<<"]"<<std::endl; + amrex::Print()<< "####### PML BOXES #######" <<std::endl; + amrex::Print()<<"["<<std::endl; + const BoxList& bl2 = BoxList(ba); + for (const Box& b : bl2) { + amrex::Print()<<"["<<b.smallEnd()[0]<<", "<<b.smallEnd()[1]<<", "<<b.bigEnd()[0]<<", "<<b.bigEnd()[1]<<"],"<<std::endl; + } + amrex::Print()<<"]"<<std::endl; return ba; } |