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

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.
 

Detailed Description

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.

Function Documentation

◆ hdf5_get_active_qid()

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.

Parameters
fHDF5 file identifier
groupgroup string including the "/"s on both sides e.g. /bfield/
qidarray where qid will be stored
Returns
Zero on success

Definition at line 712 of file hdf5_interface.c.

◆ hdf5_interface_read_input()

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.

Parameters
simpointer to simulation offload struct
input_activebitflags for input types to read
B_offload_arraypointer to magnetic field offload array
E_offload_arraypointer to electric field offload array
plasma_offload_arraypointer to plasma data offload array
neutral_offload_arraypointer to neutral data offload array
wall_offload_arraypointer to wall offload array
wall_int_offload_arraypointer to wall integer offload array
boozer_offload_arraypointer to boozer offload array
mhd_offload_arraypointer to mhd offload array
asigma_offload_arraypointer to atomic offload array
nbi_offload_arraypointer to neutral beam injector data offload array
ppointer to marker offload data
n_markerspointer to integer notating how many markers were read
Returns
zero if reading and initialization succeeded

Definition at line 62 of file hdf5_interface.c.

◆ hdf5_interface_init_results()

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.

Parameters
simpointer to simulation offload struct
qidqid of this run
runtype of this run
Returns
Zero if initialization succeeded

Definition at line 374 of file hdf5_interface.c.

◆ hdf5_interface_write_state()

int hdf5_interface_write_state ( char * fn,
char * state,
integer n,
particle_state * p )

Write marker state to HDF5 output.

Parameters
fnHDF5 output filename
statename of the state to be written
nnumber of markers in marker array
parray of markers to be written
Returns
Zero if state was written succesfully

Definition at line 517 of file hdf5_interface.c.

◆ hdf5_interface_write_diagnostics()

int hdf5_interface_write_diagnostics ( sim_offload_data * sim,
real * diag_offload_array,
char * out )

Write diagnostics to HDF5 output.

Parameters
simpointer to simulation offload data
diag_offload_arraydiagnostics offload array
outHDF5 output filename
Returns
Zero if diagnostics were written succesfully

Definition at line 577 of file hdf5_interface.c.

◆ hdf5_generate_qid()

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.

Parameters
qida pointer to 11 chars wide array where generated QID is stored

Definition at line 730 of file hdf5_interface.c.