Siru en Simusol · Documentación · Manual

PLAN_CAPACIDADES_MOTOR

Plan de ampliación del motor de integración

Fecha original: 2026-10-04. Actualización: 2026-10-06. Estado: plan acordado con los avances explícitos de la tabla siguiente; no se da por terminado el plan completo.

Bloque Implementado al 2026-10-06 Continuación
Corrección previa Historia del predictor igual al resultado aceptado de dos medios pasos; extrapolación con el paso solicitado, e invalidación al cambiar configuración. Conservar las regresiones específicas.
M1 Siru::Paso en GLM y en el conductor RK/PGLM/ROS; ramas aisladas; ControlPaso; estadísticas de intentos, descartes y consultas en el informe. Extender los contratos de modelo/proveedor cuando se incorporen capacidades nuevas; no confundir reinicio con inicialización consistente.
M2 inicial Historia dimensionable, separada de memoria GLM; ramas de comparación independientes; adaptación de Euler, BDF2 efectivo/directo y AB2 con estimador declarado, rechazos y rearranques. Órdenes superiores/variables, coeficientes con más pasos previos, Nordsieck y conversión de memoria para listas.
M3 inicial ServiciosNumericos sobre campo EVAL/SENS1 y LU densa; claves de caché completas, varios segundos miembros y EtapasROS usado por ROS2. Otro método de más etapas con coeficientes y orden verificados; operadores dispersos, productos J·v y otras capacidades cuando se necesiten.
M4 inicial SPLIT: dos subflujos autónomos exactos declarados, composición Lie–Trotter/Strang, mapas generados en C y ejecución de .din aislado. Subflujos aproximados, dependencia temporal, particiones más generales y adaptación.
M5–M8 Sin nuevas implementaciones en este bloque. Mantener la secuencia de capacidades descrita abajo.

Contratos y alcance en CONTRATO_PASO.md, GLM_CONTRATO.md y ROS.md. Las listas de cada etapa describen el objetivo completo, no solo lo entregado.

Objetivo y prioridad

Ampliar primero las operaciones y los contratos que necesita el motor, y después incorporar los métodos que los utilizan. No organizar el trabajo como una sucesión de números nuevos en los catálogos. Cada capacidad se verificará con un método mínimo antes de generalizarla: infraestructura y demostración numérica se entregan juntas.

Este documento fija la prioridad global de continuación. Complementa los contratos vigentes y reemplaza el orden de ampliaciones futuras de PLAN_MOTORES_IMEX.md; no altera las fórmulas ni los selectores actuales. CATALOGO_INTEGRADORES.md conserva el inventario de familias. Cubrir esas familias no significa implementar todas las tablas y variantes posibles.

Base que se conserva

Pieza Base disponible Límite que no debe confundirse con soporte general
RK Etapas explícitas e implícitas; adaptación existente Una tabla de Butcher no describe todas las operaciones de otros motores.
GLM Euler, BDF2 efectivo/directo y AB2, fijos/adaptativos; memoria separada de la historia física Estimador inicial conservador de orden de error 2; faltan orden variable y memoria general. Los dos BDF2 son representaciones de un mismo método.
PGLM Euler IMEX y ARS222 desde tablas aditivas No equivale a cualquier partición de variables o composición de subflujos.
ROS ROS2 fijo/adaptativo; campo por evaluaciones y Jacobiano por diferencias o sensibilidades SENS1 no aporta por sí solo derivadas de orden superior ni un integrador DAE general.
Eventos y topología Caminos existentes para llaves/mdin y tratamiento de quiebres conocidos; GLM tiene rearranques en quiebres No todos los motores admiten esos caminos ni existe todavía localización general de eventos.

Las llaves se siguen evaluando al comienzo del paso, como está decidido y documentado en el README. Incorporar localización de eventos no cambiará silenciosamente esa semántica: será una capacidad distinta, explícitamente solicitada y habilitada por motor.

Responsabilidades y compatibilidad

Componente Responsabilidad
libdin / d2datdinc, en C Único armador de ecuaciones: modelo, particiones, sistemas ampliados y descriptores.
siru, en Perl Conducción temporal, intentos, historia, adaptación, coordinación de eventos y salida; lógica propia de cada método.
Calcula persistente Resolución y evaluación de sistemas, residuos y sensibilidades; ampliar su protocolo cuando una operación nueva lo justifique.
.din Artefacto autosuficiente con ecuaciones, método, coeficientes, controles y declaraciones necesarias para ejecutar.

Reglas permanentes:

Secuencia de capacidades

