mole

The Mimetic Operators Library Enhanced

https://github.com/csrc-sdsu/mole

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

finite-differences mimetic numerical-methods pde vector-calculus
Last synced: 6 months ago · JSON representation ·

Repository

The Mimetic Operators Library Enhanced

Basic Info
Statistics
  • Stars: 31
  • Watchers: 10
  • Forks: 59
  • Open Issues: 17
  • Releases: 4
Topics
finite-differences mimetic numerical-methods pde vector-calculus
Created almost 5 years ago · Last pushed 6 months ago
Metadata Files
Readme Contributing License Code of conduct Citation Security Authors Zenodo

README.md

MOLE: Mimetic Operators Library Enhanced

JOSS paper MATLAB File Exchange License Build Status Documentation

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

  1. Clone the repository: bash git clone https://github.com/csrc-sdsu/mole.git cd mole

  2. Build the library: bash mkdir build && cd build cmake .. make

  3. Install the library:

    • For a custom location: bash cmake --install . --prefix /path/to/location
    • For a system location (requires privileges): bash sudo cmake --install . Or bash sudo cmake --install . --prefix /path/to/privileged/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:

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:

Obtained with curvilinear operators Obtained with curvilinear operators Obtained with curvilinear operators Obtained with curvilinear operators Obtained with curvilinear operators Obtained with curvilinear operators Obtained with curvilinear operators Obtained with curvilinear operators

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
Documentation (18) Enhancement (7) Discussion (6) Bug (4) documentation (3) enhancement (3) Help wanted (2) good first issue (2) Tests (1) Invalid (1)
Pull Request Labels
Documentation (9) documentation (5) Enhancement (4) bug (3) enhancement (2) Bug (2) dependencies (1) python (1) refactoring (1)

Dependencies

.github/workflows/JOSS-draft.yml actions
  • actions/checkout v2 composite
  • actions/upload-artifact v2 composite
  • openjournals/openjournals-draft-action master composite
.github/workflows/build_and_test.yml actions
  • actions/checkout v3 composite
.github/workflows/linter.yml actions
  • actions/checkout v4 composite
  • super-linter/super-linter v5 composite