XGC1
|
#include <limits.h>
#include <string>
#include <cassert>
#include "space_settings.hpp"
#include "array_deep_copy.hpp"
#include "access_add.hpp"
#include "simd.hpp"
#include "constants.hpp"
Go to the source code of this file.
Classes | |
struct | is_same_type< T, U > |
struct | is_same_type< T, T > |
Enumerations | |
enum class | Order { Zero , One , Two } |
enum | SpeciesType { ELECTRON = 0 , MAIN_ION = 1 } |
enum | KinType { DriftKin =0 , GyroKin =1 } |
enum class | PhiInterpType { Planes , None } |
enum class | MarkerType { ReducedDeltaF , FullF , TotalF , None } |
enum class | FAnalyticShape { Maxwellian , SlowingDown , None } |
enum class | WeightEvoEq { Direct , PDE , None } |
enum class | MagneticFieldMode { Electromagnetic , Electrostatic } |
enum class | BFieldSymmetry { Tokamak , Stellarator } |
enum class | GeometryType { Toroidal , CylindricalLimit } |
enum class | PullbackMethod { Electrostatic , IdealMHD } |
enum | ParticlePhase { PIR = 0 , PIZ , PIP , PIRHO , PIW1 , PIW2 , PTL_NPHASE } |
enum | ParticleConsts { PIM = 0 , PIW0 , PIF0 , PTL_NCONST } |
Functions | |
int | get_num_cpu_threads () |
bool | is_rank_zero () |
void | exit_XGC (std::string msg) |
KOKKOS_INLINE_FUNCTION void | assert_XGC (bool cond, const char *msg) |
bool | causes_multiplication_overflow (int a, int b) |
bool | causes_addition_overflow (int a, int b) |
template<GeometryType GT> | |
KOKKOS_INLINE_FUNCTION double | geometry_switch (double a, double b) |
template<> | |
KOKKOS_INLINE_FUNCTION double | geometry_switch< GeometryType::Toroidal > (double a, double b) |
template<> | |
KOKKOS_INLINE_FUNCTION double | geometry_switch< GeometryType::CylindricalLimit > (double a, double b) |
template<GeometryType GT> | |
constexpr KOKKOS_INLINE_FUNCTION bool | use_toroidal_terms () |
template<> | |
constexpr KOKKOS_INLINE_FUNCTION bool | use_toroidal_terms< GeometryType::CylindricalLimit > () |
template<> | |
constexpr KOKKOS_INLINE_FUNCTION bool | use_toroidal_terms< GeometryType::Toroidal > () |
KOKKOS_INLINE_FUNCTION int | divide_and_round_up (int a, int b) |
KOKKOS_INLINE_FUNCTION unsigned | positive_modulo (int value, unsigned m) |
long long int | offsets_of_even_distribution (long long int n_obj, long long int n_subsets, long long int i_subset) |
long long int | counts_of_even_distribution (long long int n_obj, long long int n_subsets, long long int i_subset) |
std::string | formatted_int2str (int input, int n_digits) |
Variables | |
constexpr PhiInterpType | PIT_GLOBAL = PhiInterpType::Planes |
constexpr MagneticFieldMode | MFM_GLOBAL = MagneticFieldMode::Electrostatic |
constexpr BFieldSymmetry | BFS_GLOBAL = BFieldSymmetry::Tokamak |
constexpr GeometryType | GEOMETRY = GeometryType::Toroidal |
bool | global_debug_flag |
bool | global_perf_barriers_flag |
|
strong |
|
strong |
|
strong |
enum KinType |
|
strong |
|
strong |
|
strong |
enum ParticleConsts |
enum ParticlePhase |
|
strong |
|
strong |
enum SpeciesType |
|
strong |
KOKKOS_INLINE_FUNCTION void assert_XGC | ( | bool | cond, |
const char * | msg | ||
) |
|
inline |
|
inline |
|
inline |
KOKKOS_INLINE_FUNCTION int divide_and_round_up | ( | int | a, |
int | b | ||
) |
|
inline |
|
inline |
KOKKOS_INLINE_FUNCTION double geometry_switch | ( | double | a, |
double | b | ||
) |
Returns the first input argument if using normal toroidal geometry, and the second input argument if using the cylindrical limit
[in] | a | is the first option |
[in] | b | is the second option |
KOKKOS_INLINE_FUNCTION double geometry_switch< GeometryType::CylindricalLimit > | ( | double | a, |
double | b | ||
) |
KOKKOS_INLINE_FUNCTION double geometry_switch< GeometryType::Toroidal > | ( | double | a, |
double | b | ||
) |
|
inline |
|
inline |
|
inline |
KOKKOS_INLINE_FUNCTION unsigned positive_modulo | ( | int | value, |
unsigned | m | ||
) |
|
constexpr |
Returns true if using normal toroidal geometry, false if using the cylindrical limit
|
constexpr |
|
constexpr |
|
constexpr |
|
constexpr |
|
extern |
|
extern |
|
constexpr |
|
constexpr |