Skip to content
/ mole Public
forked from jcorbino/mole

Mimetic Operators Library Enhanced

License

Notifications You must be signed in to change notification settings

victorapm/mole

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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 (matrices) act on staggered grids (uniform and non-uniform) and satisfy local and global conservation laws.

Mathematics are based on the work of Corbino and Castillo, 2020. However, the user may find useful 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++ https://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 get created after the previous step. From this point you just need to include mole.h in your projects and specify the location of libmole.a to the linker. For the users that are interested in building MOLE as a shared library, you just need to 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 the MATLAB/Octave version of our library, the only dependency is to have MATLAB/Octave installed. The two implementations of MOLE (C++ & MATLAB/Octave) are independent, that is, you don't need to build the C++ version if you are just interested in using MOLE from MATLAB/Octave.

4: 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 to start with this short guide.

To generate the C++ documentation, just 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.

5: Citations

Please cite our work if you use MOLE in your research and/or software. Citations are useful for the continued development and maintenance of the library DOI

View mole on File Exchange

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

About

Mimetic Operators Library Enhanced

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • MATLAB 59.5%
  • C++ 29.1%
  • TeX 6.4%
  • Makefile 2.4%
  • M 1.4%
  • C 0.6%
  • QMake 0.6%