Semantic Plant Design API

SPROCLIB now provides a semantic plant design API similar to TensorFlow/Keras for intuitive chemical plant construction, optimization, and simulation.

Overview

The semantic API allows you to build complex chemical plants using familiar patterns from machine learning frameworks:

from unit.plant import ChemicalPlant
from unit.reactor.cstr import CSTR
from unit.pump import CentrifugalPump

# Define plant (similar to keras.Sequential)
plant = ChemicalPlant(name="Demo Plant")

# Add units sequentially (similar to model.add(layers))
plant.add(CentrifugalPump(H0=50.0, eta=0.75), name="feed_pump")
plant.add(CSTR(V=150.0, k0=7.2e10), name="reactor")

# Connect units
plant.connect("feed_pump", "reactor", "feed_stream")

# Compile for optimization (similar to model.compile)
plant.compile(
    optimizer="economic",
    loss="total_cost",
    metrics=["profit", "conversion"]
)

# Optimize plant (similar to model.fit)
plant.optimize(target_production=1000.0)

# Display summary (similar to model.summary)
plant.summary()

Building Plants

Sequential Design

Build plants by adding units in sequence:

plant = ChemicalPlant("My Plant")
plant.add(Pump(...), name="pump1")
plant.add(Reactor(...), name="reactor1")
plant.add(Distillation(...), name="column1")

Functional Connections

Connect units with named streams:

plant.connect("pump1", "reactor1", "feed_stream")
plant.connect("reactor1", "column1", "reactor_effluent")

Plant Configuration

Set plant-wide parameters:

config = PlantConfiguration(
    operating_hours=8000.0,
    electricity_cost=0.12,
    steam_cost=18.0
)
plant = ChemicalPlant("Plant", config=config)

Compilation and Optimization

Compile Plant

Prepare plant for optimization:

plant.compile(
    optimizer="economic",           # Strategy
    loss="total_cost",             # Objective
    metrics=["profit", "efficiency"] # Track metrics
)

Optimization Strategies - economic: Minimize operating costs, maximize profit - environmental: Minimize emissions and waste - safety: Maximize safety margins

Run Optimization

Optimize plant operations:

results = plant.optimize(
    target_production=1000.0,
    constraints={
        "max_pressure": 10e5,
        "min_conversion": 0.85
    }
)

Simulation and Analysis

Dynamic Simulation

Run time-based simulations:

results = plant.simulate(
    duration=24.0,    # hours
    time_step=0.5     # time step
)

Performance Evaluation

Evaluate at operating conditions:

performance = plant.evaluate({
    "feed_flow": 1200.0,
    "temperature": 85.0
})

Plant Summary

Get comprehensive overview:

plant.summary()  # Similar to model.summary()

Complete Example

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 and evaluate
model.fit(x_train, y_train, epochs=100)
model.summary()

SPROCLIB Chemical Plant (Equivalent):

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 and evaluate
plant.optimize(target_production=1000.0)
plant.summary()

Key Benefits

Familiar Syntax - TensorFlow/Keras-inspired API - Sequential and functional design patterns - Consistent method naming

Intuitive Workflow - Add units like neural network layers - Connect with named streams - Compile for optimization objectives - Optimize like model training

Comprehensive Analysis - Plant-wide optimization - Dynamic simulation - Economic evaluation - Performance metrics

Extensible Design - Easy to add new unit types - Plugin architecture for optimizers - Custom metrics and objectives

See Also

  • examples/semantic_plant_example - Complete usage examples

  • api/plant_package - API reference

  • optimization - Optimization strategies