This repository contains the implementation of MARIO, a conditional neural field architecture for predicting aerodynamic fields around airfoils. The original paper of MARIO is available in preprint at Towards scalable surrogate models based on Neural Fields for large scale aerodynamic simulations. MARIO achieved the 3rd Place at the ML4CFD Challenge at Neurips 2024 and is currently one of the top models on the PLAID benchmark on Hugging Face.
MARIO is a conditional Neural Field architecture designed for surrogate modeling of large PDEs and it is specialized for aerodynamic applications, although the framework is absolutely general. It can handle paramteric and non parametric geometric variability. In the latter case, a Neural Field encoder is used to learn a latent code on the Signed Distance Function fields (as in the Airfrans and VKI-BLADE test cases). You can refer to the original paper for more information:
MARIO's architecture overview: A conditional neural field with multiscale Fourier features and hypernetwork modulation.
- airfrans_task/ : MARIO code for the Airfrans dataset. Employs geometry encoding on the Signed Distance Function: first the shape encoding are learned using a Neural Field encoder (by running train_sdf.py). Then the output model (MARIO) is used to learn to map the coordinates, the inflow conditions and the learnt geometric latent codes to the output fields. Different splits can be used by specifyng the task in the configurations file.
- vki_task/ : MARIO code for the VKI-LS59 Dataset. Here the two stage training process is used: first the shape encoding are learned using a Neural Field encoder (by running train_sdf.py). Then the output model (MARIO) is used to learn to map the coordinates, the inflow conditions and the learnt geometric latent codes to the output fields and scalars.
- airfrans_task_challenge/ : Original MARIO code for the Airfrans dataset used in the Neurips Challenge The data handling relies on the library pyoche. The code is structured with callbacks. A simplified geometry encoding process is used, by using the camber and thickness distribution. More info can be found inside the folder.
The Airfrans dataset can be obtained by installing the airfrans package. The data handling is done with the custom library pyoche.
pip install airfrans
The original Airfrans dataset is provided via the airfrans
Python package.
-
Install
pip install airfrans
More info on the VKILS59 benchmark: https://huggingface.co/spaces/PLAIDcompetitions/VKILS59Benchmark
Look into each specific folder.