A machine-learning tool to predict strongly disturbed aerodynamic states using sparse noisy pressure measurements. This code is capable of quantifying aleatoric (data) and epistemic (model) uncertainty.
Follow the steps below in the specified order to execute the workflow:
- Train the Autoencoder:
Run the file
autoencoder.pyto train an autoencoder that extracts the underlying latent variables from the generated data. These latent variables represent the reduced-order features of the vorticity field and lift coefficient. - Train a Deterministic Network:
Execute
deterministicPressureNetwork.pyto train a Multi-Layer Perceptron (MLP) network. This network maps sparse, clean surface pressure measurements to the extracted latent variables deterministically. The trained model will later be used for Gramian calculation. - Calculate Dominant Directions:
Run
noise_in_dominant_direction.pyto identify and store the dominant directions of both the measurement and latent variable spaces at each time step. Perturb the measurements along the dominant eigenvector of the measurement space Gramian, C_x. - Train the Bayesian Neural Network Using MC Dropout:
Use
probabilisticPressureNetwork.pyto train a Bayesian Neural Network. This model estimates the statistics of the latent variables by predicting the mean and covariance matrix of a multivariate normal distribution in the latent space. The training process minimizes the negative log-likelihood. - Flow Reconstruction and Uncertainty Quantification:
Finally, execute
flowReconstructionAndUQ.pyto:
- Estimate the latent variables while quantifying aleatoric (data-driven) and epistemic (model-driven) uncertainties.
- Map the estimated latent space samples back to the original high-dimensional space to reconstruct the vorticity field and lift coefficient.