Complete Semantic Plant Design Examplesο
π― The Core of SPROCLIB: Real Chemical Plant Design
This section contains the complete semantic plant design example that showcases SPROCLIBβs revolutionary TensorFlow/Keras-style API for chemical plant construction.
Note
This is the heart of SPROCLIB - These examples demonstrate why the semantic plant design API is revolutionary for chemical process control.
Complete Working Exampleο
The following is the complete semantic plant design example from
examples/semantic_plant_example.py:
Running the Exampleο
To run this example:
cd examples
python semantic_plant_example.py
Expected Outputο
SPROCLIB Semantic Plant Design Examples
==================================================
=== Semantic Chemical Plant Design Example ===
Using TensorFlow/Keras-style API for process plant design
Step 3: Added 7 process units to the plant
Step 4: Created 6 process connections
Step 5: Plant compiled for economic optimization
============================================================
Chemical Plant: Demo Chemical Plant
============================================================
Configuration:
Operating hours: 8,000 h/year
Electricity cost: $0.120/kWh
Steam cost: $18.00/ton
Cooling water cost: $0.080/mΒ³
Process Units (7 total):
Unit Name Type Parameters
----------------------------------------------------------------------
feed_pump CentrifugalPump H0=50.0m
feed_pipeline PipeFlow L=200.0m
main_reactor CSTR V=150.0L
reactor_outlet_pipe PipeFlow L=50.0m
separation_column BinaryDistillationColumn Trays=12
reflux_control_valve ControlValve Cv_max=15.0
product_pump CentrifugalPump H0=35.0m
Connections (6 total):
feed_pump β feed_pipeline (feed_stream)
feed_pipeline β main_reactor (reactor_feed)
main_reactor β reactor_outlet_pipe (reactor_effluent)
reactor_outlet_pipe β separation_column (column_feed)
separation_column β reflux_control_valve (reflux_stream)
reflux_control_valve β product_pump (product_stream)
Optimization:
Optimizer: economic
Loss function: total_cost
Metrics: profit, energy_consumption, conversion, efficiency
============================================================
Step 7: Running plant optimization...
Optimization Results:
Success: True
Optimal Cost: $523.45/h
Message: Optimization terminated successfully
Step 8: Running dynamic plant simulation...
Simulation completed for 49 time points
Step 9: Plant Performance Evaluation:
Overall efficiency: 80.0%
Total energy consumption: 1500 kW
Production rate: 1000 kg/h
Profit rate: $500.00/h
Key Example Sectionsο
1. Plant Configuration
Setting up plant-wide parameters like operating costs and schedules
2. Sequential Unit Addition
Adding process equipment using the intuitive
plant.add()method
3. Stream Connections
Connecting units with the
plant.connect()method
4. Plant Compilation
Configuring optimization strategy with
plant.compile()
5. Plant Optimization
Running economic optimization with
plant.optimize()
6. Dynamic Simulation
Time-based plant simulation with
plant.simulate()
7. Performance Evaluation
Steady-state analysis with
plant.evaluate()
8. Plant Summary
Comprehensive overview with
plant.summary()
Syntax Comparison Highlightο
The example demonstrates the revolutionary syntax comparison:
TensorFlow/Keras Neural Network:
from tensorflow import keras
from tensorflow.keras import layers
# Define model
model = keras.Sequential([
layers.Dense(64, activation="relu", name="layer1"),
layers.Dense(32, activation="relu", name="layer2"),
layers.Dense(1, name="output")
])
# Compile model
model.compile(
optimizer=keras.optimizers.Adam(learning_rate=0.01),
loss=keras.losses.MeanSquaredError(),
metrics=[keras.metrics.MeanAbsoluteError()]
)
# Train model
model.fit(x_train, y_train, epochs=100)
model.summary()
SPROCLIB Chemical Plant (Equivalent Syntax):
from unit.plant import ChemicalPlant
from unit.reactor.cstr import CSTR
from unit.pump import CentrifugalPump
from unit.distillation import BinaryDistillationColumn
# Define plant
plant = ChemicalPlant([
CentrifugalPump(H0=50.0, eta=0.75, name="pump1"),
CSTR(V=150.0, k0=7.2e10, name="reactor1"),
BinaryDistillationColumn(N_trays=12, name="column1")
])
# Compile plant
plant.compile(
optimizer="economic",
loss="total_cost",
metrics=["profit", "conversion", "efficiency"]
)
# Optimize plant
plant.optimize(target_production=1000.0, constraints={...})
plant.summary()
Advanced Examplesο
Multi-Objective Optimization:
# Economic + Environmental optimization
plant.compile(
optimizer="hybrid",
loss=["total_cost", "emissions"],
loss_weights=[0.7, 0.3], # 70% economic, 30% environmental
metrics=["profit", "carbon_footprint", "energy_efficiency"]
)
Dynamic Process Control:
# Add controllers to the plant
from unit.controller import PIDController
temp_controller = PIDController(Kp=2.0, Ki=0.5, Kd=0.1)
plant.add_controller(temp_controller,
controlled_unit="main_reactor",
controlled_variable="temperature",
manipulated_variable="coolant_flow")
Real-time Optimization:
# Continuous optimization with disturbances
disturbances = {
"feed_composition": lambda t: 0.8 + 0.1*np.sin(0.1*t),
"market_price": lambda t: 2.5 + 0.3*np.random.normal()
}
results = plant.optimize_realtime(
duration=24.0,
reoptimize_interval=1.0, # Re-optimize every hour
disturbances=disturbances
)
Educational Valueο
Why This Example is Perfect for Teaching:
β Familiar Syntax - Students already know TensorFlow/Keras β Progressive Complexity - Builds from simple to advanced concepts β Real Engineering - Uses actual chemical engineering principles β Immediate Feedback - Visual results and clear outputs β Extensible - Easy to modify and experiment with
Learning Objectives Demonstrated:
Plant Design - How to structure chemical processes
Process Control - PID control and optimization
Economic Analysis - Cost optimization and profitability
System Integration - How units work together
Dynamic Simulation - Time-based process behavior
Extending the Exampleο
Add More Equipment:
# Add heat integration
plant.add(HeatExchanger(U=500, A=10), name="preheater")
plant.add(HeatExchanger(U=600, A=8), name="cooler")
# Add safety systems
plant.add(ReliefValve(set_pressure=12e5), name="safety_valve")
plant.add(EmergencyShutdown(), name="esd_system")
Custom Optimization Objectives:
def custom_objective(plant_state):
"""Custom multi-criteria optimization"""
profit = calculate_profit(plant_state)
safety = calculate_safety_margin(plant_state)
sustainability = calculate_sustainability_index(plant_state)
return 0.5*profit + 0.3*safety + 0.2*sustainability
plant.compile(optimizer=custom_objective, loss="custom")
Integration with External Systems:
# Connect to real-time data
plant.connect_realtime_data(
data_source="plant_historian",
update_frequency=60 # seconds
)
# Export to process simulators
plant.export_to_aspen_plus("plant_model.apw")
plant.export_to_hysys("plant_model.hsc")
Why This Example Mattersο
π Industry First: First semantic API for chemical plant design π Educational Revolution: Makes process control accessible to everyone π Rapid Prototyping: Design plants in minutes instead of hours π¬ Research Platform: Perfect for advanced control research π Open Source: Community-driven development and improvement
This example demonstrates that complex chemical plant design can be as intuitive and accessible as machine learning model development.
See Alsoο
Semantic Plant Design - Complete API documentation
TensorFlow/Keras vs SPROCLIB Comparison - Detailed syntax comparisons
plant_optimization - Advanced optimization techniques
examples/process_units - Individual unit examples