Reduced Order Modeling for Jet Engine Turbine Blade
From the series: Reduced Order Modeling
Learn how to create an AI-based reduced order model (ROM) of a full-order jet engine turbine blade using the Reduced Order Modeler app.
Reduced Order Modeler app streamlines the ROM workflow allowing you to interactively:
- Design experiments
- Run experiments to generate input/output (I/O) data from the full-order model
- Train reduced order models using the I/O data
- Export trained ROM for use in Simulink for system level simulation, control design and hardware-in-the-loop testing
Published: 16 Feb 2024
In this video, we'll demonstrate how to create an AI-based Reduced Order Model, or ROM, of a full order jet engine turbine blade using the Reduced Order Modeler app. Reduced order modeling is a technique for reducing computational complexity of a computer model while preserving expected fidelity.
In this video, we're going to show you how to perform reduced order modeling following this workflow. It includes designing and running experiments for generating input/output data from the full order model, training a neural state space model using the generated data, and then exporting the trained reduced order model to be used in Simulink for system level simulation, control design, and hardware in the loop testing.
To get started with ROM creation, we will first install the Reduced Order Modeler app. In Matlab, you can navigate to the Add-On Explorer, where you can search for the Reduced Order Modeling support package. To start installation, we click here. And once the app is installed, we open the jet engine turbine blade model, which is one of the examples included in the support package.
This is our high fidelity full order model that computes the maximum displacement of the blade when subject to ambient temperature, cooling temperature, and pressure. This computation is performed via solving partial differential equations. Because of that, the full order model is very computationally intensive, making it unsuitable for a system level simulation and control design. And that's why we're going to create a reduced order model. Note that the ROM workflow we're going to show you today is applicable to any third-party CFD, CAE, or FEA high-fidelity model brought into Simulink as a functional mock up unit.
Next, we launch the Reduced Order Modeler app with the jet engine blade model. The first step is to create a new session and specify the simulation inputs, as well as ROM inputs and outputs. To do so, let's first select the signals in the Simulink model, which will be the simulation inputs. These are the ambient temperature, cooling temperature, and the pressure signals. Once selected, they appear in this table, where we can then choose their IO types as simulation inputs.
We will later set up our experiment to inject perturbation signals at these inputs to the high-fidelity model and collect the corresponding ROM IO data, which we'll specify next. For the ROM inputs, we will select the filtered versions of the perturb signals. As we'll see later in the simulation results, the filtering will prevent any step discontinuities in the ROM input signals.
Finally, we select the maximum displacement signal and specify it as the ROM output. In the next step, we'll create and run experiments to gather data from our high-fidelity model. Clicking New Experiment generates these plots, showing the coverage of the design space. Here, we can update the default values of the experiment settings. For example, we can choose the signal injection mode to either replace or perturb the simulation inputs.
We can also select the signal type. Here we're using random pulses, for which we'll adjust the width shown in seconds, the number of pulses, and pulse amplitude ranges. Applying the changes we just made updates the visualizations.
To capture enough data to train reduced order models and increase coverage of design space, we create another experiment with the same settings. Once experiments are set up, we click here to run simulations. Note that you can choose to run these simulations in parallel, which can be set under simulation options.
As we discussed earlier, our high-fidelity model is computationally intensive, taking a very long time to simulate. So we're going to directly skip the simulation results. Once simulations are completed, the results become available for both experiments.
The next step is to train a reduced order model using the collected IO data. In the Create Model section, you have the option to select from various dynamic ROM types, including LSTM, nonlinear RX, and neural state space models. For this demonstration, we'll focus on creating a neural state space model to effectively capture the dynamics of the jet engine turbine blades system.
To incorporate all the data from our experiments into the training process, we select both experiments. This automatically launches the Experiment Manager app, which is a tool that lets us train different models by sweeping through a range of hyperparameter values, allowing us to evaluate and compare performance of each trained model.
We start by creating a new project and specifying the neural state space hyperparameter values. In the execution section, we switch the mode to simultaneous to facilitate parallel training of the models, and then initiate training by clicking Run. Once training starts, we can view its progress.
Upon completion of the training, it's time to assess the models. We can compare them using performance metrics, such as the loss, training MSE and test MSE, which, respectively, stand for the Mean Squared Errors computed using simulation outputs with original training data and the test data.
We sort the trained models by test MSE in ascending order. Models with a low test MSE, comparable training MSE, and minimal loss are good potential models. To export a model to workspace, we select the corresponding row, and click Export. The exported training output contains the trained model and normalization data for the input output variables.
To compare the trained model to the original high-fidelity model, we will use the Simulink model, which contains the response from the high-fidelity model, and blocks that user normalization data from the exported training output.
To bring the trained ROM into our model, we add the neural state space block and specify the trained model object and initial state value. We then run the simulation to compare models. As seen in the results, the trained neural state space model closely captures the system dynamics of the original high-fidelity model. The trained ROM simulates in 0.03 seconds, making it highly suitable for a system level simulation and control design. In contrast to the full order model, which takes 30,000 seconds to simulate.
Once you're satisfied with the trained model, you can use the reduced order model for different purposes. You can use it in Simulink for control design and hardware in the loop testing, or export for use outside of Simulink through FMUs.
In this video, we showed how you can create an AI-based reduced order model using the Reduced Order Modeler app. To train a ROM, we generated data using a Simulink model. However, if you prefer to utilize data from a third-party model for training, please check out the next video in this series. And this concludes the video.