Science Score: 67.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 13 DOI reference(s) in README -
✓Academic publication links
Links to: joss.theoj.org, zenodo.org -
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (14.8%) to scientific vocabulary
Keywords
Repository
The Mimetic Operators Library Enhanced
Basic Info
- Host: GitHub
- Owner: csrc-sdsu
- License: gpl-3.0
- Language: MATLAB
- Default Branch: main
- Homepage: https://mole-docs.readthedocs.io/
- Size: 40.8 MB
Statistics
- Stars: 31
- Watchers: 10
- Forks: 59
- Open Issues: 17
- Releases: 4
Topics
Metadata Files
README.md
MOLE: Mimetic Operators Library Enhanced
Description
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.
Installation
Platform and Compiler Compatibility
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 |
Prerequisites
To install the MOLE library, you'll need the following packages:
- CMake (Minimum version 3.10)
- OpenBLAS (Minimum version 0.3.10)
- Eigen3
- LAPACK (Mac only)
- libomp (Mac only)
For documentation build requirements, please refer to the Documentation Guide.
Package Installation by OS
Ubuntu/Debian Systems
```bash
Install all required packages
sudo apt install cmake libopenblas-dev libeigen3-dev ```
macOS Systems
Install Homebrew if you don't have it already, then run:
```bash
Install all required packages
brew install cmake openblas eigen libomp lapack ```
Troubleshooting Homebrew: If you encounter installation errors, try these steps: ```bash
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 ```
RHEL/CentOS/Fedora Systems
```bash
Install all required packages
sudo yum install cmake openblas-devel eigen3-devel lapack ```
Building and Installing
Clone the repository:
bash git clone https://github.com/csrc-sdsu/mole.git cd moleBuild the library:
bash mkdir build && cd build cmake .. makeInstall the library:
- For a custom location:
bash cmake --install . --prefix /path/to/location - For a system location (requires privileges):
bash sudo cmake --install .Orbash sudo cmake --install . --prefix /path/to/privileged/location
- For a custom location:
Note: Armadillo and SuperLU will be automatically installed in the build directory during the build process.
Testing
Run from the build directory:
C++
A suite of four automatic tests that verify MOLE's installation and dependencies. These tests run automatically during the C++ library construction.
bash
make run_tests
MATLAB/Octave
MATLAB/Octave equivalent of the C++ test suite. We recommend running these tests before using MOLE to ensure proper setup.
matlab
make run_matlab_octave_tests
Examples
Many of the examples require 'gnuplot' to visualize the results. You can get gnuplot on macOSX with
bash
brew install gnuplot
and on Windows downlaoding and running the file from here
C++
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.
MATLAB/Octave Examples
A collection of over 30 examples showcasing various PDE solutions, from simple linear one-dimensional problems to complex nonlinear multidimensional scenarios.
Documentation
MOLE comes with comprehensive documentation:
- API Reference & User Guide: Access our online Documentation
- Building Documentation: To build documentation locally, follow our Documentation Guide.
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.
bibtex
@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:
bibtex
@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},
}
Gallery
Now, some cool pictures obtained with MOLE:

