ASCOT5
|
HDF5 operations are accessed through here. More...
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <hdf5.h>
#include <hdf5_hl.h>
#include "ascot5.h"
#include "simulate.h"
#include "print.h"
#include "gitver.h"
#include "compiler_flags.h"
#include "hdf5_interface.h"
#include "hdf5io/hdf5_helpers.h"
#include "hdf5io/hdf5_options.h"
#include "hdf5io/hdf5_bfield.h"
#include "hdf5io/hdf5_plasma.h"
#include "hdf5io/hdf5_neutral.h"
#include "hdf5io/hdf5_efield.h"
#include "hdf5io/hdf5_wall.h"
#include "hdf5io/hdf5_boozer.h"
#include "hdf5io/hdf5_mhd.h"
#include "hdf5io/hdf5_marker.h"
#include "hdf5io/hdf5_state.h"
#include "hdf5io/hdf5_dist.h"
#include "hdf5io/hdf5_orbit.h"
#include "hdf5io/hdf5_transcoef.h"
#include "hdf5io/hdf5_asigma.h"
#include "hdf5io/hdf5_nbi.h"
Go to the source code of this file.
Functions | |
int | hdf5_get_active_qid (hid_t f, const char *group, char qid[11]) |
Fetch active qid within the given group. | |
int | hdf5_interface_read_input (sim_offload_data *sim, int input_active, real **B_offload_array, real **E_offload_array, real **plasma_offload_array, real **neutral_offload_array, real **wall_offload_array, int **wall_int_offload_array, real **boozer_offload_array, real **mhd_offload_array, real **asigma_offload_array, real **nbi_offload_array, input_particle **p, int *n_markers) |
Read and initialize input data. | |
int | hdf5_interface_init_results (sim_offload_data *sim, char *qid, char *run) |
Initialize run group. | |
int | hdf5_interface_write_state (char *fn, char *state, integer n, particle_state *p) |
Write marker state to HDF5 output. | |
int | hdf5_interface_write_diagnostics (sim_offload_data *sim, real *diag_offload_array, char *out) |
Write diagnostics to HDF5 output. | |
void | hdf5_generate_qid (char *qid) |
Generate an identification number for a run. | |
HDF5 operations are accessed through here.
This module handles IO operations to HDF5 file. Accessing HDF5 files from the main program should be done using this module.
Definition in file hdf5_interface.c.
int hdf5_get_active_qid | ( | hid_t | f, |
const char * | group, | ||
char | qid[11] ) |
Fetch active qid within the given group.
Each input group (/bfield/, /options/, etc.) has qid string indicating which of the subgroups is active, i.e., meant to be used within this simulation.
This function fetches the active qid assuming the file is opened and closed outside of this function.
f | HDF5 file identifier |
group | group string including the "/"s on both sides e.g. /bfield/ |
qid | array where qid will be stored |
Definition at line 712 of file hdf5_interface.c.
int hdf5_interface_read_input | ( | sim_offload_data * | sim, |
int | input_active, | ||
real ** | B_offload_array, | ||
real ** | E_offload_array, | ||
real ** | plasma_offload_array, | ||
real ** | neutral_offload_array, | ||
real ** | wall_offload_array, | ||
int ** | wall_int_offload_array, | ||
real ** | boozer_offload_array, | ||
real ** | mhd_offload_array, | ||
real ** | asigma_offload_array, | ||
real ** | nbi_offload_array, | ||
input_particle ** | p, | ||
int * | n_markers ) |
Read and initialize input data.
This function reads input from HDF5 file, initializes it, and allocates offload arrays and returns the pointers to them.
sim | pointer to simulation offload struct |
input_active | bitflags for input types to read |
B_offload_array | pointer to magnetic field offload array |
E_offload_array | pointer to electric field offload array |
plasma_offload_array | pointer to plasma data offload array |
neutral_offload_array | pointer to neutral data offload array |
wall_offload_array | pointer to wall offload array |
wall_int_offload_array | pointer to wall integer offload array |
boozer_offload_array | pointer to boozer offload array |
mhd_offload_array | pointer to mhd offload array |
asigma_offload_array | pointer to atomic offload array |
nbi_offload_array | pointer to neutral beam injector data offload array |
p | pointer to marker offload data |
n_markers | pointer to integer notating how many markers were read |
Definition at line 62 of file hdf5_interface.c.
int hdf5_interface_init_results | ( | sim_offload_data * | sim, |
char * | qid, | ||
char * | run ) |
Initialize run group.
This functions creates results group (if one does not already exist) and creates run group corresponding to this run. Run group is named as /results/<run>_XXXXXXXXXX/ where X's are the qid of current run and <run> is the type of the run: "run" for ascot5_main and "bbnbi" for bbnbi5.
The group is initialized by writing qids of all used inputs as string attributes in the run group. Also the date and empty "details" fields are written.
sim | pointer to simulation offload struct |
qid | qid of this run |
run | type of this run |
Definition at line 374 of file hdf5_interface.c.
int hdf5_interface_write_state | ( | char * | fn, |
char * | state, | ||
integer | n, | ||
particle_state * | p ) |
Write marker state to HDF5 output.
fn | HDF5 output filename |
state | name of the state to be written |
n | number of markers in marker array |
p | array of markers to be written |
Definition at line 517 of file hdf5_interface.c.
int hdf5_interface_write_diagnostics | ( | sim_offload_data * | sim, |
real * | diag_offload_array, | ||
char * | out ) |
Write diagnostics to HDF5 output.
sim | pointer to simulation offload data |
diag_offload_array | diagnostics offload array |
out | HDF5 output filename |
Definition at line 577 of file hdf5_interface.c.
void hdf5_generate_qid | ( | char * | qid | ) |
Generate an identification number for a run.
The identification number (QID) is a 32 bit unsigned integer represented in a string format, i.e., by ten characters. QID is a random integer between 0 and 4 294 967 295, and it is padded with leading zeroes in string representation.
qid | a pointer to 11 chars wide array where generated QID is stored |
Definition at line 730 of file hdf5_interface.c.