ASCOT5
Loading...
Searching...
No Matches
Functions
mhd_stat.c File Reference

MHD module for stationary amplitudes (eigenmodes). More...

#include <stdlib.h>
#include "../ascot5.h"
#include "../print.h"
#include "../error.h"
#include "../boozer.h"
#include "../spline/interp.h"
#include "../B_field.h"
#include "../math.h"
#include "../mhd.h"
#include "mhd_stat.h"

Go to the source code of this file.

Functions

int mhd_stat_init_offload (mhd_stat_offload_data *offload_data, real **offload_array)
 Load MHD data and prepare parameters for offload.
 
void mhd_stat_free_offload (mhd_stat_offload_data *offload_data, real **offload_array)
 Free offload array.
 
void mhd_stat_init (mhd_stat_data *mhddata, mhd_stat_offload_data *offload_data, real *offload_array)
 Initialize MHD data struct on target.
 
a5err mhd_stat_eval (real mhd_dmhd[10], real r, real phi, real z, real t, int includemode, boozer_data *boozerdata, mhd_stat_data *mhddata, B_field_data *Bdata)
 Evaluate the needed quantities from MHD mode for orbit following.
 
a5err mhd_stat_perturbations (real pert_field[7], real r, real phi, real z, real t, int pertonly, int includemode, boozer_data *boozerdata, mhd_stat_data *mhddata, B_field_data *Bdata)
 Evaluate perturbed fields Btilde, Etilde and potential Phi explicitly.
 

Detailed Description

MHD module for stationary amplitudes (eigenmodes).

Definition in file mhd_stat.c.

Function Documentation

◆ mhd_stat_init_offload()

int mhd_stat_init_offload ( mhd_stat_offload_data * offload_data,
real ** offload_array )

Load MHD data and prepare parameters for offload.

This function fills the MHD offload struct with parameters and allocates and fills the offload array. Sets offload array length in the offload struct.

It is assumed that the offload_data struct is completely filled before calling this function (except for the offload_array_length and rhogrid). Furthermore, offload array should contain following data:

  • offload_array[j*nrho + i] : alpha(mode_j, rho_i).
  • offload_array[n_modes*nrho + j*nrho + i] : phi(mode_j, rho_i).

1D splines are constructed here and stored to offload array which is reallocated.

Parameters
offload_datapointer to offload data struct
offload_arraypointer to pointer to offload array
Returns
zero if initialization succeeded.

Definition at line 37 of file mhd_stat.c.

◆ mhd_stat_free_offload()

void mhd_stat_free_offload ( mhd_stat_offload_data * offload_data,
real ** offload_array )

Free offload array.

Parameters
offload_datapointer to offload data struct
offload_arraypointer to pointer to offload array

Definition at line 100 of file mhd_stat.c.

◆ mhd_stat_init()

void mhd_stat_init ( mhd_stat_data * mhddata,
mhd_stat_offload_data * offload_data,
real * offload_array )

Initialize MHD data struct on target.

Parameters
mhddatapointer to data struct on target
offload_datapointer to offload data struct
offload_arraypointer to offload array

Definition at line 112 of file mhd_stat.c.

◆ mhd_stat_eval()

a5err mhd_stat_eval ( real mhd_dmhd[10],
real r,
real phi,
real z,
real t,
int includemode,
boozer_data * boozerdata,
mhd_stat_data * mhddata,
B_field_data * Bdata )

Evaluate the needed quantities from MHD mode for orbit following.

The quantities to be evaluated are alpha, phi, grad alpha, grad phi, partial t alpha, partial t phi

The values are stored in the given array as:

  • mhd_dmhd[0] = alpha
  • mhd_dmhd[1] = dalpha/dt
  • mhd_dmhd[2] = grad alpha, r component
  • mhd_dmhd[3] = grad alpha, phi component
  • mhd_dmhd[4] = grad alpha, z component
  • mhd_dmhd[5] = phi
  • mhd_dmhd[6] = dphi/dt
  • mhd_dmhd[7] = grad phi, r component
  • mhd_dmhd[8] = grad phi, phi component
  • mhd_dmhd[9] = grad phi, z component
Parameters
mhd_dmhd
rR coordinate [m]
phiphi coordinate [rad]
zz coordinate [m]
ttime coordinate [s]
includemodemode number to include or MHD_INCLUDE_ALL
boozerdatapointer to boozer data
mhddatapointer to mhd data
Bdatapointer to magnetic field data
Returns
Non-zero a5err value if evaluation failed, zero otherwise

Definition at line 174 of file mhd_stat.c.

◆ mhd_stat_perturbations()

a5err mhd_stat_perturbations ( real pert_field[7],
real r,
real phi,
real z,
real t,
int pertonly,
int includemode,
boozer_data * boozerdata,
mhd_stat_data * mhddata,
B_field_data * Bdata )

Evaluate perturbed fields Btilde, Etilde and potential Phi explicitly.

The values are stored in the given array as

  • pert_field[0] = BtildeR
  • pert_field[1] = BtildePhi
  • pert_field[2] = BtildeZ
  • pert_field[3] = EtildeR
  • pert_field[4] = EtildePhi
  • pert_field[5] = EtildeZ
  • pert_field[6] = Phi

Only the perturbation values for the magnetic field are returned if pertonly=1, otherwise, the total perturbed field is returned. This is done to avoid double evaluation of the magnetic field e.g. in field line tracing. For electric field only the perturbation component is returned always.

Parameters
pert_fieldperturbation field components
rR coordinate [m]
phiphi coordinate [rad]
zz coordinate [m]
ttime coordinate [s]
pertonlyflag whether to return the whole field or only perturbation
includemodemode number to include or MHD_INCLUDE_ALL
boozerdatapointer to boozer data
mhddatapointer to mhd data
Bdatapointer to magnetic field data
Returns
Non-zero a5err value if evaluation failed, zero otherwise

Definition at line 299 of file mhd_stat.c.