Developer documentation · Antenna API

One design contract.
Your choice of solver.

Evaluate antenna designs and run bounded ADO searches through your MetaClaw runtime. Use HARP, WiTwin Maxwell or PNGF with the same physical scene and result format.

Quickstart

This documentation is public and requires no login. Numerical jobs run on your connected MetaClaw runtime and its configured compute resources. MetaHz hosts the documentation and browser interface.

  1. Start MetaClaw and open its Dashboard. Complete runtime pairing and configure a supported execution route.
  2. Download example-evaluation.yaml. It contains a complete, unsolved free-space PEC antenna with a finite port and three frequency samples.
  3. Set the runtime address. If runtime authentication is enabled, set your control token in METACLAW_CONTROL_TOKEN. Submit the file using the headers below.

PowerShell · Use the address displayed by your runtime if its port differs.

$runtime = 'http://127.0.0.1:8505'
$headers = @{
  Accept = 'application/yaml'
  'x-antenna-client-version' = '2'
}
if ($env:METACLAW_CONTROL_TOKEN) {
  $headers['X-MetaClaw-Control-Token'] = $env:METACLAW_CONTROL_TOKEN
}
$request = @{
  Uri = "$runtime/api/antenna/live/workspace/evaluations"
  Method = 'Post'
  Headers = $headers
  ContentType = 'application/yaml'
  InFile = './example-evaluation.yaml'
}
Invoke-WebRequest @request | Select-Object -ExpandProperty Content

The response is a job record. Use its id to read progress and the final result:

$jobId = '<id returned by the runtime>'
$status = Invoke-WebRequest "$runtime/api/antenna/live/workspace/jobs/$jobId" -Headers $headers
$status.Content

The example demonstrates the request contract. Its coarse mesh and short temporal window do not establish a converged antenna result.

Runtime setup

The default base URL is http://127.0.0.1:8505/api/antenna/live/workspace. MetaClaw can choose another local port when that port is occupied. Read the running instance’s address and check GET /api/hello for its runtime and connection state.

The runtime administrator configures Python, solver device, precision, thread budget, cache location and PNGF banks. These are deployment settings; an evaluation request supplies physical inputs and bounded execution controls.

Local solver routes are configured in .metaclaw/runtime/antenna-evaluation.yaml, or the administrator’s METACLAW_ANTENNA_CONFIG path. The configuration uses schema metaclaw.antenna-runtime/1. Restart the runtime after changing deployment configuration.

schema: metaclaw.antenna-runtime/1
solvers:
  harp_v1:
    python_executable: 'C:/absolute/path/to/python.exe'
    device: cpu
    mode: direct
    precision: float32
    threads: 8
    cache_root: 'D:/absolute/path/to/antenna-cache/harp'

Download this runtime configuration template. Replace its paths with an interpreter that contains the MetaClaw solver packages and their native dependencies. CUDA routes additionally need a supported NVIDIA GPU, driver and runtime.

Add a witwin_maxwell route with device: cuda:0, mode: direct and precision: float32. A pngf route also needs compatible complete banks in bank_directories, or the administrator-configured metaclaw_solvers.pngf_reference.antenna_bank:build builder with its explicit native or WSL toolchain configuration. A missing bank is an admission blocker unless a builder is configured.

Use /catalog to discover integrations and /readiness to inspect the current route. Readiness and native preparation provide separate checks; a listed solver may still have missing dependencies or reject the scene.

Authentication & transport

The hosted browser pairs with the runtime and sends a runtime-issued X-MetaClaw-Control-Token. Direct local clients may use the default unauthenticated loopback policy; authentication is required when enabled by the administrator. Pair through the Dashboard. A manual client may exchange the code shown by the runtime’s own page with POST /api/configurator/pair and a YAML body containing code. The response includes a token and its expiry.

Keep the token in your local environment or client session. The hosted browser uses its paired transport. Browser origins must be allowed by the runtime; automatic pairing is available only when the runtime explicitly permits it.

Headers for workspace requests
HeaderValueUse
Acceptapplication/yamlAll requests
Content-Typeapplication/yamlPOST bodies, UTF-8
X-MetaClaw-Control-TokenYour paired tokenPaired browsers and authenticated local clients
x-antenna-client-version2Workspace protocol compatibility

