This repository provides a reproducible scientific project built using Julia and DrWatson.jl.
It is designed for benchmarking seismic and flow simulations, ensuring consistency across computational environments.
- Project Name:
SeisFlowBench
- Authors: Haoyun Li and Abhinav Gahlot
- Focus Areas:
- Seismic Wave Propagation
- Fluid Flow in Porous Media
- Seismic-Flow Coupling Simulations
- Technologies Used:
To reproduce this project locally, follow these steps:
Download the codebase using Git:
git clone https://github.com/your-repo/SeisFlowBench.git
cd SeisFlowBench
🚨 Note: Raw data files are not included in version control (Git) and may need to be downloaded separately.
Open a Julia REPL and run the following commands:
using Pkg
Pkg.add("DrWatson") # Install globally (needed for `quickactivate`)
Pkg.activate(".") # Activate this project's environment
Pkg.instantiate() # Install all required dependencies
✅ This will install all necessary Julia packages for the project to run correctly.
Many scripts in this repository begin with:
using DrWatson
@quickactivate "SeisFlowBench"
This ensures that:
- The correct project environment is activated.
- Local paths are managed automatically using DrWatson.
After activation, you can run any script or experiment without manually setting paths.
SeisFlowBench/
│── data/ # Processed and simulation data (not included in Git)
│── scripts/ # Main simulation and analysis scripts
│── src/ # Core project modules and functions
│── notebooks/ # Jupyter/Pluto notebooks for interactive analysis
│── Project.toml # Julia package dependencies
│── Manifest.toml # Exact dependency versions for reproducibility
│── README.md # This file
Simulation results are stored in JLD2 format, but you may need them in HDF5 for better compatibility.
To convert all samples into a single HDF5 file, use the function provided in:
📄 scripts/convert_jld2_hdf5.jl
Run the script as follows:
include("scripts/convert_jld2_hdf5.jl")
convert_all_samples_to_hdf5("2D_perm_perturb", 1:10, "all_samples.h5")
✅ This will save all data in one HDF5 file under /data/2D_perm_perturb/all_samples.h5
.
To load and inspect simulation data from HDF5, use the provided function in:
📄 scripts/load_hdf5.jl
Example usage:
include("scripts/load_hdf5.jl")
hdf5_file = datadir("2D_perm_perturb", "all_samples.h5")
data = load_hdf5_data(hdf5_file)
# Accessing a specific variable
S_array_sample_1 = data["sample_1"]["S_array"]
println("Loaded S_array from sample_1: Size = ", size(S_array_sample_1))
✅ This allows easy retrieval of seismic and flow simulation results.
- If any dependency is missing, run
Pkg.instantiate()
again. - For issues, create a GitHub issue or contact the authors.
- This project follows reproducibility best practices using DrWatson.
✅ SeisFlowBench is now ready for seismic and flow simulation benchmarking! 🚀