Skip to content

Sweep 2.1.0: OpenFOAM case sets - #21

Merged
dmitrat merged 2 commits into
mainfrom
feature/openfoam-case-sets
Sep 27, 2026
Merged

dmitrat merged 2 commits into
mainfrom
feature/openfoam-case-sets

Conversation

@dmitrat

@dmitrat dmitrat commented Sep 27, 2026

Copy link
Copy Markdown
Contributor

What

An OpenFOAM case set: every variant is its own ready case (a tree and a recipe of its own, no tokens), run as one sweep.

  • Sweep.Model 2.1.0: SweepOpenFOAMSetData (one SweepOpenFOAMCaseData per variant: name, tree, recipe, cells, solver class); SweepPlanData carries the set (member 2, written and read by the host alone).
  • Sweep 2.1.0: the script SweepOpenFOAMSet.wit takes the set as a second job input beside the study (Sweep.Plan(opts, cases)); SweepFamilyOpenFOAMSet checks every case with the OpenFOAM model's rules under its name and refuses templated files, a tree or a recipe in the study block, parameters, and any variant without exactly one case; its tasks are metadata only, each its own case. The result index labels a set variant by its case's name.
  • The node controller is unchanged: FoamTaskData.Case already carries a whole case per task.

Why a second job input

SweepOptionsData rides default-mode MemoryPack, whose reader refuses a payload with members it does not know. A case-set member in the study would make a newer client fail every sweep on a host that has not taken this release. As a separate input under its own script, the study's layout stays what every released host reads; a host without case sets answers "Script 'SweepOpenFOAMSet' not found".

Tests

Sweep tests 97 green locally, including the engine end to end on the fake kit (every variant its own case, labels by case, a broken case refused by name at the plan, a set beside a CalculiX study refused) and a plan written by an earlier host still reading.

🤖 Generated with Claude Code

dmitrat and others added 2 commits September 27, 2026 11:52
A case set is a second job input beside the study (SweepOpenFOAMSetData,
one SweepOpenFOAMCaseData per variant: name, tree, recipe, size), run by
its own script SweepOpenFOAMSet.wit through Sweep.Plan(opts, cases). The
study's OpenFOAM block carries what the cases share (threads, responses,
artifacts); the variants carry no values. The study's layout is untouched,
so a host without case sets refuses the unknown script, not every study.

The plan carries the set (SweepPlanData member 2, host-only); the family
form SweepFamilyOpenFOAMSet checks each case with the OpenFOAM model's
rules under its name, refuses templated files, a tree or a recipe in the
block, parameters, and any variant without exactly one case; its tasks
are metadata only, each its own case. The result index labels a set
variant by its case's name. Sweep.Model 2.1.0, Sweep 2.1.0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@dmitrat
dmitrat merged commit dd8a390 into main Sep 27, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant