Skip to content

Commit

Permalink
[Draft] ABLASTR: Coarsen Functions
Browse files Browse the repository at this point in the history
Move coarsen functions to ABLASTR.
  • Loading branch information
ax3l committed Oct 28, 2022
1 parent affb02a commit 0426bb3
Show file tree
Hide file tree
Showing 12 changed files with 227 additions and 186 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
#include "Particles/Pusher/GetAndSetPosition.H"
#include "Particles/Pusher/UpdatePosition.H"
#include "Particles/ParticleBoundaries_K.H"
#include "Utils/CoarsenMR.H"
#include "ablastr/mesh_refinement/coarsen.H"
#include "Utils/TextMsg.H"
#include "Utils/WarpXAlgorithmSelection.H"
#include "Utils/WarpXConst.H"
Expand Down
19 changes: 10 additions & 9 deletions Source/Parallelization/WarpXComm.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,15 @@
# include "BoundaryConditions/PML_RZ.H"
#endif
#include "Filter/BilinearFilter.H"
#include "Utils/CoarsenMR.H"
#include "Utils/Parser/IntervalsParser.H"
#include "Utils/TextMsg.H"
#include "Utils/WarpXAlgorithmSelection.H"
#include "Utils/WarpXProfilerWrapper.H"
#include "WarpXComm_K.H"
#include "WarpXSumGuardCells.H"

#include <ablastr/utils/Communication.H>
#include <ablastr/mesh_refinement/coarsen.H>

#include <AMReX.H>
#include <AMReX_Array.H>
Expand Down Expand Up @@ -887,9 +888,9 @@ WarpX::SyncCurrent (
std::array< MultiFab*,3> crse { J_cp[lev][0].get(),
J_cp[lev][1].get(),
J_cp[lev][2].get() };
CoarsenMR::Coarsen( *crse[0], *fine[0], refinement_ratio );
CoarsenMR::Coarsen( *crse[1], *fine[1], refinement_ratio );
CoarsenMR::Coarsen( *crse[2], *fine[2], refinement_ratio );
ablastr::mesh_refinement::Coarsen( *crse[0], *fine[0], refinement_ratio );
ablastr::mesh_refinement::Coarsen( *crse[1], *fine[1], refinement_ratio );
ablastr::mesh_refinement::Coarsen( *crse[2], *fine[2], refinement_ratio );
}

// For each level
Expand All @@ -915,7 +916,7 @@ WarpX::SyncRho ()
{
rho_cp[lev]->setVal(0.0);
const IntVect& refinement_ratio = refRatio(lev-1);
CoarsenMR::Coarsen( *rho_cp[lev], *rho_fp[lev], refinement_ratio );
ablastr::mesh_refinement::Coarsen( *rho_cp[lev], *rho_fp[lev], refinement_ratio );
}

// For each level
Expand Down Expand Up @@ -947,9 +948,9 @@ void WarpX::RestrictCurrentFromFineToCoarsePatch (
std::array< MultiFab*,3> crse { J_cp[lev][0].get(),
J_cp[lev][1].get(),
J_cp[lev][2].get() };
CoarsenMR::Coarsen( *crse[0], *fine[0], refinement_ratio );
CoarsenMR::Coarsen( *crse[1], *fine[1], refinement_ratio );
CoarsenMR::Coarsen( *crse[2], *fine[2], refinement_ratio );
ablastr::mesh_refinement::Coarsen( *crse[0], *fine[0], refinement_ratio );
ablastr::mesh_refinement::Coarsen( *crse[1], *fine[1], refinement_ratio );
ablastr::mesh_refinement::Coarsen( *crse[2], *fine[2], refinement_ratio );
}

