20 return omp_get_max_threads();
39 printf(
"%s",msg.c_str());
52 KOKKOS_INLINE_FUNCTION
void assert_XGC(
bool cond,
const char* msg){
63 if(b==0)
return false;
68 if (a==0 || b==0)
return false;
69 #if defined(__SIZEOF_INT128__)
70 __int128 prod =
static_cast<__int128
>(a) *
static_cast<__int128
>(b);
71 return prod > std::numeric_limits<long long int>::max() || prod < std::numeric_limits<long long int>::lowest();
75 return a > std::numeric_limits<long long int>::max()/b;
77 return b < std::numeric_limits<long long int>::lowest()/a;
81 return a < std::numeric_limits<long long int>::lowest()/b;
83 return a != 0 && b < std::numeric_limits<long long int>::max()/a;
92 if ( ((b > 0) && (a > INT_MAX - b))
93 ||((b < 0) && (a < INT_MIN - b)) ){
191 template<GeometryType GT>
195 KOKKOS_INLINE_FUNCTION
double geometry_switch<GeometryType::Toroidal>(
double a,
double b){
200 KOKKOS_INLINE_FUNCTION
double geometry_switch<GeometryType::CylindricalLimit>(
double a,
double b){
208 template<GeometryType GT>
212 KOKKOS_INLINE_FUNCTION constexpr
bool use_toroidal_terms<GeometryType::CylindricalLimit>(){
217 KOKKOS_INLINE_FUNCTION constexpr
bool use_toroidal_terms<GeometryType::Toroidal>(){
259 int mod = value % (int)m;
276 long long int obj_per_subset = n_obj/n_subsets;
277 long long int remainder = n_obj%n_subsets;
278 if (i_subset<remainder){
280 return i_subset*obj_per_subset;
282 return i_subset*obj_per_subset + remainder;
296 long long int obj_per_subset = n_obj/n_subsets;
297 long long int remainder = n_obj%n_subsets;
298 if (i_subset<remainder){
301 return obj_per_subset;
306 std::string string_no_leading = std::to_string(input);
308 int initial_length = string_no_leading.length();
309 int zeros_to_add = n_digits - std::min(n_digits, initial_length);
312 return std::string(zeros_to_add,
'0') + string_no_leading;
void exit_XGC(std::string msg)
Definition: globals.hpp:38
PullbackMethod
Definition: globals.hpp:221
ParticlePhase
Definition: globals.hpp:228
@ PIW1
1st weight
Definition: globals.hpp:233
@ PIW2
2nd weight
Definition: globals.hpp:234
@ PIP
phi coordinate
Definition: globals.hpp:231
@ PIRHO
gyroradius
Definition: globals.hpp:232
@ PIR
r coordinate
Definition: globals.hpp:229
@ PTL_NPHASE
Definition: globals.hpp:235
@ PIZ
z coordinate
Definition: globals.hpp:230
constexpr MagneticFieldMode MFM_GLOBAL
Definition: globals.hpp:157
GeometryType
Definition: globals.hpp:172
FAnalyticShape
Definition: globals.hpp:139
int get_num_cpu_threads()
Definition: globals.hpp:18
bool causes_multiplication_overflow(int a, int b)
Definition: globals.hpp:61
bool is_rank_zero()
Definition: globals.hpp:28
SpeciesType
Definition: globals.hpp:106
@ ELECTRON
Definition: globals.hpp:107
@ MAIN_ION
Definition: globals.hpp:108
long long int offsets_of_even_distribution(long long int n_obj, long long int n_subsets, long long int i_subset)
Definition: globals.hpp:275
MagneticFieldMode
Definition: globals.hpp:150
KOKKOS_INLINE_FUNCTION void assert_XGC(bool cond, const char *msg)
Definition: globals.hpp:52
BFieldSymmetry
Definition: globals.hpp:160
KOKKOS_INLINE_FUNCTION int divide_and_round_up(int a, int b)
Definition: globals.hpp:249
constexpr KOKKOS_INLINE_FUNCTION bool use_toroidal_terms()
KOKKOS_INLINE_FUNCTION unsigned positive_modulo(int value, unsigned m)
Definition: globals.hpp:258
WeightEvoEq
Definition: globals.hpp:144
bool causes_addition_overflow(int a, int b)
Definition: globals.hpp:91
long long int counts_of_even_distribution(long long int n_obj, long long int n_subsets, long long int i_subset)
Definition: globals.hpp:295
constexpr BFieldSymmetry BFS_GLOBAL
Definition: globals.hpp:167
constexpr PhiInterpType PIT_GLOBAL
Definition: globals.hpp:126
bool global_perf_barriers_flag
Definition: checkpoint.cpp:12
constexpr GeometryType GEOMETRY
Definition: globals.hpp:179
bool global_debug_flag
Definition: checkpoint.cpp:11
KinType
Definition: globals.hpp:111
@ GyroKin
Definition: globals.hpp:113
@ DriftKin
Definition: globals.hpp:112
ParticleConsts
Definition: globals.hpp:238
@ PTL_NCONST
Definition: globals.hpp:245
@ PIF0
F0.
Definition: globals.hpp:241
@ PIW0
W0.
Definition: globals.hpp:240
@ PIM
Magnetic moment mu.
Definition: globals.hpp:239
MarkerType
Definition: globals.hpp:133
PhiInterpType
Definition: globals.hpp:118
KOKKOS_INLINE_FUNCTION double geometry_switch(double a, double b)
std::string formatted_int2str(int input, int n_digits)
Definition: globals.hpp:305
Order
Definition: globals.hpp:100
int SML_COMM_RANK
Definition: my_mpi.cpp:5
MPI_Comm SML_COMM_WORLD
Definition: my_mpi.cpp:4
#define DEVICE_PRINTF(...)
Definition: space_settings.hpp:86
Definition: globals.hpp:316
static constexpr bool val
Definition: globals.hpp:316