This repository contains the benchmark simulator for a staged-separation membrane reactor (SSMR) designed for pure hydrogen production. The simulator implements a nonlinear dynamic model of a two-stage process: ethanol steam reforming (ESR) and hydrogen separation. It is intended as a benchmark for testing control and estimation strategies.
-
Download the ZIP folder from the GitHub repository
-
Extract the contents to a folder of your choice
-
Launch MATLAB R2020a or later (recommended). Additional toolboxes are not necessary
-
Set the extracted folder as the current folder in MATLAB
-
Open the main simulation script: SSMR_simulator/SSMR_simulation.m
-
Specify simulation conditions in SSMR_simulator/SSMR_simulation.m
- Select the normal operating conditions: Mode 1, 2 or 3 (see Table 2 in the paper)
- Select the disturbance scenario (see subsection 4.2 in the paper)
- Specify the time at which the disturbance is to be applied (if any)
- Choose the initial conditions (see more details in the supplementary material)
- Specify the overall simulation time
- Select the set-point profile (see Fig. 4 in the paper)
- Choose the simulation type (open loop or with control)
-
Run SSMR_simulator/SSMR_simulation.m
-
The simulation results will be displayed in plots that appear on the screen
-
To modify or implement custom controllers, open control.m
-
In control.m, create a new case inside the switch environment
-
Design your own control law that outputs the changes to the input variable
-
In SSMR_simulation.m, change the value of control_law according to the number assigned to your case
-
Customize the benchmark to include multiple input variables if desired
-
PID controller to address control challenge 1
- Mode 1
- Disturbance = 0
- Time for disturbance (min) = any (since it does not apply here)
- Initial conditions = 0
- Simulation time (min) = 30
- Set-point profile = 1
- Simulation type = 1
- Control_law = 0
-
PID controller to address control challenge 3
- Mode 2
- Disturbance = 1.1 or 2.2
- Time for disturbance (min) = 5
- Initial conditions = 1
- Simulation time (min) = 10
- Set-point profile = 0
- Simulation type = 1
- Control_law = 0
This project is covered under the MIT License.
If you found this repository useful, please cite: https://doi.org/10.1016/j.renene.2025.124743