void WarpX::ApplyFilterJ (
Expand Down Expand Up @@ -1126,7 +1127,7 @@ void WarpX::RestrictRhoFromFineToCoarsePatch (
if (charge_fp[lev]) {
charge_cp[lev]->setVal(0.0);
const IntVect& refinement_ratio = refRatio(lev-1);
CoarsenMR::Coarsen( *charge_cp[lev], *charge_fp[lev], refinement_ratio );
ablastr::mesh_refinement::Coarsen( *charge_cp[lev], *charge_fp[lev], refinement_ratio );
}
}

Expand Down
4 changes: 2 additions & 2 deletions Source/Particles/WarpXParticleContainer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
#include "Pusher/GetAndSetPosition.H"
#include "Pusher/UpdatePosition.H"
#include "ParticleBoundaries_K.H"
#include "Utils/CoarsenMR.H"
#include "ablastr/mesh_refinement/coarsen.H"
#include "Utils/TextMsg.H"
#include "Utils/WarpXAlgorithmSelection.H"
#include "Utils/WarpXConst.H"
Expand Down Expand Up @@ -714,7 +714,7 @@ WarpXParticleContainer::DepositCharge (amrex::Vector<std::unique_ptr<amrex::Mult
MultiFab coarsened_fine_data(coarsened_fine_BA, fine_dm, rho[lev+1]->nComp(), ngrow );
coarsened_fine_data.setVal(0.0);

CoarsenMR::Coarsen( coarsened_fine_data, *rho[lev+1], m_gdb->refRatio(lev) );
ablastr::mesh_refinement::Coarsen( coarsened_fine_data, *rho[lev+1], m_gdb->refRatio(lev) );
ablastr::utils::communication::ParallelAdd(*rho[lev], coarsened_fine_data, 0, 0,
rho[lev]->nComp(),
amrex::IntVect::TheZeroVector(),
Expand Down
1 change: 0 additions & 1 deletion Source/Utils/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
target_sources(WarpX
PRIVATE
CoarsenIO.cpp
CoarsenMR.cpp
Interpolate.cpp
MPIInitHelpers.cpp
ParticleUtils.cpp
Expand Down
4 changes: 3 additions & 1 deletion Source/Utils/CoarsenIO.H
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,9 @@

#include <cstdlib>

namespace CoarsenIO{
// this is the same as the CoarsenMR but cell-centered for IO
namespace CoarsenIO
{

using namespace amrex;

Expand Down
104 changes: 0 additions & 104 deletions Source/Utils/CoarsenMR.cpp

This file was deleted.

1 change: 0 additions & 1 deletion Source/Utils/Make.package
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ CEXE_sources += WarpXUtil.cpp
CEXE_sources += WarpXVersion.cpp
CEXE_sources += WarpXAlgorithmSelection.cpp
CEXE_sources += CoarsenIO.cpp
CEXE_sources += CoarsenMR.cpp
CEXE_sources += Interpolate.cpp
CEXE_sources += IntervalsParser.cpp
CEXE_sources += MPIInitHelpers.cpp
Expand Down
2 changes: 1 addition & 1 deletion Source/Utils/check_interp_points_and_weights.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
# For MR applications only the cases sc=sf=0 and sc=sf=1 are considered. Terms
# multiplied by (1-sf)*(1-sc) are ON for cell-centered data and OFF for nodal data,
# while terms multiplied by sf*sc are ON for nodal data and OFF for cell-centered
# data. C++ implementation in Source/Utils/CoarsenMR.H/.cpp and Source/Utils/CoarsenIO.H/.cpp
# data. C++ implementation in Source/ablastr/mesh_refinement/coarsen.H/.cpp and Source/Utils/CoarsenIO.H/.cpp
#-------------------------------------------------------------------------------

import sys
Expand Down
1 change: 1 addition & 0 deletions Source/ablastr/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#add_subdirectory(fields)
add_subdirectory(mesh_refinement)
#add_subdirectory(particles)
#add_subdirectory(profiler)
add_subdirectory(utils)
Expand Down
4 changes: 4 additions & 0 deletions Source/ablastr/mesh_refinement/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
target_sources(ablastr
PRIVATE
coarsen.cpp
)
Loading

0 comments on commit 0426bb3

Please sign in to comment.