Siru en Simusol · Documentación · Manual

PLAN_MOTORES_IMEX

Motores de integracion e inicio de IMEX

La prioridad global de continuación se actualizó en PLAN_CAPACIDADES_MOTOR.md: ampliar primero las capacidades del motor y verificar cada una con un método mínimo. Ese plan reemplaza el orden de ampliaciones futuras de este documento; se conserva aquí el diseño y el registro de los hitos IMEX.

Estado del 2026-10-04: implementados Euler IMEX (ID 1) y ARS222 (ID 2), ambos desde un generador comun de tablas aditivas. Contrato y uso en IMEX.md y ARS222.md. Los pasos 1-5 estan cumplidos para el primer hito. El paso 7 esta parcialmente cumplido: tablas RK aditivas con c comun, orden 1/2 y descriptor v2, conservando lectura de din Euler v1. Siguen pendientes el conductor comun (paso 6), estimadores, adaptacion y PGLM matricial general. Posteriormente se implemento ROS=[1], ROS2 con Jacobiano del campo reducido y algebra lineal propia: ver ROS.md. EXP, TAYLOR, SPLIT y EXTRAP siguen siendo propuestas de sintaxis, no selectores habilitados.

Conclusiones y decisiones

GLM clasico unifica RK y multipaso lineales, pero no representa por si solo las operaciones de todos los integradores. Se mantienen RK y GLM; no se restaura el selector historico INTEGRADOR. Los numeros son identificadores arbitrarios dentro del catalogo de cada familia, no ordenes ni equivalencias entre familias.

Selector Alcance Estado al comenzar este trabajo
RK Motor historico Existente; conservar sus resultados y listas.
GLM Etapas e historia mediante A,U,B,V Existente; conservar IDs y artefactos.
PGLM Particionado/aditivo, incluido IMEX Primer caso a implementar: Euler IMEX, ID 1.
ROS Rosenbrock y variantes ROS=[1] implementado: ROS2 fijo o adaptativo, Jacobiano del campo y LU. Otras variantes pendientes.
EXP Exponenciales Propuesta; necesita operadores y funciones matriciales.
TAYLOR Derivadas superiores Propuesta; necesita diferenciacion.
SPLIT Composicion de subavances Propuesta; necesita subproblemas definidos.
EXTRAP Subdivisiones y extrapolacion Propuesta; necesita orquestacion y estimador propios.

Los nombres propuestos no anuncian soporte. Una familia o capacidad no disponible debe producir error, nunca caer silenciosamente en RK0. Ser simplectico no define otra familia: algunos RK ya tienen esa propiedad. Las ecuaciones con retardo, ruido y cambios de topologia requieren infraestructura especifica adicional.

Arquitectura objetivo

Pieza Responsabilidad
Generador C, libdin Modelo, particiones, ecuaciones de las etapas y metadatos.
Conductor Tiempo, intentos, aceptacion/rechazo, salida y coordinacion de eventos.
Motor Etapas, memoria, estimacion de error y politica de paso propias.
Calcula persistente Resolver/evaluar los sistemas; futuras operaciones especializadas si hacen falta.

El contrato futuro de cada motor distingue preparar, intentar_paso, aceptar_paso, descartar_intento y reiniciar. Un intento no modifica el estado confirmado. La historia fisica y la memoria de un metodo no son lo mismo. No todos los motores necesitan un anillo ni todos pueden reducirse a una sola resolucion ampliada.

Se conserva la cadena independiente .d/.ds -> .din -> simulacion: el artefacto lleva ecuaciones y descriptor en comentarios, sin necesitar el .dat ni un catalogo externo al correr. El Jacobiano interno del resolvedor de Calcula no se presume equivalente al del campo diferencial que necesita Rosenbrock.

Primer hito IMEX (cumplido; especificacion original)

Se implementa solo Euler IMEX aditivo sobre un sistema que define un campo diferencial univoco. No es aun un generador de cualquier tabla PGLM. La parte explicita se declara por estado; la implicita es la derivada total menos esa contribucion. No se infiere una particion a partir de las ramas del circuito.

Ejemplo propuesto para .ds:

RUN_CONTROLS
PGLM=[1]
IMEX_EXPLICITA=[X,-X]
SIRU_PASO=[0.1]
SIRU_ADAPT=[0]

IMEX_EXPLICITA es una lista de pares estado,expresion; debe cubrir exactamente los estados del modelo, en cualquier orden. La expresion inicial admite numeros, estados, tiempo, parametros y aritmetica + - * / ^ ( ); no variables algebraicas, derivadas, DT, asignaciones, funciones ni separadores internos. Para .d, el control equivalente se escribe IMEX EXPLICITA = [X,-X]. La sintaxis limitada evita atribuir caracter explicito a una expresion que dependa de incognitas de la etapa. Ampliar expresiones y particiones es un hito posterior.

Con F = E + I, las ecuaciones son:

y_nuevo = y + h*(E(t,y) + I(t+h,y_nuevo))
        = y + h*(E(t,y) + F(t+h,y_nuevo) - E(t+h,y_nuevo))

Calcula resuelve el modelo completo en el tiempo futuro y la ecuacion ampliada. E(t,y) solo usa datos del paso; las contribuciones de todos los estados futuros se resuelven juntas. Es Euler IMEX aditivo, no Lie-Trotter ni dos Euler completos consecutivos. El archivo resultante conserva la identidad PGLM y la particion.

Condicion Primer hito
Paso Fijo; ultimo paso acortado para llegar al final.
Adaptacion, listas y RERUN Rechazar.
Llaves, lazos/cortes con mdin, convoluciones Rechazar.
DAE general o indice alto No se promete soporte; el modelo debe determinar las derivadas dados tiempo y estados.
Motor temporal Reutilizar la conduccion de un paso existente mediante un adaptador, sin cambiar RK.
Coeficientes de usuario No habilitados para PGLM en este hito.

Orden de trabajo y comprobacion

  1. Documentar decisiones y primer contrato; crear casos persistentes del corpus.
  2. Reconocer PGLM e IMEX_EXPLICITA en el lector C, con exclusiones y errores precisos.
  3. Generar Euler IMEX en libdin y transportar el descriptor completo al .din.
  4. Seleccionar el adaptador PGLM desde fuente o .din; validar metadatos antes de arrancar Calcula.
  5. Verificar recurrencia independiente, orden uno, rigidez, acoplamiento, no linealidad, tiempos distintos E/I, ultimo paso acortado y equivalencia fuente/din; probar entradas incompatibles y las suites RK/GLM existentes.
  6. Posteriormente extraer la interfaz comun intento/aceptacion y adaptar GLM, con pruebas de regresion. No mezclar ese refactor amplio con la primera formula IMEX.
  7. Generalizar a tablas aditivas con coeficientes por particion y estimador propio; luego splitting, Rosenbrock y las demas familias segun sus capacidades.

Referencias