X-Git-Url: https://git.llucax.com/z.facultad/75.42/plaqui.git/blobdiff_plain/c5c8d16a2d8c4a0ec1a8d3e83104f73512c91001..6dd05bd84faebf6d7e9e36a0f1dd040ef9fb24a3:/Model/include/documentation.h
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.