MOLE

MOLE: Mimetic Operators Library Enhanced - Published in JOSS (2024)

https://github.com/jcorbino/mole

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

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

Repository

Mimetic Operators Library Enhanced

Basic Info
  • Host: GitHub
  • Owner: jcorbino
  • License: gpl-3.0
  • Language: MATLAB
  • Default Branch: master
  • Homepage:
  • Size: 11.3 MB
Statistics
  • Stars: 27
  • Watchers: 10
  • Forks: 18
  • Open Issues: 0
  • Releases: 5
Topics
finite-differences mimetic numerical-methods pde vector-calculus
Created over 8 years ago · Last pushed over 1 year ago
Metadata Files
Readme Contributing License Code of conduct Citation Zenodo

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_MATLAB directory and executing run_tests.m from MATLAB. These tests are analogous to those contained in tests_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 DOI

View mole on File Exchange

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!

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

Owner

  • Name: Johnny Corbino Delgado, Ph.D.
  • Login: jcorbino
  • Kind: user
  • Location: San Diego, California
  • Company: ASML

Computer Scientist | HPC | Applied Mathematics | PIML

JOSS Publication

MOLE: Mimetic Operators Library Enhanced
Published
July 17, 2024
Volume 9, Issue 99, Page 6288
Authors
Johnny Corbino ORCID
Computational Research Division, Lawrence Berkeley National Laboratory, Berkeley, California, 94720, USA.
Miguel A. Dumett
Computational Science Research Center, San Diego State University, 5500 Campanile Dr, San Diego, California, 92182, USA.
Jose E. Castillo
Computational Science Research Center, San Diego State University, 5500 Campanile Dr, San Diego, California, 92182, USA.
Editor
Jed Brown ORCID
Tags
Mimetic PDE Discrete vector calculus High-order Conservative

Citation (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

All Time
  • Total Commits: 584
  • Total Committers: 5
  • Avg Commits per committer: 116.8
  • Development Distribution Score (DDS): 0.009
Past Year
  • Commits: 7
  • Committers: 1
  • Avg Commits per committer: 7.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email 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

.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