IPPL API Reference
Independent Parallel Particle Layer C++ API
Loading...
Searching...
No Matches
Ippl.h
1//
2// Class Ippl
3// Ippl environment.
4//
5#ifndef IPPL_H
6#define IPPL_H
7
8#include <iostream>
9
10#include "Types/IpplTypes.h"
11
12#include "Utility/Inform.h"
13#include "Utility/ParallelDispatch.h"
14
15#include "Communicate/Communicator.h"
17
18namespace ippl {
19
20 // the parallel communication object
21 // use inlining to avoid multiple definitions
22 inline std::unique_ptr<mpi::Communicator> Comm = 0;
23
24 inline std::unique_ptr<mpi::Environment> Env = 0;
25
26 // Inform object to use to print messages to the console (or even to a
27 // file if requested)
28 // use inlining to avoid multiple definitions
29 inline std::unique_ptr<Inform> Info = 0;
30 inline std::unique_ptr<Inform> Warn = 0;
31 inline std::unique_ptr<Inform> Error = 0;
32
33 void initialize(int& argc, char* argv[], MPI_Comm comm = MPI_COMM_WORLD);
34
35 void finalize();
36
37 void fence();
38
39 void abort(const char* msg = nullptr, int errorcode = -1);
40
41 namespace detail {
42 bool checkOption(const char* arg, const char* lstr, const char* sstr);
43
44 template <typename T, typename = std::enable_if_t<std::is_arithmetic_v<T>>>
45 T getNumericalOption(const char* arg);
46 } // namespace detail
47} // namespace ippl
48
49// FIMXE remove (only for backwards compatibility)
50#include "IpplCore.h"
51
52#endif
Definition Archive.h:20