Citation (CITATION.cff)
cff-version: "1.2.0"
title: "MOLE: Mimetic Operators Library Enhanced"
message: "Please cite the following works when using this software."
authors:
- family-names: Barra
given-names: Valeria
orcid: 0000-0003-1129-2056
- family-names: Boada
given-names: Angel
- family-names: Brzenski
given-names: Jared
- family-names: Castillo
given-names: Jose
- family-names: Chakalasiya
given-names: Prit
- family-names: Singh
given-names: Surinder Chhabra
- family-names: Corbino
given-names: Johnny
orcid: 0000-0002-2638-9216
- family-names: Drummond
given-names: Tony
- family-names: Dumett
given-names: Miguel
- family-names: Hellmers
given-names: Joe
- family-names: Ilaty
given-names: Arshia
- family-names: Kaviani
given-names: Katayoon
- family-names: Nzerem
given-names: Oluchi
- family-names: Pagallo
given-names: Giulia
- family-names: Paolini
given-names: Christopher
- family-names: Rosano
given-names: Valentina
- family-names: Srinivas
given-names: Aneesh Murthy
- family-names: Srinivasan
given-names: Janani Priyadharshini
- family-names: Valera
given-names: Manuel
doi: https://zenodo.org/records/16898575
version: "1.1.0"
date-released: "2025-08-13"
url: https://mole-docs.readthedocs.io/en/main/
repository: https://github.com/csrc-sdsu/mole
preferred-citation:
message: If you use this software, please also cite our article in the Journal of Open Source Software.
authors:
- family-names: Corbino
given-names: Johnny
orcid: "https://orcid.org/0000-0002-2638-9216"
- family-names: Dumett
given-names: Miguel A.
- family-names: Castillo
given-names: Jose E.
date-published: 2024-07-17
doi: 10.21105/joss.06288
issn: 2475-9066
issue: 99
journal: Journal of Open Source Software
publisher:
name: Open Journals
start: 6288
title: "MOLE: Mimetic Operators Library Enhanced"
type: article
url: "https://joss.theoj.org/papers/10.21105/joss.06288"
volume: 9
GitHub Events
Total
- Create event: 55
- Issues event: 99
- Watch event: 15
- Delete event: 43
- Member event: 1
- Issue comment event: 413
- Push event: 287
- Pull request review event: 357
- Pull request review comment event: 354
- Pull request event: 164
- Fork event: 26
Last Year
- Create event: 55
- Issues event: 99
- Watch event: 15
- Delete event: 43
- Member event: 1
- Issue comment event: 413
- Push event: 287
- Pull request review event: 357
- Pull request review comment event: 354
- Pull request event: 164
- Fork event: 26
Issues and Pull Requests
Last synced: 6 months ago
All Time
- Total issues: 61
- Total pull requests: 91
- Average time to close issues: about 1 month
- Average time to close pull requests: 9 days
- Total issue authors: 16
- Total pull request authors: 18
- Average comments per issue: 1.18
- Average comments per pull request: 2.48
- Merged pull requests: 59
- Bot issues: 0
- Bot pull requests: 1
Past Year
- Issues: 60
- Pull requests: 88
- Average time to close issues: 24 days
- Average time to close pull requests: 8 days
- Issue authors: 15
- Pull request authors: 17
- Average comments per issue: 1.15
- Average comments per pull request: 2.57
- Merged pull requests: 57
- Bot issues: 0
- Bot pull requests: 1
Top Authors
Issue Authors
- valeriabarra (17)
- pritkc (15)
- jbrzensk (8)
- edfink234 (3)
- jcastillo001 (3)
- aneeshs1729 (3)
- arrowguy234 (2)
- mdumett (2)
- SavannaSpayd (1)
- JananiPSrinivasan (1)
- Tony-Drummond (1)
- katayoonk (1)
- joehellmersNOAA (1)
- Amey-kulkarni19 (1)
- jhabriel (1)
Pull Request Authors
- pritkc (22)
- JananiPSrinivasan (20)
- jbrzensk (14)
- aneeshs1729 (7)
- valeriabarra (6)
- arrowguy234 (4)
- joehellmers (3)
- katayoonk (2)
- onzerem (2)
- mdumett (2)
- edfink234 (2)
- Amey-kulkarni19 (1)
- joehellmersNOAA (1)
- dependabot[bot] (1)
- hareesh-cs (1)
Top Labels
Issue Labels
Pull Request Labels
Dependencies
- actions/checkout v2 composite
- actions/upload-artifact v2 composite
- openjournals/openjournals-draft-action master composite
- actions/checkout v3 composite
- actions/checkout v4 composite
- super-linter/super-linter v5 composite