Skip to content

Commit a9ae15d

Browse files
authored
make simulator an interface - no binary target (#969)
* make simulator an interface - no binary target * torm
1 parent 254aeb4 commit a9ae15d

File tree

4 files changed

+28
-35
lines changed

4 files changed

+28
-35
lines changed

src/phare/phare.cpp

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,9 @@
55
#include "amr/wrappers/hierarchy.hpp"
66
#include "initializer/python_data_provider.hpp"
77

8-
#include "core/logger.hpp"
9-
10-
#include <algorithm>
11-
#include <csignal>
128
#include <atomic>
9+
#include <csignal>
10+
#include <algorithm>
1311

1412
namespace
1513
{
@@ -21,10 +19,26 @@ void signal_handler(int signal)
2119
gSignalStatus = signal;
2220
}
2321

24-
std::unique_ptr<PHARE::initializer::DataProvider> fromCommandLine(int argc, char** argv)
22+
namespace PHARE
2523
{
26-
using dataProvider [[maybe_unused]] = std::unique_ptr<PHARE::initializer::DataProvider>;
2724

25+
std::unique_ptr<PHARE::ISimulator> getSimulator(std::shared_ptr<PHARE::amr::Hierarchy>& hierarchy)
26+
{
27+
PHARE::initializer::PHAREDict const& theDict
28+
= PHARE::initializer::PHAREDictHandler::INSTANCE().dict();
29+
auto dim = theDict["simulation"]["dimension"].template to<int>();
30+
auto interpOrder = theDict["simulation"]["interp_order"].template to<int>();
31+
auto nbRefinedPart = theDict["simulation"]["refined_particle_nbr"].template to<int>();
32+
33+
return core::makeAtRuntime<SimulatorMaker>(dim, interpOrder, nbRefinedPart,
34+
SimulatorMaker{hierarchy});
35+
}
36+
37+
} // namespace PHARE
38+
39+
40+
std::unique_ptr<PHARE::initializer::DataProvider> fromCommandLine(int argc, char** argv)
41+
{
2842
switch (argc)
2943
{
3044
case 1: return nullptr;
@@ -45,10 +59,12 @@ std::unique_ptr<PHARE::initializer::DataProvider> fromCommandLine(int argc, char
4559

4660
int main(int argc, char** argv)
4761
{
48-
if (std::signal(SIGINT, signal_handler) == SIG_ERR) {
62+
if (std::signal(SIGINT, signal_handler) == SIG_ERR)
63+
{
4964
throw std::runtime_error("PHARE Error: Failed to register SIGINT signal handler");
5065
}
51-
if (std::signal(SIGABRT, signal_handler) == SIG_ERR) {
66+
if (std::signal(SIGABRT, signal_handler) == SIG_ERR)
67+
{
5268
throw std::runtime_error("PHARE Error: Failed to register SIGABRT signal handler");
5369
}
5470

src/simulator/CMakeLists.txt

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,13 @@ project(phare_simulator)
33

44
set( SOURCES_INC
55
simulator.hpp
6-
simulator.cpp
76
phare_types.hpp
87
)
98

10-
add_library(${PROJECT_NAME} ${SOURCES_INC} )
11-
target_compile_options(${PROJECT_NAME} PRIVATE ${PHARE_WERROR_FLAGS} -DPHARE_HAS_HIGHFIVE=${PHARE_HAS_HIGHFIVE})
12-
set_property(TARGET ${PROJECT_NAME} PROPERTY INTERPROCEDURAL_OPTIMIZATION ${PHARE_INTERPROCEDURAL_OPTIMIZATION})
13-
target_link_libraries(${PROJECT_NAME} PUBLIC
9+
add_library(${PROJECT_NAME} INTERFACE)
10+
11+
target_link_libraries(${PROJECT_NAME} INTERFACE
1412
phare_initializer
1513
phare_amr # for mpicc
1614
phare_diagnostic
1715
)
18-
set_property(TARGET ${PROJECT_NAME} APPEND_STRING PROPERTY LINK_FLAGS " ${PHARE_LINK_FLAGS}")

src/simulator/simulator.cpp

Lines changed: 0 additions & 17 deletions
This file was deleted.

src/simulator/simulator.hpp

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -379,7 +379,7 @@ void Simulator<_dimension, _interp_order, _nbRefinedPart>::initialize()
379379
else
380380
throw std::runtime_error("Error - Simulator has no integrator");
381381
}
382-
catch (const std::runtime_error& e)
382+
catch (std::runtime_error const& e)
383383
{
384384
std::cerr << "EXCEPTION CAUGHT: " << e.what() << std::endl;
385385
std::rethrow_exception(std::current_exception());
@@ -483,9 +483,6 @@ struct SimulatorMaker
483483
};
484484

485485

486-
std::unique_ptr<PHARE::ISimulator> getSimulator(std::shared_ptr<PHARE::amr::Hierarchy>& hierarchy);
487-
488-
489486
template<std::size_t dim, std::size_t interp, size_t nbRefinedPart>
490487
std::unique_ptr<Simulator<dim, interp, nbRefinedPart>>
491488
makeSimulator(std::shared_ptr<amr::Hierarchy> const& hierarchy)

0 commit comments

Comments
 (0)