/cdpp

An implementation of Cell-DEVS (Discrete-Event System Simulator)

Primary LanguageC++

                   XXX   XX            XXXXXX  XXXX      X      X
                   XXXX  XX           XXX      XX XX     X      X
                   XX XX XX    XXX   XXX       XX  XX  XXXXX  XXXXX
                   XX  XXXX           XXX      XX XX     X      X
                   XX   XXX            XXXXXX  XXXX      X      X

==============================================================================

Version 1.0: La version original de CD++.
	Autores:	Amir Barylko,
			Jorge Beyoglonian.
	Dirigido por:	Gabriel Wainer.

Version 2.0: N-CD++, basada en CD++.
	Autor:		Daniel A. Rodriguez.
	Dirigido por:	Gabriel Wainer.

==============================================================================
N-CD++
1998/1999. Universidad de Buenos Aires.
Facultad de Ciencias Exactas y Naturales.
==============================================================================

v.2.00 a v.2.27 - SEPTIEMBRE/1998 a ENERO/1999
	EXTENSION DE VALORES DE CELDAS - EXPANSION DEL LENGUAJE
	No fueron documentados los cambios realizados a cada version.

v.2.28	ENERO/1999 - PUERTOS
	Administracion de los puertos OUT en forma dinamica.

	Incorporacion de la funcion SEND para el envio de valores a traves
	de un puerto.


