SPI
SLEPc PETSc Interface is used for rapid development and intuitive matrix operations similar to MatLab or NumPy style of operations
SPI (SLEPc PETSc Interface)
Author
Shaun Harris (https://srharris91.github.io/)
Copyright (C) 2019

Information

This library is to work with SLEPc and PETSc Mat and Vec in C++ to aid in rapid development of solvers. This code is being implemented to make the PETSc Mat and Vec easier to work with and use. It is intended for simplifying many of the MatAXPY calls and things to make them more intuitive and easier to parallelize. It's main purpose is to make use of operator overloading such that two parallel matrices can be added with A+B and MatMatMult type calls are replaced with A*B, etc. Other helper functions such as linspace, eig, kron, block, and other functions are implemented to make matrix/vector creation easier for rapid development.

PETSc configuration

Use the following code to configure your PETSc Submodule. This will capture all the necessary packages for MPI and C++ items. Then follow the directions generated to compile and test. Everything should work.

python2 './configure' '--with-scalar-type=complex' '--with-precision=double' 'with-clanguage=c++' '--download-mumps' '--download-hdf5' '--download-scalapack' '--download-parmetis' '--download-metis' '--download-ptscotch' '--with-cc=mpicc' '--with-cxx=mpicxx' '--with-fc=mpif90' '--with-debugging=0' 'COPTFLAGS='-O3 -march=native -mtune=native'' 'CXXOPTFLAGS='-O3 -march=native -mtune=native'' 'FOPTFLAGS='-O3 -march=native -mtune=native''

SLEPc configuration

use the following code to configure your SLEPc Submodule. It should capture all of the commands when you supply the PETSC_DIR and PETSC_ARCH variables to the environment.

python2 './configure'