X-Git-Url: https://git.llucax.com/z.facultad/75.42/plaqui.git/blobdiff_plain/c5c8d16a2d8c4a0ec1a8d3e83104f73512c91001..9322e49b932d824e5664aa8c0e0f9a41464537b1:/Model/include/documentation.h?ds=inline diff --git a/Model/include/documentation.h b/Model/include/documentation.h index 7c8d774..48cd4f6 100644 --- a/Model/include/documentation.h +++ b/Model/include/documentation.h @@ -2,57 +2,75 @@ \section page_model_general Descripción General. El modelo es quien se encarga de la simulación de una planta química dentro - de esta suite de herramientas. Puede ser utilizado como un programa independiente - (plaqui-model) o como una biblioteca estática y ser compilado dentro de un + de este conjunto de herramientas. Puede ser utilizado como un programa independiente + (plaqui-model) o como una biblioteca estática y ser compilado dentro de un ejecutable como lo hace PlaQui Server. - \subsection page_model_general_clases Clases del Modelo + No se utilizó el modelo de grafo para resolver el enunciado ya que presentaba + varias limitaciones importantes, y no hacía que la solución sea más simple. + Como primer desventaja se tenía que en el grafo cada elemento era representado + por un vértice, menos los conductos que eran aristas, lo que hacía que el + objeto grafo sea el único objeto en el modelo. Esto implicaba tener una super + clase que hacía todo el trabajo y la idea de POO es descentralizar y reutilizar. + + Por otro lado, y más importante aún, el modelo del grafo no permitía tener múltiples + circuitos independientes simulados al mismo tiempo. El enfoque utilizado permite + , como se muestra en el ejemplo 2_circuitos.xml, simular n plantas al mismo + tiempo, y conectar unas a otra mediante la lógica de control. + + \subsection page_model_general_clases Clases del Modelo. Para cada elemento que es posible simular, el modelo tiene una clase que se encarga - de ello. También existe una clase Simulator que es quien se encarga de manejar una - simulación, cargar una planta desde un archivo XML y da una interfaz para poder - acceder a propiedades del modelo desde el exterior. + de ello. También existe una clase PlaQui::Model::Simulator que es quien se encarga + de manejar una simulación, cargar una planta desde un archivo XML y da una interfaz + para poder acceder a propiedades del modelo desde el exterior. + + A continuación se puede observar un diagrama de clases del modelo: + \image html clases.png + \image latex clases.eps "Diagrama de clases." width=14cm \subsection page_model_general_simulacion Simulación. - Para entender que es lo que vemos al simular una planta, primero debemos entender - como es que el modelo resuelve la simulación. + Para entender qué es lo que vemos al simular una planta, primero debemos entender + cómo es que el modelo resuelve la simulación. En cada paso de la simulación se realizan 3 tareas por separado, que deben ser ejecutadas de forma correcta, ya que la alteración del orden puede provocar resultados inesperados. El - primer paso es el de actualización (update), luego el de simulación (simulate) - y por último la actualización de colores. + primer paso es el de actualización (update), luego el de simulación + (simulate) y por último la actualización de colores. \subsection page_model_update Update. - El objetivo de esta face es que todos los elementos del modelo calculen el flujo que va a + El objetivo de esta fase es que todos los elementos del modelo calculen el flujo que va a circular por ellos en la iteración actual. Para poder hacer esto, siempre se debe llamar - al update de las bombas únicamente, ya que desde ellas sale el fluido. + al \ref PlaQui::Model::Pump::update "update" de las bombas únicamente, ya que desde ellas + sale el fluido. La bomba envía un mensaje a su salida, consultando por el flujo máximo que el elemento al que está conectado es capaz de manejar, informandole también cual es la capacidad de envío de flujo propio. - Este primer envío da como resultado una reacción en cadena hasta llegar a los + Este primer envío da como resultado una reacción en cadena hasta llegar a los drenajes que tenga el circuito. Cada elemento reacciona de manera distinta y reacciona en base a sus requerimientos. - Cuando la bomba recibe una respuesta de flujo máximo saliente menor a su capacidad, esta + Cuando la bomba recibe una respuesta de flujo máximo saliente menor a su capacidad, ésta se queda con la menor de ambas. Esto es debido a que el conducto no puede soportar más de lo que responde, y el restante que la bomba pueda entregar rebotaría y debería elevar la presión dentro de la bomba hasta explotar. Tambíen aparecerían turbulencias que harían que el flujo sea fluctuante. Sin embargo, como estos parámetros no son tomados - en cuenta, el resultado de la simulación es que la bomba se limita a enviar solo + en cuenta, el resultado de la simulación es que la bomba se limita a enviar sólo lo que la salida pueda aceptar, pareciendo que se auto regula. - La consecuencia de lo explicado anteriormente es por requerimiento del enunciado y simplificacion - del modelo debido al poco tiempo con el que se cuentó para el total del proyecto. + La consecuencia de lo explicado anteriormente es por requerimiento del enunciado y + simplificacion del modelo debido al poco tiempo con el que se cuentó para el total del + proyecto. \subsection page_model_simulate Simulate. - Es esta face, con los flujos actuales a la orden del día, cada objeto se actualiza. + Es esta fase, con los flujos actuales a la orden del día, cada objeto se actualiza. El tanque se suma el flujo entrante y se resta el flujo saliente. \subsection page_model_color Update Color. Aquí comienza una cadena de mensajes similar al del update, pero esta vez se envía hacia - las entradas, y se pide que nos envíe el color. - Entonces, por ejemplo, una union pide un color a cada salida y luego los suma. + las entradas, y se pide que nos envíe el \ref PlaQui::Model::PlantItem::update_color "color". + Entonces, por ejemplo, una unión pide un color a cada salida y luego los suma.