Skip to content

RezaNajian/FOL

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

91 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

License CI

FOL: Efficient Solution and Optimization of PDEs

Finite Operator Learning (FOL) combines neural operators, physics-informed machine learning, and classical numerical methods to solve and optimize parametrically defined partial differential equations (PDEs). In essence, FOL directly utilizes the discretized residuals of governing equations during the backpropagation step of training, enabling the integration of traditional numerical methods—such as finite element methods (FEM). The advantages of this approach are thoroughly studied and detailed in FOL's publication.

Main Features

  • Python-based framework built on JAX, leveraging key features like auto-vectorization with jax.vmap(), just-in-time compilation with jax.jit(), and automatic differentiation with jax.grad() for high-efficiency computations on CPUs, GPUs, and TPUs. This framework integrates seamlessly with Flax for building modular and flexible neural networks, Optax for applying state-of-the-art gradient-based optimization algorithms, and Orbax for efficient checkpointing and serialization, ensuring scalability and ease of use in large-scale training processes.
  • Easily implement the weak form of desired PDEs in Python; the framework handles the rest for highly efficient neural operator learning, PINNs, and finite element simulations.
  • FOL utilizes the mesh_io library for seamless mesh and result file handling, and PETSc4py for efficiently solving large-scale linear systems.

Installation Guide

To install FOL, follow these steps:

git clone https://github.com/RezaNajian/FOL.git
cd FOL
python3 setup.py sdist bdist_wheel
pip install -e .

To run the tests:

pytest -s tests/

To run the examples:

cd examples
python3 examples_runner.py

How to cite FOL?

Please, use the following references when citing FOL in your work.