MOLE
MOLE: Mimetic Operators Library Enhanced - Published in JOSS (2024)
Science Score: 100.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 8 DOI reference(s) in README and JOSS metadata -
✓Academic publication links
Links to: joss.theoj.org -
✓Committers with academic emails
2 of 5 committers (40.0%) from academic institutions -
○Institutional organization owner
-
✓JOSS paper metadata
Published in Journal of Open Source Software
Keywords
Repository
Mimetic Operators Library Enhanced
Basic Info
Statistics
- Stars: 27
- Watchers: 10
- Forks: 18
- Open Issues: 0
- Releases: 5
Topics
Metadata Files
README.md
MOLE: Mimetic Operators Library Enhanced
1: 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, 2020. However, the user may find helpful previous publications, such as Castillo and Grone, 2003, in which similar operators were derived using a matrix analysis approach.
2: Licensing
MOLE is distributed under a GNU General Public License; please refer to the LICENSE file for more details.
3: Installation (Linux)
To use MOLE (C++ version), you need to have Armadillo C++ http://arma.sourceforge.net, SuperLU https://portal.nersc.gov/project/sparse/superlu, and OpenBLAS https://www.openblas.net installed on your computer.
Assuming a working installation of SuperLU (sudo apt install libsuperlu-dev or sudo yum install SuperLU-devel), and OpenBLAS (sudo apt install libopenblas-dev or sudo yum install openblas-devel), follow these steps:
wget https://sourceforge.net/projects/arma/files/armadillo-12.6.6.tar.xz
tar xvf armadillo-12.6.6.tar.xz
cd armadillo-12.6.6
NOTE: We suggest to use the latest stable version.
Define ARMA_USE_SUPERLU and ARMA_USE_OPENMP in include/armadillo_bits/config.hpp. Make sure that you have cmake and g++ installed before executing:
./configure
make
This will create libarmadillo.so.
Now go to mole/ and build MOLE via:
ARMA=PATH_TO_ARMADILLO_FOLDER make
Or simply:
make
if Armadillo was installed via sudo apt install libarmadillo-dev or sudo yum install armadillo-devel.
A static library named libmole.a will be created after the previous step. From this point, you need to include mole.h
in your projects, specify the location of libmole.a to the linker. For the users interested in building MOLE as a shared library, specify make SHARED_LIB=1. Make sure to include mole_C++ directory in LD_LIBRARY_PATH (export LD_LIBRARY_PATH=/full/path/to/mole_C++) so the loader can find the library at runtime.
For our library's MATLAB/Octave version, the only dependency is to have MATLAB/Octave installed. The two implementations of MOLE (C++ & MATLAB/Octave) are independent; you don't need to build the C++ version if you are just interested in using MOLE from MATLAB/Octave.
4: Running Examples & Tests
Here are instructions on how to run the provided examples and tests for both the C++ and MATLAB versions of the library to help you quickly get started with MOLE.
tests_C++: These tests, which are automatically executed upon constructing the library's C++ version, play a crucial role in verifying the correct installation of MOLE and its dependencies. There are four tests in total.
tests_MATLAB: We encourage MATLAB users to execute these tests before using MOLE by entering the
tests_MATLABdirectory and executingrun_tests.mfrom MATLAB. These tests are analogous to those contained intests_C++.examples_C++: These will be automatically built after calling
make. We encourage C++ users to make this their entry point to familiarize themselves with this library version. The four examples are self-contained and properly documented, and they solve typical PDEs.examples_MATLAB: Most of our examples are provided in the MATLAB scripting language. There are over 30 examples, ranging from linear one-dimensional PDEs to highly nonlinear multidimensional PDEs.
5: Documentation
The folder doc_MATLAB contains generated documentation about the MATLAB/Octave API.
It was generated with a tool called m2html. However, for a quick start on MOLE's MATLAB/Octave version, we recommend starting with this short guide.
For C++ users, we provide a short guide to MOLE's C++ flavor. However, for those in need of more details to interact with the library, we suggest to follow these instructions:
To generate the C++ documentation, execute:
doxygen Doxyfile (requires Doxygen and Graphviz)
this will create a folder called doc_C++ containing a set of html files. Please refer to the index.html file
to start browsing the documentation.
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.
6: Community Guidelines
We welcome contributions to MOLE, whether they involve adding new functionalities, providing examples, addressing existing issues, reporting bugs, or requesting new features. For more details, please refer to our Contribution Guidelines.
7: Citations
Please cite our work if you use MOLE in your research or software.
Citations are useful for the continued development and maintenance of
the library
Important Notice
For the latest updates and ongoing development, please look at the MOLE repository maintained by the Computational Science Research Center at San Diego State University. The content here is mirrored, but the university's repository will receive priority for new features and improvements.
Thank you for your understanding and support!
Now, some cool pics just because!

Owner
- Name: Johnny Corbino Delgado, Ph.D.
- Login: jcorbino
- Kind: user
- Location: San Diego, California
- Company: ASML
- Website: linkedin.com/in/johnnycorbino
- Repositories: 13
- Profile: https://github.com/jcorbino
Computer Scientist | HPC | Applied Mathematics | PIML
JOSS Publication
MOLE: Mimetic Operators Library Enhanced
Authors
Computational Research Division, Lawrence Berkeley National Laboratory, Berkeley, California, 94720, USA.
Computational Science Research Center, San Diego State University, 5500 Campanile Dr, San Diego, California, 92182, USA.
Computational Science Research Center, San Diego State University, 5500 Campanile Dr, San Diego, California, 92182, USA.
Tags
Mimetic PDE Discrete vector calculus High-order ConservativeCitation (CITATION.cff)
cff-version: "1.2.0"
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.
contact:
- family-names: Corbino
given-names: Johnny
orcid: "https://orcid.org/0000-0002-2638-9216"
doi: 10.5281/zenodo.12752946
message: If you use this software, please cite our article in the
Journal of Open Source Software.
preferred-citation:
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
title: "MOLE: Mimetic Operators Library Enhanced"
GitHub Events
Total
- Watch event: 2
- Fork event: 1
Last Year
- Watch event: 2
- Fork event: 1
Committers
Last synced: 7 months ago
Top Committers
| Name | Commits | |
|---|---|---|
| Johnny Corbino Delgado | j****o@g****m | 579 |
| Daniel S. Katz | d****z@i****g | 2 |
| Victor A. P. Magri | p****1@l****v | 1 |
| Jed Brown | j****d@j****g | 1 |
| Angel Boada | a****2@g****m | 1 |
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: 6 months ago
All Time
- Total issues: 7
- Total pull requests: 12
- Average time to close issues: about 2 months
- Average time to close pull requests: 2 days
- Total issue authors: 2
- Total pull request authors: 4
- Average comments per issue: 5.0
- Average comments per pull request: 0.25
- Merged pull requests: 11
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 0
- Pull requests: 2
- Average time to close issues: N/A
- Average time to close pull requests: 34 minutes
- Issue authors: 0
- Pull request authors: 2
- Average comments per issue: 0
- Average comments per pull request: 0.0
- Merged pull requests: 2
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- jakelangham (6)
- jshipton (1)
Pull Request Authors
- jcorbino (9)
- victorapm (2)
- jedbrown (2)
- danielskatz (2)
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