]> 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
        
 \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.
 
        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
                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.
        
        \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
 
                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.
 
                \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
                        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.
 
 
                        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.
 
                        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
                        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>.
 
                        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.
 
                \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
                        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.