Skip to content

Sailfish-v0.8

Project Overview

A 2D hydrodynamics code for simulating fluid dynamics on cylindrical/cartesian grids. Designed for high-resolution astrophysical simulations with advanced numerical schemes.

Source Code - GitHub


Features

  • Advanced Numerics


    • Piecewise Linear Method with minmod slope limiter
    • HLLE Riemann solver for shock capturing
    • 2nd order accuracy with TVD properties
  • Boundary Conditions


    • Flexible inflow and outflow boundaries
    • Periodic azimuthal conditions
    • Customizable sink regions
  • High Performance


    • GPU acceleration via VAPOR library
    • OpenMP parallelization
    • Optimized for modern hardware
  • Mesh Flexibility


    • Cartesian and polar coordinate systems
    • Rigid mesh rotation capabilities
    • Adaptive radial contraction
  • Astrophysical Models


    • Single, binary, and merger scenarios
    • Viscous disk physics (α-model)
    • Gravitational wave inspiral dynamics
  • Data Output


    • HDF5 format for efficient storage
    • Comprehensive diagnostic outputs
    • Time series and checkpoint data

Getting Started

Quick Setup

Follow these steps to get Sailfish running on your system.

Prerequisites

Requirements

  • GCC version 10 or higher
  • CUDA support (optional, for GPU mode)
  • Python dependencies for visualization

Installation

git clone --recurse-submodules git@github.com:clemson-cal/sailfish-v0.8.git
cd sailfish-v0.8

Create the required configuration files:

project.json
{
    "src": "src",
    "bin": "bin", 
    "build": "build",
    "vapor": "vapor",
    "programs": {
        "sailfish": {
            "deps": ["hdf5"]
        }
    }
}
system.json
{
    "modes": ["dbg", "cpu", "omp", "gpu"],
    "libs": [],
    "omp_flags": "-Xpreprocessor -fopenmp",
    "lomp": "-lgomp",
    "nvcc_ccbin": "c++"
}
# Configure build system
./configure

# Compile (choose your target)
make cpu    # CPU version
make omp    # OpenMP version  
make gpu    # GPU version (requires CUDA)

# Test installation
./bin/sailfish_dbg presets/steady.cfg

Platform Notes

# Install OpenMP
sudo apt install libomp-dev
# Use: "lomp": "-lgomp" 
# Install OpenMP via Homebrew
brew install libomp
# Use: "lomp": "-lomp"

Windows support via WSL2 recommended.


Key Capabilities

Simulation Types

Setup Type Description Use Case
Ring Viscous spreading ring Method validation
Steady Equilibrium disk Long-term evolution
KITP Binary disk interaction Santa-Barbara setup

Performance Metrics

Typical performance on modern hardware:

  • GPU: ~5B zones/second on 5x H100's for a binary simulation with dx = 1e-3