M1. Intentos transaccionales y conducción común

  1. Definir preparar, intentar_paso, aceptar_paso, descartar_intento y reiniciar; los nombres concretos se fijarán al revisar las interfaces actuales.
  2. Separar el estado confirmado del candidato: tiempo, estados, memoria, parámetros, contadores de selección y cachés dependientes del intento. Registrar por separado el costo de intentos descartados.
  3. Hacer que cada motor entregue candidato, estimación de error cuando exista, diagnóstico y datos propios para confirmar. La historia solo se modifica al aceptar.
  4. Centralizar límites, tolerancias, salida y estadísticas sin imponer el mismo estimador, controlador o política de recuperación a todas las familias. Separar tolerancia temporal y tolerancia del resolvedor.
  5. Revisar también la semilla y el estado mutable de la sesión de Calcula: descartar un intento en Perl no basta si una consulta fallida deja efectos que cambian la rama de solución. Definir qué se restaura, invalida o vuelve a establecer.

Demostración mínima: adaptar progresivamente un camino existente; forzar aceptación, rechazo y fallo de consulta, comprobar que no se publica un candidato rechazado y que el siguiente intento parte del estado confirmado. Mantener las regresiones de RK, GLM, PGLM y ROS.

M2. Historia general y memoria de métodos

  1. Proveer un anillo de estados, derivadas disponibles, tiempos y pasos aceptados, dimensionado por las necesidades declaradas, no por un máximo fijo arbitrario.
  2. Mantener separada la memoria externa de un GLM; explicitar escalas, datos faltantes, arranque y reconstrucción. Añadir otras representaciones, como Nordsieck, solo con transformaciones verificadas.
  3. Permitir ramas independientes de historia para pruebas por subdivisión. No aplicar mecánicamente el ensayo de dos medios pasos de RK a un multipaso.
  4. Admitir coeficientes que dependan de varios pasos previos, no solo de h/h_anterior; fijar límites de razón de pasos y políticas de cambio de orden.
  5. Definir transporte o reinicio de memoria al cambiar de método; tener un anillo grande no demuestra que una lista mixta sea válida.

Demostración mínima: BDF2 y AB2 con intentos de pasos desiguales, rechazo y rearranque, seguidos de adaptación con estimador validado. Después ampliar a BDF de órdenes 1–5, Adams y predictor–corrector. BDF6, NDF y otras variantes requieren validación propia; el número de correcciones de un predictor–corrector debe quedar declarado.

M3. Servicios de evaluación y operaciones numéricas

  1. Describir explícitamente qué proveedor ofrece campo reducido, residuos, Jacobiano del campo, sensibilidades del residuo y resolución lineal. No confundir esos Jacobianos entre sí.
  2. Encapsular escalado, factorización, resolución con varios segundos miembros y diagnóstico de singularidad; preparar extensiones dispersas o productos Jacobiano-vector cuando sean necesarias.
  3. Identificar las condiciones de validez de cada caché: estado, tiempo, paso, parámetros, modelo y topología. Reutilizar solo cuando lo permita el método.
  4. Incorporar al protocolo de Calcula únicamente las operaciones que falten; aprovechar EVAL/SENS1 y verificar precisión, fallos y sesiones persistentes.

Demostración mínima: conservar ROS2 con ambos proveedores y convertir sus etapas en un contrato extensible; añadir posteriormente un Rosenbrock de más etapas para verificar que la interfaz no está ligada a ROS2. No habilitar variantes W sin revisar sus condiciones particulares.

M4. Particiones y subflujos declarados

Primer contrato SPLIT (implementado)

Pieza Decisión
Selector SPLIT=[1] Lie–Trotter: A(h), B(h); SPLIT=[2] Strang: A(h/2), B(h), A(h/2), en orden de ejecución. IDs propios y excluyentes con RK/GLM/PGLM/ROS.
Declaración SPLIT_A=[estado,expresion,...] y SPLIT_B=[estado,expresion,...], con todos los estados, incluso los que no cambian. Son mapas de avance, no derivadas; SPLIT_H es la duración del subavance.
Modelo inicial SPLIT_AUTONOMO=[1] y SPLIT_EXACTOS=[1] son declaraciones obligatorias. Mapas aritméticos de estados, parámetros constantes y duración; no tiempo, derivadas, algebraicas, funciones ni efectos externos. Que sean flujos exactos del modelo es responsabilidad del autor, no una propiedad que el lector demuestre.
Transporte C genera ecuaciones para evaluar el mapa seleccionado en Calcula y un descriptor comentado con mapas, estados y secuencia. Un .din aislado es suficiente.
Conducción Perl compone subavances por una interfaz genérica; solo el paso completo confirma estado, reloj y salida mediante Siru::Paso/Integrador. Fallar un subavance aborta sin publicar una trayectoria parcial.
Límites Paso fijo positivo y último paso acortado; sin adaptación, tiempos no autónomos, .mdin, eventos, convoluciones, DC, RERUN/CONTINUE ni aproximadores internos de subflujo. No se declara terminado todo M4.
Verificación Oscilador con flujos de deriva/impulso exactos, recurrencias independientes, órdenes 1/2, reversibilidad de Strang, fallos entre subavances y equivalencia fuente/din. No se infiere que cualquier composición sea simpléctica.

