Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
9dfd831
Version bump for devel
Jun 2, 2026
95becff
Added a development code-timing helper
Jul 4, 2026
435565d
Added bods2hdf5
Jul 4, 2026
1710889
Change the executable and source file name to hdf5bods
Jul 4, 2026
bea3f85
Added some OpenMP parallelism for a bit more throughput
Jul 4, 2026
89dcf59
Read exp-style hdf5 input files in Component
Jul 4, 2026
264da15
Give the user a hint if no conversion mode is specified
Jul 4, 2026
eac7302
Potential fix for pull request finding
The9Cat Jul 4, 2026
67ffcd7
Potential fix for pull request finding
The9Cat Jul 4, 2026
8d3dc08
Potential fix for pull request finding
The9Cat Jul 4, 2026
8205360
Potential fix for pull request finding
The9Cat Jul 4, 2026
a4442dd
Potential fix for pull request finding
The9Cat Jul 4, 2026
ac77cb6
Potential fix for pull request finding
The9Cat Jul 4, 2026
d19a40a
Potential fix for pull request finding
The9Cat Jul 4, 2026
c54dda6
Potential fix for pull request finding
The9Cat Jul 4, 2026
608b35d
Potential fix for pull request finding
The9Cat Jul 4, 2026
17f9eac
Potential fix for pull request finding
The9Cat Jul 4, 2026
e5e338a
Potential fix for pull request finding
The9Cat Jul 4, 2026
f5a1536
Potential fix for pull request finding
The9Cat Jul 4, 2026
0382300
Potential fix for pull request finding
The9Cat Jul 4, 2026
6fec121
Potential fix for pull request finding
The9Cat Jul 4, 2026
702a031
Updates for automatic datatype detection
Jul 4, 2026
9b98b99
Potential fix for pull request finding
The9Cat Jul 4, 2026
00fd85f
Potential fix for pull request finding
The9Cat Jul 4, 2026
2fd10ed
Potential fix for pull request finding
The9Cat Jul 4, 2026
42e4f25
Remove unused mismatch flag in hdf5bods verification
Copilot Jul 4, 2026
0930ad6
Potential fix for pull request finding
The9Cat Jul 5, 2026
35a1abd
Verify aux fields in hdf5bods roundtrip check
Copilot Jul 5, 2026
2f3d782
Use integer-safe aux-int diff in verify mode
Copilot Jul 5, 2026
a486ae0
White-space changes only for readability
Jul 5, 2026
b8e26d4
Potential fix for pull request finding
The9Cat Jul 5, 2026
e6db8e3
Potential fix for pull request finding
The9Cat Jul 5, 2026
2700ef8
Fix m-field comment to mass
Copilot Jul 5, 2026
35b3785
Added compression filter selection for testing
Jul 5, 2026
ab9ca77
Merge branch 'InitFromHDF5' of github.com:EXP-code/EXP into InitFromHDF5
Jul 5, 2026
06a3a5a
Add optional HDF5 particle index support
Copilot Jul 5, 2026
fac2cbe
Minor change to option documentation only
Jul 5, 2026
b59afd6
Potential fix for pull request finding
The9Cat Jul 5, 2026
50b3076
Potential fix for pull request finding
The9Cat Jul 5, 2026
aa11000
Potential fix for pull request finding
The9Cat Jul 5, 2026
3823cff
Added some Doxygen documentation to the Component header [no ci]
Jul 5, 2026
c1d573d
Merge branch 'InitFromHDF5' of github.com:EXP-code/EXP into InitFromHDF5
Jul 5, 2026
1f9b797
Looks like garbled merged; fix propsed
Jul 5, 2026
3a090f4
Move precision detection into the dataset reader function
Jul 6, 2026
72c66c3
Potential fix for pull request finding
The9Cat Jul 6, 2026
4df6f29
Potential fix for pull request finding
The9Cat Jul 6, 2026
f18ed1f
docs: update Component.H to reflect per-dataset independent precision…
Copilot Jul 6, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.25) # Needed for CUDA, MPI, and CTest features

project(
EXP
VERSION "7.10.0"
VERSION "7.11.0"
HOMEPAGE_URL https://github.com/EXP-code/EXP
LANGUAGES C CXX Fortran)
Comment thread
The9Cat marked this conversation as resolved.

Expand Down
2 changes: 1 addition & 1 deletion doc/exp.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ PROJECT_NAME = EXP
# could be handy for archiving the generated documentation or if some version
# control system is used.

PROJECT_NUMBER = 7.10.0
PROJECT_NUMBER = 7.11.0

# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
Expand Down
2 changes: 1 addition & 1 deletion doc/exp.cfg.breathe
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ PROJECT_NAME = EXP
# could be handy for archiving the generated documentation or if some version
# control system is used.

PROJECT_NUMBER = 7.10.0
PROJECT_NUMBER = 7.11.0

# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
Expand Down
64 changes: 64 additions & 0 deletions include/ScopeTimer.H
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
#pragma once

#include <chrono>
#include <iostream>
#include <string>

class ScopeTimer {
public:
using Clock = std::chrono::steady_clock;

// Define units for output
enum class Unit {
Seconds,
Milliseconds,
Microseconds,
Nanoseconds
};

// Default to Seconds if the user doesn't choose
explicit ScopeTimer(std::string task_name, Unit output_unit = Unit::Seconds)
: name(std::move(task_name)), unit(output_unit), start_time(Clock::now()) {}

// Output on deletion of the object
~ScopeTimer()
{
const auto end_time = Clock::now();
const auto delta = end_time - start_time;

// Convert natively using std::chrono based on user choice
switch (unit) {
case Unit::Seconds: {
std::chrono::duration<double> elapsed = delta;
std::cout << "[" << name << "] completed in " << elapsed.count() << " s\n";
break;
}
case Unit::Milliseconds: {
std::chrono::duration<double, std::milli> elapsed = delta;
std::cout << "[" << name << "] completed in " << elapsed.count() << " ms\n";
break;
}
case Unit::Microseconds: {
std::chrono::duration<double, std::micro> elapsed = delta;
std::cout << "[" << name << "] completed in " << elapsed.count() << " µs\n";
break;
}
case Unit::Nanoseconds: {
std::chrono::duration<double, std::nano> elapsed = delta;
std::cout << "[" << name << "] completed in " << elapsed.count() << " ns\n";
break;
}
default:
std::cerr << "Unknown time unit for ScopeTimer\n";
break;
}
}

ScopeTimer(const ScopeTimer&) = delete;
ScopeTimer& operator=(const ScopeTimer&) = delete;

private:
std::string name;
Unit unit;
std::chrono::time_point<Clock> start_time;
};
43 changes: 43 additions & 0 deletions src/Component.H
Original file line number Diff line number Diff line change
Expand Up @@ -184,6 +184,44 @@ struct loadb_datum
specifying alternative parameters, using an old-style PSP file, or
starting a new job with a previous output from another simulation)
</ol>

<br> <b>Input data format</b> Component now supports reading from
HDF5 files on input. The scheme for HDF5 input files is:
@verbatim
/
├── Attributes
│ ├── num_particles (int)
│ ├── num_aux_ints (int)
│ └── num_aux_floats (int)
└── particles/ (Group)
├── m (Dataset)
├── x, y, z (Datasets)
├── u, v, w (Datasets)
├── index (optional Dataset)
├── aux_int_0, aux_int_1, ... (Datasets)
└── aux_float_0, aux_float_1, ... (Datasets)
@endverbatim

@note
<ol>

<li> The <code>index</code> dataset is optional. If it is not
present, the particles are assigned indices in the order they are read.

<li> The <code>aux_int_*</code> and <code>aux_float_*</code>
datasets are optional. If they are not present, the corresponding
vectors are empty. The number of auxiliary integer and float
datasets is determined by the <code>num_aux_ints</code> and
<code>num_aux_floats</code> attributes, respectively.

<li> The datatype for the <code>m</code>, <code>x</code>,
<code>y</code>, <code>z</code>, <code>u</code>, <code>v</code>,
<code>w</code> and <code>aux_float_*</code> datasets may be float or
double (i.e. float32 or float64). Each dataset's precision is
detected independently, so datasets may have mixed precision within
the same file.

</ol>
*/
class Component
{
Expand All @@ -199,6 +237,8 @@ private:
//! Parallel distribute and particle io
void load_balance(void);
void update_indices(void);
void read_bodies_and_distribute_init(void);
void read_bodies_and_distribute_hdf5(void);
void read_bodies_and_distribute_ascii(void);
void read_bodies_and_distribute_binary_out(istream *);
void read_bodies_and_distribute_binary_spl(istream *);
Expand Down Expand Up @@ -367,6 +407,9 @@ protected:
int H5chunk = 4096;
//@}

//! Detect float precision by inspecting dataset type
size_t detect_precision(const HighFive::DataSet& dataset);

public:

//! Describe the phase space coordinates
Expand Down
Loading