GithubHelp home page GithubHelp logo

dimpase / arpack-ng Goto Github PK

View Code? Open in Web Editor NEW

This project forked from opencollab/arpack-ng

0.0 2.0 0.0 2.45 MB

Collection of Fortran77 subroutines designed to solve large scale eigenvalue problems.

License: Other

Fortran 92.57% C 0.75% Shell 0.21% CMake 1.15% Makefile 0.28% M4 1.06% C++ 2.71% Python 1.26%

arpack-ng's Introduction

ARPACK-NG is a collection of Fortran77 subroutines designed to solve large scale eigenvalue problems.


Coverage Status

Important Features:

  • Reverse Communication Interface.
  • Single and Double Precision Real Arithmetic Versions for Symmetric, Non-symmetric, Standard or Generalized Problems.
  • Single and Double Precision Complex Arithmetic Versions for Standard or Generalized Problems.
  • Routines for Banded Matrices - Standard or Generalized Problems.
  • Routines for The Singular Value Decomposition.
  • Example driver routines that may be used as templates to implement numerous Shift-Invert strategies for all problem types, data types and precision.
  • arpackmm: utility to test arpack with matrix market files. Note: to run this utility, you need the eigen library (to handle RCI).
  • ILP64 support:
    • reminder: you can NOT mix ILP64 with LP64. If you compile arpack-ng with ILP64 (resp. LP64) support, you MUST insure your BLAS/LAPACK is compliant with ILP64 (resp. LP64).
    • users: set INTERFACE64 at configure time.
    • F77/F90 developers:
      • all files which needs ILP64 support must include "arpackicb.h".
      • when coding, use i_int (defined in arpackicb.h) instead of c_int. i_int stands for "iso_c_binding int": it's #defined to c_int or c_int64_t according to the architecture.
    • C/C++ developers:
      • all files which needs ILP64 support must include "arpackdef.h".
      • when coding, use a_int (defined in arpackdef.h) instead of int. a_int stands for "architecture int": it's #defined to int or int64_t according to the architecture.
    • example: to test arpack with sequential ILP64 MKL assuming you use gnu compilers
      $ export FFLAGS='-DMKL_ILP64 -I/usr/include/mkl'
      $ export FCFLAGS='-DMKL_ILP64 -I/usr/include/mkl'
      $ export LIBS='-Wl,--no-as-needed -L/usr/lib/x86_64-linux-gnu -lmkl_sequential -lmkl_core -lpthread -lm -ldl'
      $ export INTERFACE64=1
      $ ./configure --with-blas=mkl_gf_ilp64 --with-lapack=mkl_gf_ilp64
      $ make all check```
      
  • pyarpack: python support based on Boost.Python.Numpy exposing C++ API.

This project started as a joint project between Debian, Octave and Scilab in order to provide a common and maintained version of arpack. This is now a community project maintained by a few volunteers.

Indeed, no single release has been published by Rice university for the last few years and since many software (Octave, Scilab, R, Matlab...) forked it and implemented their own modifications, arpack-ng aims to tackle this by providing a common repository, maintained versions with a testsuite.

arpack-ng is replacing arpack almost everywhere.

  1. You have successfully unbundled ARPACK-NG and are now in the ARPACK-NG directory that was created for you.

  2. The directory SRC contains the top level routines including the highest level reverse communication interface routines

  • ssaupd, dsaupd - symmetric single and double precision

  • snaupd, dnaupd - non-symmetric single and double precision

  • cnaupd, znaupd - complex non-symmetric single and double precision

    The headers of these routines contain full documentation of calling sequence and usage. Additional information is in the DOCUMENTS directory.

    The directory PARPACK contains the Parallel ARPACK routines.

  1. Example driver programs that illustrate all the computational modes, data types and precisions may be found in the EXAMPLES directory. Upon executing the 'ls EXAMPLES' command you should see
  • BAND

  • COMPLEX

  • NONSYM

  • README

  • SIMPLE

  • SVD

  • SYM

    Example programs for banded, complex, nonsymmetric, symmetric, and singular value decomposition may be found in the directories BAND, COMPLEX, NONSYM, SYM, SVD respectively. Look at the README file for further information. To get started, get into the SIMPLE directory to see example programs that illustrate the use of ARPACK in the simplest modes of operation for the most commonly posed standard eigenvalue problems.

    Example programs for Parallel ARPACK may be found in the directory PARPACK/EXAMPLES. Look at the README file for further information.

    The following instructions explain how to make the ARPACK library.

  1. Unlike ARPACK, ARPACK-NG is providing autotools and cmake based build system and iso_c_binding support (which enables to call fortran subroutines natively from C or C++).

Therefore, the classical commands should work as expected:

$ sh bootstrap
$ ./configure
$ make
$ make check
$ make install

Furthermore, ARPACK-NG now provides CMake functionality:

$ mkdir build
$ cd build
$ cmake -D EXAMPLES=ON -D MPI=ON -D BUILD_SHARED_LIBS=ON ..
$ make
$ make install

builds everything including examples and parallel support (with MPI).

To use arpack from CMake, use ARPACK::ARPACK target:

find_package(arpack-ng)
add_executable(main main.f)
target_include_directories(main PUBLIC ARPACK::ARPACK)
target_link_libraries(main ARPACK::ARPACK)

To use parpack from CMake, use PARPACK::PARPACK target:

find_package(arpack-ng)
add_executable(main main.f)
target_include_directories(main PUBLIC PARPACK::PARPACK)
target_link_libraries(main PARPACK::PARPACK)

On mac OS, with GNU compilers, you may need to customize options:

$ LIBS="-framework Accelerate" FFLAGS="-ff2c -fno-second-underscore" FCFLAGS="-ff2c -fno-second-underscore" ./configure

To build with code coverage:

$ mkdir build
$ cd build
$ cmake -DCOVERALLS=ON -DCMAKE_BUILD_TYPE=Debug ..
$ make all check test coveralls

To get iso_c_binding support:

$ ./configure --enable-icb
$ cmake -D ICB=ON

The install will now provide arpack.h/hpp, parpack.h/hpp and friends. Examples of use can be found in ./TESTS and ./PARPACK/TESTS/MPI. A few related links can be found here:

  1. Within DOCUMENTS directory there are three files
  • ex-sym.doc

  • ex-nonsym.doc and

  • ex-complex.doc

    for templates on how to invoke the computational modes of ARPACK. Also look in the README.MD file for explanations concerning the other documents.

Good luck and enjoy.

arpack-ng's People

Contributors

10110111 avatar adamadanandy avatar badshah400 avatar caliarim avatar davydden avatar dbeurle avatar dimpase avatar dschwoerer avatar fghoussen avatar gimunu avatar iskakoff avatar jordigh avatar jschueller avatar luzpaz avatar m-reuter avatar matzeri avatar mergify[bot] avatar nalimilan avatar pv avatar rudimeier avatar rwirth avatar ryanbernx avatar sylvestre avatar thrasibule avatar turboencabulator avatar vtjnash avatar wpoely86 avatar ypnos avatar zbeekman avatar zohodarkarrow avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.