ASCOT5
Loading...
Searching...
No Matches
Macros | Functions
plasma_1DS.c File Reference

1D spline plasma evaluation functions More...

#include <stdlib.h>
#include <math.h>
#include <float.h>
#include "../ascot5.h"
#include "../print.h"
#include "../error.h"
#include "../consts.h"
#include "../spline/interp.h"
#include "plasma_1DS.h"

Go to the source code of this file.

Macros

#define PLASMA_1DS_NONEG   1
 Flag to determine method to prevent negative values in interpolation.
 
#define PLASMA_1DS_LOG   1
 
#define PLASMA_1DS_SQRT   2
 

Functions

int plasma_1DS_init_offload (plasma_1DS_offload_data *offload_data, real **offload_array)
 Initialize 1DS plasma data and check inputs.
 
void plasma_1DS_free_offload (plasma_1DS_offload_data *offload_data, real **offload_array)
 Free offload array and reset parameters.
 
void plasma_1DS_init (plasma_1DS_data *plasma_data, plasma_1DS_offload_data *offload_data, real *offload_array)
 Initialize magnetic field data struct on target.
 
a5err plasma_1DS_eval_temp (real *temp, real rho, int species, plasma_1DS_data *plasma_data)
 Evaluate plasma temperature.
 
a5err plasma_1DS_eval_dens (real *dens, real rho, int species, plasma_1DS_data *plasma_data)
 Evaluate plasma density.
 
a5err plasma_1DS_eval_densandtemp (real *dens, real *temp, real rho, plasma_1DS_data *plasma_data)
 Evaluate plasma density and temperature for all species.
 

Detailed Description

1D spline plasma evaluation functions

Definition in file plasma_1DS.c.

Macro Definition Documentation

◆ PLASMA_1DS_NONEG

#define PLASMA_1DS_NONEG   1

Flag to determine method to prevent negative values in interpolation.

It is possible that interpolating function f(x) with splines yield negative values which would be unphysical if f is density or temperature. To prevent this, one can either interpolate sqrt(f(x)) or log(f(x)) instead because inverse of these functions are always positive.

Set this parameter to

  • 0 : Do nothing
  • 1 : Take logarithm before interpolating
  • 2 : Take square root before interpolating

Definition at line 28 of file plasma_1DS.c.

◆ PLASMA_1DS_LOG

#define PLASMA_1DS_LOG   1

Logarithm flag

Definition at line 31 of file plasma_1DS.c.

◆ PLASMA_1DS_SQRT

#define PLASMA_1DS_SQRT   2

Square root flag

Definition at line 34 of file plasma_1DS.c.

Function Documentation

◆ plasma_1DS_init_offload()

int plasma_1DS_init_offload ( plasma_1DS_offload_data * offload_data,
real ** offload_array )

Initialize 1DS plasma data and check inputs.

Before calling this function, the offload struct is expected to be fully initialized.

The offload array is expected to hold plasma data as &(*offload_array)[n_rho*0] = electron temperature &(*offload_array)[n_rho*1] = ion temperature &(*offload_array)[n_rho*2] = electron density &(*offload_array)[n_rho*3] = ion density

This function initializes splines to plasma profiles and prints some values as sanity checks.

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

Definition at line 56 of file plasma_1DS.c.

◆ plasma_1DS_free_offload()

void plasma_1DS_free_offload ( plasma_1DS_offload_data * offload_data,
real ** offload_array )

Free offload array and reset parameters.

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

Definition at line 174 of file plasma_1DS.c.

◆ plasma_1DS_init()

void plasma_1DS_init ( plasma_1DS_data * plasma_data,
plasma_1DS_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 plasma data pointers to correct offsets in the offload array.

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

Definition at line 191 of file plasma_1DS.c.

◆ plasma_1DS_eval_temp()

a5err plasma_1DS_eval_temp ( real * temp,
real rho,
int species,
plasma_1DS_data * plasma_data )

Evaluate plasma temperature.

Parameters
temptemperature value will be stored in temp[0]
rhoradial coordinate
speciesindex of plasma species
plasma_datapointer to plasma data struct
Returns
zero if evaluation succeeded

Definition at line 234 of file plasma_1DS.c.

◆ plasma_1DS_eval_dens()

a5err plasma_1DS_eval_dens ( real * dens,
real rho,
int species,
plasma_1DS_data * plasma_data )

Evaluate plasma density.

Parameters
densdensity value will be stored in dens[0]
rhoradial coordinate
speciesindex of plasma species
plasma_datapointer to plasma data struct
Returns
zero if evaluation succeeded

Definition at line 265 of file plasma_1DS.c.

◆ plasma_1DS_eval_densandtemp()

a5err plasma_1DS_eval_densandtemp ( real * dens,
real * temp,
real rho,
plasma_1DS_data * plasma_data )

Evaluate plasma density and temperature for all species.

This function evaluates the density and temperature of all plasma species at the given radial coordinate using spline interpolation.

Parameters
denspointer to where interpolated densities [m^-3] are stored
temppointer to where interpolated temperatures [J] are stored
rhoradial coordinate
plasma_datapointer to plasma data struct
Returns
zero if evaluation succeeded

Definition at line 300 of file plasma_1DS.c.