pflotran-run-workflow

Design, submit, and score PFLOTRAN calibration ensembles against mass-balance output columns.

Updated Aug 28, 2026
One-click install
npx skills add https://github.com/jingtao-lbl/A2MC --skill pflotran-run-workflow-jingtao-lbl
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: pflotran-run-workflow
Source: https://github.com/jingtao-lbl/A2MC/tree/main/.claude/skills/pflotran-run-workflow
Command: npx skills add https://github.com/jingtao-lbl/A2MC --skill pflotran-run-workflow-jingtao-lbl

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Running PFLOTRAN calibration experiments fails in non-obvious ways: the parameter file is the input deck itself, case assembly has a counterintuitive calling order, observation windows carry an 806-hour offset, and aggregate scores can hide per-species inversions. This Skill encodes the correct Phase-0/Phase-5 procedure and the traps that have already cost results. ## Core Features & Use Cases - Deck-Based Parameter Handling: Perturbs PFLOTRAN input deck cards addressed by block path, with rules for source-vs-doc naming conflicts, non-writable cards, and provisional bounds. - Case Assembly and Submission: Writes perturbed decks, stages static files (mesh, restart, database) via create_case, validates ensembles, and submits through SLURM with dry-run detection. - Scoring Against Mass-Balance Outputs: Parses *-mas.dat columns, applies the 806-hour observation offset correctly, and reports per-species scores beside aggregates. - Use Case: You need to run a 128-member PFLOTRAN ensemble probing rate constants, then score each case against outflow concentration targets without double-applying the time offset. ## Quick Start Ask the agent to set up and submit a PFLOTRAN probe ensemble for your case and score the results against the *-mas.dat observation targets.

Frequently Asked Questions about pflotran-run-workflow

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I run a PFLOTRAN ensemble for parameter calibration?▼

Write perturbed input decks with write_parameter_file at each case's final location, then call create_case to stage static files (mesh, restart, database) around them. Validate with validate_adapter_ensemble.py --expect-baseline, then submit via submit_ensemble which sbatches each case's submit.sh.

How do I score PFLOTRAN output against observations?▼

Parse the *-mas.dat mass-balance columns and score through the target's own reduce function such as outflow_concentration or outflow_flux. Apply the 806-hour observation offset (measured hour 0 is model hour 806), and report per-species results beside any aggregate score.

Why does my PFLOTRAN observation window contain no data?▼

The observation window carries an 806-hour offset: measured hour 0 corresponds to model hour 806. A window written as [0, 768] in model time contains zero observations and only spin-up. Check whether targets.yaml already applies the offset to avoid applying it twice.

Can I calibrate the PFLOTRAN thermodynamic database file?▼

No. The database file (e.g., savannah_river.dat) is a fixed input, not a calibrated surface. write_parameter_file raises NotImplementedError for surface="database", and the parameter list's EXCLUDED section explicitly designates the database as fixed input.

Why did my PFLOTRAN dry run look like a real submission?▼

submit_ensemble returns synthetic DRYRUN-* job ids when A2MC_DRY_RUN is truthy or when sbatch is not on PATH. A dry run on a login node without SLURM looks identical to a real submission unless you inspect the job ids.

Should I run PFLOTRAN ensembles serially or with MPI ranks?▼

Serial execution is preferred: measurements showed 70.75% bit-identical values serially versus 68.49% with 8 ranks, and serial runs need only 32 MB and about one core-hour, letting roughly 128 members pack onto one node. A2MC_HPC_MPI_RANKS is set unconditionally in the site config for this reason.