Team Ai
Apppublic

HuzaifaM/Distillation_Column_Design

sourceHugging Faceupdated 2y agoView on Hugging Face
0likes
app.py96 linesDownload Raw Back to root
1import streamlit as st2import numpy as np3import pandas as pd4from scipy.optimize import fsolve5 6# Function Definitions7def calculate_theoretical_stages(feed_composition, distillate_composition, bottoms_composition, relative_volatility):8    """9    Calculates the number of theoretical stages using the Fenske equation.10    """11    try:12        stages = np.log((distillate_composition / bottoms_composition) * 13                        ((1 - bottoms_composition) / (1 - distillate_composition))) / \14                 np.log(relative_volatility)15        return max(int(np.ceil(stages)), 1)  # At least one stage16    except Exception as e:17        return f"Error in calculation: {str(e)}"18 19def calculate_column_area(flow_rate, density, velocity):20    """21    Calculate the column cross-sectional area using superficial velocity.22    """23    try:24        area = flow_rate / (density * velocity)25        return area26    except Exception as e:27        return f"Error in calculation: {str(e)}"28 29def calculate_pressure_drop(stages, gas_density, liquid_density, tray_spacing, flow_rate):30    """31    Calculate pressure drop across the column using a simplified correlation.32    """33    try:34        gravity = 9.81  # m/s^235        pressure_drop_per_stage = tray_spacing * (gas_density - liquid_density) * gravity / gas_density36        total_pressure_drop = stages * pressure_drop_per_stage37        return total_pressure_drop38    except Exception as e:39        return f"Error in calculation: {str(e)}"40 41# Streamlit App42def main():43    st.title("Distillation Column Design")44    st.sidebar.header("Input Parameters")45 46    # Input Parameters47    feed_composition = st.sidebar.number_input(48        "Feed Composition (mol fraction of key component):", 0.0, 1.0, 0.5, 0.01, key="feed_composition"49    )50    distillate_composition = st.sidebar.number_input(51        "Distillate Composition (mol fraction of key component):", 0.0, 1.0, 0.95, 0.01, key="distillate_composition"52    )53    bottoms_composition = st.sidebar.number_input(54        "Bottoms Composition (mol fraction of key component):", 0.0, 1.0, 0.05, 0.01, key="bottoms_composition"55    )56    relative_volatility = st.sidebar.number_input(57        "Relative Volatility:", 1.0, 10.0, 2.5, 0.1, key="relative_volatility"58    )59    flow_rate = st.sidebar.number_input(60        "Flow Rate (kg/s):", 0.1, 100.0, 10.0, 0.1, key="flow_rate"61    )62    density = st.sidebar.number_input(63        "Liquid Density (kg/m^3):", 500.0, 1500.0, 800.0, 10.0, key="density"64    )65    velocity = st.sidebar.number_input(66        "Superficial Velocity (m/s):", 0.1, 10.0, 1.0, 0.1, key="velocity"67    )68    gas_density = st.sidebar.number_input(69        "Gas Density (kg/m^3):", 0.5, 5.0, 1.2, 0.1, key="gas_density"70    )71    liquid_density = st.sidebar.number_input(72        "Liquid Density (kg/m^3):", 500.0, 1500.0, 800.0, 10.0, key="liquid_density_unique"73    )74    tray_spacing = st.sidebar.number_input(75        "Tray Spacing (m):", 0.1, 1.0, 0.5, 0.1, key="tray_spacing"76    )77 78    # Calculations79    stages = calculate_theoretical_stages(feed_composition, distillate_composition, bottoms_composition, relative_volatility)80    area = calculate_column_area(flow_rate, density, velocity)81    pressure_drop = calculate_pressure_drop(stages, gas_density, liquid_density, tray_spacing, flow_rate)82 83    # Display Results84    st.subheader("Results")85    st.write(f"Number of Theoretical Stages: {stages}")86    st.write(f"Column Cross-Sectional Area: {area:.2f} m²")87    st.write(f"Total Pressure Drop: {pressure_drop:.2f} Pa")88 89    st.markdown("---")90    st.markdown("Designed and developed by [Your Name]")91 92if __name__ == "__main__":93    main()94 95 96