Referencia de diseño: Blanes, Casas y Murua, Splitting and composition methods. La distinción entre subflujos y su composición guía este contrato; el alcance inicial autónomo es una decisión de Siru.

Declaración Significado Primera demostración
Partición aditiva Varias contribuciones a la misma derivada Reproducir Euler IMEX y ARS222; preparar adaptación propia.
Partición de variables Grupos de estados con ecuaciones y acoplamientos diferenciados Euler–Cromer y Verlet sobre un sistema separable apropiado.
Subflujos Avances de subproblemas que se componen en un orden definido Lie–Trotter y Strang, verificando órdenes uno y dos.

Las particiones se declaran en el modelo, se validan en el generador y viajan en el .din; no se infieren de nombres de ramas. Precisar tratamiento del tiempo no autónomo, intercambio de datos y error de subavances aproximados. Algunos métodos de composición requieren pasos negativos: no admitirlos si el subproblema no los soporta.

M5. Interpolación temporal, eventos y avances anidados

Primera entrega: muestreo de Euler (contrato de implementación)

Pieza Alcance inicial
Entrada RK=[0], SIRU_ADAPT=[0], SIRU_SALIDA_PASO=[delta]; en .d, SIRU OUTPUT STEP = delta. No es otro método de integración.
Interpolación Extensión lineal entre los extremos de cada paso Euler aceptado; orden global uno en modelos suaves. No se extrapola ni se aplica a otros RK.
Grilla desde + k*delta, con fila inicial y final aunque el final no pertenezca a la grilla. No se fuerza al integrador a detenerse en cada salida.
Separación Objeto de intervalo copiado e independiente del proveedor; muestreador sin consultas a Calcula ni modificaciones del estado, historia o reloj. Sólo se publica un intervalo aceptado.
Transporte Descriptor # muestreo v1 en el .din, con método de interpolación, orden, espaciado y columnas/nombres. Fuente y .din aislado producen la misma tabla.
Límites Salidas de estados, modelo suave, un Euler explícito fijo verificado por su tabla; sin algebraicas de salida, adaptación, rescate por subdivisión, llaves/mdin, paradas, convolución, DC/AC, RERUN/CONTINUE, tablas ni funciones propias/externas. Se rechazan quiebres detectados; la suavidad general es responsabilidad del modelo.
Pruebas Igual trayectoria de extremos e igual número de consultas al variar delta; orden también en puntos interiores; inicio no nulo, final acortado, precisión de tiempos, datos no finitos y fallo sin salida parcial.

Esta entrega no implementa eventos. Después se agregará localización optativa de raíces sobre intervalos con interpolación válida, con un contrato explícito de parada/reinicio. No se cambiará la semántica actual de las llaves.

  1. Dar a cada motor una interfaz de interpolación dentro de pasos aceptados, con orden y dominio de validez declarados. Una interpolación lineal universal no conserva el orden de cualquier integrador.
  2. Separar salida en una grilla, quiebres conocidos, condiciones revisadas al comienzo del paso y eventos que requieren localizar una raíz.
  3. Definir después de cada discontinuidad qué estado cambia, qué restricciones se resuelven y qué historia/cachés se invalidan. Habilitar .mdin por motor, con pruebas específicas.
  4. Permitir subintegradores con tiempos, tolerancias e historia propios; coordinar el error de los acoplamientos y las consultas intermedias.

Demostración mínima: salida interpolada de orden comprobado y un evento optativo localizado, conservando el comportamiento de llaves actual. Luego un sistema rápido/lento con subpasos para abrir multirate RK, MIS y MRI-GARK.

La extracción de los ganchos de eventos comienza en M1; esta etapa completa sus operaciones numéricas. M4 y M5 se complementan para multirritmo, pero splitting sencillo no debe esperar a que todo M5 esté implementado.

M6. Operadores lineales y funciones matriciales

  1. Declarar una descomposición apropiada, por ejemplo y' = L*y + N(t,y), con dimensiones, dependencia temporal y forma de aplicar L.
  2. Proveer acciones de exponencial y funciones phi, con tratamiento estable del caso singular o próximo a cero: no definirlas mediante inversión ingenua de L.
  3. Comenzar con matrices pequeñas y control de precisión; evaluar métodos de Krylov para sistemas grandes, sin obligar a formar matrices densas.

