Siru en Simusol · Documentación · Manual
La revisión y plan de continuación registra los defectos que motivaron el trabajo. H1–H5 tienen implementación; el contrato vigente está en GLM_CONTRATO.md. El núcleo matricial ya se usa para 1/21/30, dentro de los tipos de memoria y capacidades documentados; no implica soporte irrestricto de todos los GLM. El motor RK se conserva.
Entrada en RUN_CONTROLS |
Camino |
|---|---|
RK=[1] |
Integrador RK actual: Euler implícito, índice histórico 1. |
GLM=[1] |
Euler explícito desde su descriptor propio; no depende de RK 0. |
GLM=[20] |
BDF2 por datos efectivos; reutiliza RK 1 tras comprobar que sea Euler implícito. |
GLM=[21] |
BDF2 directo: historia y ecuaciones en el .din. |
GLM=[30] |
Adams–Bashforth 2: memoria de derivadas y arranque Euler explícito. |
GLM=[4,5,2] |
Sintaxis futura de lista cíclica, una entrada por paso aceptado; hoy se rechaza. |
| Ninguno | Conservar el comportamiento histórico (RK=[0] en .ds). |
| Ambos | Error de selección ambigua. |
Los números de GLM son identificadores arbitrarios, no órdenes ni índices RK. Las definiciones residen en slex/d2datdinc/biblioteca/glm.json, compartido por C y Perl. GLM 20 y 21 usan la misma definición matemática BDF2 y difieren en su representación frente a Calcula. Un ID desconocido o una lista no implementada falla antes de simular.
Las relaciones son Y=h*A*F+U*H y H_nuevo=h*B*F+V*H; cada etapa copia las ecuaciones residuales del modelo en t+c_i*h. C genera esas relaciones a partir de las dimensiones del descriptor. Perl evalúa sus coeficientes aritméticos, suministra memoria y acepta el resultado. No hay fórmulas distintas por ID dentro del bucle matricial; la representación efectiva de GLM 20 mantiene su adaptador de compatibilidad.
El descriptor declara versión, capacidades, bloques, tiempos, memoria y arranque. c es independiente de la suma de filas de A: BDF2 usa c=1 aunque A=2/3. Las componentes de memoria admitidas son estados y derivadas escaladas por el paso, con el estado físico como primera componente. Otras representaciones requieren extender y validar el contrato.
La matriz no define por sí sola control de error, eventos ni conmutación segura. Rosenbrock, partición de operadores, métodos exponenciales, estocásticos y otros que no encajen en este contrato conservarían motores propios; una extensión particionada podría evaluarse después para IMEX.
El anillo físico y la memoria externa GLM son distintos. El primero conserva estados, tiempos y pasos aceptados; la segunda contiene los valores que requieren las matrices. Para AB2, Perl conserva la derivada sin escalar y usa h*f_anterior al preparar cada intento. Esto también funciona al acortar el último paso. BDF2 conserva el estado anterior y usa coeficientes dependientes de la razón de pasos.
Ante error no se confirma memoria ni se publica trayectoria parcial. Adaptación, listas, RERUN y topologías .mdin siguen rechazadas. Una lista futura necesita capacidad suficiente y conversión de memoria; no basta ampliar el anillo. Si falta una derivada en el estado aceptado deberá calcularse allí, no sustituirse por otra etapa. Las discontinuidades requieren reconstruir la historia.
Una composición de métodos no hereda automáticamente su orden ni estabilidad. El diseño de esa etapa posterior se detalla en GLM_CONTRATO.md; no está habilitada en el código.
.dinRK conserva -EDNRO.din. GLM 1 usa -GLM1.din, GLM 20 -BDF2.din, GLM 21 -BDF2-DIRECTO.din y GLM 30 -GLM30.din. La separación evita perder la identidad de GLM 1 al ejecutar su artefacto directamente.
Los nuevos archivos llevan metodo GLM y un descriptor JSON completo en comentarios, además de la corrida y estados; no necesitan JSON vecino. Se conservan los BDF2 antiguos con metodo BDF2 e historia comentada. GLM 20 transforma estado, paso y tiempo y por eso rechaza DT en el modelo; 21 usa el paso físico y la historia real en sus ecuaciones. Ambos son BDF2, como explica BDF2_VARIANTES.md.