ASCOT5
|
Electric field interface. More...
#include <stdio.h>
#include "ascot5.h"
#include "error.h"
#include "print.h"
#include "E_field.h"
#include "B_field.h"
#include "Efield/E_TC.h"
#include "Efield/E_1DS.h"
Go to the source code of this file.
Functions | |
void | E_field_free (E_field_data *data) |
Free allocated resources. | |
void | E_field_offload (E_field_data *data) |
Offload data to the accelerator. | |
a5err | E_field_eval_E (real E[3], real r, real phi, real z, real t, E_field_data *Edata, B_field_data *Bdata) |
Evaluate electric field. | |
Electric field interface.
This is an interface through which electric field data is initialized and accessed. Reading e.g. from disk is done elsewhere.
To add a new electric field instance, make sure these functions are implemented and called from this interface, and that E_field.h contains enum type for the new instance.
The interface checks which instance given data corresponds to from E_field_offload_data.type and E_field_data.type from the struct that is given as an argument, and calls the relevant function for that instance.
Definition in file E_field.c.
void E_field_free | ( | E_field_data * | data | ) |
void E_field_offload | ( | E_field_data * | data | ) |
a5err E_field_eval_E | ( | real | E[3], |
real | r, | ||
real | phi, | ||
real | z, | ||
real | t, | ||
E_field_data * | Edata, | ||
B_field_data * | Bdata ) |
Evaluate electric field.
This function evaluates the electric field at the given coordinates. Note that magnetic field data is also required in case electric field is e.g. a flux quantity.
The values are stored in the given array as:
This is a SIMD function.
E | pointer to array where electric field values are stored |
r | R coordinate [m] |
phi | phi coordinate [deg] |
z | z coordinate [m] |
t | time coordinate [s] |
Edata | pointer to electric field data struct |
Bdata | pointer to magnetic field data struct |