subroutine hdf5_init(me,cfg)
class(hdf5_t), intent(inout) :: me
class(input_t), intent(in) :: cfg
integer(hid_t) :: group_id, prop_id, var_id
real(dp) :: data_global(2)
integer :: i, err
me%write_results = cfg%bin('active',.true.)
me%write_results2D = cfg%bin('active2D',.true.)
if(.not.me%write_results) return
print*,'Writing of results ACTIVE'
me%min_save_time = cfg%dbl('minimum_time',0.0_dp)
me%time_btw_2D_writes = cfg%dbl('time_between_2D_writes',3600.0_dp)
! Create hdf file and 'reims' group
call H5Pcreate_f(H5P_FILE_ACCESS_F, prop_id, err)
call H5Pset_libver_bounds_f(prop_id, H5F_LIBVER_LATEST_F, H5F_LIBVER_LATEST_F, err)
call H5Fcreate_f(cfg%str('file'), H5F_ACC_TRUNC_F, me%file_id, err, H5P_DEFAULT_F, prop_id)
call h5pclose_f(prop_id, err)
call h5gcreate_f(me%file_id, 'reims', group_id, err)
call h5ltset_attribute_string_f(me%file_id,'reims','type','reims'//char(0),err)
call tbl_h5_create_dbl(me%time,group_id,'t',0.)
data_global = 0.0_dp
call tbl_h5_create_dbl(me%global,group_id,'global',data_global)
call write_str_arr(group_id,'global_var',['dt','dt2'],var_id)
call attach_scale(var_id, me%global%dset, 1, 'var', 'var')
call attach_scale(me%time%dset, me%global%dset, 2, 't', 't')
call h5dclose_f(var_id,err)
do i = 1, size(me%tbl_dsc)
call hdf5_data_create(me%tables(i), group_id, me%time%dset, &
me%tbl_dsc(i)%name, me%tbl_dsc(i)%vars, me%tbl_dsc(i)%comps)
enddo
call h5gclose_f(group_id, err)
err = H5Fstart_swmr_write(me%file_id)
end subroutine hdf5_init