Siru en Simusol · Documentación · Manual
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.
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.
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.
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.
| 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 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.