This repository comprises a collection of Jupyter/Python notebooks in support of CBE 30338 Chemical Process Control, a course taught at the University of Notre Dame. Please note there is a companion site CBE 32338 Process Control Laboratory with additional notebooks demonstrating the practical implementation of these concepts using the Temperature Control Laboratory.
The links below display the notebooks as regular HTML web pages. From there you can run the notebook on Google Colaboratory or download to run on your own laptop. To run on your own laptop you will need to install Jupyter and Python 3, such as the excellent Anaconda distribution from Continuum Analytics.
Please let me know (jeff at nd.edu) if you any thoughts or suggestions on how these notebooks could be improved for teaching and learning the principles of Chemical Process Control.
- 1.1 Getting Started with Python and Jupyter Notebooks
- 1.2 Python Basics
- 1.3 Python Conditionals and Libraries
- 1.4 Python Numeric Integration Revisited
- 2.1 Process Variables
- 2.2 Gravity Drained Tank
- 2.3 Blending Tank Simulation
- 2.4 Continuous Product Blending
- 2.5 Hare and Lynx Population Dynamics
- 2.6 Exothermic Continuous Stirred Tank Reactor
- 2.7 Fed-Batch Bioreactor
- 2.8 Model Library
- 3.1 Step Response of a Gravity Drained Tank
- 3.2 Linear Approximation of a Process Model
- 3.3 Linear Approximation of a Multivariable Model
- 3.4 Fitting First Order plus Time Delay to Step Response
- 3.5 One Compartment Pharmacokinetics
- 3.6 Second Order Models
- 3.7 Interacting Tanks
- 3.8 Manometer Models and Dynamics
- 3.9 Modeling and Control of a Campus Outbreak of Coronavirus COVID-19
- 4.1 Implementing PID Controllers with Python Yield Statement
- 4.2 PID Control with Setpoint Weighting
- 4.3 PID Control with Bumpless Transfer
- 4.4 PID Control with Anti-Reset-Windup
- 4.5 Realizable PID Control
- 4.6 PID Controller Tuning
- 4.10 PID Control - Laboratory
- 4.11 Implementing PID Control in Nonlinear Simulations
- 4.12 Interactive PID Control Tuning with Ziegler-Nichols
- 5.1 Getting Started with Transfer Functions
- 5.2 Closed-Loop Transfer Functions for Car Cruise Control
- 5.3 Creating Bode Plots
- 5.4 Controller Tuning Rules in Frequency Domain
- 5.5 Baroreflex as a Linear Control System
- 6.1 Unconstrained Scalar Optimization
- 6.2 Linear Production Model
- 6.3 Linear Programming
- 6.4 Linear Production Model in Pyomo
- 6.4 Linear Programming in Pyomo
- 6.6 Linear Blending Problem
- 6.7 Design of a Cold Weather Fuel
- 6.8 Gasoline Blending
- 6.99 Pyomo Examples
- 7.1 Simulation and Optimal Control in Pharmacokinetics
- 7.2 Soft Landing a Rocket
- 7.3 Simulation in Pyomo
- 7.4 Simulation of an Exothermic CSTR
- 7.5 First Order System in Pyomo
- 7.6 Path Planning for a Simple Car
- 7.7 Transient Heat Transfer in Various Geometries
- 7.8 Path Constraints
- A.1 Python Library for CBE 30338
- A.2 Modular Simulation using Python Generators
- A.3 Animation in Jupyter Notebooks
- A.4 A Modular Approach to Simulation using Python Generators
- B.1 Diabetes: Controlling Blood Glucose Concentrations
- B.2 Visual Tracking of an Object with a Drone
License Requirements. The materials in this repository are available at https://github.com/jckantor/CBE30338.git for noncommercial use under terms of the Creative Commons Attribution Noncommericial ShareAlike License. You are invited to fork this repository, and to use, adapt, remix these material for non-commericial purposes. The license terms require you to give attribution and share your work under the same terms. Pull requests for corrections and additions to these materials are most welcome.