A SysML v2 model library for antenna/RF systems engineering, consumed through sysml2kit.
The kit stays domain-general; this library carries the RF vocabulary:
- RFVocabulary — quantity kinds with canonical units (Frequency_GHz, Gain_dBi, EIRP_dBW, GOverT_dBK, SidelobeLevel_dB, ScanLoss_dB, LinkMargin_dB, PrimePower_W, ...).
- RFParts — part/port definitions: AntennaElement, RadiatingAperture, TRModule, Beamformer, PhasedArrayAntenna, RFFrontEnd, Modem, SatcomTerminal.
- RFRequirements — requirement definitions carrying the
metricKeyconvention, sosysml2kit.interop.extract_requirementshands them to a requirements engine (phased-array-systems, aedl) mechanically. - RFAnalyses — analysis case definitions (link budget, pattern integration, scan performance, SWaP-C rollup) that verify links point at.
- SatcomTerminal28GHz — a worked example mirroring the aedl
t3-001benchmark: a 28 GHz LEO uplink phased-array ground terminal with its full requirement set (worst-case link margin, sidelobes, independent link crosscheck, power and cost ceilings, grating-lobe margin), each satisfied by a part and verified by an analysis. - SatcomTerminalPAS — the executable example: five requirements keyed to
metrics phased-array-systems emits, verified through a three-rung fidelity
ladder (closed-form, pattern cuts, full-pattern integration) plus an
independent
opensatcom-linkmargin cross-check.sysml2kit verifyruns the real studies and every requirement passes with margin;--policy escalate --budget-s 5allocates the compute to the thinnest margins.
Both bridges into the stack are merged: phased_array_systems.interop.sysml
(requirement sets, and the phased-array-systems verification engine) and
aedl.interop (bound-form benchmark requirements). Agents load these models
through sysml2kit's library_load MCP tool.
pip install sysml2kit-rf-libraryfrom sysml2kit_rf_library import load_model
from sysml2kit.interop import extract_requirements
from sysml2kit.query import trace_matrix
model = load_model("satcom-terminal-t3001")
print(trace_matrix(model).render())
for spec in extract_requirements(model):
print(spec.id, spec.metric_key, spec.op, spec.value, spec.units)Or from the command line (paths via models_dir(), which works for pip
installs, not just a checkout):
MODELS=$(python -c 'import sysml2kit_rf_library as m; print(m.models_dir())')
sysml2kit show "$MODELS/interchange/satcom_terminal_t3001.json" --traceability
sysml2kit verify "$MODELS/interchange/satcom_terminal_pas.json" --report run.jsonsrc/sysml2kit_rf_library/_build.py is the authoritative source: it
constructs the models with the sysml2kit builder, keeping attribute values,
units, and relationship kinds exact. The committed artifacts under
src/sysml2kit_rf_library/models/ — one .sysml file per package for humans
and other tools, plus interchange JSON with stable UUIDv5 ids — are generated
by scripts/regenerate.py, and CI fails if they drift from the build.
All content is authored fresh under Apache-2.0; nothing is copied from the EPL-2.0 OMG model libraries.
@software{hodge2026sysml2kitrflibrary,
author = {Hodge, John},
title = {sysml2kit-rf-library: SysML v2 models for antenna/RF systems engineering},
year = {2026},
url = {https://github.com/jman4162/sysml2kit-rf-library},
license = {Apache-2.0}
}