Send one bounded YAML mapping per request. Workspace paths accept no query parameters. The workspace API uses the runtime’s loopback interface; remote solver resources are configured behind that runtime.

Geometry & selections

metaclaw.antenna-scene/1 describes geometry in metres. Model setup is organized into geometry, Materials, Excitations, Boundary conditions, Mesh and Analysis. These familiar HFSS categories map to the existing API fields below.

Support statements in these sections apply to the shared HARP, WiTwin Maxwell and PNGF antenna evaluator. Each configured route still checks physical eligibility and available resources through /readiness.

Scene fieldMeaning
schema, id, revision, name, units, provenanceVersioned scene identity and input provenance. units is m.
conductorsAxis-aligned rectangular elements with fixed or design role. kind: sheet has exactly one zero extent; kind: solid has positive extent in all three axes. Bounds are [xmin, xmax, ymin, ymax, zmin, zmax]. See Perfect E / PEC for the conductor model.
initial_conductor_idsInitially selected design elements. Fixed conductors always remain present.

A candidate chooses from the scene’s design conductors. It cannot remove fixed terminals or short the declared source gap.

candidate:
  id: candidate-002
  conductor_ids: [left, right]
solver: harp_v1
settings:
  harp_mode: hybrid
  seconds: 600
  duration_ns: 2

This fragment accompanies a complete scene. Curved conductors and arbitrary CAD are outside this scene grammar. For a complete request, use the downloadable example.

Materials

Define properties in scene.materials, then assign each material to a rectangular volume in scene.dielectrics using material_id. Dielectric volumes must have positive extent and must not overlap internally.

Material properties and support in the shared evaluator
Property or material typeAPI fieldSupport
Free-space backgroundImplicit outside dielectric volumesRelative permittivity 1, relative permeability 1, conductivity 0 S/m.
Relative Permittivityepsilon_r or epsilon_r_diagonal: [x,y,z]Scalar on all three routes. Cartesian-diagonal, frequency-independent values from 1 to 1,000 run on HARP and WiTwin; PNGF rejects the diagonal form.
Relative Permeabilitymu_r or mu_r_diagonal: [x,y,z]Scalar or Cartesian-diagonal values from 1 to 1,000 run on HARP and WiTwin. PNGF requires scalar mu_r: 1. Magnetic-interface convergence remains to be established.
Bulk Conductivityloss.kind: conductivity
loss.sigma_s_m
Frequency-independent loss in S/m; 0 to 10⁸. HARP and PNGF execute the declared value. WiTwin requires its reviewed corrected conductive-port overlay for nonzero conductivity; the stock port route rejects it before propagation.
Dielectric Loss Tangentloss.kind: loss_tangent
loss.tan_delta
PNGF evaluates scalar loss tangent at each requested frequency. HARP and WiTwin reject this declaration because a frequency-independent time-domain update cannot represent constant nonzero loss tangent over a band.
Perfect conductorscene.conductorsUses the Perfect E / PEC boundary model. A conductor has no material assignment.
Off-diagonal anisotropy, arbitrary dispersion, nonlinear media and magnetic lossNo constitutive-law objectNot admitted. These require constitutive or state equations beyond the present diagonal Yee updates and fixed linear PNGF bank. The diagonal fields above are implemented and distinct from full tensors.

Material and volume assignment

This is a scene fragment for a lossless substrate. Its bounds must fit the complete scene’s mesh and remain inside the PML interior.

materials:
  - id: substrate
    epsilon_r: 2.56
    mu_r: 1
    loss:
      kind: conductivity
      sigma_s_m: 0
dielectrics:
  - id: pcb
    material_id: substrate
    bounds_m: [-0.005, 0.005, -0.005, 0.005, 0, 0.0002]

Terminology reference: HFSS Materials Technical Notes ↗. The values above are example inputs, not measured material data.

Excitations

scene.ports defines the electrical feed. The shared contract supports exactly one finite Lumped Port between two fixed conductor terminals.

Excitation types
TypeAPI mappingSupport
Lumped Porttype: lumpedSupported with a 50 Ω reference, a finite aperture and an integration line.
Voltage sourcescene.excitations[0].kind: lumped_voltageA separate source object binds to the declared port and sets voltage amplitude and phase. HARP, WiTwin and PNGF execute this drive.
Current sourcescene.excitations[0].kind: lumped_currentNorton current in parallel with the port’s 50 Ω resistance. HARP, WiTwin and PNGF use the equivalent 50 Ω Thevenin drive; the request retains the authored current and phase.
Wave Port / Floquet Port / Incident WaveNo modal or incident-field objectNot admitted. These need independent mode or total/scattered-field source operators and observables; the current result contract reports driven one-port S11 and Zin.

