Skip to main content
Glama

cfd_mesh_independence_submit

Solve a CFD case on 2-3 refined meshes to compute the Grid Convergence Index, revealing whether results depend on mesh resolution. Requires OpenFOAM.

Instructions

Solve the same CFD case at 2-3 refined meshes and report the Grid Convergence Index — asynchronous, one job for the whole ladder. Requires OpenFOAM; degrades to {ok:false, reason, install} when it does not resolve.

Answers the question no single solve can: is this number a property of the flow, or of the mesh? On geometry with no analytic twin that band is the only error bar available, and it is what turns "a solver produced 0.31" into "0.31 ± 2 %".

Two families, dispatched like their single-solve twins:

  • the wind tunnel — pass model (or body) + velocity_m_s, plus any cfd_external_flow_submit knob. The ladder varies the background cell; the body is tessellated ONCE and shared, so the study isolates mesh error instead of mixing in a changing STL. Default metric 'cd'.

  • the straight pipe — pass diameter_mm, length_mm, velocity_m_s (or flow_rate_lpm). The ladder scales n_axial/n_radial. Default metric 'pressure_drop_pa'.

The COARSEST level is the mesh a plain submit would have built and the study refines from there (the tunnel's default cell is already the coarsest that resolves the body at all). Cost therefore grows as the cube of refinement_ratio: 3 levels at 1.5 puts roughly 11x the cells in the finest mesh, so budget accordingly. end_time is the cap for the COARSEST level and is scaled up for the finer ones — a fine mesh needs proportionally more sweeps, and a study whose finest level quietly stopped at its cap is worthless.

Returns the degradation dict, or {job_id, status, cache_hit}; poll job_result for {ok, family, metric, levels: [{label, value, cell_size_m, n_cells, converged, returncode, case_dir}], grid_convergence: {observed_order, extrapolated_value, gci_pct, monotonic, asymptotic_ratio, order_clamped, warnings, ...}, band_pct, extrapolated_value, hagen_poiseuille_pa (pipe family), warnings}.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
bodyNo
fluidNoair-20c
modelNo
levelsNo
metricNo
mu_pa_sNo
n_axialNo
end_timeNo
n_radialNo
length_mmNo
rho_kg_m3No
turbulenceNolaminar
diameter_mmNo
base_cell_mmNo
velocity_m_sNo
flow_rate_lpmNo
flow_directionNo
surface_refineNo
refinement_ratioNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so: it discloses async execution ('one job for the whole ladder', poll job_result), an OpenFOAM dependency with a documented degradation shape ({ok:false, reason, install}), and the cost model (cube-of-refinement_ratio, ~11x cells at 3 levels of 1.5). It also explains the non-obvious end_time semantics as a cap on the coarsest level only, which is exactly the kind of hidden behavior an agent needs to budget a fine-mesh study.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose is front-loaded in the opening line, and the two-family bullet structure maps cleanly onto the schema's branches. It is long, but for a 19-parameter async job every section (degradation, cost, end_time, return shape) adds operational information rather than filler; formatting is heavy but not wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations and no output schema, the description still tells the agent everything needed to call and consume the tool: it spells out the per-family parameter requirements, the async job_id/status/cache_hit return, the tool to poll (job_result), and even the nested result fields (levels, grid_convergence.gci_pct, band_pct). Nothing critical for correct invocation or interpretation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it maps the key parameters to the two families: model/body + velocity_m_s for the tunnel, diameter_mm/length_mm/velocity_m_s or flow_rate_lpm with n_axial/n_radial scaling for the pipe, plus default metrics, levels, refinement_ratio, base_cell_mm (coarsest level) and end_time. Several params (fluid, mu_pa_s, rho_kg_m3, turbulence, flow_direction, surface_refine) are left to 'any cfd_external_flow_submit knob', which bets the agent has read the twin tool, leaving a real gap against a 19-param schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence gives a specific verb+resource ('Solve the same CFD case at 2-3 refined meshes and report the Grid Convergence Index') and immediately flags it as asynchronous, distinguishing it from single-solve siblings like cfd_external_flow_submit. It further clarifies the intent ('is this number a property of the flow, or of the mesh?'), so an agent can distinguish this study tool from a plain solve without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly states the situation that justifies the cost ('Answers the question no single solve can... on geometry with no analytic twin'), and gives the two dispatch families with the exact parameter sets each requires, referencing cfd_external_flow_submit for the tunnel knobs. It stops short of naming the exact sibling to use instead for a cheap single solve, so it is clear but not fully prescriptive about alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Deploy Server

Other Tools