MOLE is a high-quality (C++ & MATLAB/Octave) library of high-order mimetic operators to solve partial differential equations. It provides discrete analogs of vector calculus operators: Gradient, Divergence, Laplacian, Bilaplacian, and Curl. These operators satisfy local and global conservation laws.
MOLE is a high-quality (C++ & MATLAB/Octave) library that implements high-order mimetic operators to solve partial differential equations. It provides discrete analogs of the most common vector calculus operators: Gradient, Divergence, Laplacian, Bilaplacian, and Curl. These operators (highly sparse matrices) act on staggered grids (uniform, non-uniform, curvilinear) and satisfy local and global conservation laws.
Mathematics is based on the work of Corbino and Castillo. However, the user may find helpful previous publications, such as Castillo and Grone, in which similar operators were derived using a matrix analysis approach.
Refer to the table below for compiler support across different operating systems when building MOLE.
OS / Compiler | GCC 13.2.0 | AppleClang | IntelLLVM (icpx) |
---|---|---|---|
Linux | Yes | No | Yes |
macOS | No | Yes | Yes |
To install the MOLE library, you'll need the following packages:
For documentation build requirements, please refer to the Documentation Guide.
# Install all required packages
sudo apt install cmake libopenblas-dev libeigen3-dev
Install Homebrew if you don't have it already, then run:
# Install all required packages
brew install cmake openblas eigen libomp lapack
Troubleshooting Homebrew: If you encounter installation errors, try these steps:
# Fix permissions issues sudo chown -R $(whoami) /usr/local/Cellar # Fix shallow clone issues git -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core fetch --unshallow # Remove Java dependencies if they cause conflicts brew uninstall --ignore-dependencies java brew update
# Install all required packages
sudo yum install cmake openblas-devel eigen3-devel lapack
Clone the repository:
git clone https://github.com/csrc-sdsu/mole.git
cd mole
Build the library:
mkdir build && cd build
cmake ..
make
Install the library:
cmake --install . --prefix /path/to/location
sudo cmake --install .
Or
sudo cmake --install . --prefix /path/to/privileged/location
Note: Armadillo and SuperLU will be automatically installed in the build directory during the build process.
Run from the build
directory:
A suite of four automatic tests that verify MOLE's installation and dependencies. These tests run automatically during the C++ library construction.
make run_tests
MATLAB/Octave equivalent of the C++ test suite. We recommend running these tests before using MOLE to ensure proper setup.
make run_matlab_tests
Many of the examples require 'gnuplot' to visualize the results. You can get gnuplot on macOSX with
brew install gnuplot
and on Windows downlaoding and running the file from here
Four self-contained, well-documented examples demonstrating typical PDE solutions. These are automatically built with make
and serve as an excellent starting point for C++ users.
A collection of over 30 examples showcasing various PDE solutions, from simple linear one-dimensional problems to complex nonlinear multidimensional scenarios.
MOLE comes with comprehensive documentation:
Important Note: Performing non-unary operations involving operands constructed over different grids may lead to unexpected results. While MOLE allows such operations without throwing errors, users must exercise caution when manipulating operators across different grids.
MOLE is distributed under a GNU General Public License; please refer to the LICENSE file for more details.
We welcome contributions to MOLE, including:
Please refer to our Contribution Guidelines for more details.
Please cite our work if you use MOLE in your research or software. Citations are helpful for the continued development and maintenance of the library.
Now, some cool pictures obtained with MOLE: