FEM / CAE — estructural · térmico · CFD · multifísico
Este skill gobierna afirmaciones ingenieriles — no controla solvers ni firma diseños. Se empareja con un controlador de solver / MCP (PyMAPDL, PyMechanical, un controlador de Abaqus / OpenFOAM, OASiS, un MCP de CAE) que ejecuta; este skill decide si un resultado puede ser afirmado, a qué altitud, y cuándo un humano debe decidir.
Resumen
Gobierna el análisis de elementos finitos y CAE de principio a fin. Emparejado con un ejecutor (PyMAPDL, PyMechanical, PyFluent, un controlador de Abaqus/OpenFOAM, un MCP de CAE — ver "capa de gobernanza, no el ejecutor" más abajo) el ejecutor localiza el solver instalado, construye el script/archivo de entrada, y lanza sin cabeza/por lotes; este skill guía y audita la idealización, lee el registro para convergencia, inspecciona/analiza resultados, y aplica prácticas profesionales (idealización → mallado → conexiones → controles de solución → convergencia → independencia de malla → V&V) en cada ejecución. La metodología es agnóstica al solver; la profundidad trabajada aquí es Ansys / Simcenter / Thermal Desktop, con amplitud en Abaqus, LS-DYNA, MSC/Simcenter Nastran, COMSOL, OpenFOAM, Fluent, CFX, STAR-CCM+, CalculiX, Code_Aster (ver references/software-landscape.md).
Principios fundamentales (aplicados como compuertas):
- Ningún resultado es confiable hasta que su error de discretización (malla/paso de tiempo) sea abordado — acotado y declarado en INGENIERÍA (p. ej., cambio en la QoI del último refinamiento, o una estimación ZZ/SPR de malla única), completamente demostrado con un estudio GCI en el rango asintótico para APROBACIÓN; un número de malla única reportado sin ninguna declaración de error nunca es un resultado. Además de las comprobaciones de convergencia a continuación.
- Converger la Cantidad de Interés (QoI), no el pico — los picos en esquinas afiladas/cargas puntuales/puntas de grieta son singularidades que nunca convergen.
- La mayoría del error nace en el preprocesamiento (idealización, condiciones de contorno, conexiones) — carga esas decisiones al frente.
- Verificación antes que validación; calificación ≠ validación — y un agente no debe afirmar aprobación sin evidencia de ejecución.
Este SKILL.md es el enrutador. La profundidad vive en references/ — carga una referencia solo cuando su tema está en juego.
Cuándo usar
- Estructural (estático/modal/pandeo/no lineal/explícito), térmico (estacionario/transitorio/radiación), CFD (RANS/LES, CHT), electromagnético (baja/alta frecuencia), vibro-acústica/NVH, multicuerpo, y multifísico acoplado (termo-mecánico, FSI, EM-térmico).
- Falla y durabilidad: fractura/tolerancia al daño, fatiga (incl. vibracional/espectral), compuestos, plasticidad/acomodación/ratcheting, pandeo y estabilidad, impacto/choque/caída.
- Contacto, resistencia de contacto térmico, conexiones atornilladas/soldadas/rígidas; mallado e independencia de malla (GCI); selección de elemento/solver/unidad.
- Resolución sin cabeza/por lotes y análisis de resultados; optimización, calibración, identificación de parámetros inversa / actualización de modelo.
- V&V / UQ; subestructuración/ROM; térmico criogénico/vacío/nave espacial.
- Decidir lo que el agente puede automatizar sin cabeza vs lo que un humano debe hacer (siguiente sección).
No para: modelado CAD puro o problemas mejor resueltos con un cálculo manual de forma cerrada.
★ Capacidad del agente y contrato sin cabeza-vs-humano
Exactamente quién hace qué. Cubos: AGENTE-SIN-CABEZA (totalmente scripteable/por lotes, sin GUI) · AGENTE-VÍA-API (API Python/journal, necesita una sesión + licencia) · HUMANO-GUI (debe ser interactivo al menos una vez) · JUICIO-HUMANO (decisión de ingeniería que el agente no debe tomar solo) · LICENCIA-RESTRINGIDA. Detalle completo por plataforma: references/agent-automation-boundary.md.
| Operación | Clasificación | Cómo / por qué |
|---|---|---|
| Importación CAD | AGENTE-VÍA-API | PyMAPDL/PyMechanical/run_journal importan STEP/Parasolid |
| Limpieza geométrica / desafeitado pesado | AGENTE-VÍA-API + JUICIO-HUMANO | desafeitado/pellizco scripteable; reparación desordenada + qué desafeitar es juicio |
| Mallado | AGENTE-SIN-CABEZA (Ansys) · SEMILLA-EN-GUI (NX) | PyMAPDL/PyMechanical mallan completamente sin cabeza; las plantillas .fem/.sim de NX no se resuelven en lote → sembrar una vez en GUI |
| Crear/asignar material | AGENTE-SIN-CABEZA | scripteable en todas las plataformas; proporcionar datos dependientes de T |
| Contactos / conexiones | AGENTE-SIN-CABEZA (construir) + JUICIO-HUMANO (tipo) | definir es scripteable; pegado vs friccional / RBE2 vs RBE3 es una elección de ingeniería |
| Condiciones de contorno y cargas | AGENTE-SIN-CABEZA | scripteable; el agente no debe inventar el caso de carga |
| Exponer parámetros para optimización | AGENTE-SIN-CABEZA (PyMAPDL *SET) · HUMANO-GUI (Workbench P#, Expresiones NX, etiquetas HEEDS) | solo PyMAPDL es libre de GUI para parametrización |
| Resolver (estacionario/transitorio/no lineal) | AGENTE-SIN-CABEZA + LICENCIA-RESTRINGIDA | ansys -b, nastran.exe, tmgnx, abaqus job=, fluent -g, OpenFOAM, cfx5solve -batch, starccm+ -batch |
| Resolución electromagnética (máquinas/RF/eddy) | AGENTE-VÍA-API + LICENCIA-RESTRINGIDA | PyAEDT (import ansys.aedt.core, non_graphical=True), COMSOL/getDP batch; puertos/excitaciones/barridos son configuración de ingeniería |
| Optimización / DOE / calibración | AGENTE-SIN-CABEZA (PyMAPDL+SciPy, optiSLang -b, CLI HEEDS) + GUI-AUTOR-UNA-VEZ | redactar el estudio/etiquetas en GUI una vez, luego ejecutar sin cabeza |
| Extracción de resultados | AGENTE-SIN-CABEZA | PyDPF, pyNastran (.op2/.f06), .odb, .out de SINDA, CGNS/VTK |
| Imágenes/gráficos post | AGENTE-SIN-CABEZA | pyvista fuera de pantalla, ParaView pvbatch |
| Correlación / actualización de modelo (MAC, emparejamiento de nodos) | HUMANO-GUI | el emparejamiento interactivo de nodos prueba↔análisis es trabajo de GUI |
Autoría de plantilla / .sim / proyecto (NX) | HUMANO-GUI | el registro de plantillas no se inicializa sin cabeza → crear previamente una semilla, luego conducirla |
| Licenciamiento | LICENCIA-RESTRINGIDA | cada instancia de solver paralela consume su propio asiento |
Un agente NUNCA debe auto-hacer: elegir idealización / elemento / tipo de contacto / BC solo (JUICIO-HUMANO) · aceptar una perilla de calibración fijada en su borde de corredor físico · reportar un pico singular o un resultado no convergido como un resultado · afirmar verificación / independencia de malla / aprobación sin la evidencia de ejecución · realizar un push/sobrescritura irreversible sin autorización.
Emparejamiento y contrato del ejecutor
Este skill es la capa de gobernanza, no el ejecutor. Emparejarlo con lo que sea que conduzca el solver (PyMAPDL, PyMechanical, un controlador de Abaqus / OpenFOAM, OASiS, un MCP de CAE): el ejecutor corre; este skill gobierna la afirmación. No confíes en ninguna salida de solver sin procedencia — un resultado es creíble solo cuando el ejecutor devuelve:
- Manifiesto de ejecución (
run_manifest.json, plantillascripts/run_manifest_template.json) — la columna vertebral de trazabilidad (NAFEMS R0033). - Nombre del solver + versión exacta — leído del banner/
-helpde la instalación detectada, nunca asumido. - Hash del archivo de entrada + hash del archivo de resultado (p. ej., SHA-256 del
.inp/.dat/.cdby del.rst/.rth/.op2) — vincula un número al archivo de entrada exacto y al resultado que lo produjo. - Evidencia de comando + bandera — la línea de lanzamiento real, banderas verificadas contra esa versión (regla de comandos alineados con la versión, Paso 0).
- Espacio de trabajo aislado — un directorio de trabajo limpio; las salidas escritas allí, nunca sobrescribiendo un "final" anterior sin un puntero
superseded_by.
Un resultado que carece de esta procedencia es un artefacto SMOKE/DEBUG en el mejor de los casos — redáctalo como tal (references/claim-templates.md).
Modos de ejecución (elige uno por tarea — establece las compuertas obligatorias y lo que puedes afirmar)
| Modo | Cuándo usarlo | Compuertas obligatorias | Nunca |
|---|---|---|---|
| SMOKE | probar que env/deck/solve/parse funciona | Paso 0; solve se completa; archivo de resultado escrito y legible | afirmar cualquier número de ingeniería; ajustar cualquier cosa |
| DEBUG | encontrar la causa de una falla | la única prueba decisiva para el síntoma; compuerta de conectividad si térmico | presentar un solve de diagnóstico como un resultado |
| INGENIERÍA | resultado usable + comprobaciones de cordura | unidades; conectividad; balance de reacciones/calor/masa; convergencia; extracción de QoI; comprobación de singularidad | afirmar aprobación; reportar un pico singular |
| APROBACIÓN | entregable defendible | toda INGENIERÍA + independencia de malla y paso de tiempo (GCI, rango asintótico) + informe trazable + cotas de error | saltar cualquier compuerta; menospreciar la incertidumbre |
Un resultado SMOKE/DEBUG es una comprobación de tubería/física, nunca una conclusión de ingeniería — etiquétalo.
★ Auto-comprobación previa a la afirmación — responde TODO antes de declarar cualquier número de ingeniería
Esta es la compuerta que hace que el skill sea confiable. Antes de que escribas una tensión, temperatura, frecuencia, margen, arrastre, o "pasa", responde estas preguntas. Si alguna respuesta es no / desconocido, no tienes un resultado — tienes una salida SMOKE/DEBUG: dilo y detente.
- ¿Modo? ¿En qué modo de ejecución estoy, y han pasado sus compuertas obligatorias? (SMOKE/DEBUG ⇒ no es una conclusión de ingeniería.)
- ¿Unidades? ¿Sistema consistente verificado (1g-masa / comprobación de cálculo manual)? ¿No está la densidad corrupta por unidades?
- ¿Error de discretización abordado? ¿Error de malla y paso de tiempo acotado y declarado (GCI para APROBACIÓN; estimación ZZ/SPR de malla única para INGENIERÍA)? Un número solitario de malla única nunca es un resultado.
- ¿Singularidad excluida? ¿Está la QoI en una esquina / carga puntual / artefacto de punta de grieta? Leer lejos o linealizar antes de citar.
- ¿Balance comprobado? ¿Reacción = aplicada; balance de calor/masa/energía dentro de tolerancia; convergencia del historial residual, no del código de salida?
- ¿Permisible nombrado? ¿Hay un margen vs un criterio / código de diseño NOMBRADO — no un número desnudo?
- ¿Compuerta de juicio humano cruzada? ¿Elegí silenciosamente un caso de carga, tipo de contacto, permisible, desafeitado o aprobación? Si sí — DETENTE y escala (
references/escalation-examples.md).
Luego redacta el resultado con la plantilla correspondiente en references/claim-templates.md. El agente nunca afirma aprobación sin evidencia de ejecución, y nunca se auto-autoriza una decisión de ingeniería. Las banderas exactas del solver / llamadas API son en sí mismas una afirmación — confírmalas según la regla de comandos alineados con la versión en el Paso 0.
Paso 0 — SIEMPRE primero: descubrimiento del entorno
Nunca asumas una versión o ruta. Encuentra lo que está instalado/con licencia, luego confirma plataforma + física + QoI.
Get-ChildItem "C:\Program Files\ANSYS Inc" -Recurse -Filter "ANSYS*.exe" -ErrorAction SilentlyContinue | Select FullName # MAPDL/Mechanical/Fluent/CFX
Get-ChildItem "C:\Program Files\Siemens" -Recurse -Include "nastran.exe","run_journal.exe","tmgnx.cmd","ugraf.exe" -ErrorAction SilentlyContinue
Get-ChildItem "C:\Program Files" -Recurse -Filter "abq*.bat" -ErrorAction SilentlyContinue # Abaqus; también `which icem`, OpenFOAM `foamVersion`
$env:ANSYSLMD_LICENSE_FILE; $env:LM_LICENSE_FILE
(Get-CimInstance Win32_Processor | Measure-Object NumberOfCores -Sum).Sum # Núcleos FÍSICOS
Linux: ansysNNN -b, nastran, abaqus, simpleFoam, fluent -g; comprobar $LM_LICENSE_FILE, nproc.
Comandos alineados con la versión (regla): nunca emitas un comando de solver, bandera o llamada API que no hayas verificado que existe en la versión detectada — las versiones renombran banderas y derivan APIs. Confirma contra la -help/docs de la versión instalada antes de confiar en ella, especialmente para INGENIERÍA/APROBACIÓN.
Flujo de trabajo canónico (ejecutar en orden)
- Objetivo + QoI — el escalar que impulsa la decisión (margen, deflexión, frecuencia, pico de T, arrastre). No "ejecutar el modelo."
- Tipo de análisis — estático/modal/pandeo/térmico/CFD/acoplado; lineal vs no lineal (¿material? ¿gran deflexión? ¿contacto? ¿turbulencia?).
- Idealizar (la más consecuente) — 1D/2D/3D; simetría solo si la geometría y las cargas y las BC son simétricas; desafeitar características irrelevantes. →
references/meshing-convergence.md. - Materiales — modelo constitutivo correcto; propiedades dependientes de la temperatura; en criogénico usar ∫α(T)dT. →
references/material-modeling.md. - Malla — orden/familia del elemento, refinamiento en concentraciones, compuerta de calidad. →
references/meshing-convergence.md. - Conexiones y contacto. →
references/mechanical-connections.md,references/thermal-contact-resistance.md. - Condiciones de contorno y cargas — eliminar solo los modos de cuerpo rígido apropiados para la dimensionalidad/tipo del modelo (un sólido 3D no restringido tiene 6; los modelos 2D, axisimétricos, solo de lámina y de simetría cíclica difieren); cargas sobre áreas realistas (nunca cargas/restricciones puntuales → singularidades); alivio de inercia para cuerpos libres. →
references/advanced-methods.md. - Controles de solución — tipo de solver, núcleos, subpasos + tolerancias. →
references/solver-numerics.md. - Verificar — equilibrio, independencia de malla/paso de tiempo, historial de convergencia. →
references/vv-uq.md. - Validar — vs prueba / cálculo manual / benchmark NAFEMS (calibración ≠ validación).
- Post e informe — medida correcta, comprobación de promediado vs no promediado, márgenes, supuestos declarados.
Unidades consistentes (elige UN sistema; los solvers son sin unidades)
| Sistema | Longitud | Fuerza | Tensión/E | Masa | Densidad (acero) | g |
|---|---|---|---|---|---|---|
| SI (m) | m | N | Pa | kg | 7850 kg/m³ | 9.81 m/s² |
| mm-t-s (CAE común) | mm | N | MPa | tonelada | 7.85e-9 t/mm³ | 9810 mm/s² |
La densidad es el corruptor silencioso: la densidad con unidades incorrectas pasa la estática pero arruina cada resultado dinámico/explícito/transitorio-térmico. /UNITS de MAPDL es solo metadatos. Verifica con una comprobación de masa de 1g o una frecuencia natural de cálculo manual.
Selección de elemento y calidad de malla (profundidad: references/meshing-convergence.md)
- Cuadráticos (nodos medios) para tensión/geometría curva, esp. tets — evitar TET4 lineal para tensión (deformación constante → demasiado rígido, convergencia de tensión lenta; aceptable solo como relleno lejos de la QoI). Lineal para explícito/gran deformación. (Bloqueo por corte afecta a cuads/hexs lineales completamente integrados en flexión — corte parásito; arreglar con integración reducida, modos incompatibles o cuadráticos — no el mismo defecto que la rigidez de deformación constante de TET4.) Los sólidos cuadráticos modernos resuelven flexión suave con ~1 elemento a través del espesor como punto de partida (impulsado por curvatura — confirmar por convergencia); los elementos lineales necesitan varios, y la flexión crítica para precisión quiere ≥2 cuadráticos.
- Lámina si espesor/longitud ≲ 1/10–1/20; sólido para tensión 3D/a través del espesor; viga para esbelto. Contabilizar p...