PyAEDT HFSS Antena/RF Simulación Skill
¿Qué problema resuelve este skill?
Estandariza el proceso de "un agente usa Python para controlar Ansys HFSS y realizar simulaciones de antena/RF". Te proporciona tres cosas:
- Guía de apretón de manos del entorno — cómo encontrar el AEDT local, usar gRPC o COM, y evitar conflictos de licencia.
- Pipeline estándar de simulación de antena — crear proyecto → modelar → fronteras/excitaciones → configuración del solver → barrido → resolver → postprocesamiento, cada paso proporciona un esqueleto de código que se puede copiar y modificar.
- Tres plantillas de tareas de alta frecuencia — extracción de S parámetros, patrón de campo lejano y barrido paramétrico, que se pueden usar directamente como punto de partida.
No diseña la antena por ti (la geometría, el tipo de alimentación y la banda de frecuencia son trabajo del usuario/ingeniero), solo se encarga de allanar el camino desde "diseño conocido" hasta "obtener resultados de simulación".
Cuándo activarlo
- El usuario dice "simula esta antena con HFSS", "extrae los S parámetros", "barrido de frecuencia de 2 a 6 GHz", "dibuja el patrón de radiación", "muestra la ganancia".
- El usuario proporciona un proyecto
.aedt/.aedtz/.hfssy pide que se ejecute automáticamente / en lote. - El usuario escribe código
import ansys.aedt.core/from pyaedt import Hfss. - El usuario pregunta "cómo iniciar HFSS con pyaedt", "por qué no puedo conectar con AEDT", "qué hago con la licencia ocupada".
Flujo de trabajo estándar (un hilo principal)
Independientemente de la tarea específica, la simulación de antena/RF sigue este hilo principal. Primero crea un mapa mental a lo largo de este hilo, luego salta a la plantilla correspondiente:
[1] Apretón de manos del entorno → Confirmar versión de AEDT + versión de Python + interfaz de comunicación
Consulta references/environment-setup.md
Si no estás seguro, ejecuta primero scripts/check_env.py
[2] Crear / abrir proyecto → Hfss(project=..., design=..., version=..., new_desktop=...)
Clave: non_graphical=True para CI/lotes
new_desktop=False para reutilizar escritorio ya abierto
close_on_exit=True para liberar licencia al finalizar
[3] Modelado geométrico → hfss.modeler.create_box / create_cylinder / create_polyline ...
O usa hfss.modeler.import_3d_cad("xxx.step")
Se recomienda definir primero variables (ver abajo) y luego usar variables para impulsar la geometría
[4] Parametrización de variables → hfss[" $patch_w "] = "30mm" (variable de proyecto, con $)
hfss["patch_l"] = "32mm" (variable de diseño, sin $)
Se recomienda crear variables para todas las dimensiones que puedan barrerse
[5] Fronteras y excitaciones → Frontera de radiación: hfss.assign_radiation_boundary_to_objects(["AirBox"])
Puerto: hfss.lumped_port / hfss.wave_port / hfss.create_floquet_port
Tierra: hfss.assign_perfecte_to_sheets(...)
[6] Configuración del solver → 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] Resolver → hfss.analyze(setup="Setup1", cores=8) # Bloqueante
O hfss.analyze_setup("Setup1")
[8] Postprocesamiento → S parámetros: hfss.post.get_solution_data("S(1,1)")
Campo lejano: hfss.insert_infinite_sphere(...)
hfss.post.get_far_field_data(...)
Exportar: data.export_data_to_csv("xxx.csv")
[9] Finalización → hfss.save_project()
hfss.release_desktop(close_projects=False, close_desktop=True)
¡Si no se libera, la licencia quedará ocupada permanentemente!
Cómo usar este skill
Cuando te enfrentas a una tarea de simulación de antena/RF por primera vez
- Primero lee
references/environment-setup.md— averigua qué versión de AEDT tiene la máquina del usuario, qué versión de Python, y si es necesario instalar pyaedt. Si no está claro, ejecutascripts/check_env.py. - Luego lee
references/antenna-workflow.md— es la versión "ampliada" del hilo principal anterior, con explicaciones detalladas de la API y parámetros comunes para cada paso. - Antes de que ocurra un error, echa un vistazo a
references/common-pitfalls.md— el 80 % de los problemas de "no conecta / no se ejecuta / resultado incorrecto" están listados aquí.
Al escribir código
Ve a templates/ y elige la plantilla más cercana a la tarea, cópiala completa y modifícala:
| Tipo de tarea | Plantilla |
|---|---|
| Proyecto único, barrido S11/S21 mono/multifrecuencia | templates/sparam_extraction.py |
| Patrón de campo lejano, ganancia, eficiencia de radiación, patrón 3D | templates/far_field_pattern.py |
| Barrido de parámetros geométricos/de material, extracción de múltiples resultados | templates/parametric_sweep.py |
Las plantillas son scripts ejecutables de forma independiente, exponen en la parte superior parámetros como PROJECT_PATH / DESIGN_NAME / FREQ_*. Primero modifica la parte superior, luego la parte de geometría/fronteras.
Principios clave
- Primero pequeño, luego grande: la primera vez que ejecutes cualquier script, establece
MaximumPassesde la malla en 3-5, puntos de barrido en 21, primero prueba que el pipeline funcione y luego refina. Hacer todo de una vez puede hacerte perder horas. - Siempre release_desktop: no liberar la licencia = error en el próximo inicio. Envuelve el final del script con
try/finally. - non_graphical por defecto True: a menos que necesites ver la geometría/depurar, no abras la GUI, ahorra memoria y permite ejecución en paralelo.
- Usa rutas absolutas: las rutas relativas pueden no apuntar al directorio que esperas dentro del proceso de AEDT.
- Prioriza las variables: cualquier dimensión que "pueda cambiar", créala como variable, no la escribas como literal, de lo contrario tendrás que reescribir el barrido paramétrico más tarde.
Instalar pyaedt (si aún no está instalado)
# Combinación recomendada (2025 R2 / 2026 R1)
pip install pyaedt
# Para AEDT antiguo, usa pyaedt antiguo (consulta references/environment-setup.md para la correspondencia)
pip install pyaedt==0.17.5 # AEDT 2025 R1
pip install pyaedt==0.13.3 # AEDT 2024 R2
Cosas que no hacer
- No importes pyaedt directamente — desde la versión 1.0, la recomendación oficial es
import ansys.aedt.core as pyaedtofrom ansys.aedt.core import Hfss. El código antiguofrom pyaedt import Hfsssigue funcionando pero está obsoleto. - No uses
new_desktop=Truesi la GUI ya tiene AEDT abierto — abrirá otro proceso, duplicando la licencia. Para reutilizar el escritorio ya abierto, usanew_desktop=False. - No esperes AEDT nativo en Mac — AEDT solo se ejecuta en Windows/Linux. En Mac, o te conectas de forma remota a Windows, o usas PyEDB para procesar EDB en lugar de HFSS.
- No omitas
hfss.save_project()— debes guardar antes de release, de lo contrario la próxima vez que abras no encontrarás los cambios. - No entregues resultados con
MaxDeltaSdemasiado holgado (>0.05) — una convergencia insuficiente hará que el S11 que veas sea ruido, no física.
Lista de archivos de referencia
pyaedt-hfss-antenna/
├── SKILL.md ← Estás leyendo esto
├── references/
│ ├── environment-setup.md ← Correspondencia de versiones, instalación, gRPC/COM, licencia
│ ├── antenna-workflow.md ← Explicación detallada de la API del flujo de trabajo principal
│ └── common-pitfalls.md ← Errores frecuentes y cómo solucionarlos
├── templates/
│ ├── sparam_extraction.py ← Barrido de S parámetros
│ ├── far_field_pattern.py ← Patrón de campo lejano/ganancia
│ └── parametric_sweep.py ← Barrido paramétrico de variables
└── scripts/
└── check_env.py ← Detecta AEDT/Python/pyaedt en la máquina local
Orden de lectura recomendado: este documento → environment-setup → explicación superior de las plantillas → antenna-workflow (mira según el paso que necesites) → si hay problemas, consulta common-pitfalls.