Basilisk C simulations for drop transport in a single fungal hypha branch with three-phase, non-coalescing viscoelastic modeling.
├── src-local/ # Project-specific Basilisk headers
│ ├── log-conform-elastic.h
│ ├── log-conform-viscoelastic.h
│ ├── reduced-three-phase-nonCoalescing.h
│ ├── three-phase-nonCoalescing-elastic.h
│ └── three-phase-nonCoalescing-viscoelastic.h
├── simulationCases/ # Simulation entry points + case dirs
│ ├── hypha.c
│ ├── hypha-capillary.c
│ ├── Hypha-capillary-length.c
│ ├── Makefile
│ └── runCodesInParallel.sh
├── postProcess/ # Analysis and plotting utilities
│ ├── getData-elastic-nonCoalescence.c
│ ├── getFacet-threePhase.c
│ ├── plot_vcm_vs_time.py
│ ├── plot_hypha_width_vs_time.py
│ └── plot_vcm_vs_Ec_H.py
├── default.params # Base parameters for sweeps
├── sweep.params # Default MPI sweep config
├── sweep-128.params # Default serial-128 sweep config
├── runSweepHamilton.sbatch # MPI sweep runner
├── runSweepHamilton-serial-128.sbatch # Serial compile + parallel launch
├── AGENTS.md # Authoritative project guidance
├── README.md
└── LICENSE
- Basilisk
qcc - C compiler (GCC/Clang)
mpiccand MPI runtime for MPI builds- Python 3 (for plotting scripts and sweep value generation)
OpenMP build:
qcc -Wall -O2 -fopenmp -I$(PWD)/src-local simulationCases/hypha.c -o hypha -lmMPI build:
CC99='mpicc -std=c99' qcc -Wall -O2 -D_MPI=1 -disable-dimensions \
-I$(PWD)/src-local simulationCases/hypha.c -o hyphaMPI -lm./hyphaor with MPI:
mpirun -np 8 ./hyphaMPIThe Hamilton job script performs an Ec_h sweep defined in the selected sweep
config file and writes results to simulationCases/<CaseNo>/.
sbatch runSweepHamilton.sbatchBy default it reads sweep.params. You can pass a different sweep file:
sbatch runSweepHamilton.sbatch my-sweep.paramsFor the serial executable workflow (compile without MPI, launch all cases in parallel), use:
sbatch runSweepHamilton-serial-128.sbatch
sbatch runSweepHamilton-serial-128.sbatch my-sweep-128.paramsdefault.params: base parameter values used by the sweep script.sweep.params: default sweep input forrunSweepHamilton.sbatch(containsCASE_START, optionalCASE_END, andSWEEP_Ec_h=...list).sweep-128.params: default sweep input forrunSweepHamilton-serial-128.sbatch(128Ec_hvalues,CASE_START=1506).
postProcess/ contains extraction and plotting utilities. Typical usage is to
run plotting scripts from inside a case directory containing log and/or
hypha-def-log, for example:
python3 ../postProcess/plot_vcm_vs_time.py
python3 ../postProcess/plot_hypha_width_vs_time.pyFor multi-case analysis (after collecting logs into one directory):
python3 postProcess/plot_vcm_vs_Ec_H.py --log_dir path/to/logs --pattern "log*"simulationCases/hypha.creadsEc_hfrom a parameter interface (param_double(...)), so runtime parameter handling must be available in the configured Basilisk toolchain.- Generated binaries, logs, restart files, local Basilisk checkouts, and
.comphy-basilisk/are intentionally not committed.
GPL-3.0. See LICENSE.