XGCa
|
#include <Kokkos_Random.hpp>
#include "globals.hpp"
#include "my_mpi.hpp"
#include "basic_physics.hpp"
#include "magnetic_field.hpp"
#include "grid.hpp"
#include "species.hpp"
Typedefs | |
typedef Kokkos::Random_XorShift64_Pool < DeviceType > | pool_type |
Enumerations | |
enum | NormBy { NormBy::Volume = 0, NormBy::Area } |
Functions | |
int | get_n_monte_carlo (double desired_volume_accuracy, double simulation_volume) |
void | grid_tr_vol_and_area (const Grid< DeviceType > &grid) |
void | grid_node_tr_mapping (Grid< DeviceType > &grid) |
void | analytical_volume (const Grid< DeviceType > &grid) |
template<NormBy T> | |
KOKKOS_INLINE_FUNCTION double | r_norm (double rdim, double roffset, double rand) |
template<> | |
KOKKOS_INLINE_FUNCTION double | r_norm< NormBy::Volume > (double rdim, double roffset, double rand) |
template<> | |
KOKKOS_INLINE_FUNCTION double | r_norm< NormBy::Area > (double rdim, double roffset, double rand) |
template<NormBy T_NormBy, typename F > | |
void | monte_carlo_parallel_for (const Grid< DeviceType > &grid, const MagneticField< DeviceType > &magnetic_field, int n_monte_carlo, F func) |
KOKKOS_INLINE_FUNCTION void | monte_carlo_vol00 (const Grid< DeviceType > &grid, const MagneticField< DeviceType > &magnetic_field, const SimdVector2D &x, const Simd< double > &psi, const Kokkos::View< double *, Kokkos::LayoutRight, DeviceType > &vol00) |
KOKKOS_INLINE_FUNCTION void | monte_carlo_diag_1d_vol (const Grid< DeviceType > &grid, const MagneticField< DeviceType > &magnetic_field, const SimdVector2D &x, const Simd< double > &psi, const Kokkos::View< double *, Kokkos::LayoutRight, DeviceType > &diag_1d_vol) |
KOKKOS_INLINE_FUNCTION void | monte_carlo_node_vol_ff_and_nearest (const Grid< DeviceType > &grid, const MagneticField< DeviceType > &magnetic_field, const SimdVector2D &x, const Simd< double > &phi, const Simd< double > &psi, bool calculate_node_vol_nearest, const Kokkos::View< double *[2], Kokkos::LayoutRight, DeviceType > &node_vol_ff, const Kokkos::View< double *, Kokkos::LayoutRight, DeviceType > &node_vol_nearest) |
KOKKOS_INLINE_FUNCTION void | monte_carlo_node_vol_and_nearest (const Grid< DeviceType > &grid, const MagneticField< DeviceType > &magnetic_field, const SimdVector2D &x, const Simd< double > &psi) |
KOKKOS_INLINE_FUNCTION void | monte_carlo_node_area (const Grid< DeviceType > &grid, const MagneticField< DeviceType > &magnetic_field, const SimdVector2D &x, const Simd< double > &psi) |
double | get_volume (const Grid< DeviceType > &grid, const MagneticField< DeviceType > &magnetic_field, int n_monte_carlo, bool calculate_node_vol_nearest) |
void | monte_carlo_volume (const Grid< DeviceType > &grid, const MagneticField< DeviceType > &magnetic_field, int n_monte_carlo) |
void | get_node_volume (Grid< DeviceType > &grid, const MagneticField< DeviceType > &magnetic_field, int n_monte_carlo, bool calculate_node_vol_nearest, bool node_vol_monte) |
typedef Kokkos::Random_XorShift64_Pool<DeviceType> pool_type |
|
strong |
void analytical_volume | ( | const Grid< DeviceType > & | grid | ) |
int get_n_monte_carlo | ( | double | desired_volume_accuracy, |
double | simulation_volume | ||
) |
void get_node_volume | ( | Grid< DeviceType > & | grid, |
const MagneticField< DeviceType > & | magnetic_field, | ||
int | n_monte_carlo, | ||
bool | calculate_node_vol_nearest, | ||
bool | node_vol_monte | ||
) |
Get volume arrays
double get_volume | ( | const Grid< DeviceType > & | grid, |
const MagneticField< DeviceType > & | magnetic_field, | ||
int | n_monte_carlo, | ||
bool | calculate_node_vol_nearest | ||
) |
Get volume arrays
void grid_node_tr_mapping | ( | Grid< DeviceType > & | grid | ) |
void grid_tr_vol_and_area | ( | const Grid< DeviceType > & | grid | ) |
KOKKOS_INLINE_FUNCTION void monte_carlo_diag_1d_vol | ( | const Grid< DeviceType > & | grid, |
const MagneticField< DeviceType > & | magnetic_field, | ||
const SimdVector2D & | x, | ||
const Simd< double > & | psi, | ||
const Kokkos::View< double *, Kokkos::LayoutRight, DeviceType > & | diag_1d_vol | ||
) |
KOKKOS_INLINE_FUNCTION void monte_carlo_node_area | ( | const Grid< DeviceType > & | grid, |
const MagneticField< DeviceType > & | magnetic_field, | ||
const SimdVector2D & | x, | ||
const Simd< double > & | psi | ||
) |
KOKKOS_INLINE_FUNCTION void monte_carlo_node_vol_and_nearest | ( | const Grid< DeviceType > & | grid, |
const MagneticField< DeviceType > & | magnetic_field, | ||
const SimdVector2D & | x, | ||
const Simd< double > & | psi | ||
) |
KOKKOS_INLINE_FUNCTION void monte_carlo_node_vol_ff_and_nearest | ( | const Grid< DeviceType > & | grid, |
const MagneticField< DeviceType > & | magnetic_field, | ||
const SimdVector2D & | x, | ||
const Simd< double > & | phi, | ||
const Simd< double > & | psi, | ||
bool | calculate_node_vol_nearest, | ||
const Kokkos::View< double *[2], Kokkos::LayoutRight, DeviceType > & | node_vol_ff, | ||
const Kokkos::View< double *, Kokkos::LayoutRight, DeviceType > & | node_vol_nearest | ||
) |
void monte_carlo_parallel_for | ( | const Grid< DeviceType > & | grid, |
const MagneticField< DeviceType > & | magnetic_field, | ||
int | n_monte_carlo, | ||
F | func | ||
) |
KOKKOS_INLINE_FUNCTION void monte_carlo_vol00 | ( | const Grid< DeviceType > & | grid, |
const MagneticField< DeviceType > & | magnetic_field, | ||
const SimdVector2D & | x, | ||
const Simd< double > & | psi, | ||
const Kokkos::View< double *, Kokkos::LayoutRight, DeviceType > & | vol00 | ||
) |
void monte_carlo_volume | ( | const Grid< DeviceType > & | grid, |
const MagneticField< DeviceType > & | magnetic_field, | ||
int | n_monte_carlo | ||
) |
Get volume arrays
KOKKOS_INLINE_FUNCTION double r_norm | ( | double | rdim, |
double | roffset, | ||
double | rand | ||
) |
KOKKOS_INLINE_FUNCTION double r_norm< NormBy::Area > | ( | double | rdim, |
double | roffset, | ||
double | rand | ||
) |
KOKKOS_INLINE_FUNCTION double r_norm< NormBy::Volume > | ( | double | rdim, |
double | roffset, | ||
double | rand | ||
) |