CommunityCodierung & Entwicklunggithub.com

shou0715-Arthur/pyaedt-hfss-antenna

Ein Workflow-Skelett zur Automatisierung von Antennen- und HF-Simulationen mit PyAEDT, das Ansys HFSS/AEDT antreibt. Wird bei Benennung von HFSS, AEDT, pyaedt oder verwandten Begriffen wie S-Parametern, Fernfeld oder Impedanzanpassung aktiviert.

Was ist pyaedt-hfss-antenna?

Diese Skill stellt einen standardisierten Workflow zur Verfügung, um KI-Agenten (wie Claude Code) zu befähigen, Antennen- und HF-Simulationen mit PyAEDT und Ansys HFSS/AEDT vollständig zu automatisieren. Sie löst das Problem der manuellen, repetitiven Schritte in der HFSS-Simulationskette, indem sie eine klare Pipeline von der Umgebungsprüfung (AEDT-Version, gRPC/COM, Lizenz) über die Modellierung, Randbedingungen und Anregung bis hin zur Lösung und Nachbearbeitung definiert. Die Skill bietet drei sofort verwendbare Templates (S-Parameter-Extraktion, Fernfelddiagramm, parametrischer Sweep), die als Startpunkte für gängige Aufgaben dienen. Wichtigster Nutzen: Der Agent muss das Rad nicht neu erfinden, sondern folgt einer bewährten Struktur, die Fehler wie Lizenzblockaden oder fehlende Projekt-Speicherung vermeidet. Die Skill unterstützt alle Plattformen, auf denen PyAEDT und Ansys AEDT laufen (Windows/Linux), und setzt auf die offizielle Importkonvention `import ansys.aedt.core as pyaedt`. Sie ist besonders wertvoll für Ingenieure, die häufige Parametervariationen, Batch-Simulationen oder Integration in CI/CD-Pipelines durchführen möchten.

Funktioniert mit✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/shou0715-Arthur/pyaedt-examples-and-skills/tree/main/skills/pyaedt-hfss-antenna

Installed? Explore more Codierung & Entwicklung skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

PyAEDT HFSS Antennen-/HF-Simulation Skill

Was dieses Skill löst

Es standardisiert den Prozess, bei dem ein Agent mit Python Ansys HFSS für Antennen-/HF-Simulationen steuert. Es bietet drei Dinge:

  1. Umgebungs-Handshake – Wie findet man AEDT lokal? Nutzt man gRPC oder COM? Wie vermeidet man Lizenzkonflikte?
  2. Standard-Antennensimulations-Pipeline – Projekt erstellen → Modellieren → Randbedingungen/Anregung → Lösungs-Setup → Sweep → Lösen → Nachbearbeitung, jeder Schritt liefert kopierbaren Code.
  3. Drei häufige Aufgaben-Templates – S-Parameter-Extraktion, Fernfelddiagramm, parametrischer Sweep, direkt als Startpunkt nutzbar.

Es designt keine Antenne (Geometrie, Speisung, Zielfrequenz sind Aufgabe des Users/Ingenieurs), sondern sorgt nur dafür, dass der Weg von „bekanntes Design → Simulationsergebnis“ reibungslos funktioniert.

Wann auslösen

  • Der User sagt „Simuliere diese Antenne mit HFSS“, „Extrahiere S-Parameter“, „Sweep 2-6 GHz“, „Zeichne Richtdiagramm“, „Zeige Gewinn“
  • Der User gibt ein .aedt/.aedtz/.hfss-Projekt und bittet um automatisches/Batch-Simulieren
  • Der User schreibt Code import ansys.aedt.core / from pyaedt import Hfss
  • Der User fragt „Wie starte ich HFSS mit pyaedt?“, „Warum verbindet es nicht zu AEDT?“, „Was tun bei Lizenzkonflikt?“

Standard-Workflow (eine Hauptlinie)

Egal welche spezifische Aufgabe, Antennen-/HF-Simulation folgt immer dieser Hauptlinie. Baue zuerst eine mentale Karte entlang dieser Linie auf, springe dann zum passenden Template:

[1] Umgebungs-Handshake → AEDT-Version + Python-Version + Kommunikationsschnittstelle bestätigen
                          Siehe references/environment-setup.md
                          Bei Unsicherheit zuerst scripts/check_env.py ausführen

[2] Projekt erstellen/öffnen → Hfss(project=..., design=..., version=..., new_desktop=...)
                               Wichtig: non_graphical=True für CI/Batch
                                         new_desktop=False, um bereits geöffneten Desktop wiederzuverwenden
                                         close_on_exit=True, um Lizenz nach Lauf freizugeben

[3] Geometrie modellieren → hfss.modeler.create_box / create_cylinder / create_polyline ...
                            Oder hfss.modeler.import_3d_cad("xxx.step")
                            Empfehlung: zuerst Variablen definieren (siehe unten), dann Geometrie damit steuern

[4] Variablen parametrisieren → hfss[" $patch_w "] = "30mm"  (Projektvariable, mit $)
                               hfss["patch_l"]    = "32mm"   (Designvariable, ohne $)
                               Empfehlung: Alle möglicherweise zu sweependen Maße als Variable anlegen

[5] Randbedingungen & Anregung → Strahlungsrand: hfss.assign_radiation_boundary_to_objects(["AirBox"])
                                Port:           hfss.lumped_port / hfss.wave_port / hfss.create_floquet_port
                                Masse:          hfss.assign_perfecte_to_sheets(...)

[6] Lösungs-Setup → setup = hfss.create_setup("Setup1", Frequency="3GHz",
                                              MaximumPasses=15, MaxDeltaS=0.02)
                    sweep = setup.create_linear_count_sweep(
                        unit="GHz", start_frequency=2, stop_frequency=6,
                        num_of_freq_points=401, sweep_type="Interpolating")