v.2.29	FEBRERO/1999 - N-DIMENSIONAL
	Incluye todo lo que es manejo de espacio de celdas n-dimensional.
	Pero solo esta implementado internamente. No se modifico GADCelLa,
	por lo que solo pueden seguir simulandose espacios bidimensionales
	pero que internamente trabaja como si fuese n-dimensional (ya no
	hay pares (x,y) sino listas {x1, ..., xn} y cosas por el estilo.

	Se extendio el vecindario de una celda, para que sus vecinos no sean
	necesariamente adyacentes a la misma.

	Bugs encontrados de versiones anteriores:
	* De la version original: el constructor de CellState tenia un
		array de punteros a Real. Para cada posicion del mismo
		hacia un new Real, pero nunca pedia espacio para el
		array en si.


v.2.30	MARZO/1999 - N-DIMENSIONAL
	El lenguaje GADCelLa ahora permite la definicion de modelos celulares
	n-dimensionales.
	
	Se mejoro el DRAWLOG. Ahora permite mostrar los graficos de los
	modelos cuando la dimension es 2 (como siempre), 3 (muestra por
	slices, en forma semejante al de 2 dimensiones) o mas (en este ultimo
	caso se muestra un listado que contiene la posicion de la celda y el
	valor en cada instante de tiempo). El drawlog detecta automaticamente
	la dimension del modelo y muestra el grafico adecuado.


v.2.31	ABRIL/1999 - OPTIMIZACION Y EXTENSION LENGUAJE
	Se mejoro la evaluacion de las reglas, con lo que AND, OR, XOR e IMP
	no siempre evaluan todos sus parametros, sino que lo hacen solo
	cuando es necesario debido a que en algunos casos alcanza con solo
	evaluar el primer parametro para generar una respuesta (por ej: si
	tengo x1 AND x2, y al evaluar x1 me da FALSE entonces la respuesta
	sera FALSE).

	Se agrego el modulo de Macro Expansiones.


v.2.32  ABRIL/1999 - OPTIMIZACION
	Se arreglo un grave error producido por el modulo nTupla, el cual
	no liberaba bien memoria. Para esto se redefinio completamente el
	modulo, aprovechando la situacion para optimizar ciertas funciones.

	Se agrego el modulo EvalDebug usado para redireccionar los distintos
	resultados segun los parametros indicados al simulador.
	
	Se revisaron gran parte de los modulos con el objetivo de optimizar
	las funcionalidades de los mismos.


v.2.33	MAYO/1999 - EXTENSION LENGUAJE
	Se agrego la funcion cellPos(i) que devuelve el elemento xi de la
	celda (x1,x2,...,xn) que esta actualmente ejecutando la funcion de
	transicion interna.

	Se mejoro la forma de mostrar en pantalla el modo de DEBUG de las
	reglas.


v.2.34	29/5/1999 - TESTEO
	Se agrego la herramienta makeRand para la generacion de valores
	aleatorios usados para evaluar los modelos con N-CD++.


v.2.35	04/6/1999 - TESTEO
	Arreglo de bug: No liberaba bien la memoria en el modo FLAT.
	Esto se debia al uso de LIST (de la STL) que aparentemente no
	funciona correctamente. Se creo el modulo MYLIST que contiene
	una implementacion de una lista para almacenar el vecindario.

	Se agrego el parametro -s al simulador, el cual muestra la hora de
	fin de simulacion por stdErr. De esta forma es posible redireccionar
	la salida estandar a un archivo, y el stderr a otro, junto con la
	informacion arrojada por el comando TIME (evaluando los tiempos de
	ejecucion de la herramienta).


v.2.36  06/6/1999 - OPTIMIZACION
	Se mejoro el modulo MYLIST optimizandolo para que sea mas rapido.

	Se optimizo la carga de valores iniciales de las celdas de un archivo
	de tipo .VAL, usando un buffer, reduciendo las lecturas del disco.

	Se arreglo un bug generado al introducir la lista MYLIST en la
	version 2.35.


v.2.37	13/6/1999 - OPTIMIZACION
	Se agrego la clausula InitialMapValue para la carga de valores
	iniciales en los modelos usando archivos .MAP.

	Se agrego el modulo toMap, para convertir archivos .VAL a .MAP.

	Se optimizo el seteo de valores a las celdas, tanto en modo
	jerarquico como achatado.

	Se optimizaron las funciones que trabajan sobre strings.

	Se agrego la opcion -O3 al Makefile, para crear versiones finales
	optimizadas por el compilador.


v.2.38	26/6/1999 - MENSAJES
	Se modifico el procedimiento Receive de Coordinator para el caso
	en que se recibia un mensaje representando un evento externo.

	Se agrego el modulo toCDPP, para convertir archivos .VAL a .MA
	soportados por CD++.


v.2.39	27/6/1999 - MODELO ACHATADO
	Se reemplazo la XYList por un Arreglo de VirtualPortList, lo que
	permite realizar un acceso mucho mas rapido a los puertos de una
	celda.

	Se modifico el modulo de Macros pues en ciertos casos incluia 2
	veces la ultima linea del archivo original.


v.2.40	18/7/1999 - BUGS - QUANTUM
	Se arreglo el manejo de Zonas, que no funcionaba bien.

	Se cambio el Makefile para Windows95, para que el compilador no
	optimice el codigo (-O3) para el modulo MacroExp pues genera errores
	de ejecucion. Para Linux funciona bien.

	Se agrego la opcion -q al simulador, que permite usar un quantum
	para el calculo de los valores de las celdas.

	Se agrego el parametro -w al simulador, para cambiar el ancho y la
	precision de los numeros reales que son mostrados por el simulador
	(ya sea en el archivo de log, en el de eventos de salida, en el modo
	de debug para la evaluacion de las reglas (-v), etc).

	Se agregaron nuevos parametros a MakeRand (para la generacion de
	valores para el Pinball y la Dispersion de Gases).


v.2.41	25/7/1999 - BUGS - PREPROCESADOR
	Se cambio el Drawlog que hacia comparacion de strings case sensitive
	en ciertos casos.

	Preprocesador de Macros: Ahora permite incluir varias macros en una
	misma linea.

	Preprocesador de Macros: Permite al usuario el ingreso de
	comentarios, que son ignorados por el preprocesador y no son pasados
	a N-CD++.

	El modulo del Preprocesador crea el archivo en el directorio
	especificado por la variable P_tmpdir de <stdio.h>.
	Si este directorio apunta al raiz, busca en las variables de entorno
	el directorio asignado a TEMP y si no esta el asignado a TMP.
	Si no lo encuentra deja el temporario en el directorio actual.


v.2.42	17/9/1999 - BUGS
	Se arreglo la clase InertialDelayCell, pues trabajaba mal con el
	vecindario en el momento de calcular la funcion de computo local.


v.2.43	10/10/1999 - BUGS - MAKERAND
	Se arreglo la impresion del vecindario cuando se generaba una
	excepcion, porque en todos los casos no funcionaba correctamente.

	Se cambio el formato del MakeRand a traves del uso de los parametros
	-i y -r.


v.2.44	22/11/1999 - BUGS - OPTIMIZACION
	Se cambio la lista de vecinos por una lista inversa de vecinos, para
	que funcione correctamente, dado que en algunos casos no se enviaban
	los mensajes a quien correspondia.

	Se optimizaron los modulos de FLATCOUPLED, TIME y NTUPLA.

	Se modifico la impresion del CellState pues mostraba estados
	indefinidos en casos que no debia.

v.2.45	07/12/1999 - BUGS - SALIDA DRAWLOG
	Se arreglo un bug que perdia eventos futuros.

	Se agrego el parametro -f al DrawLog para ver determinado slice de
	un automata celular en 3D.