Lumped Port definition

Port fieldDefinition
positive_conductor_ids, negative_conductor_idsDistinct fixed terminal selections. Both terminals remain present for every candidate.
sheet_bounds_mThe finite rectangular aperture between the terminals, in the same six-bound format as geometry.
integration_line_mTwo 3D points ordered positive to negative. The nonzero line must be axis aligned, lie in the aperture and contact the declared terminals at its ends.
reference_ohmFixed at 50 Ω for S11 and input impedance. The source uses a matched 50 Ω impedance.
deembed_mFixed at 0. The reference plane is the declared port aperture; deembedding is unsupported.

The following port is taken from the complete downloadable example; it depends on that example’s terminal geometry.

ports:
  - id: drive
    type: lumped
    reference_ohm: 50
    positive_conductor_ids: [positive]
    negative_conductor_ids: [negative]
    sheet_bounds_m: [-0.001, 0.001, -0.001, 0, 0, 0]
    integration_line_m:
      - [-0.001, -0.0005, 0]
      - [0.001, -0.0005, 0]
    deembed_m: 0

Source waveform

Time-domain HARP and WiTwin use a Gaussian pulse. The shared evaluator derives its center frequency from the midpoint of the requested band and its width parameter from the larger of the band span or 20% of that center frequency. PNGF solves the frequency-domain port response at the requested samples.

Declare exactly one optional source object to set amplitude and phase. Without it, the legacy matched 1 V drive is used. The port fixes source resistance and current contour. A current source means Norton current with that 50 Ω parallel resistance; it does not mean an ideal unshunted current source.

HARP and WiTwin apply phase to the carrier of a time-domain Gaussian pulse. PNGF applies a frequency-domain phasor at every requested frequency. Compare S11 and Zin across routes; the raw voltage and current spectra have different source-waveform conventions.

excitations:
  - id: source-1
    kind: lumped_current
    port_id: drive
    amplitude_a: 0.02
    phase_rad: 0.25
# Or kind: lumped_voltage with amplitude_v instead of amplitude_a.

Terminology reference: HFSS Excitations ↗.

Boundary conditions

Conductor boundaries and exterior truncation have separate roles. Conductor geometry sets the metal surfaces; scene.boundary and scene.mesh.pml_cells define the open simulation domain.

Boundary types and their actual implementation
Boundary typeAPI mappingSupport
Perfect E / PECscene.conductorsSupported. Declared sheets and solids impose perfect-electric-conductor constraints. A finite ground plane must be explicit conductor geometry.
Open Region with PMLboundary.type: open
mesh.pml_cells
Supported. HARP and WiTwin use time-domain PML; PNGF uses its frequency-domain PML formulation.
Radiation boundary (Mur ABC)boundary.type: faces with face value murWiTwin native route only. This is a distinct absorbing condition from PML, with a different truncation error.
Perfect E / exterior PECFace value pecWiTwin and HARP native routes. PNGF rejects non-PML faces.
Perfect H / exterior PMCFace value pmcWiTwin native route only. HARP’s current outer Yee topology does not retain the tangential boundary fields this requires.
Periodic / Coupled Lattice PairOpposite face values periodicWiTwin native route only; pairs are validated. The response is for an in-phase infinite periodic continuation, not an isolated antenna. Bloch phase and Floquet excitation are not included.
Finite Conductivity / Impedance boundaryNo conductor-loss fieldUnsupported. Bulk dielectric conductivity does not turn a PEC conductor into finite-conductivity metal.
boundary:
  type: open
  padding_m: 0.004
# In the complete scene.mesh mapping:
# pml_cells: 2
 # axes_m: {x: [...], y: [...], z: [...]}
# Or specify all six faces explicitly:
# boundary:
#   type: faces
#   padding_m: 0.004
#   faces: {x_low: pml, x_high: pec, y_low: pml, y_high: pml, z_low: pml, z_high: pml}

