Skip to content

Commit

Permalink
group initialization and cleanup of external libraries
Browse files Browse the repository at this point in the history
  • Loading branch information
lucafedeli88 committed Jun 2, 2024
1 parent 7f4b086 commit aee0406
Show file tree
Hide file tree
Showing 6 changed files with 70 additions and 26 deletions.
3 changes: 3 additions & 0 deletions Source/Evolve/WarpXEvolve.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -306,6 +306,9 @@ WarpX::Evolve (int numsteps)
multi_diags->FilterComputePackFlushLastTimestep( istep[0] );
if (m_exit_loop_due_to_interrupt_signal) { ExecutePythonCallback("onbreaksignal"); }
}

amrex::Print() <<
ablastr::warn_manager::GetWMInstance().PrintGlobalWarnings("THE END");
}

/* /brief Perform one PIC iteration, without subcycling
Expand Down
1 change: 1 addition & 0 deletions Source/Initialization/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ foreach(D IN LISTS WarpX_DIMS)
TemperatureProperties.cpp
VelocityProperties.cpp
WarpXAMReXInit.cpp
WarpXInit.cpp
WarpXInitData.cpp
)
endforeach()
1 change: 1 addition & 0 deletions Source/Initialization/Make.package
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ CEXE_sources += PlasmaInjector.cpp
CEXE_sources += TemperatureProperties.cpp
CEXE_sources += VelocityProperties.cpp
CEXE_sources += WarpXAMReXInit.cpp
CEXE_sources += WarpXInit.cpp
CEXE_sources += WarpXInitData.cpp

VPATH_LOCATIONS += $(WARPX_HOME)/Source/Initialization
30 changes: 30 additions & 0 deletions Source/Initialization/WarpXInit.H
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
/* Copyright 2024 Luca Fedeli
*
* This file is part of WarpX.
*
* License: BSD-3-Clause-LBNL
*/
#ifndef WARPX_INIT_H_
#define WARPX_INIT_H_

namespace warpx::initialization
{
/** Initializes, in the following order:
* - the MPI library through the mpi_init helper function in ablastr
* - the AMReX library
* - the FFT library through the anyfft::setup() function in ablastr
*
* @param[in] argc number of arguments from main()
* @param[in] argv argument strings from main()
*/
void initialize_external_libraries(int argc, char* argv[]);

/** Initializes, in the following order:
* - the FFT library through the anyfft::cleanup() function in ablastr
* - the AMReX library
* - the MPI library through the mpi_finalize helper function in ablastr
*/
void finalize_external_libraries();
}

#endif //WARPX_INIT_H_
29 changes: 29 additions & 0 deletions Source/Initialization/WarpXInit.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
/* Copyright 2024 Luca Fedeli
*
* This file is part of WarpX.
*
* License: BSD-3-Clause-LBNL
*/

#include "WarpXInit.H"

#include "Initialization/WarpXAMReXInit.H"

#include <AMReX.H>

#include <ablastr/math/fft/AnyFFT.H>
#include <ablastr/parallelization/MPIInitHelpers.H>

void warpx::initialization::initialize_external_libraries(int argc, char* argv[])
{
ablastr::parallelization::mpi_init(argc, argv);
warpx::initialization::amrex_init(argc, argv);
ablastr::math::anyfft::setup();
}

void warpx::initialization::finalize_external_libraries()
{
ablastr::math::anyfft::cleanup();
amrex::Finalize();
ablastr::parallelization::mpi_finalize();
}
32 changes: 6 additions & 26 deletions Source/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,55 +8,35 @@
*/
#include "WarpX.H"

#include "Initialization/WarpXAMReXInit.H"
#include "Initialization/WarpXInit.H"
#include "Utils/WarpXProfilerWrapper.H"

#include <ablastr/math/fft/AnyFFT.H>
#include <ablastr/parallelization/MPIInitHelpers.H>
#include <ablastr/utils/timer/Timer.H>
#include <ablastr/warn_manager/WarnManager.H>

#include <AMReX_Print.H>


int main(int argc, char* argv[])
{
ablastr::parallelization::mpi_init(argc, argv);

warpx::initialization::amrex_init(argc, argv);

ablastr::math::anyfft::setup();

warpx::initialization::initialize_external_libraries(argc, argv);
{
WARPX_PROFILE_VAR("main()", pmain);

auto timer = ablastr::utils::timer::Timer{};
timer.record_start_time();

auto& warpx = WarpX::GetInstance();

warpx.InitData();

warpx.Evolve();

amrex::Print() <<
ablastr::warn_manager::GetWMInstance().PrintGlobalWarnings("THE END");
const auto is_warpx_verbose = warpx.Verbose();
WarpX::Finalize();

timer.record_stop_time();
if (warpx.Verbose())
{
if (is_warpx_verbose){
amrex::Print() << "Total Time : "
<< timer.get_global_duration() << '\n';
}

WARPX_PROFILE_VAR_STOP(pmain);

WarpX::Finalize();
}

ablastr::math::anyfft::cleanup();

amrex::Finalize();

ablastr::parallelization::mpi_finalize ();
warpx::initialization::finalize_external_libraries();
}

0 comments on commit aee0406

Please sign in to comment.