This is EasySurrogate, a toolkit designed to facilitate the creation of surrogate models for multiscale simulations. The development of this software is funded by the EU Horizon 2020 Verified Exascale Computing for Multiscale Applications (VECMA) project, and the SEAVEA project.
- Numpy
- Scipy
- Matplotlib
- h5py
After cloning the repository, EasySurrogate, along with the requirements, can be installed via:
python3 setup.py install --user
To install the latest release, (not necessarily the latest verion), type
pip install easysurrogate
-
An overaching `Campaign' structure of creating surrogates, similar to EasyVVUQ, the VECMA toolkit component for forward uncertainty propagation.
-
Quantized Softmax Networks: a neural network surrogate based on conditional resampling of reference data. The corresponding article can be found here.
-
Kernel Mixture Networks: nonparametric estimation of conditional probability densities using neural networks. Unlike the Quantized Softmax Surrogate, no resampling of reference data is performed, and the probability density is continuous rather than discrete.
-
Reduced cloure models: a data compression technique used to reduce the size of the (unclosed) training data down by several order of magnitude, while retaining accuracy for spatially integrated quantities of interest. The corresponding article can be found here. This has only been tested on problems with 2 spatial dimensions. Will be generalized in a subsequent release.
-
Standard artificial neural networks, used for regression with (time-lagged) features.
-
Deep Active Subspace surrogates: an artificial neural network with built-in dimension reduction. Used to make surrogates for the input-output map of computational models. The corresponding article can be found here.
-
Gaussian Process Regression: a surrogate probabilistic model based on nonparametric Bayesian approach, including the option of sequential design.
-
(conditional) Generative Adversarial Networks: generative models based on standard artificial neural networks.
-
It is possible to couple surrogates to the macroscopic model via MUSCLE3, the third incarnation of the Multiscale Coupling Library and Environment, see the corresponding tutorial.
-
Coupling with EasyVVUQ, in order to train a surrogate using a data frame of code input-output samples generated by EasyVVUQ, the forward uncertainty-propagation tool of VECMA.
The following tutorials can be found in the tutorials
folder:
-
/General
: a general introduction to EasySurrogate. -
/L96_QSN
: Quantized Softmax Network (QSN) surrogates for atmospheric model equations. In this tutorial, the subgrid-scale term of the Lorenz96 equations is replaced by a QSN surrogate. -
/L96_KMN
: Kernel Mixture Network (KMN) surrogates for atmospheric model equations. In this tutorial, the subgrid-scale term of the Lorenz96 equations is replaced by a KMN surrogate. -
/L96_ANN
: Artificial Neural Network (ANN) surrogates for atmospheric model equations. In this tutorial, the subgrid-scale term of the Lorenz96 equations is replaced by an ANN surrogate. -
reduced_Navier_Stokes
: a Jupyter notebook tutorial for the Reduced Closure modelling framework, applied to a 2D turbulent flow problem. -
/gray_scott
: reduced closures for a reaction diffusion equation. This applies the data compression technique to the two-dimensional gray-scott equations. -
/gray_scott_muscle
: this is basically the same tutorial as above, only the coupling between the reduced surrogates and the reaction diffusion equations is performed using MUSCLE3. -
/fusion_transport_GP
: Gaussian Process (GP) surrogate for a model in fusion plasma transport. -
/EasyVVUQ_coupling
: a tutorial where an ANN surrogate model is trained with a EasyVVUQ data frame. -
/deep_active_subspaces_HIV
: a Deep Active Subspace Jupyter notebook tutorial, applied to an HIV model -
/deep_active_subspaces
: a simple tutorial where a deep-active subspace surrogate model is trained on a Latin Hypercube dataframe generated by EasyVVUQ. Additional Jupyter notebook tutorials are available here. -
GAN
: a Jupyter notebook tutorial on creating Generative Adversarial Networks. -
cGAN
: a Jupyter notebook tutorial on creating conditional Generative Adversarial Networks. -
batch_normalization
: a tutorial on the use of batch normalization to reduce internal covariate shift.