padding_m sets the HFSS open-region size. It is informational for the Yee and PNGF routes: explicit mesh axes determine those domains and the field does not generate mesh nodes or enforce this padding value. Keep geometry and the port inside the non-PML region, and verify exterior clearance and PML sensitivity for the antenna.

mesh.pml_cells sets layer thickness only on faces assigned PML. Non-PML faces end at the explicit mesh extent. Geometry and the port retain at least one grid-node margin from each outer face. The open shorthand means six PML faces. HARP, WiTwin and PNGF reject unsupported faces; the separately managed HFSS route currently accepts only the open shorthand and no independent source object or diagonal material.

Terminology reference: Assigning Boundaries in HFSS ↗.

Mesh

scene.mesh.axes_m contains explicit, strictly increasing x, y and z node arrays in metres. These define the Cartesian grid. scene.mesh.pml_cells specifies the PML layer count; see Boundary conditions.

Place conductor surfaces, dielectric interfaces and the finite port deliberately on this grid. WiTwin additionally requires outer PML cells to continue the spacing of the adjacent interior cells. Geometry and resource admission can reject an incompatible grid.

The shared HTTP request does not expose HFSS adaptive tetrahedral meshing or automatic convergence passes. Submit separately refined scenes to study spatial convergence. HARP’s adaptive mode selects an execution method; it does not refine this mesh.

Analysis & frequency sweep

Analysis settingAPI fieldMeaning
Frequency samplesscene.frequencies_hzExplicit increasing positive frequencies in Hz. The complete evaluation returns complex S11 and input impedance at each sample.
Matching objectivesscene.targetsEach target declares start_hz, stop_hz, max_s11_db and weight. The band must contain requested frequency samples. An objective is not a convergence criterion.
Simulated durationsettings.duration_nsPhysical time window for HARP and WiTwin. PNGF performs a frequency-domain direct solve.
Time-step budgetsettings.time_stepsA cap on propagation steps. The evaluator derives the step size from the mesh and rejects a duration that exceeds the cap; it does not shorten the requested window.
Wall-time and memory budgetsExecution limitsBound resource consumption. They do not establish numerical accuracy.

There is no interpolating or fast-sweep selector in this contract. HARP and WiTwin extract the requested samples from time-domain propagation; PNGF solves at those frequencies. Far-field patterns and multiport S-parameter matrices are outside the current shared output contract.

Check mesh refinement, temporal window, time step and exterior truncation before treating the result as physically converged. Inspect the actual mode, work counts and evidence in Results & evidence.

Endpoints

All paths below are relative to /api/antenna/live/workspace. Responses use YAML. Download the OpenAPI specification for request schemas and status definitions.

GET/catalog · Discover solvers

Returns the solver catalog, execution defaults, search defaults and metric limits. A catalog entry identifies an integration; check readiness for the submitted physical scene before starting work.

Input: No body. No query parameters.

POST/readiness · Check a scene

Returns ready, requirements with code/message, limits, resource estimates, and the scene identity. A false readiness result is returned as data. It does not start a production evaluation or establish physical convergence.

Input: scene, solver, settings

POST/preparations · Prepare reusable resources

Creates an asynchronous preparation job using the scene’s initial conductor selection. Follow its id through the jobs endpoint. It produces preparation evidence; it does not count as a fresh production result.

Input: scene, solver, settings

POST/evaluations · Evaluate one explicit design

Creates one asynchronous evaluation for the exact candidate. The runtime checks support and budgets, prepares compatible resources, executes fresh fields or currents, and publishes a bound S11/impedance result.

Input: scene, candidate, solver, settings

POST/jobs · Start a bounded search

Creates an ADO job on the same scene contract. ADO proposes conductor selections, then the chosen solver evaluates each accepted design. ADO also requires a configured model. Stop conditions are explicit.

Input: scene, solver, algorithm (ado), seed, max_evaluations, max_seconds, settings; optional model, goal

GET/jobs · List retained jobs

Returns up to 50 recent job summaries from this runtime. Read an individual job for candidates and results. Job identities belong to the runtime that created them; they are not public cloud job identifiers.

Input: No body. No query parameters.

GET/jobs/{id} · Read status and results

Returns the job’s current state, progress, error, and admitted candidate results. Poll at a bounded interval, for example once per second, and stop polling after a terminal state.

Input: id: the 32-character hexadecimal job identifier returned when work starts

POST/jobs/{id}/cancel · Request cancellation

Requests cancellation of this owned job and returns its current state. Continue checking until the job is terminal; accepting a cancellation request does not by itself prove native cleanup has finished.

Input: Empty YAML mapping: {}

Job lifecycle

queued→running→succeeded / failed / cancelled

After a runtime restart, unfinished retained jobs become interrupted. Submit a new bounded job when ready. A cancelled or failed job may retain earlier completed candidate records; inspect each record’s identity and evidence.

ADO request controls

Send algorithm: ado, a reproducible seed, max_evaluations, max_seconds, and an optional configured model and goal. The initial design and subsequent accepted proposals use the same solver adapter. Model proposals and native evaluations are recorded separately.

Solver support

Reusable antenna evaluator routes. Each route still requires readiness and physical admission.
Solver IDModesExecutionPreparation
harp_v1Direct, Hybrid, Reduced, AdaptiveNative grid routes: CPU or CUDA. Prepared whole-device finite-window reduction: CPU, FP64.Owned field propagation, local factors, or a configured whole-device model. Qualification and measured selection remain part of setup.
witwin_maxwellFDTDCUDA, FP32Production Yee-grid kernels, material/source/boundary mapping and execution resources
pngfComplete-bank direct current solveCPU or CUDA; FP32 or FP64, subject to residual checksComplete mutual/output Green bank, candidate assembly and factors

HARP mode is requested through settings.harp_mode. The result records the actual selected mode and qualification outcome. Adaptive execution may choose direct; a requested hybrid or reduced route does not guarantee a faster accepted solve.

Prepared finite-window families

Prepared design families use a separate compact query: metaclaw.harp-finite-window-query/1. It contains family_id, width_mm, frequencies_hz, accuracy_policy: validated_points and expected_evaluations. The deployment owns the model and qualification bundle. Requests cannot supply filesystem paths or replace the prepared source, boundary, materials or time window.

For this route, request direct, hybrid, reduced or adaptive. Reduced has local-response and whole-device implementations; the existing scene API retains hybrid_response for local reduction. Adaptive measures eligible implementations for the exact width and declared repetition count, records rejected trials and preparation costs, and reuses only a compatible decision. A changed width may require new planning.

The result separates the requested logical mode, implementation_mode, actual device, planning cost and fresh solve counter. A saved output is not a fresh evaluation. Whole-device qualification covers listed measured widths only; it does not certify arbitrary edits or continuum convergence. The older whole_device_rom query remains a separate harmonic-response contract.

Device and precision are administrator-selected. Use the runtime catalog for other configured integrations, including separately managed external solvers. Solver-specific limitations and licenses still apply.

Preparation & reuse

ChangeReusable workFresh work
Same scene and conductor selectionCompatible preparation files and, while owned by the active session, resident operators/factorsDynamic state reset, fields or currents, output extraction and a new solve counter
New conductor selection within a PNGF bank’s coverageThe complete Green bankCandidate assembly/factors and a fresh current solve
Changed material, mesh, port, frequencies or coverageOnly resources explicitly admitted as compatibleNew bank or local preparation as required; unsupported changes return a reason

Preparation files may survive a job. Resident resources are owned by the active evaluation session and released at its lifecycle boundary; a later HTTP job should not assume resident reuse. The result’s reuse record describes what actually happened.

PNGF’s builder constructs the complete bank required by the declared scene, including mutual interactions and output mappings. Bank generation and qualification costs remain visible. Its current bank identity also includes the scene name, targets and provenance, so cosmetic changes may trigger a rebuild. Identical-antenna throughput does not establish the cost of changing a design or background.

RFIC materials & layers

The canonical 4 × 4 RFIC workspace has its own project, revision and transaction API at /api/rfic/array4x4. It uses the same runtime pairing and YAML transport. It does not require the antenna client-version header. The two existing designs remain separate: design_monolithic_on_die and design_single_die_aip.

  1. Read GET /api/rfic/array4x4/readiness. Confirm capabilities.edit.ready and every required name in edit_operations. On an older runtime, an absent list means these new technology operations are unavailable; existing editing remains unchanged.
  2. Read GET /api/rfic/array4x4/designs/{design_id}. Use its project.revision.design_revision_id as expected_revision_id.
  3. Send one atomic YAML request to POST /api/rfic/array4x4/designs/{design_id}/transactions. Keep the idempotency key for retries of the same operations.
