Development of an open source chemical process simulator
Open source software (OSS) development has evolved as a feasible way of developing robust and reliable applications using minimal formal resources. This style of development has been successfully used in diverse fields such as operati~g systems and programming languages. The main characteristic of open source development is that the source code of the application is made available to the users who in tum can modify it and customize it. It is common that the developers of such applications are not employees within a specific company but are programmers with different interests and backgrounds that are distributed around the world. This thesis presents the development of an open source chemical process simulator. The name of the simulator is sim42 and it was coded in the Python programming language. The program uses a modular non-sequential algorithm for solving the flowsheet. This means that a user can specify information at any point of the simulation and the results get propagated backwards and forwards. Sim42 contains a distillation column that employs the Russell inside out algorithm and is capable of solving complex towers with water side draws, pump arounds and side strippers. The most distinctive features of the simulator originate from its design. An important aspect of this design is that unit operations store information in "ports". These "ports" belong to the unit operations themselves; therefore there is no need for "stream" objects in order to connect unit operations (i.e. unit operations connect from port to port regardless of the type of unit operation). "Streams" are available as standard unit operations and they share the same behaviour as any other unit operation including the existence of ports. "Port"-:Vise design allows for any unit operation to be used as a point for a "recycle" without the need of a special unit operation. This can be achieved by introducing values to a "port" as "estimates". The flow of information depends on whether the "estimate" was made in an "input" or "output" "port". The simulator is structured in such a way that unit operations can have "child" unit operations, thus allowing for complex unit operations to be created by using more basic unit operations. An example of this feature is a heat exchanger which is made of a heater connected to a cooler. Each unit operation implements a "Solve" method which in most cases is only responsible of solving itself depending on the information available in its ports. The solver of the simulator is just another unit operation called "Flowsheet" and it can contain any number of "child" unit operations (including "child Flowsheets"). The "Flowsheet" operation also implements a "Solve" method. This method is responsible for propagating information and calling the "Solve" method of the child unit operations. The algorithm of solution of the "Flowsheet" is connected with the existence of "ports" in the unit operations. It is a requirement to have a "Flowsheet" unit operation as the top-most "parent" of a simulation case. There are no restrictions on the thermodynamic model used in any unit operation. This means that any unit operation can have its own set of compounds and be linked to a specific property package. For example, a heat exchanger can have Propane and n-Hexane linked to the Peng-Robinson property package on the cold side of the exchanger and can also have Water linked to a "Steam Tables" property package on the hot side. The simulator was designed with a clear boundary from user interfaces and thermodynamic providers (i.e. independent of such applications). There are a number of user interfaces already developed such as a command line interface; a web browser based interface and a commercial interface based on proprietary tools such as Excel and Visio. The simulator does not provide a thermodynamic calculations server; hence it needs to be linked to an external application in order to perform rigorous equilibrium calculations. Currently, sim42 is linked to a thermodynamic server provided by the Virtual Materials Group which contains a wide number of property packages.
Bibliography: p. 255-265
Cota Elizondo, R. C. (2003). Development of an open source chemical process simulator (Master's thesis, University of Calgary, Calgary, Canada). Retrieved from https://prism.ucalgary.ca. doi:10.11575/PRISM/15852