Metadata-Version: 2.4
Name: sysml2kit-rf-library
Version: 0.2.0
Summary: SysML v2 model library for antenna/RF systems engineering, consumed through sysml2kit
Project-URL: Homepage, https://github.com/jman4162/sysml2kit-rf-library
Project-URL: Source, https://github.com/jman4162/sysml2kit-rf-library
Project-URL: Issues, https://github.com/jman4162/sysml2kit-rf-library/issues
Author-email: John Hodge <jhodge007@gmail.com>
Maintainer-email: John Hodge <jhodge007@gmail.com>
License-Expression: Apache-2.0
License-File: LICENSE
License-File: NOTICE
Keywords: antenna,mbse,model-library,phased-array,requirements,rf,satcom,sysml,sysml-v2
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: Intended Audience :: Science/Research
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Scientific/Engineering
Classifier: Typing :: Typed
Requires-Python: >=3.11
Requires-Dist: sysml2kit>=0.3.0
Description-Content-Type: text/markdown

# sysml2kit-rf-library

[![CI](https://github.com/jman4162/sysml2kit-rf-library/actions/workflows/ci.yml/badge.svg)](https://github.com/jman4162/sysml2kit-rf-library/actions/workflows/ci.yml)
[![PyPI](https://img.shields.io/pypi/v/sysml2kit-rf-library)](https://pypi.org/project/sysml2kit-rf-library/)
[![License](https://img.shields.io/badge/license-Apache--2.0-blue)](LICENSE)
[![Docs](https://img.shields.io/badge/docs-jman4162.github.io-blue)](https://jman4162.github.io/sysml2kit-rf-library/)

A SysML v2 model library for antenna/RF systems engineering, consumed through
[sysml2kit](https://github.com/jman4162/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 `metricKey`
  convention, so `sysml2kit.interop.extract_requirements` hands 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-001`
  benchmark: 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, with a `verificationBinding` so
  `sysml2kit verify` runs a real study and every requirement passes with
  margin.

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.

## Install and load

```bash
pip install sysml2kit-rf-library
```

```python
from 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):

```bash
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.json
```

## How the repo is organized

`src/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.

## Citation

```bibtex
@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}
}
```

## License

Apache-2.0. See [LICENSE](LICENSE) and [NOTICE](NOTICE).