OperationRequired valuesEffect and validation
create_development_materialmaterial_id, complete materialCreate a unique development definition, up to 64 per technology.
update_development_materialmaterial_id, complete materialReplace an existing development definition, preserving kind/model and process authority.
assign_layer_materiallayer_id, material_idAssign an existing material of the same layer kind to all generated objects on the layer.
set_layer_thicknesslayer_id, thickness_mRequire positive fabrication-grid-aligned thickness; reflow later elevations and regenerate solids, vias, terminal paths and ports.

Materials support the existing finite-conductivity conductor and constant-complex dielectric models. Conductor conductivity must be positive; dielectric relative permittivity must be at least one, with nonnegative conductivity and loss tangent. Edited definitions declare provenance: user_defined_development and validity: user_defined_unqualified_constant_model. Kind/model changes, process-owned definitions and unsupported loss laws are rejected.

expected_revision_id: rev_0001 # replace with the current revision
idempotency_key: material-layer-example-1
operations:
  - op: create_development_material
    material_id: user_dielectric
    material:
      kind: dielectric
      model: constant_complex
      label: User development dielectric
      relative_permittivity: 3.2
      loss_tangent: 0.002
      provenance: user_defined_development
      validity: user_defined_unqualified_constant_model
  - op: assign_layer_material
    layer_id: die_ild
    material_id: user_dielectric
  - op: set_layer_thickness
    layer_id: die_ild
    thickness_m: 0.000012

A valid transaction returns HTTP 200 with status: applied or replayed, the canonical project, regenerated physical_model and affected-product invalidation. HTTP 409 reports a revision conflict; HTTP 422 reports a rejected edit with field-level issues. The entire prior revision survives either refusal. Requests are limited to 128 KiB and 256 operations; responses to 16 MiB.

These edits preserve stable object/port IDs and historical results. Technology-dependent products become stale; retained process geometry keeps its original source and cannot become current by relabelling. No numerical job starts, and no antenna dimensions are automatically tuned. Independent port definitions, arbitrary port impedance, full-wave boundaries and adaptive RFIC mesh are separate implementation work.

The implementation and transaction/reopen tests are source-verified. Installed runtime delivery and public website delivery are separate: a public editor or this reference does not update an installed runtime. Check its advertised operations before writing. These checks establish software behavior, not full-wave RFIC or fabrication qualification.

Errors & limits

Readiness returns actionable requirements. Transport failures return an error message and, where available, a structured code. Native failures are retained on the job with logs and partial evidence.

StatusTypical action
400Correct the scene, candidate, settings or lifecycle request. An active job must finish or stop before another starts.
401 / 403Check pairing, token expiry, allowed origin and local runtime access.
404Check the path and the job ID on the same runtime.
406 / 415Use the documented YAML Accept and Content-Type headers with unencoded UTF-8.
409Check the antenna client version and update/reload a compatible client.
413Reduce the request to the route’s bounded input size.
503Inspect runtime configuration and missing execution dependencies.

Execution settings include seconds, host_memory_bytes, device_memory_bytes, storage_bytes, time_steps and duration_ns. Use /catalog for defaults. Search budgets are capped at 128 evaluations and 14,400 seconds; native evaluation bounds and available resources may reject work earlier.

Budgets are admission and lifecycle controls. Sampled host/device memory peaks have coverage limits; native allocations and short-lived events may require separate diagnostics.

Results & evidence

Every admitted result is tied to its scene, candidate, solver and exact frequency samples. Complex values are pairs [real, imaginary] in s11 and impedance_ohm, with reference_ohm: 50. Public job records may use a scene_ref that points to the job’s authoritative scene.

Results include native execution evidence, the actual execution mode, fresh solve counts, phase timing and available resource measurements. Numerical session measurements cover the owned solver process tree; outer API/server memory and HTTP/YAML transport are outside that scope. Use job timestamps separately for API lifecycle wall time.

Inspection should distinguish process completion, native execution, numerical convergence and physical validation.

S11 and input impedance establish sampled port response. They do not establish radiation efficiency, realized gain, fabrication performance or mesh convergence. Qualify the discretization, time window and boundaries for the design being evaluated.