Siru en Simusol · Documentación · Manual
Plan del 2026-10-04, primer hito implementado. Objetivo: incorporar operaciones nuevas (campo diferencial, Jacobiano y resoluciones lineales) sin cambiar los motores RK, GLM ni PGLM. Selector operativo ROS=[1], ID arbitrario de la familia ROS: metodo ROS2, no RK1 ni PGLM1. Inicialmente paso fijo con ultimo paso acortado, sin listas, adaptacion, mdin, discontinuidades, DT/TICK en el modelo, convoluciones, RERUN ni CONTINUE. Uso y contrato en ROS.md.
Calcula resuelve el modelo residual R(t,y,z)=0 con parametros, tiempo y estados impuestos. Entre las incognitas z estan las derivadas de y y las variables algebraicas. Pedir las derivadas produce el campo reducido f(t,y). Se requiere solucion local unica y suficientemente suave; no se promete soporte DAE de indice alto ni eleccion de ramas de soluciones multiples.
El Jacobiano requerido es J_ij = d f_i / d y_j. No es el Jacobiano de R usado por Newton. El primer proveedor aproxima J por diferencias centrales: perturba un estado, vuelve a resolver TODO z, y diferencia las derivadas resultantes. Tambien calcula la derivada temporal parcial con y fijo; solo necesita EVAL. El quinto hito agrega SENS1 en Calcula para obtener R_z z_y = -R_y y R_z z_t = -R_t, factorizando R_z una vez. Ambos proveedores se conservan y no requieren SWIG.
Coeficientes ROS-2 de KPP, con gamma=1+1/sqrt(2). Usamos vectores columna y J_ij=df_i/dy_j; no trasponemos J. Es un metodo de orden dos y dos etapas. Definiendo M=I-gamma*h*J, las ecuaciones escaladas son:
M k1 = gamma*h*f(t,y) + gamma^2*h^2*f_t(t,y)
M k2 = gamma*h*f(t+h,y+k1/gamma) - 2*k1 - gamma^2*h^2*f_t(t,y)
y_nuevo = y + (3*k1+k2)/(2*gamma)
Se factoriza M una vez por paso y se resuelven dos segundos miembros. El termino f_t no se omite en modelos no autonomos. La estabilidad L del metodo teorico no certifica la exactitud de un Jacobiano obtenido de soluciones numericas ruidosas.
.din ROS autosuficiente: ecuaciones del modelo base, corrida, pares estado/derivada y descriptor versionado. Los p_estado del contrato temporal son resultados del motor, no incognitas ficticias agregadas a Calcula. No volver a interpretar el circuito en Perl..d, .ds, .dat y .din; comprobar exclusiones y rechazar capacidades pendientes antes de simular. Conectar el motor al conductor existente para tiempo y salida atomica; mantener los pasos de RK/GLM/PGLM intactos.| Ampliacion | Motivo |
|---|---|
| Sensibilidades en Calcula | Implementadas como SENS1 y proveedor ROS optativo v5; controles de diferencias y matriz escalada. |
| Escalas de estado/tiempo configurables | Implementadas en descriptor v2, con comprobacion de diferencias centrales y refinamiento acotado. Contrato en ROS.md. |
| Estimador embebido y adaptacion | Implementados en v3: error directo 2(1), reintentos desde el estado aceptado, tolerancias SIRU y limites. |
| Algebra lineal especializada | Sistemas grandes/dispersos y diagnostico de condicionamiento. |
| ROS3/RODAS y variantes W | Reutilizar las capacidades nuevas con contratos y pruebas propios. |
Estado al completar el primer hito: pasos 1-6 implementados dentro del alcance indicado. Las pruebas ROS incluyen la cadena desde .d/.ds/.dat, un .din aislado con OUTPUTS, campos no autonomos y con variables algebraicas, y el circuito de seis elementos contra un calculo independiente. El protocolo de Calcula no se modifico.
Segundo hito: escalas y control de consistencia implementados. El generador escribe v2 con ROS_ESCALAS, ROS_ESCALA_TIEMPO, ROS_DELTA y ROS_CONTROL_JACOBIANO resueltos dentro del din. Se conservan los v1. Se comparan aproximaciones con perturbaciones sucesivas, en unidades adimensionales, sin presentar la coincidencia como garantia de exactitud. Corpus y pruebas incluyen distintas unidades, refinamientos agotados y escalas pequenas. No se toca din.c ni los otros motores.
Tercer hito implementado: estimador embebido de ROS2 y adaptacion temporal, contrato v3. Error directo (k1+k2)/(2*gamma), orden h^2, usando las mismas etapas. El conductor acepta la solucion principal de orden dos y reintenta sin cambiar tiempo ni estado aceptados. Tolerancias SIRU separadas del control del Jacobiano; modo fijo v1/v2 conservado. Un fallo de campo, Jacobiano, LU o protocolo se propaga sin rescatarlo reduciendo h. Corpus y pruebas incluyen rechazos, precision con tolerancias distintas, rigidez, ultimo paso, limites, compatibilidad y din aislado.
El cambio comun del conductor se limita a dos opciones optativas: error_embebido_directo (evita restar estados grandes) y fallo_paso_fatal (evita los rescates de Newton en ROS). Por defecto no afectan RK/GLM/PGLM. No se modifican din.c ni el protocolo de Calcula. La configuracion del generador sigue viniendo de din_config; ros.inc escribe su representacion con errores virtuales e_estado.
Cuarto hito implementado: ROS_TOLERANCIAS por nombre, con respaldo global resuelto en descriptor v4, y estadisticas de intentos, aceptados, rechazos y consultas EVAL en el informe .informe. v1/v2/v3 siguen operativos. El conductor admite un mapa optativo por_estado y un hash de estadisticas; sin ellos conserva el calculo anterior. Pruebas de unidades distintas, din aislado, limites, OUTPUTS y fallos. No se modifica Calcula.
Diagnostico previo: machine.c solo exponia EVAL, SEMILLAS e ITER. El Jacobiano interno de Newton incluye tratamiento especial de colgantes y no es el del campo reducido. Por eso se implemento una operacion nueva sobre los residuos originales del punto convergido, con factorizacion propia.
Despues: medir tiempos en corpus mas grande, mejorar diagnosticos (valores de condicionamiento y variable que falla), algebra dispersa y reutilizacion controlada del Jacobiano entre intentos. mdin/eventos requieren un contrato de reinicio y pruebas propias; no se habilitan como efecto secundario.