jkitchin's picture
Upload folder using huggingface_hub
f5f42f3 verified
#!/usr/bin/env python3
"""
Basic TEP Simulation Example
This example demonstrates the fundamental usage of the TEPSimulator
for running batch simulations and accessing results.
"""
import numpy as np
from tep import TEPSimulator, get_available_backends, get_default_backend
from tep.simulator import ControlMode
def main():
# Show available backends
print("TEP Simulator - Basic Example")
print("=" * 50)
print(f"Available backends: {get_available_backends()}")
print(f"Default backend: {get_default_backend()}")
print()
# Create simulator with default settings (closed-loop control)
print("Creating TEP simulator...")
sim = TEPSimulator(
random_seed=12345, # For reproducibility
control_mode=ControlMode.CLOSED_LOOP
)
print(f"Using backend: {sim.backend}")
# Initialize to steady state
sim.initialize()
print(f"Initial reactor temperature: {sim.get_measurements()[8]:.1f} °C")
print(f"Initial reactor pressure: {sim.get_measurements()[6]:.1f} kPa")
# Run a 1-hour simulation
print("\nRunning 1-hour simulation...")
result = sim.simulate(
duration_hours=1.0,
record_interval=60 # Record every minute
)
# Check results
print(f"\nSimulation complete!")
print(f" Duration: {result.time[-1]:.2f} hours ({result.time_minutes[-1]:.0f} minutes)")
print(f" Data points recorded: {len(result.time)}")
print(f" Shutdown occurred: {result.shutdown}")
# Print final state
print(f"\nFinal conditions:")
print(f" Reactor temperature: {result.measurements[-1, 8]:.1f} °C")
print(f" Reactor pressure: {result.measurements[-1, 6]:.1f} kPa")
print(f" Reactor level: {result.measurements[-1, 7]:.1f} %")
print(f" Separator level: {result.measurements[-1, 11]:.1f} %")
print(f" Stripper level: {result.measurements[-1, 14]:.1f} %")
# Calculate statistics
print(f"\nReactor temperature statistics:")
temps = result.measurements[:, 8]
print(f" Mean: {np.mean(temps):.2f} °C")
print(f" Std: {np.std(temps):.2f} °C")
print(f" Min: {np.min(temps):.2f} °C")
print(f" Max: {np.max(temps):.2f} °C")
return result
if __name__ == "__main__":
result = main()