You are on page 1of 15

Etructura general de un programa de

simulacin dinmica
Caso con esquema temporal

Comienzo
Declaraciones previas
Funciones tiles
Parmetros del problema
Parmetros de la simulacin
Clculos previos
Construccin del estado inicial
Bucle de simulacin
Tratamiento de los resultados de simulacin
Almacenamiento eventual en ficheros
Visualizacin, grficos
Final

Estructura de un programa de
simulacin dinmica

Dclaraciones previas
Datos administrativos (fecha, autor,)
Versin y historial de las modificaciones
Esquema si es posible
Descripcin de lo que hace el cdigo, cmo lo
hace
Constantes universales

Estructura de un programa de
simulacin dinmica

Funciones tiles
Construir funciones tiles para aliviar el
cdigo
Si muchas funciones son necesarias,
agruparlas en ficheros externos
(reutilisacin/capitalizacin, modularidad)

Estructura de un programa de
simulacin dinmica

Parmetros del problema (funcionamiento


batch)
Datos geomtricos
Datos termofsicos
...

Estructura de un programa de
simulacin dinmica

Parmetros de la simulacin
Tiempo inicial, final
Paso de tiempo
Nmero de iteraciones, si es pertinente
Precisin absoluta, relativa, si es pertinente

Estructura de un programa de
simulacin dinmica
Clculos previos
Pretratamiento
Precalcular antes del bucle de simulacin
grupos de valores que no cambian durante la
simulacin (reduccin del nmero de
operaciones que hay que hacer en cada
instante)
Precalcular los trminos fjos del modelo
(matrices,...)
Crear los espacios o variables que van a
servir para almacenar los estados y otras
variables

Estructura de un programa de
simulacin dinmica

Estado inicial
Precalcular antes del bucle de simulacin el
estado inicial del modelo/sistema
Dar a las variables temporales su valor inicial
(el tiempo 0 o t0, el contador de bucle = 0,)
Fijar el antiguo estado al valor inicial, el
antiguo tiempo al tiempo,inicial, ...

Estructura de un programa de
simulacin dinmica

PreBucle de simulacin
Abrir los ficheros de almacenamiento
Poner en esos ficheros las informaciones
necesarias (fecha, hora, cabezera,...)

Estructura de un programa de
simulacin dinmica
Bucle de simulacin
Proceder al incremento temporal (clculo del
nuevo estado en funcin del antiguo)
Almacenamiento sincronizado:
Almacenar los valores que hay que guardar
en los ficheros abiertos
Antiguo valor = nuevo valor
Antiguo tiempo = nuevo tiempo
Antiguo ndice de bucle = nuevo ndice
Test de fn de bucle

Estructura de un programa de
simulacin dinmica
Bucle de simulacin
Test de fn de bucle
Tiempo final conseguido
y/ Nmero de iteraciones mximo conseguido
y/ Valor asimpttico conseguido a x%

PostBucle de simulacin
Cerrar los ficheros de almacenamiento
despus de haber escrito las informaciones
necesarias (tiempo final...)

Estructura de un programa de
simulacin dinmica
Tratamiento de los valores calculados
Post tratamiento
Clculos que hay que aplicar a los datos
obtenidos ants la visualizacin y/ el
almacenamiento
Limpieza de los valores (valores lmites,
formato,...)

Estructura de un programa de
simulacin dinmica

Almacenamiento de los datos


Almacenamiento post bucle
Almacenar los datos formateados

Estructura de un programa de
simulacin dinmica

Visualisacin
Construir los grficos si es necesario

Estructura de un programa de
simulacin dinmica
Trucos, experiencias,
- utilizar un editor que permite poner en evidencia
la estrucura del cdigo (emacs u otro)
- utilizar si es possible un administrador de
versiones (para almacenar y editar)
- si el cdigo es gordo (ms de varias centenares
de lneas), cortar el cdigo en varios ficheros que
agrupan familias de datos, funciones, etc...
- insertar muchos comentarios; no dudar, no
alargan las simulaciones

Estructura de un programa de
simulacin dinmica
Trucos, experiencias,
- utilizar nombres de variables, constantes,
funciones, explcitos de tal manera que el
cdigo sea leible
- si las simulaciones duran mucho tiempo y hay
posibilidad de paradas inesperadas, abrir y cerrar
los ficheros en cada ejecucin del bucle
- si las simulaciones duran mucho tiempo, insertar
la produccin de mensajes que permiten observar
la progresin de los clculos (puede haber
diferentes niveles de mensajes: debugging,
desarrollo, normal verboso, normal silencioso,...)