|
PICurv 0.1.0
A Parallel Particle-In-Cell Solver for Curvilinear LES
|
This guide covers dependency setup, PETSc configuration, and binary build verification for PICurv.
Install these first:
gcc or clang)mpich or openmpi)DMSwarm supportFrom the PICurv repo root:
If PETSc is not installed yet, let the script build it:
The script installs system and Python dependencies, verifies PETSc/DMSwarm visibility, then builds:
bin/simulator (compiled C solver)bin/postprocessor (compiled C post-processor)bin/picurv (launcher for scripts/picurv, the Python conductor)By default, bootstrap creates .picurv-venv/ under the repo and installs the Python-side CLI dependencies there. PETSc, MPI, compilers, and scheduler tools remain provided by your loaded system or cluster modules. Bootstrap also writes .picurv-python-env, which records the seed Python runtime library path needed to launch the managed venv after you switch to a different module stack.
On an existing HPC cluster where modules already provide compilers, MPI, and PETSc, skip OS package installation:
Useful variants:
Use --no-venv when your site requires Python packages to come from modules or a centrally managed environment. If the only visible interpreter is Python 3.6, load a newer Python module before the default bootstrap path; otherwise use --no-venv and site-approved package versions.
Debian/Ubuntu:
RHEL/CentOS/Fedora:
Optional (study plot generation):
Recommended source install:
Debug build example:
Optimized build example:
Official references:
Add to your shell profile (~/.bashrc or equivalent):
The etc/picurv.sh script sets PICURV_DIR, exports PICURV_PYTHON when a managed venv or bootstrap-selected Python is available, adds bin/ to your PATH for compiled executables, and also exposes scripts/ as a fallback so picurv still resolves if bin/picurv is temporarily absent before a rebuild. It is idempotent and safe to source multiple times.
If you want bootstrap to add this setup to ~/.bashrc, pass --install-shell-hook. The hook is written as a managed block, so rerunning the installer updates it instead of appending duplicate source lines. Use --shell-rc <path> to target another shell startup file.
Reload and verify:
Verify PETSc has DMSwarm headers:
Expected binaries:
bin/simulator (compiled C solver)bin/postprocessor (compiled C post-processor)bin/picurv (launcher → scripts/picurv)Useful variants:
After source etc/picurv.sh, use picurv directly from any directory. ./scripts/picurv build writes logs/build.log in the source repo. If you are auditing compiler warnings from a direct Make invocation, use make audit-build to generate both logs/build.log and logs/build.warnings.log.
Recommended sequence after a successful build:
make doctormake smoke (stronger executable-level sanity check)make check (full local validation sweep)make check-full (comprehensive MPI-inclusive validation sweep)What these prove:
make doctor proves the local PETSc installation can build and run a minimal PETSc-backed binary.make smoke proves the compiled PICurv executables still launch.make check runs Python regressions plus PETSc-backed validation.make check-full additionally validates dedicated MPI unit coverage, fixed-size multi-rank smoke, and rank-matrix smoke in one pass.What make doctor does not prove:
PETSC_DIR unset or pointing at the wrong PETSc installation; PETSC_ARCH is only required for old-style in-tree PETSc builds.--python-bin, or use --no-venv).PYTHONPATH; prefer the managed venv launcher from bootstrap for normal CLI use.libpython; rerun bootstrap after pulling current source so .picurv-python-env records the seed Python library path.bin/picurv is still a symlink; rerun make -B conductor after pulling current source.cannot find -lX11 on Linux; install libx11-dev).clean-project).For runtime-level failures after successful build, see Common Fatal Errors and Fixes.
For the full testing model after installation, see Testing and Validation Guide.
This page describes Installation Guide within the PICurv workflow. For CFD users, the most reliable reading strategy is to map the page content to a concrete run decision: what is configured, what runtime stage it influences, and which diagnostics should confirm expected behavior.
Treat this page as both a conceptual reference and a runbook. If you are debugging, pair the method/procedure described here with monitor output, generated runtime artifacts under runs/<run_id>/config, and the associated solver/post logs so numerical intent and implementation behavior stay aligned.