Skip to main content
Glama

EM Fullwave Submit

em_fullwave_submit

Run asynchronous full-wave FDTD EM solves for waveguide cutoff or dipole resonance, returning S-parameters and decay-ratio validation.

Instructions

Full-wave FDTD EM solve on openEMS, asynchronous (OFF the MCP channel) — the real-field twin of the analytic waveguide_cutoff / dipole_resonance oracles. openEMS is GPL-3.0 and is run ONLY out-of-process via ankusdrive/em_fullwave_gpl_runner.py; degrades to {ok:false, reason, install} when no openEMS venv resolves.

problem='waveguide_sweep' (default): hollow rectangular guide, broad wall a_mm/narrow wall b_mm (default a/2), length length_mm (default 120), TE10 port at each end. Sweep f_start_ghz..f_stop_ghz (default 4..10 GHz — straddling the WR-90 cutoff 6.56 GHz) in n_freq points, nrts max timesteps, cells_per_wl mesh density, eps_r fill, end_criteria energy stop (1e-6). THE GATE IS alpha_ratio≈1: voltage probes along the guide read the SOLVED field's decay rate below cutoff at decay_f_ratio·f_c (default 0.7) against the exact α = sqrt((π/a)² − k²); it degrades under a coarse mesh or a truncated nrts. alpha_ratio is null with a decay_note when the guide is too short for the probe window. fc_ratio (half-power crossing vs c/2a) is only a PORT-SETUP CHECK: openEMS's analytic port β zeroes every sub-cutoff sample, so it reads the frequency grid, not the field. A degenerate mesh/length (port blocks overlapping) returns {ok:false, error}. problem='dipole_s11': centre-fed thin dipole (length_mm, gap_mm, radius_mm, each resolved by its own mesh lines), sweep S11, report first resonance. Mesh is mesh_res_mm, else λ(mesh_f_ghz, default f_stop) / cells_per_wl (default 30) — pin it to vary the sweep window alone.

Returns the degradation dict, or {job_id, status, cache_hit}; poll job_result for {ok, fc_analytic_ghz, freq_ghz[], s21_db[], transmission_norm[], alpha_fdtd, alpha_exact, alpha_ratio, decay_freq_ghz, decay_probe_z_mm[], decay_fit_rms_np, fc_crossing_ghz, fc_ratio, evanescent_mean, propagating_mean, mesh_res_mm, n_cells, wall_s} (waveguide) or {freq_ghz[], s11_db[], resonance_ghz, resonance_s11_db, mesh_res_mm, n_cells} (dipole).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
a_mmNo
b_mmNo
nrtsNo
eps_rNo
gap_mmNo
n_freqNo
problemNowaveguide_sweep
timeoutNo
length_mmNo
radius_mmNo
f_stop_ghzNo
mesh_f_ghzNo
f_start_ghzNo
mesh_res_mmNo
cells_per_wlNo
end_criteriaNo
decay_f_ratioNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changedv0.5.5
    • addedInput schema / properties / decay_f_ratio
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "number"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Decay F Ratio"
      +}
    • addedInput schema / properties / end_criteria
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "number"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "End Criteria"
      +}
    • addedInput schema / properties / mesh_f_ghz
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "number"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Mesh F Ghz"
      +}
    • addedInput schema / properties / mesh_res_mm
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "number"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Mesh Res Mm"
      +}
  2. First observed

TDQS

A4.7/5.0
Behavior5/5

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

The description goes far beyond the sparse annotations (readOnlyHint=false, destructiveHint=false). It discloses out-of-process execution via ankusdrive/em_fullwave_gpl_runner.py, the GPL-3.0 constraint, async submission returning {job_id, status, cache_hit}, polling via job_result, degradation when no venv resolves, and detailed physical caveats like the alpha_ratio gate and the fc_ratio port-setup check. No contradiction with annotations.

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 description is long but every sentence carries operational content: licensing, execution path, per-mode parameter semantics, physical interpretation, and return contract. It is front-loaded with the core purpose and organized by problem type. Some verbosity is justified because no output schema or parameter descriptions exist elsewhere.

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?

Given zero schema descriptions and no output schema, the description is remarkably complete. It covers both problem modes, all parameter defaults and meanings, failure/degradation behavior, async polling flow, and the exact return keys for both waveguide and dipole solves. The only minor omission is explicit timeout semantics, but that field is self-explanatory.

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

Parameters5/5

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

With schema description coverage at 0%, the description carries the full parameter-documentation burden and succeeds. It explains broad/narrow wall defaults, TE10 port setup, sweep defaults, mesh density, energy stop, the alpha_ratio gate, dipole-specific parameters, and even clarifies that mesh_f_ghz 'pins' the sweep window. All 17 parameters are meaningfully addressed.

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 description opens with a specific verb+resource: 'Full-wave FDTD EM solve on openEMS', and immediately distinguishes itself as 'the real-field twin of the analytic waveguide_cutoff / dipole_resonance oracles.' This makes the tool's purpose and identity unmistakable relative to sibling tools.

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 names the analytic siblings and positions this as the full-wave counterpart, which implies when to prefer it over those oracles. It also specifies the async off-channel pattern and the degradation path when openEMS is unavailable. However, it does not give an explicit 'use X instead when you need a quick analytic estimate' rule, so it stops just short of full guidance.

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