XGC1
|
#include "timer_macro.hpp"
#include "my_subview.hpp"
#include "grid_deriv.hpp"
#include "smoothing.hpp"
#include "get_potential_grad.hpp"
Classes | |
class | InputPotential< Device, DeviceIn > |
Functions | |
void | get_field_Ah_cv_ff (const Grid< DeviceType > &grid, const DomainDecomposition< DeviceType > &pol_decomp, const GridField< HostType, VarType::Scalar, PhiInterpType::None, TorType::MultiplePlanes, KinType::DriftKin > &Ah_cv_h, const GridField< HostType, VarType::Scalar, PhiInterpType::Planes, TorType::OnePlane, KinType::DriftKin > &Ah_cv_ff) |
template<class DeviceOut , VarType VT, PhiInterpType PIT> | |
void | transpose_and_set_field (const View< double *, CLayout, DeviceType > &scratch, const View< double ****, CLayout, DeviceType > &tmp_field, GridField< DeviceOut, VT, PIT, TorType::OnePlane, KinType::GyroKin > &field) |
template<class DeviceOut , PhiInterpType PIT> | |
void | transpose_and_set_field (const View< double *, CLayout, DeviceType > &scratch, const View< double ***, CLayout, DeviceType > &tmp_field, GridField< DeviceOut, VarType::Scalar, PIT, TorType::OnePlane, KinType::GyroKin > &field) |
template<class DeviceOut , VarType VT, PhiInterpType PIT, TorType TT> | |
void | transpose_and_set_field (const View< double *, CLayout, DeviceType > &scratch, const View< double ***, CLayout, DeviceType > &tmp_field, GridField< DeviceOut, VT, PIT, TT, KinType::DriftKin > &field, int i_plane) |
template<class DeviceOut , PhiInterpType PIT, TorType TT> | |
void | transpose_and_set_field (const View< double *, CLayout, DeviceType > &scratch, const View< double **, CLayout, DeviceType > &tmp_field, GridField< DeviceOut, VarType::Scalar, PIT, TT, KinType::DriftKin > &field, int i_plane) |
template<class DeviceOut , VarType VT, PhiInterpType PIT, TorType TT> | |
void | transpose_and_set_field (const View< double *, CLayout, DeviceType > &scratch, const View< double ****, CLayout, DeviceType > &tmp_field, GridField< DeviceOut, VT, PIT, TT, KinType::DriftKin > &field) |
template<class DeviceOut , PhiInterpType PIT, TorType TT> | |
void | transpose_and_set_field (const View< double *, CLayout, DeviceType > &scratch, const View< double ***, CLayout, DeviceType > &tmp_field, GridField< DeviceOut, VarType::Scalar, PIT, TT, KinType::DriftKin > &field) |
template<class DeviceOut , VarType VT, PhiInterpType PIT, TorType TT> | |
void | transpose_and_set_field (const View< double *, CLayout, DeviceType > &scratch, const View< double ***, CLayout, DeviceType > &tmp_field, GridField< DeviceOut, VT, PIT, TT, KinType::GyroKin > &field, int i_plane) |
template<class DeviceOut , PhiInterpType PIT, TorType TT> | |
void | transpose_and_set_field (const View< double *, CLayout, DeviceType > &scratch, const View< double **, CLayout, DeviceType > &tmp_field, GridField< DeviceOut, VarType::Scalar, PIT, TT, KinType::GyroKin > &field, int i_plane) |
void | get_pot (const View< double *, CLayout, DeviceType > &potential, const Field00< DeviceType > &field00, bool ignore_poloidal_dpot, View< double *, CLayout, DeviceType > full_potential) |
void | get_poloidal_grad (const Grid< DeviceType > &grid, const GradientMatrices< DeviceType > &grad_matrices, const View< double *, CLayout, DeviceType > &potential, const Field00< DeviceType > &field00, bool ignore_poloidal_dpot, View< double *, CLayout, DeviceType > gradient_r, View< double *, CLayout, DeviceType > gradient_z) |
void | transpose_for_gyroavg (const View< double ***, CLayout, DeviceType > &gradient, View< double ****, CLayout, DeviceType > &gradient_rho) |
template<class DeviceIn > | |
void | calculate_potential (bool reuse_right_plane_as_left_plane, int i_plane, const InputPotential< DeviceType, DeviceIn > &input_potential, const Field00< DeviceType > &field00, bool ignore_poloidal_dpot, AlternatingStorage< DeviceType > &potential_alt, View< double **, CLayout, DeviceType > &potential) |
template<class DeviceIn > | |
void | calculate_gradient (bool reuse_right_plane_as_left_plane, int i_plane, const Grid< DeviceType > &grid, const GradientMatrices< DeviceType > &grad_matrices, const GradParXTmp &gptx, const InputPotential< DeviceType, DeviceIn > &input_potential, const Field00< DeviceType > &field00, bool ignore_poloidal_dpot, AlternatingStorage< DeviceType > &gradient_r_alt, AlternatingStorage< DeviceType > &gradient_z_alt, View< double ***, CLayout, DeviceType > &gradient) |
template<class DeviceIn , class DeviceOut , VarType VT, PhiInterpType PIT, TorType TT, KinType KT> | |
void | get_field_grad (const Simulation< DeviceType > &sml, const Grid< DeviceType > &grid, const DomainDecomposition< DeviceType > &pol_decomp, const MagneticField< DeviceType > &magnetic_field, Smoothing &smoothing, GetPotGradFieldArgs< DeviceIn, DeviceOut, VT, PIT, TT, KT > &args, GetPotentialGradTemp< DeviceType, DeviceOut > &tmp) |
void calculate_gradient | ( | bool | reuse_right_plane_as_left_plane, |
int | i_plane, | ||
const Grid< DeviceType > & | grid, | ||
const GradientMatrices< DeviceType > & | grad_matrices, | ||
const GradParXTmp & | gptx, | ||
const InputPotential< DeviceType, DeviceIn > & | input_potential, | ||
const Field00< DeviceType > & | field00, | ||
bool | ignore_poloidal_dpot, | ||
AlternatingStorage< DeviceType > & | gradient_r_alt, | ||
AlternatingStorage< DeviceType > & | gradient_z_alt, | ||
View< double ***, CLayout, DeviceType > & | gradient | ||
) |
void calculate_potential | ( | bool | reuse_right_plane_as_left_plane, |
int | i_plane, | ||
const InputPotential< DeviceType, DeviceIn > & | input_potential, | ||
const Field00< DeviceType > & | field00, | ||
bool | ignore_poloidal_dpot, | ||
AlternatingStorage< DeviceType > & | potential_alt, | ||
View< double **, CLayout, DeviceType > & | potential | ||
) |
void get_field_Ah_cv_ff | ( | const Grid< DeviceType > & | grid, |
const DomainDecomposition< DeviceType > & | pol_decomp, | ||
const GridField< HostType, VarType::Scalar, PhiInterpType::None, TorType::MultiplePlanes, KinType::DriftKin > & | Ah_cv_h, | ||
const GridField< HostType, VarType::Scalar, PhiInterpType::Planes, TorType::OnePlane, KinType::DriftKin > & | Ah_cv_ff | ||
) |
void get_field_grad | ( | const Simulation< DeviceType > & | sml, |
const Grid< DeviceType > & | grid, | ||
const DomainDecomposition< DeviceType > & | pol_decomp, | ||
const MagneticField< DeviceType > & | magnetic_field, | ||
Smoothing & | smoothing, | ||
GetPotGradFieldArgs< DeviceIn, DeviceOut, VT, PIT, TT, KT > & | args, | ||
GetPotentialGradTemp< DeviceType, DeviceOut > & | tmp | ||
) |
Calculates a gyro-averaged potential and its gradients, in field-following coordinates (if XGC1).
[in] | grid | is the grid object |
[in] | magnetic_field | is the magnetic field object |
[in] | input_potential | is the input potential |
[out] | psn_field_rho_ff | is the gyroaveraged potential (field-following if XGC1) |
[out] | psn_gradient_rho_ff | is the gyroaveraged gradient (field-following if XGC1) |
[in] | calculate_E_int | is 1 if calculating E, which has some extra steps compared to the As or Ah calculation |
void get_poloidal_grad | ( | const Grid< DeviceType > & | grid, |
const GradientMatrices< DeviceType > & | grad_matrices, | ||
const View< double *, CLayout, DeviceType > & | potential, | ||
const Field00< DeviceType > & | field00, | ||
bool | ignore_poloidal_dpot, | ||
View< double *, CLayout, DeviceType > | gradient_r, | ||
View< double *, CLayout, DeviceType > | gradient_z | ||
) |
void get_pot | ( | const View< double *, CLayout, DeviceType > & | potential, |
const Field00< DeviceType > & | field00, | ||
bool | ignore_poloidal_dpot, | ||
View< double *, CLayout, DeviceType > | full_potential | ||
) |
void transpose_and_set_field | ( | const View< double *, CLayout, DeviceType > & | scratch, |
const View< double ****, CLayout, DeviceType > & | tmp_field, | ||
GridField< DeviceOut, VT, PIT, TorType::OnePlane, KinType::GyroKin > & | field | ||
) |
void transpose_and_set_field | ( | const View< double *, CLayout, DeviceType > & | scratch, |
const View< double ***, CLayout, DeviceType > & | tmp_field, | ||
GridField< DeviceOut, VarType::Scalar, PIT, TorType::OnePlane, KinType::GyroKin > & | field | ||
) |
void transpose_and_set_field | ( | const View< double *, CLayout, DeviceType > & | scratch, |
const View< double ***, CLayout, DeviceType > & | tmp_field, | ||
GridField< DeviceOut, VT, PIT, TT, KinType::DriftKin > & | field, | ||
int | i_plane | ||
) |
void transpose_and_set_field | ( | const View< double *, CLayout, DeviceType > & | scratch, |
const View< double **, CLayout, DeviceType > & | tmp_field, | ||
GridField< DeviceOut, VarType::Scalar, PIT, TT, KinType::DriftKin > & | field, | ||
int | i_plane | ||
) |
void transpose_and_set_field | ( | const View< double *, CLayout, DeviceType > & | scratch, |
const View< double ****, CLayout, DeviceType > & | tmp_field, | ||
GridField< DeviceOut, VT, PIT, TT, KinType::DriftKin > & | field | ||
) |
void transpose_and_set_field | ( | const View< double *, CLayout, DeviceType > & | scratch, |
const View< double ***, CLayout, DeviceType > & | tmp_field, | ||
GridField< DeviceOut, VarType::Scalar, PIT, TT, KinType::DriftKin > & | field | ||
) |
void transpose_and_set_field | ( | const View< double *, CLayout, DeviceType > & | scratch, |
const View< double ***, CLayout, DeviceType > & | tmp_field, | ||
GridField< DeviceOut, VT, PIT, TT, KinType::GyroKin > & | field, | ||
int | i_plane | ||
) |
void transpose_and_set_field | ( | const View< double *, CLayout, DeviceType > & | scratch, |
const View< double **, CLayout, DeviceType > & | tmp_field, | ||
GridField< DeviceOut, VarType::Scalar, PIT, TT, KinType::GyroKin > & | field, | ||
int | i_plane | ||
) |
void transpose_for_gyroavg | ( | const View< double ***, CLayout, DeviceType > & | gradient, |
View< double ****, CLayout, DeviceType > & | gradient_rho | ||
) |