DWSIM/C3/Custom-Unit-Operation-using-Python/English-timed
| Time | Narration |
| 00:01 | Welcome to this tutorial on simulating a Custom Unit Operation using Python. |
| 00:07 | In this tutorial, we will learn to: |
| 00:10 | Create a custom unit operation using Python |
| 00:14 | Calculate Overall mass and mole flow rate |
| 00:18 | Calculate Enthalpy and outlet pressure |
| 00:22 | To record this tutorial, I am using
DWSIM 5. 6 update 8 (Classic UI) and Windows 10 |
| 00:32 | But, this process is identical in Linux, Mac OS X or FOSSEE OS on ARM. |
| 00:40 | To practice this tutorial, you should know to-
Add components to a flowsheet |
| 00:46 | Select thermodynamic packages |
| 00:49 | Add material streams and specify their properties |
| 00:54 | The prerequisite tutorials are available on our website. |
| 00:58 | You can access these tutorials and all the associated files from this site. |
| 01:04 | We will develop a flowsheet to determine the product stream temperature, pressure , Molar flowrate, compositions and molar enthalpy from a mixer model created using Python. |
| 01:16 | Here we give Inlet Stream Conditions and Pressure calculation parameter of the product stream. |
| 01:22 | DWSIM-Python file used in the tutorial is provided as a code file on our site.
Download the files from Code Files link. |
| 01:33 | I have already opened DWSIM on my machine. |
| 01:37 | Please ensure that DWSIM opens as an administrator. |
| 01:42 | Please note:
If DWSIM is not opened with administrator privileges, the Python unit operation will not work. |
| 01:50 | Go to File menu and click on Open File. |
| 01:56 | I have already downloaded and extracted the file on my Desktop. |
| 02:01 | Select the file from the Desktop. |
| 02:04 | This file already contains all the material streams necessary for this tutorial. |
| 02:10 | Let us maximize the simulation window. |
| 02:13 | Now at the bottom of the main simulation window, go to User Models tab. |
| 02:19 | Here we will add the Python script in the flowsheet. |
| 02:23 | Drag and drop Python Script to the flowsheet area. |
| 02:27 | Let us change the name of this Unit Operation to Custom Mixer. |
| 02:32 | Now, we will connect material streams to inlet and outlet ports of the Custom Mixer. |
| 02:39 | For this click on Custom Mixer. |
| 02:42 | Under Connections, click on the drop-down against Inlet Stream 1.
And select Methanol. |
| 02:51 | Next, click on the drop-down against Inlet Stream 2 and select Water. |
| 02:58 | Then, click on the drop-down against Outlet Stream 1 and select Mixed Product. |
| 03:06 | All the connections are now complete.
Now we will write the code to perform the computation. |
| 03:12 | On the left of the window, click on Open Python Script Editor button. |
| 03:18 | Custom Mixer - Script Editor tab opens. |
| 03:22 | Here we will type the Python script to perform the mixer operations. |
| 03:27 | First, we will import the thermodynamics package and its related functions to the script. |
| 03:34 | Type this code in the script.
This is to import the Thermodynamics Packages and related functions to Python. |
| 03:43 | Now we will extract the input from the feed streams. |
| 03:48 | Type this code in the script.
ims1 and ims2 are the reference to material streams that are connected in Inlet Stream 1 and Inlet Stream 2. |
| 04:00 | They get recorded as feed1 and feed2. |
| 04:05 | Type this code in the script. |
| 04:08 | This is to read the pressure from inlet material streams. |
| 04:12 | Here, the variables P underscore 1 and P underscore 2 store the pressures of Methanol and Water streams. |
| 04:21 | GetProp is a function which is used to extract information from the inlet material stream. |
| 04:28 | GetProp function has 5 arguments. |
| 04:32 | These arguments have to be specified according to the information that needs to be extracted. |
| 04:39 | First argument is the property name. |
| 04:42 | This is to specify the property which has to be stored in the variable.
Here pressure is specified. |
| 04:50 | Second argument is the phase. |
| 04:53 | This is to indicate the phase for which the property specified in the first argument has to be stored. |
| 05:00 | Here Overall is specified. |
| 05:03 | Third argument is the component ID. |
| 05:07 | Since we are storing the pressure of overall stream and not individual components, None is specified. |
| 05:15 | The fourth argument is the calculation type. |
| 05:19 | Here we have to enter Pure or Mixture.
Since the property calculation type doesn’t apply to pressure, we will leave blank here. |
| 05:30 | The fifth argument is the basis. |
| 05:34 | Mole or mass has to be entered here to specify the property basis. |
| 05:40 | Since the property basis doesn’t apply to pressure, we will leave it blank here. |
| 05:46 | Type this code in the script.
This is to read the overall mass flow rates from the inlet material streams. |
| 05:54 | variables massflow underscore 1 and massflow underscore 2 store total mass flow rates of Methanol and Water streams. |
| 06:04 | Type this code in the script.
This code will read the mole fractions of the components from the inlet material streams. |
| 06:13 | Here, we see the variables molefrac_1 and molefrac_2. |
| 06:20 | They store mole fractions of the components from the streams in form of 1 Dimensional array. |
| 06:27 | Type this code in the script. |
| 06:30 | Here, variables moleflow underscore 1 and moleflow underscore 2 store total mole flow rates of the streams. |
| 06:39 | Type this code in the script. |
| 06:42 | This is to read the specific enthalpy from the inlet material streams. |
| 06:47 | Variables enthalpy underscore 1 and enthalpy underscore 2 store the specific enthalpies of the streams. |
| 06:55 | Please note that the fourth argument is specified as a Mixture. |
| 07:00 | Here we are storing the specific enthalpy of the overall stream. |
| 07:05 | So, calculation type is specified as Mixture. |
| 07:10 | Type this code in the script. |
| 07:13 | All the required properties for the outlet stream are initialized here. |
| 07:18 | The variables are initialized as vectors. |
| 07:22 | This makes it easy to set the values in the outlet stream using the SetProp function. |
| 07:29 | Now we will code the calculation routine. |
| 07:33 | First we will calculate the overall mass flow rate of the outlet stream. |
| 07:38 | Type this code in the script.
Total mass flow rate of the outlet stream is calculated and stored in the variable massflow underscore 3. |
| 07:49 | Now we will calculate the overall mole flow rate of outlet stream. |
| 07:55 | Type this code in the script. |
| 07:58 | Total mole flow rate of outlet stream is calculated and stored in the variable moleflow underscore 3. |
| 08:06 | Next we will calculate the specific enthalpy of outlet stream. |
| 08:11 | Type this code in the script. |
| 08:14 | Total enthalpy of the outlet stream is calculated and stored in the variable totalenthalpy. |
| 08:21 | Similarly, specific enthalpy of the outlet stream is calculated and stored in the variable enthalpy underscore 3. |
| 08:30 | Next we will calculate the individual component mole flow rates in the outlet stream. |
| 08:36 | Type this code in the script. |
| 08:39 | Mole flow rates of component 1 and component 2 are calculated and stored in totalmolflow underscore comp1 and totalmolflow underscore comp2. |
| 08:50 | Now we will calculate the mole fraction of components in the outlet stream. |
| 08:56 | Type this code in the script. |
| 08:59 | Component mole fractions are calculated and stored in the variable molfrac underscore 3. |
| 09:06 | Now we will calculate the outlet pressure. |
| 09:10 | Type this code in the script.
Outlet pressure is calculated and stored in the variable P underscore 3. |
| 09:19 | Now we will pass the calculated output variables to the Mixed Product material stream. |
| 09:26 | Type this code in the script.
oms1 is the reference to the material stream connected to the Outlet Stream 1. |
| 09:35 | Type this code in the script.
This is to clear any calculated values stored during previous runs. |
| 09:44 | Now we will pass the calculated output variables to the Mixed Product material stream. |
| 09:51 | Type this code in the script.
This is to pass the calculated specific enthalpy to the Outlet Stream 1. |
| 10:00 | SetProp is a function used to assign values to the output stream. |
| 10:06 | It is a similar function to that of GetProp.
SetProp function has six arguments. |
| 10:14 | First five arguments are same as that of GetProp function. |
| 10:19 | The sixth argument is the output variable. |
| 10:23 | This is to specify the vector variable that we want to assign to that particular property. |
| 10:29 | We want to assign the vector enthalpy underscore 3 to enthalpy of the Outlet Stream 1. |
| 10:37 | Similarly we will pass the remaining calculated variables to the Outlet Stream 1. |
| 10:42 | Type this code in the script. |
| 10:45 | This is to pass the calculated pressure, component mole fractions and total mass flowrate to the Outlet Stream 1. |
| 10:53 | Type this code in the script.
This is to set the flash calculation method for the Outlet Stream 1. |
| 11:01 | out.PropertyPackage.DW_CalcEquilibrium is a function used to set the method of flash calculation used. |
| 11:11 | The default flash calculation method is done with the Temperature and Pressure (TP Flash). |
| 11:17 | Here we do not know the outlet temperature.
So, we set the flash type to Pressure and Enthalpy Flash (PH Flash). |
| 11:26 | The variable at the end of the PropertyPackages.FlashSpec signifies which variable is used for flash calculation. |
| 11:35 | Here in the first argument, we pass the Pressure and in the next we pass the Enthalpy. |
| 11:43 | With this, the Python script is completed.
Now we will run the simulation. |
| 11:49 | So, from the toolbar, click on Solve Flowsheet button. |
| 11:53 | Switch to Flowsheet tab. |
| 11:56 | When the calculations are completed, click on the Mixed Product in the flowsheet. |
| 12:01 | Under Stream Conditions, check Temperature, Pressure and Molar Flow. |
| 12:10 | Let's summarize. |
| 12:12 | In this tutorial, we have learnt to |
| 12:15 | Create a custom unit operation using Python |
| 12:18 | Calculate Overall mass and mole flow rate |
| 12:22 | Calculate Enthalpy and outlet pressure |
| 12:26 | As an assignment,
Create a custom model for a flash column to separate the gas-liquid phase for a mixture of compounds. |
| 12:34 | Calculate the amount of liquid and vapour generated at 0.075 bar. |
| 12:40 | Compare the results with in-built Gas-Liquid Separator available. |
| 12:45 | Watch the video available at the following link.
It summarizes the Spoken Tutorial project. |
| 12:52 | The Spoken Tutorial Project Team
Conducts workshops and Gives certificates. |
| 12:58 | For more details, please write to us. |
| 13:01 | Please post your times queries in this forum. |
| 13:05 | The FOSSEE team coordinates conversion of existing flow sheets into DWSIM. |
| 13:11 | We give honorarium and certificates.
For more details, please visit this site. |
| 13:18 | The FOSSEE team coordinates coding of solved examples of popular books. |
| 13:24 | We give honorarium and certificates.
For more details, please visit this site. |
| 13:31 | The FOSSEE team helps migrate commercial simulator labs to DWSIM. |
| 13:38 | We give honorarium and certificates.
For more details, please visit this site. |
| 13:45 | Spoken Tutorial and FOSSEE projects are funded by NMEICT, MHRD, Government of India. |
| 13:53 | This tutorial is contributed by Kaushik Datta and Priyam Nayak.
Thanks for joining. |