SlabConcrete / app.py
engrmuhammadrizwan01's picture
Create app.py
872c4a0 verified
import streamlit as st
# Set page config
st.set_page_config(page_title="Slab Concrete Calculator", layout="centered")
st.title("🧱 Slab Concrete Calculator")
# Units selection
unit = st.selectbox("Select unit for dimensions:", ["m", "cm", "mm"])
# Input fields
col1, col2, col3 = st.columns(3)
with col1:
length = st.number_input("Length (L)", min_value=0.0, format="%.2f")
with col2:
width = st.number_input("Width (W)", min_value=0.0, format="%.2f")
with col3:
thickness = st.number_input("Thickness (T)", min_value=0.0, format="%.2f")
# Convert all dimensions to meters
conversion_factor = {"m": 1, "cm": 0.01, "mm": 0.001}
factor = conversion_factor[unit]
length_m = length * factor
width_m = width * factor
thickness_m = thickness * factor
# Concrete Ratio Inputs
st.markdown("### 🧮 Concrete Mix Ratio")
col1, col2, col3 = st.columns(3)
with col1:
cement_ratio = st.number_input("Cement", min_value=0.0, value=1.0)
with col2:
sand_ratio = st.number_input("Sand", min_value=0.0, value=2.0)
with col3:
aggregate_ratio = st.number_input("Aggregate", min_value=0.0, value=4.0)
total_ratio = cement_ratio + sand_ratio + aggregate_ratio
# Additional inputs
cement_bag_weight = st.number_input("Cement Bag Weight (kg)", value=50.0)
cement_bag_price = st.number_input("Cement Bag Price ($)", value=0.0)
water_cement_ratio = st.number_input("Water-Cement Ratio", value=0.5)
concrete_price = st.number_input("Concrete Price per m³ ($)", value=0.0)
# Calculate button
if st.button("Calculate"):
# Step 1: Concrete Volume
concrete_volume = length_m * width_m * thickness_m
# Step 2: Dry volume
dry_volume = concrete_volume * 1.54
# Step 3: Material Volumes
cement_volume = (cement_ratio / total_ratio) * dry_volume
sand_volume = (sand_ratio / total_ratio) * dry_volume
aggregate_volume = (aggregate_ratio / total_ratio) * dry_volume
# Step 4: Cement weight & bags
cement_density = 1440 # kg/m³
cement_weight = cement_volume * cement_density
cement_bags = cement_weight / cement_bag_weight
# Step 5: Water
water_liters = cement_weight * water_cement_ratio
# Step 6: Costs
cement_cost = cement_bags * cement_bag_price
total_concrete_cost = concrete_volume * concrete_price
concrete_weight = cement_weight + (sand_volume + aggregate_volume) * 1600 # estimated total mass
# Results
st.markdown("### 📊 Results")
st.write(f"**Concrete Volume:** {concrete_volume:.2f} m³")
st.write(f"**Dry Concrete Volume:** {dry_volume:.2f} m³")
st.write(f"**Cement Volume:** {cement_volume:.2f} m³")
st.write(f"**Cement Weight:** {cement_weight:.2f} kg")
st.write(f"**Cement Bags:** {cement_bags:.2f} bags")
st.write(f"**Sand Volume:** {sand_volume:.2f} m³")
st.write(f"**Aggregate Volume:** {aggregate_volume:.2f} m³")
st.write(f"**Water Required:** {water_liters:.2f} liters")
st.write(f"**Cement Cost:** ${cement_cost:.2f}")
st.write(f"**Concrete Cost:** ${total_concrete_cost:.2f}")
st.write(f"**Estimated Concrete Weight:** {concrete_weight:.2f} kg")