Siru en Simusol · Documentación · Manual

IMEX

IMEX aditivo por tablas: Euler y ARS222

Ampliacion descrita en PLAN_MOTORES_IMEX.md. La generacion es C (slex/din/pglm.inc); Siru::PGLM valida el contrato y reutiliza la conduccion de un paso de Integrador. Calcula sigue siendo un ejecutable persistente; no se agregan SWIG ni bibliotecas numericas al proceso Perl.

Selector Metodo Orden
PGLM=[1] Euler IMEX 1
PGLM=[2] ARS(2,2,2) 2

Ambos usan el generador comun y las tablas de slex/d2datdinc/biblioteca/pglm.json. Los IDs no son ordenes; las matrices, ecuaciones y referencia de ARS222 se detallan en ARS222.md.

Seleccion y particion

En RUN_CONTROLS de un .ds:

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

En un .d, la particion se escribe IMEX EXPLICITA = [X,-X], el paso con STARTING STEP SIZE y la adaptacion con SIRU ADAPTIVE STEP = 0. PGLM se escribe igual. El selector no puede coexistir con RK ni GLM.

IMEX_EXPLICITA contiene pares estado,expresion para TODOS los estados, en cualquier orden. Los nombres son los estados reales del generador: se consultan con d2datdinc --topologia. En el circuito de seis elementos son QC3, IL2 e IL23; QC3 es la carga del capacitor, no su voltaje VC3. Si C=1 sus valores coinciden, pero los nombres no son intercambiables.

Las expresiones admiten numeros finitos, estados, parametros y tiempo conocidos por el modelo, con + - * / ^ ( ). No admiten funciones, comas interiores, variables algebraicas, derivadas ni DT. Se rechazan estados faltantes, desconocidos o repetidos, expresiones mal formadas y campos vacios. Es una primera interfaz limitada, no un sustituto del lenguaje completo de ecuaciones.

Formula y generacion

Para el sistema y'=F(t,y), el usuario declara E; se define I=F-E. Euler IMEX hace:

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

No requiere que el generador despeje F simbolicamente. En general copia el modelo residual a cada etapa que necesita I y agrega las ecuaciones de A y b. En Euler esto equivale a:

p_y = y + dt*(E_actual + F_futura - E_futura)

F_futura es la derivada TOTAL en el punto futuro. E_actual solo depende del estado actual, mientras E_futura usa los estados futuros del sistema. Los nombres internos de etapa son imex_sN_variable; estados de etapa y salida se resuelven conjuntamente. No es la composicion de dos pasos Euler completos ni Euler implicito aplicado sin particionar.

Por ejemplo, si F=-11*x y E=-x, queda x_nuevo=x*(1-h)/(1+10*h). La particion importa: elegir E=0 da Euler implicito; elegir E=F da Euler explicito, siempre que F pueda declararse en este subconjunto de expresiones.

Artefacto autosuficiente

d2datdinc --din respeta PGLM=[ID]. La opcion explicita es --din-pglm ID. El archivo ampliado se llama NOMBRE-de-d2datdinc-PGLMID.din; no usa los sufijos ED ni GLM.

El .din incorpora # corrida con metodo PGLM, las secciones habituales y # pglm con un descriptor JSON comentado version 2 que identifica ID, metodo, orden, politica de paso, particion y tablas ae, ai, be, bi, c. bin/siru archivo.din no necesita el .dat, el .d ni un catalogo externo. Se siguen leyendo los archivos Euler version 1 sin tablas. El lector verifica selector, capacidades, estados, variables requeridas y expresiones del descriptor; no demuestra que ecuaciones editadas manualmente sigan correspondiendo al descriptor, igual que en GLM.

Desde siru, con Calcula en PATH:

bin/siru corpus/corpus/IMEX/decaimiento.ds
bin/siru corpus/corpus/IMEX/seis-elementos.d
bin/siru corpus/corpus/IMEX/decaimiento-ars222.ds
bin/siru corpus/corpus/IMEX/seis-elementos-ars222.d

Para no generar resultados al lado del corpus, copiar primero la fuente a un directorio de trabajo; --salida cambia la salida numerica, pero Siru tambien genera informes/logs.

Limites actuales

Aspecto Estado
Metodos Catalogo con Euler IMEX y ARS222; generador comun de RK aditivo, no PGLM general.
Tablas c comun, AE estrictamente triangular inferior y AI triangular inferior, 1 a 16 etapas; orden declarado 1 o 2.
Validacion Dimensiones, numeros finitos, triangularidad, consistencia y condiciones de orden hasta 2. No certifica estabilidad.
Paso Fijo, con ultimo paso acortado.
Memoria Estado actual; no historia multipaso.
Adaptacion, listas y RERUN Rechazados.
Llaves, lazos/cortes con mdin, convoluciones y DT en el modelo Rechazados.
Modelo Debe determinar un campo diferencial univoco dados tiempo y estados; no se promete DAE general ni indice alto.
Fallo No se publica una trayectoria parcial ni se pisa la salida previa.
RK y GLM Conservan motores y contratos anteriores.

La parte explicita conserva sus restricciones de estabilidad; separar terminos no vuelve estable cualquier particion. Restar F-E en aritmetica finita puede perder precision si ambas contribuciones son grandes y casi iguales. Declarar ambas contribuciones independientemente sigue siendo una ampliacion futura. Las tablas por particion ya estan implementadas para el subconjunto RK aditivo descrito.

Verificacion

Verificacion del 2026-10-04: suite completa siru, 550 pruebas en 21 archivos; generador C d2datdinc, 67 pruebas. Todas correctas sobre el arbol disponible al verificar, incluidos los cambios concurrentes de libdin. Los totales pueden crecer al agregarse otras pruebas.

prove -Ilib tests/imex.t tests/ars222.t ejecuta 164 pruebas. No se modificaron los motores numericos RK y GLM ni Calcula para incorporar ARS222. La prueba de orden dos usa refinamientos de paso en el regimen asintotico; con paso 0.2 el caso escalar presenta un orden efectivo de 1.81, sin contradecir la convergencia de orden dos.

prove -Ilib tests/imex.t cubre recurrencias independientes, orden uno, rigidez, no linealidad, tiempos E/I, ultimo paso, limites explicito/implicito, metadatos corruptos y errores. El circuito de seis elementos se compara con Euler implicito (su E es constante) y con una recurrencia matricial independiente. Se comprueba la corrida desde .din aislado.

tests/ars222.t agrega recurrencias independientes escalares y matriciales, orden dos, tiempos intermedios de E e I, rigidez, no linealidad, ultimo paso, limites E/I, compatibilidad con un din Euler version 1 y tablas invalidas. Un catalogo temporal con ID arbitrario 41 y tablas Heun comprueba que la generacion no depende de formulas por ID y que el din corre sin ese catalogo.

Los ejemplos persistentes estan en siru/corpus/IMEX (fuentes: siru/corpus/corpus/IMEX/README.md). El contrato comun de intento/aceptacion, la adaptacion y el motor PGLM matricial general siguen pendientes; las tablas aditivas implementadas son solo un subconjunto.