Configuration Files

Simulation parameters are defined in a configuration file. fluvial-particle supports two formats:

  • TOML (recommended) - Standard configuration format, easy to read and edit

  • Python (legacy) - Original format, still fully supported

Programmatic Configuration (Notebooks)

For Jupyter notebooks and scripts, use the programmatic API instead of files:

from fluvial_particle import get_default_config, run_simulation, save_config

# Get default configuration as a nested dictionary
config = get_default_config()

# Modify settings programmatically
config["particles"]["count"] = 200
config["particles"]["start_location"] = [5.0, 0.0, 9.5]
config["simulation"]["time"] = 120.0
config["grid"]["file_2d"] = "./data/mesh_2d.vts"
config["grid"]["file_3d"] = "./data/mesh_3d.vts"

# Option 1: Run directly with dict (no file needed)
results = run_simulation(config, output_dir="./output")

# Option 2: Save to file first
save_config(config, "my_settings.toml")
results = run_simulation("my_settings.toml", output_dir="./output")

# Access results
print(f"Simulated {results.num_particles} particles over {results.num_timesteps} timesteps")
positions = results.get_positions(timestep=-1)  # Final positions
df = results.to_dataframe()  # Full particle trajectories as DataFrame

Python Configuration (Legacy)

Python configuration files are still fully supported for backwards compatibility.

To generate a Python template:

fluvial_particle --init --format python

Example Python configuration:

"""Options file for fluvial particle model."""
from fluvial_particle.Particles import Particles

# Required parameters
file_name_2d = "./data/mesh_2d.vts"
file_name_3d = "./data/mesh_3d.vts"
SimTime = 60.0
dt = 0.25
PrintAtTick = 10.0
Track3D = 1
NumPart = 100
StartLoc = (5.0, 0.0, 9.5)
ParticleType = Particles

# Field mappings
field_map_2d = {
    "bed_elevation": "Elevation",
    "shear_stress": "ShearStress (magnitude)",
    "velocity": "Velocity",
    "water_surface_elevation": "WaterSurfaceElevation",
}
field_map_3d = {"velocity": "Velocity"}

# Optional parameters
beta = (0.067, 0.067, 0.067)
lev = 0.25
min_depth = 0.02
vertbound = 0.01

TOML to Python Key Mapping

TOML Key

Python Key

simulation.time

SimTime

simulation.dt

dt

simulation.print_interval

PrintAtTick

particles.type

ParticleType

particles.count

NumPart

particles.start_location

StartLoc

particles.start_depth_fraction

startfrac

particles.physics.beta

beta

particles.physics.lev

lev

particles.physics.min_depth

min_depth

particles.physics.vertical_bound

vertbound

particles.falling.radius

radius

particles.falling.density

rho

particles.larval.amplitude

amp

particles.larval.period

period

grid.track_3d

Track3D

grid.file_2d

file_name_2d

grid.file_3d

file_name_3d

output.vtp

output_vtp

Shear Velocity (u*) Configuration

fluvial-particle uses shear velocity (u*) to compute turbulent diffusion. Multiple methods are supported, listed in priority order:

  1. Direct u* field - Map ustar in field_map_2d

  2. Bed shear stress - Map shear_stress (most common)

  3. Manning’s n - Field or scalar manning_n

  4. Chézy C - Field or scalar chezy_c

  5. Darcy-Weisbach f - Field or scalar darcy_f

  6. Energy slope - Map energy_slope

  7. TKE - Map tke

To force a specific method, use ustar_method:

[grid.friction]
manning_n = 0.03
ustar_method = "manning"  # Force this method even if others available