ASCOT5
|
2D magnetic field with bicubic spline interpolation More...
#include <stdlib.h>
#include <math.h>
#include "../ascot5.h"
#include "../error.h"
#include "../print.h"
#include "B_2DS.h"
#include "../spline/interp.h"
Go to the source code of this file.
Functions | |
int | B_2DS_init (B_2DS_data *data, int n_r, real r_min, real r_max, int n_z, real z_min, real z_max, real axis_r, real axis_z, real psi0, real psi1, real *psi, real *B_r, real *B_phi, real *B_z) |
Initialize magnetic field data. | |
void | B_2DS_free (B_2DS_data *data) |
Free allocated resources. | |
void | B_2DS_offload (B_2DS_data *data) |
Offload data to the accelerator. | |
a5err | B_2DS_eval_psi (real *psi, real r, real phi, real z, B_2DS_data *Bdata) |
Evaluate poloidal flux psi. | |
a5err | B_2DS_eval_psi_dpsi (real psi_dpsi[4], real r, real phi, real z, B_2DS_data *Bdata) |
Evaluate poloidal flux psi and its derivatives. | |
a5err | B_2DS_eval_rho_drho (real rho_drho[4], real r, real phi, real z, B_2DS_data *Bdata) |
Evaluate normalized poloidal flux rho and its derivatives. | |
a5err | B_2DS_eval_B (real B[3], real r, real phi, real z, B_2DS_data *Bdata) |
Evaluate magnetic field. | |
a5err | B_2DS_eval_B_dB (real B_dB[12], real r, real phi, real z, B_2DS_data *Bdata) |
Evaluate magnetic field and its derivatives. | |
a5err | B_2DS_get_axis_rz (real rz[2], B_2DS_data *Bdata) |
Return magnetic axis R-coordinate. | |
2D magnetic field with bicubic spline interpolation
This module represents a magnetic field where data is given in -grid from which it is interpolated with bicubic splines. The field is axisymmetric.
The magnetic field is evaluated from magnetic field strength which may not be divergence free. However, and components are also evaluated from poloidal magnetic flux as
The total field is then a sum of components interpolated directly from and components calculated via interpolated .
This module does no extrapolation so if queried value is outside the -grid an error is thrown.
Definition in file B_2DS.c.
int B_2DS_init | ( | B_2DS_data * | data, |
int | n_r, | ||
real | r_min, | ||
real | r_max, | ||
int | n_z, | ||
real | z_min, | ||
real | z_max, | ||
real | axis_r, | ||
real | axis_z, | ||
real | psi0, | ||
real | psi1, | ||
real * | psi, | ||
real * | B_r, | ||
real * | B_phi, | ||
real * | B_z ) |
Initialize magnetic field data.
n_r | number of r grid points |
r_min | minimum R coordinate in the grid [m] |
r_max | maximum R coordinate in the grid [m] |
n_z | number of z grid points |
z_min | minimum z coordinate in the grid [m] |
z_max | maximum z coordinate in the grid [m] |
axis_r | R coordinate of magnetic axis [m] |
axis_z | z coordinate of magnetic axis [m] |
psi0 | poloidal flux at magnetic axis [Vs/m] |
psi1 | poloidal flux at separatrix [Vs/m] |
psi | poloidal flux psi(R_i,z_j) = arr[j*n_r + i] [Vs/m] |
B_r | Magnetic field R component B_r(R_i,z_j) = arr[j*n_r + i] [T] |
B_phi | Magnetic field phi component B_phi(R_i,z_j) = arr[j*n_r + i] [T] |
B_z | Magnetic field z component B_z(R_i,z_j) = arr[j*n_r + i] [T] |
void B_2DS_free | ( | B_2DS_data * | data | ) |
void B_2DS_offload | ( | B_2DS_data * | data | ) |
Evaluate poloidal flux psi and its derivatives.
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] |
Bdata | pointer to magnetic field data struct |
Evaluate normalized poloidal flux rho and its derivatives.
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 |
Evaluate magnetic field.
B | pointer to array where magnetic field values are stored |
r | R coordinate [m] |
phi | phi coordinate [deg] |
z | z coordinate [m] |
Bdata | pointer to magnetic field data struct |
Evaluate magnetic field and its derivatives.
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] |
Bdata | pointer to magnetic field data struct |
a5err B_2DS_get_axis_rz | ( | real | rz[2], |
B_2DS_data * | Bdata ) |