]> git.llucax.com Git - z.facultad/75.42/plaqui.git/blobdiff - Model/include/documentation.h
Se arregla el bug que hacia que el cliente levante mal archivos XML grandes.
[z.facultad/75.42/plaqui.git] / Model / include / documentation.h
index 7c8d7745b440d8ec2547dd13f228610f09354021..48cd4f63fb4d370650052e1b79636351fa46816d 100644 (file)
@@ -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
-       (<em>plaqui-model</em>) o como una biblioteca estática y ser compilado dentro de un
+       de este conjunto de herramientas. Puede ser utilizado como un programa independiente
+       (<tt>plaqui-model</tt>) 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 <em>super</em>
+       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 <em>n</em> 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 (<em>update</em>), luego el de simulación (<em>simulate</em>)
-               y por último la actualización de colores.
+               primer paso es el de actualización (<em>update</em>), luego el de simulación
+               (<em>simulate</em>) 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 <em>update</em> 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 <tt>reacción en cadena</tt> hasta llegar a los
+                       Este primer envío da como resultado una <em>reacción en cadena</em> 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 <em>rebotaría</em> 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 <em>limita</em> a enviar solo
+                       en cuenta, el resultado de la simulación es que la bomba se <em>limita</em> a enviar sólo
                        lo que la salida pueda aceptar, pareciendo que se <em>auto regula</em>.
 
-                       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.