ASCOT5
|
Stellarator magnetic field with cubic spline interpolation. More...
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <string.h>
#include "../ascot5.h"
#include "../error.h"
#include "../print.h"
#include "../consts.h"
#include "B_STS.h"
#include "../linint/linint.h"
#include "../spline/interp.h"
Go to the source code of this file.
Functions | |
int | B_STS_init (B_STS_data *data, int p_n_r, real p_r_min, real p_r_max, int p_n_phi, real p_phi_min, real p_phi_max, int p_n_z, real p_z_min, real p_z_max, int b_n_r, real b_r_min, real b_r_max, int b_n_phi, real b_phi_min, real b_phi_max, int b_n_z, real b_z_min, real b_z_max, int naxis, real axis_min, real axis_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_STS_free (B_STS_data *data) |
Free allocated resources. | |
void | B_STS_offload (B_STS_data *data) |
Offload data to the accelerator. | |
a5err | B_STS_eval_psi (real *psi, real r, real phi, real z, B_STS_data *Bdata) |
Evaluate poloidal flux psi. | |
a5err | B_STS_eval_psi_dpsi (real psi_dpsi[4], real r, real phi, real z, B_STS_data *Bdata) |
Evaluate poloidal flux psi and its derivatives. | |
a5err | B_STS_eval_rho_drho (real rho_drho[4], real r, real phi, real z, B_STS_data *Bdata) |
Evaluate normalized poloidal flux rho and its derivatives. | |
a5err | B_STS_eval_B (real B[3], real r, real phi, real z, B_STS_data *Bdata) |
Evaluate magnetic field. | |
a5err | B_STS_eval_B_dB (real B_dB[12], real r, real phi, real z, B_STS_data *Bdata) |
Evaluate magnetic field and its derivatives. | |
a5err | B_STS_get_axis_rz (real rz[2], B_STS_data *Bdata, real phi) |
Return magnetic axis Rz-coordinates. | |
Stellarator magnetic field with cubic spline interpolation.
This module represents a magnetic field where data is given in - grid from which it is interpolated with tricubic splines.
The magnetic field is evaluated from magnetic field strength which may not be divergence free. The poloidal magnetic flux is interpolated using tricubic splines as well. and are given in separate grids.
The magnetic axis location for stellarators varies with the angle and is evaluated using linear interpolation.
This module does no extrapolation so if queried value is outside the -grid an error is thrown. The -grid is assumed to be periodic. Periodic boundary conditions are used but it is user's responsibility to provide input whose -grid makes sense (in that it actually represents a periodic field), i.e., . However, do note that in this module is not the "last" grid point but the second last, e.g. if and , then if periodicity is .
Definition in file B_STS.c.
int B_STS_init | ( | B_STS_data * | data, |
int | p_n_r, | ||
real | p_r_min, | ||
real | p_r_max, | ||
int | p_n_phi, | ||
real | p_phi_min, | ||
real | p_phi_max, | ||
int | p_n_z, | ||
real | p_z_min, | ||
real | p_z_max, | ||
int | b_n_r, | ||
real | b_r_min, | ||
real | b_r_max, | ||
int | b_n_phi, | ||
real | b_phi_min, | ||
real | b_phi_max, | ||
int | b_n_z, | ||
real | b_z_min, | ||
real | b_z_max, | ||
int | naxis, | ||
real | axis_min, | ||
real | axis_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.
data | pointer to the data struct |
p_n_r | number of r grid points in psi data |
p_r_min | minimum R coordinate in psi data grid [m] |
p_r_max | maximum R coordinate in psi data grid [m] |
p_n_phi | number of phi grid points in psi data |
p_phi_min | minimum phi coordinate in psi data grid [rad] |
p_phi_max | maximum phi coordinate in psi data grid [rad] |
p_n_z | number of z grid points in psi data |
p_z_min | minimum z coordinate in psi data grid [m] |
p_z_max | maximum z coordinate in psi data grid [m] |
p_n_r | number of r grid points in B data |
b_r_min | minimum R coordinate in B data grid [m] |
b_r_max | maximum R coordinate in B data grid [m] |
b_n_phi | number of phi grid points in B data |
b_phi_min | minimum phi coordinate in B data grid [rad] |
b_phi_max | maximum phi coordinate in B data grid [rad] |
b_n_z | number of z grid points in B data |
b_z_min | minimum z coordinate in B data grid [m] |
b_z_max | maximum z coordinate in B data grid [m] |
naxis | number of phi coordinates in magnetic axis data |
axis_min,inimum | phi grid point in axis data [rad] |
axis_max | maximum phi grid point in axis data [rad] |
axis_r | R coordinates of the magnetic axis [m] |
axis_z | z coordinates of the magnetic axis [m] |
psi0 | poloidal flux at magnetic axis [Vs/m] |
psi1 | poloidal flux at separatrix [Vs/m] |
psi | poloidal flux psi(R_i,phi_j,z_k) = arr[k*p_n_r*p_n_phi + j*p_n_r + i] [Vs/m] |
B_r | Magnetic field R component B_r(R_i,phi_j,z_k) = arr[k*b_n_r*b_n_phi + j*b_n_r + i] [T] |
B_phi | Magnetic field phi component B_phi(R_i,phi_j,z_k) = arr[k*b_n_r*b_n_phi + j*b_n_r + i] [T] |
B_z | Magnetic field z component B_z(R_i,phi_j,z_k) = arr[k*b_n_r*b_n_phi + j*b_n_r + i] [T] |
void B_STS_free | ( | B_STS_data * | data | ) |
void B_STS_offload | ( | B_STS_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_STS_get_axis_rz | ( | real | rz[2], |
B_STS_data * | Bdata, | ||
real | phi ) |