This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
This repository contains the comphy-lab fork of Basilisk, a high-performance computational fluid dynamics (CFD) framework:
basilisk-source/: Official source code with the core solvers and functionality (synced from Darcs)basilisk-wiki/: Documentation and wiki content (synced from Darcs)bugs/: Test cases and minimal reproductions for tracking bugs and issues- Both main directories are synchronized daily via GitHub Actions with http://basilisk.fr
# Install dependencies (Debian/Ubuntu)
sudo apt install darcs make gawk gnuplot imagemagick ffmpeg graphviz valgrind
# Set up Basilisk
cd basilisk-source/src
ln -s config.gcc config # or config.clang, config.osx, etc.
make
export BASILISK=$PWD
export PATH=$PATH:$BASILISK- Compile program:
qcc -o program program.c(Basilisk's custom compiler) - Compile with options:
qcc -O2 -Wall -disable-dimensions program.c -o program -lm - Run test:
./runtest test.c(automated test runner with 3-hour timeout) - Clean build:
make -k clean && make - Update from upstream:
darcs pull && make -k clean && make
- Single test:
qcc test.c -o test && ./test - Test with visualization:
./program && bview2D -s program.plt - Memory debugging: Use built-in memory tracing (see README.mtrace)
- Parallel debugging: Built-in MPI support and profiling tools
Choose appropriate config file based on your system:
config.gcc: Standard GCC configurationconfig.clang: Clang compilerconfig.osx: macOS-specific settingsconfig.gcc.32bits: 32-bit systems
Basilisk extends C with domain-specific language elements for solving PDEs on adaptive Cartesian meshes. The framework uses a literate programming approach where documentation and code coexist.
Event System (grid/events.h):
- Schedules code execution at specific times/iterations
- Automatically classifies expressions as initialization, condition, or increment
- Known Issue: Floating-point precision bug for time increments < 1.2e-7 (see
bugs/directory)
Grid Management (grid/):
- Adaptive mesh refinement using quad/octree structures
- Support for Cartesian, axisymmetric, and spherical coordinates
- Built-in parallelization through foreach loops
Solver Architecture:
- Projection Methods: Navier-Stokes solver with pressure projection (
poisson.h) - Interface Tracking: Volume-of-Fluid (VOF) method (
vof.h) - Multiphase Flows: Two-phase implementations with surface tension (
two-phase.h) - Time Integration: Multiple schemes from explicit to implicit (
predictor-corrector.h,runge-kutta.h)
Basilisk adds these first-class constructs to C:
- Scalar/Vector Fields: Physical quantities with automatic memory management
- Foreach Loops: Grid iteration with built-in parallelism
- Stencil Operators: High-level gradient and interpolation operators
- Events: Time/iteration-based code execution scheduling
- Attributes: Field properties and boundary condition definitions
- Interactive 3D: WebGL-based visualization through
bview.c - Output Formats: PPM, GFS, VTK support through
output.h - Animation Tools: Built-in support for creating videos (ppm2mp4, ppm2mpeg)
This fork specifically tracks comphy-lab related issues. When creating test cases:
- Place minimal reproductions in
bugs/directory - Use naming convention:
issue-description.candrunTest_issue-description.sh - Include both working and failing cases for comparison
- Document expected vs actual behavior
- This repository syncs daily with basilisk.fr Darcs repositories
- Maintain compatibility with upstream changes
- Report bugs both here (GitHub Issues) and to Basilisk Google Group
When examining Basilisk simulations, focus on:
- Numerical Stability: CFL conditions, convergence analysis
- Conservation Properties: Mass, momentum, energy conservation
- Boundary Conditions: Proper implementation for complex geometries
- Memory Management: Basilisk's automatic grid adaptation and field management
- Performance: Parallel efficiency and memory usage
Essential Headers:
common.h: Core definitions and initializationrun.h: Simulation setup and event systemnavier-stokes/centered.h: Main flow solvergrid/multigrid.h: Grid and multigrid solverview.h: Visualization capabilities
Solver-Specific Headers:
saint-venant.h: Shallow water equationscompressible.h: Compressible flow dynamicstension.h,curvature.h: Surface tension modelingdiffusion.h: Diffusion solversembed.h: Embedded boundary methods
- C99-compliant compiler (GCC recommended)
- GNU make or compatible
- Darcs for version control (install via Cabal if not in package repos)
- Python Integration: Requires SWIG and python-dev
- Advanced Visualization: gnuplot, imagemagick, ffmpeg
- Fortran Components: gfortran for GOTM, CVMix, PPR modules
- macOS: Use
config.osxand see basilisk-wiki for macOS installation guide - 32-bit Systems: Use
config.gcc.32bits - Ubuntu 24.04: Special installation notes for OpenConnect VPN in Tips.md