Demostración mínima: Euler exponencial y ETD2 en problemas lineales, semilineales y con L singular. Después ETDRK, Lawson y Rosenbrock exponenciales según las operaciones requeridas por cada uno.

M7. Derivadas superiores y series truncadas

  1. Definir representación, orden y propagación de series o derivadas, incluyendo la dependencia temporal.
  2. Determinar qué expresiones, tablas y funciones del modelo son diferenciables y qué proveedor puede tratarlas. Para campos definidos implícitamente, especificar la diferenciación adicional necesaria.
  3. Rechazar operaciones no soportadas; SENS1 no se presenta como diferenciación automática de cualquier orden.

Demostración mínima: Taylor de orden bajo en un modelo suave con derivadas conocidas, comprobando convergencia; ampliar después a orden adaptativo.

M8. Contratos específicos de modelo

Capacidad Operaciones adicionales Primera demostración y límite
Restricciones / DAE Residuo F(t,y,y'), inicialización consistente, Jacobianos adecuados y diagnóstico DAE de índice 1 con solución conocida; no prometer índice arbitrario.
Restricciones geométricas Proyección de posiciones/momentos y estructura mecánica declarada Un problema restringido para SHAKE/RATTLE; no inferir estructura hamiltoniana de un .din genérico.
Retardos Historia inicial continua, consulta del pasado e identificación de discontinuidades propagadas DDE de retardo constante por método de pasos; estado dependiente u otros tipos, después.
Ruido Proceso aleatorio, semilla, incrementos y preservación de trayectoria al rechazar/subdividir Euler–Maruyama con convergencia fuerte/débil apropiada; Milstein exige operaciones adicionales.

Son subproyectos separados sobre la infraestructura anterior, no cuatro banderas que vuelven universal a un integrador ODE.

Familias que se incorporan aprovechando las capacidades

Familia pendiente Infraestructura principal Trabajo que sigue siendo propio de la familia
Más RK, DIRK, SDIRK, ESDIRK, Gauss, Radau, Lobatto y SSPRK Generador existente, M1 y M3 cuando corresponda Coeficientes, estimadores, propiedades y pruebas; TR–BDF2 puede representarse con una formulación RK adecuada.
Adams, BDF, NDF y otros multipaso lineales M1–M3 Arranque, coeficientes variables, orden, estabilidad y estimador.
ROS/ROW/W/RODAS M1 y M3 Tablas de etapas, derivadas temporales, estimadores y condiciones sobre el Jacobiano.
PGLM general, IMEX y simplécticos particionados M1, M3 y M4 Acoplamiento entre particiones y propiedades de cada método.
Splitting y composiciones M1 y M4 Secuencia, coeficientes, tiempos y error de subflujos.
Extrapolación / Bulirsch–Stoer M1 y avances anidados Secuencia de subdivisiones, tabla de extrapolación y control de error/orden.
SDC M1, M3 y avances anidados Nodos de colocación, cuadraturas y barridos de corrección; no es infraestructura Taylor.
Multirritmo M1, M4 y M5 Acoplamiento rápido/lento y presupuesto de error.
Exponenciales M1 y M6 Acciones phi y fórmulas particulares de cada método.
Taylor M1 y M7 Propagación de coeficientes y selección de orden/paso.
Selección automática tipo Adams/BDF M1–M3, con métodos ya validados Detección, histéresis y conversión/reinicio de memoria; no equivale a recorrer una lista.
DAE, DDE y SDE M8 y sus dependencias Validación específica del tipo de problema, no solo de la fórmula de avance.

Cierre de cada ampliación

Secuencia original del primer bloque

Los puntos 1–3 se realizaron; de los puntos 4–5 se entregó el alcance inicial indicado al comienzo del documento. No se da por terminada toda la ampliación de M2–M4.

  1. Inventariar las interfaces reales de Integrador.pm, IntegradorGLM.pm, PGLM.pm, ROS.pm, Campo.pm y Calcula.pm, junto con los descriptores de libdin; determinar qué ya se puede reutilizar.
  2. Escribir el contrato M1 y pruebas de confirmación/descarte con un proveedor controlado, incluyendo efectos de la sesión persistente.
  3. Migrar un camino existente sin cambiar su fórmula ni sus decisiones temporales y verificar sus regresiones; extender después a los demás.
  4. Continuar con M2 y M3, usando métodos existentes para probar las capacidades. La adaptación GLM ya utiliza el contrato de intentos, la historia y el controlador compartidos; las siguientes ampliaciones deben conservar esa separación.
  5. Abordar M4 como primera ampliación de las operaciones matemáticas de avance más allá de los motores actuales.

Ninguna etapa se considera terminada por reconocer su sintaxis. El criterio es capacidad implementada, método de demostración, artefacto autosuficiente y pruebas reproducibles.