[7] Lösen → hfss.analyze(setup="Setup1", cores=8)   # blockierend
            Oder hfss.analyze_setup("Setup1")

[8] Nachbearbeitung → S-Parameter: hfss.post.get_solution_data("S(1,1)")
                     Fernfeld:   hfss.insert_infinite_sphere(...)
                                 hfss.post.get_far_field_data(...)
                     Export:     data.export_data_to_csv("xxx.csv")

[9] Abschluss → hfss.save_project()
                hfss.release_desktop(close_projects=False, close_desktop=True)
                Wenn nicht freigegeben, bleibt die Lizenz dauerhaft belegt!

Wie dieses Skill verwenden

Beim ersten Antennen-/HF-Simulationsauftrag

  1. Zuerst references/environment-setup.md lesen – Herausfinden, welche AEDT-Version, Python-Version und ob pyaedt installiert ist. Falls unklar, scripts/check_env.py ausführen.
  2. Dann references/antenna-workflow.md lesen – Das ist die „vergrößerte“ Version der obigen Hauptlinie, mit API-Nutzung und häufigen Parametern für jeden Schritt.
  3. Vor Fehlern kurz in references/common-pitfalls.md schauen – 80% der „Verbindet nicht / Läuft nicht / Ergebnis falsch“-Probleme sind dort aufgelistet.

Beim Schreiben von Code

Wähle aus templates/ das passendste Template, kopiere den gesamten Block und passe ihn an:

AufgabentypTemplate
Einzelprojekt, Einzel-/Multifrequenz-S11/S21 Sweeptemplates/sparam_extraction.py
Fernfelddiagramm, Gewinn, Strahlungseffizienz, 3D-Diagrammtemplates/far_field_pattern.py
Geometrie-/Materialparameterscan, mehrere Ergebnissetemplates/parametric_sweep.py

Die Templates sind eigenständig ausführbare Skripte, die oben einheitlich PROJECT_PATH / DESIGN_NAME / FREQ_* usw. exponieren. Zuerst die Kopfzeilen anpassen, dann den Geometrie-/Randbedingungsteil in der Mitte.

Wichtige Prinzipien

  • Erst klein, dann groß: Bei jedem ersten Lauf eines Skripts setze MaximumPasses auf 3-5 und Sweep-Punkte auf 21. Erstmal die Pipeline durchlaufen lassen, dann verfeinern. Einmaliger Durchlauf mit voller Genauigkeit kostet Stunden.
  • Immer release_desktop: Nicht freigegebene Lizenz = Fehler beim nächsten Start. Umschließe das Skriptende mit try/finally.
  • non_graphical standardmäßig True: Nur wenn Geometrie/Debugging nötig ist, GUI öffnen. Spart Speicher und ermöglicht Parallelisierung.
  • Absolute Pfade verwenden: Relative Pfade zeigen im AEDT-Prozess möglicherweise nicht auf das erwartete Verzeichnis.
  • Variablen bevorzugen: Jedes Maß, das „später geändert werden könnte“, zuerst als Variable anlegen. Nicht als Literal hartcodieren, sonst muss der parametrische Sweep umgeschrieben werden.

pyaedt installieren (falls noch nicht geschehen)

# Empfohlene Kombination (2025 R2 / 2026 R1)
pip install pyaedt

# Altes AEDT mit altem pyaedt (genaue Zuordnung siehe references/environment-setup.md)
pip install pyaedt==0.17.5     # AEDT 2025 R1
pip install pyaedt==0.13.3     # AEDT 2024 R2

Nicht tun

  • Nicht direkt import pyaedt – Seit Version 1.0 offiziell empfohlen: import ansys.aedt.core as pyaedt oder from ansys.aedt.core import Hfss. Alter Code from pyaedt import Hfss funktioniert noch, ist aber deprecated.
  • Nicht new_desktop=True verwenden, wenn GUI bereits AEDT geöffnet hat – Es öffnet einen weiteren Prozess und verdoppelt die Lizenz. Mit new_desktop=False den bereits geöffneten Desktop wiederverwenden.
  • Nicht natives AEDT auf Mac erwarten – AEDT läuft nur auf Windows/Linux. Auf Mac entweder per Remote auf Windows oder PyEDB für EDB statt HFSS verwenden.
  • Nicht hfss.save_project() weglassen – Vor release muss gespeichert werden, sonst sind Änderungen beim nächsten Öffnen nicht sichtbar.
  • Nicht mit zu lockerem MaxDeltaS (>0.05) Ergebnisse ausliefern – Unzureichende Konvergenz zeigt S11 als Rauschen, nicht als Physik.

Referenzdateien-Liste

pyaedt-hfss-antenna/
├── SKILL.md                          ← Das liest du gerade
├── references/
│   ├── environment-setup.md          ← Versionszuordnung, Installation, gRPC/COM, Lizenz
│   ├── antenna-workflow.md           ← API-Details der Hauptworkflow-Linie
│   └── common-pitfalls.md            ← Häufige Fehler und Behebung
├── templates/
│   ├── sparam_extraction.py          ← S-Parameter-Sweep-Extraktion
│   ├── far_field_pattern.py          ← Fernfelddiagramm/Gewinn
│   └── parametric_sweep.py           ← Variablen-Parametrischer Sweep
└── scripts/
    └── check_env.py                  ← Erkennt lokales AEDT/Python/pyaedt

Empfohlene Lesereihenfolge: Dieses Dokument → environment-setup.md → Kopfzeilen der Templates → antenna-workflow.md (bei Bedarf entsprechend des Schrittes) → Bei Fehlern common-pitfalls.md.

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

Verwandte Skills