Introduction#

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.

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.

Licensing#

MOLE is distributed under a GNU General Public License; please refer to the LICENSE file for more details.

Community Guidelines#

We welcome contributions to MOLE, including:

  • Adding new functionalities

  • Providing examples

  • Addressing existing issues

  • Reporting bugs

  • Requesting new features

Please refer to our Contribution Guidelines for more details.

How to Cite#

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.

@article{Corbino2024, 
   doi = {10.21105/joss.06288}, 
   url = {https://doi.org/10.21105/joss.06288}, 
   year = {2024}, 
   publisher = {The Open Journal}, 
   volume = {9}, 
   number = {99}, 
   pages = {6288}, 
   author = {Corbino, Johnny and Dumett, Miguel A. and Castillo, Jose E.}, 
   title = {MOLE: Mimetic Operators Library Enhanced}, 
   journal = {Journal of Open Source Software} }

The archival copy of the MOLE User Manual is maintained on Zenodo. To cite the User Manual please use:

@misc{MOLE_user_manual,
   author       = {Barra, Valeria and
                  Boada, Angel and
                  Brzenski, Jared and
                  Castillo, Jose and
                  Chakalasiya, Prit and
                  Singh, Surinder Chhabra and
                  Corbino, Johnny Delgado and
                  Drummond, Tony and
                  Dumett, Miguel and
                  Hellmers, Joe and
                  Ilaty, Arshia and
                  Kaviani, Katayoon and
                  Nzerem, Oluchi and
                  Pagallo, Giulia and
                  Paolini, Christopher and
                  Rosano, Valentina and
                  Srinivas, Aneesh Murthy and
                  Srinivasan, Janani Priyadharshini and
                  Valera, Manuel},
   title        = {{MOLE User Manual}},
   month        = aug,
   year         = 2025,
   publisher    = {Zenodo},
   version      = {1.1.0},
   doi          = {10.5281/zenodo.16898575},
   url          = {https://doi.org/10.5281/zenodo.16898575},
}