ASCOT5
|
Header file for B_field.c. More...
#include "offload_acc_omp.h"
#include "ascot5.h"
#include "error.h"
#include "Bfield/B_GS.h"
#include "Bfield/B_2DS.h"
#include "Bfield/B_3DS.h"
#include "Bfield/B_STS.h"
#include "Bfield/B_TC.h"
Go to the source code of this file.
Data Structures | |
struct | B_field_offload_data |
Magnetic field offload data. More... | |
struct | B_field_data |
Magnetic field simulation data. More... | |
Typedefs | |
typedef enum B_field_type | B_field_type |
Magnetic field types. | |
Enumerations | |
enum | B_field_type { B_field_type_GS , B_field_type_2DS , B_field_type_3DS , B_field_type_STS , B_field_type_TC } |
Magnetic field types. More... | |
Functions | |
int | B_field_init_offload (B_field_offload_data *offload_data, real **offload_array) |
Load magnetic field data and prepare parameters. | |
void | B_field_free_offload (B_field_offload_data *offload_data, real **offload_array) |
Free offload array and reset parameters. | |
int | B_field_init (B_field_data *Bdata, B_field_offload_data *offload_data, real *offload_array) |
Initialize magnetic field data struct on target. | |
a5err | B_field_eval_psi (real *psi, real r, real phi, real z, real t, B_field_data *Bdata) |
Evaluate poloidal flux psi. | |
DECLARE_TARGET_END a5err | B_field_eval_psi_dpsi (real psi_dpsi[4], real r, real phi, real z, real t, B_field_data *Bdata) |
Evaluate poloidal flux psi and its derivatives. | |
DECLARE_TARGET_END a5err | B_field_eval_rho (real rho[2], real psi, B_field_data *Bdata) |
Evaluate normalized poloidal flux rho and its psi derivative. | |
DECLARE_TARGET_END a5err | B_field_eval_rho_drho (real rho_drho[4], real r, real phi, real z, B_field_data *Bdata) |
Evaluate normalized poloidal flux rho and its derivatives. | |
DECLARE_TARGET_END a5err | B_field_eval_B (real B[3], real r, real phi, real z, real t, B_field_data *Bdata) |
Evaluate magnetic field. | |
DECLARE_TARGET_END a5err | B_field_eval_B_dB (real B_dB[15], real r, real phi, real z, real t, B_field_data *Bdata) |
Evaluate magnetic field and its derivatives. | |
DECLARE_TARGET_END a5err | B_field_get_axis_rz (real rz[2], B_field_data *Bdata, real phi) |
Return magnetic axis Rz-coordinates. | |
Header file for B_field.c.
Contains a list declaring all B_field_types, and declaration of B_field_offload_data and B_field_data structs.
Definition in file B_field.h.
typedef enum B_field_type B_field_type |
Magnetic field types.
Magnetic field types are used in the magnetic field interface (B_field.c) to direct function calls to correct magnetic field instances. Each magnetic field instance must have a corresponding type.
enum B_field_type |
Magnetic field types.
Magnetic field types are used in the magnetic field interface (B_field.c) to direct function calls to correct magnetic field instances. Each magnetic field instance must have a corresponding type.
int B_field_init_offload | ( | B_field_offload_data * | offload_data, |
real ** | offload_array ) |
Load magnetic field data and prepare parameters.
This function fills the relevant magnetic field offload struct with parameters and allocates and fills the offload array. Sets offload array length in the offload struct.
The offload data has to have a type when this function is called as it should be set when the offload data is constructed from inputs.
This function is host only.
offload_data | pointer to offload data struct |
offload_array | pointer to pointer to offload array |
void B_field_free_offload | ( | B_field_offload_data * | offload_data, |
real ** | offload_array ) |
int B_field_init | ( | B_field_data * | Bdata, |
B_field_offload_data * | offload_data, | ||
real * | offload_array ) |
Initialize magnetic field data struct on target.
This function copies the magnetic field parameters from the offload struct to the struct on target and sets the magnetic field data pointers to correct offsets in the offload array.
Bdata | pointer to data struct on target |
offload_data | pointer to offload data struct |
offload_array | offload array |
Evaluate poloidal flux psi.
This function evaluates the poloidal flux psi at the given coordinates. The psi is exactly as it appears in Grad-Shafranov equation.
This is a SIMD function.
psi | pointer where psi [V*s*m^-1] value will be stored |
r | R coordinate [m] |
phi | phi coordinate [rad] |
z | z coordinate [m] |
t | time coordinate [s] |
Bdata | pointer to magnetic field data struct |
DECLARE_TARGET_END a5err B_field_eval_psi_dpsi | ( | real | psi_dpsi[4], |
real | r, | ||
real | phi, | ||
real | z, | ||
real | t, | ||
B_field_data * | Bdata ) |
Evaluate poloidal flux psi and its derivatives.
This function evaluates the poloidal flux psi and its derivatives at the given coordinates. The psi is exactly as it appears in Grad-Shafranov equation.
The values are stored in the given array as:
This is a SIMD function.
psi_dpsi | pointer for storing psi [V*s*m^-1] and its derivatives |
r | R coordinate [m] |
phi | phi coordinate [rad] |
z | z coordinate [m] |
t | time coordinate [s] |
Bdata | pointer to magnetic field data struct |
DECLARE_TARGET_END a5err B_field_eval_rho | ( | real | rho[2], |
real | psi, | ||
B_field_data * | Bdata ) |
Evaluate normalized poloidal flux rho and its psi derivative.
This function evaluates the normalized poloidal flux rho at the given coordinates. The rho is evaluated from psi as:
where is psi at magnetic axis and is psi at separatrix.
This is a SIMD function.
rho | pointer where rho value will be stored |
psi | poloidal flux from which rho is evaluated |
Bdata | pointer to magnetic field data struct |
DECLARE_TARGET_END a5err B_field_eval_rho_drho | ( | real | rho_drho[4], |
real | r, | ||
real | phi, | ||
real | z, | ||
B_field_data * | Bdata ) |
Evaluate normalized poloidal flux rho and its derivatives.
This function evaluates the normalized poloidal flux rho at the given coordinates. The rho is evaluated from psi as:
where is psi at magnetic axis and is psi at separatrix.
The values are stored in the given array as:
This is a SIMD function.
rho_drho | pointer where rho and its derivatives will be stored |
r | R coordinate [m] |
phi | phi coordinate [rad] |
z | z coordinate [m] |
Bdata | pointer to magnetic field data struct |
DECLARE_TARGET_END a5err B_field_eval_B | ( | real | B[3], |
real | r, | ||
real | phi, | ||
real | z, | ||
real | t, | ||
B_field_data * | Bdata ) |
Evaluate magnetic field.
This function evaluates the magnetic field at the given coordinates.
The values are stored in the given array as:
This is a SIMD function.
B | pointer to array where magnetic field values are stored |
r | R coordinate [m] |
phi | phi coordinate [deg] |
z | z coordinate [m] |
t | time coordinate [s] |
Bdata | pointer to magnetic field data struct |
DECLARE_TARGET_END a5err B_field_eval_B_dB | ( | real | B_dB[15], |
real | r, | ||
real | phi, | ||
real | z, | ||
real | t, | ||
B_field_data * | Bdata ) |
Evaluate magnetic field and its derivatives.
This function evaluates the magnetic field and its derivatives at the given coordinates.
The values are stored in the given array as:
This is a SIMD function.
B_dB | pointer to array where the field and its derivatives are stored |
r | R coordinate [m] |
phi | phi coordinate [deg] |
z | z coordinate [m] |
t | time coordinate [s] |
Bdata | pointer to magnetic field data struct |
DECLARE_TARGET_END a5err B_field_get_axis_rz | ( | real | rz[2], |
B_field_data * | Bdata, | ||
real | phi ) |
Return magnetic axis Rz-coordinates.
Returns magnetic axis Rz-coordinates at given toroidal angle.
rz | pointer where axis R and z [m] values will be stored |
Bdata | pointer to magnetic field data struct |
phi | phi coordinate [deg] |