All Projects → cpmech → Gosl

cpmech / Gosl

Licence: bsd-3-clause
Linear algebra, eigenvalues, FFT, Bessel, elliptic, orthogonal polys, geometry, NURBS, numerical quadrature, 3D transfinite interpolation, random numbers, Mersenne twister, probability distributions, optimisation, differential equations.

Programming Languages

c
50402 projects - #5 most used programming language
go
31211 projects - #10 most used programming language
shell
77523 projects
python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Gosl

Simpeg
Simulation and Parameter Estimation in Geophysics - A python package for simulation and gradient based parameter estimation in the context of geophysical applications.
Stars: ✭ 283 (-82.63%)
Mutual labels:  linear-algebra, scientific-computing, optimization
Peroxide
Rust numeric library with R, MATLAB & Python syntax
Stars: ✭ 191 (-88.28%)
Mutual labels:  linear-algebra, scientific-computing, optimization
Owl
Owl - OCaml Scientific and Engineering Computing @ http://ocaml.xyz
Stars: ✭ 919 (-43.59%)
Mutual labels:  linear-algebra, scientific-computing, optimization
ArnoldiMethod.jl
Implicitly Restarted Arnoldi Method, natively in Julia
Stars: ✭ 59 (-96.38%)
Mutual labels:  linear-algebra, eigenvectors, eigenvalues
GenericSchur.jl
Julia package for Schur decomposition of matrices with generic element types
Stars: ✭ 14 (-99.14%)
Mutual labels:  linear-algebra, eigenvectors, eigenvalues
mathematics-for-machine-learning-coursera
quizzes/assignments for mathematics for machine learning specialization on coursera
Stars: ✭ 264 (-83.79%)
Mutual labels:  linear-algebra, eigenvectors, eigenvalues
owl ode
Owl's Differential Equation Solvers
Stars: ✭ 24 (-98.53%)
Mutual labels:  scientific-computing, differential-equations
gibbous
Convex optimization for java and scala, built on Apache Commons Math
Stars: ✭ 17 (-98.96%)
Mutual labels:  optimization, linear-programming
Grassmann.jl
⟨Leibniz-Grassmann-Clifford⟩ differential geometric algebra / multivector simplicial complex
Stars: ✭ 289 (-82.26%)
Mutual labels:  linear-algebra, computational-geometry
Teaching
Teaching Materials for Dr. Waleed A. Yousef
Stars: ✭ 435 (-73.3%)
Mutual labels:  linear-algebra, optimization
monolish
monolish: MONOlithic LInear equation Solvers for Highly-parallel architecture
Stars: ✭ 166 (-89.81%)
Mutual labels:  linear-algebra, scientific-computing
Ojalgo
oj! Algorithms
Stars: ✭ 336 (-79.37%)
Mutual labels:  linear-algebra, optimization
Tiramisu
A polyhedral compiler for expressing fast and portable data parallel algorithms
Stars: ✭ 685 (-57.95%)
Mutual labels:  linear-algebra, optimization
dfogn
DFO-GN: Derivative-Free Optimization using Gauss-Newton
Stars: ✭ 20 (-98.77%)
Mutual labels:  optimization, scientific-computing
bitpit
Open source library for scientific HPC
Stars: ✭ 80 (-95.09%)
Mutual labels:  scientific-computing, computational-geometry
Armadillo Code
Armadillo: fast C++ library for linear algebra & scientific computing - http://arma.sourceforge.net
Stars: ✭ 388 (-76.18%)
Mutual labels:  linear-algebra, scientific-computing
Liblaml
A stand-alone pure C++ library for linear algebra and machine learning
Stars: ✭ 7 (-99.57%)
Mutual labels:  linear-algebra, optimization
Okalgo
Idiomatic Kotlin extensions for ojAlgo
Stars: ✭ 20 (-98.77%)
Mutual labels:  linear-algebra, optimization
Spirit
Atomistic Spin Simulation Framework
Stars: ✭ 67 (-95.89%)
Mutual labels:  scientific-computing, optimization
Cpp-Examples
Numerical C++ examples.
Stars: ✭ 38 (-97.67%)
Mutual labels:  linear-algebra, scientific-computing

Gosl - Go scientific library

Go Reference Go Report Card codecov Awesome

Gosl is a set of tools for developing scientific simulations using the Go language. We mainly consider the development of numerical methods and solvers for differential equations but also present some functions for fast Fourier transforms, the generation of random numbers, probability distributions, and computational geometry.

This library contains essential functions for linear algebra computations (operations between all combinations of vectors and matrices, eigenvalues and eigenvectors, linear solvers) and the development of numerical methods (e.g. numerical quadrature).

We link Gosl with existent libraries written in C and Fortran, such as OpenBLAS, LAPACK, UMFPACK, MUMPS, QUADPACK and FFTW3. These existing libraries have been fundamental for the development of high-performant simulations over many years. We believe that it is nearly impossible to rewrite these libraries in native Go and at the same time achieve the same speed delivered by them. Just for reference, a naive implementation of matrix-matrix multiplication in Go is more than 100 times slower than OpenBLAS.

Installation

Because of the other libraries, the easiest way to work with Gosl is via Docker. Having Docker and VS Code installed, you can start developing powerful numerical simulations using Gosl in a matter of minutes. Furthermore, it works on Windows, Linux, and macOS out of the box.

Containerized

  1. Install Docker
  2. Install Visual Studio Code
  3. Install the Remote Development extension for VS Code
  4. Clone https://github.com/cpmech/hello-gosl
  5. Create your application within a container (see gif below)

Done. And your system will "remain clean."

Debian/Ubuntu GNU Linux

First, install Go as explained in https://golang.org/doc/install

Second, install some libraries:

sudo apt-get install \
  gcc \
  gfortran \
  libfftw3-dev \
  liblapacke-dev \
  libmetis-dev \
  libmumps-seq-dev \
  libopenblas-dev \
  libsuitesparse-dev

Finally, download and compile Gosl:

git clone https://github.com/cpmech/gosl.git
cd gosl
./all.bash

Done. Installation completed.

Documentation

Gosl includes the following essential packages:

  • chk. To check numerical results and for unit testing
  • io. Input/output including printing to the terminal and handling files
  • utl. To generate series (e.g. linspace) and other functions as in pylab/matlab/octave
  • la. Linear Algebra: vector, matrix, efficient sparse solvers, eigenvalues, decompositions

Gosl includes the following main packages:

  • fun. Special functions, DFT, FFT, Bessel, elliptical integrals, orthogonal polynomials, interpolators
  • gm. Geometry algorithms and structures
  • hb. Pseudo hierarchical binary (hb) data file format
  • num. Fundamental numerical methods such as root solvers, non-linear solvers, numerical derivatives and quadrature
  • ode. Solvers for ordinary differential equations
  • opt. Numerical optimization: Interior Point, Conjugate Gradients, Powell, Grad Descent
  • pde. Solvers for partial differential equations (FDM, Spectral, FEM)
  • rnd. Random numbers and probability distributions

(see each subdirectory for more information)

For the sake of maintenance (see next section), we have removed the previous mpi sub-package. However, we recommend the external library gompi if you plan to use MPI.

Previous version

The previous version, including more packages, is available here and can be used with the Docker image 1.1.3 as in this hello gosl example.

These other packages, such as machine learning, plotting, etc., have been removed because they do not depend on CGO and may be developed independently. We can now maintain the core of Gosl more efficiently, which has a focus on the foundation for other scientific code.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].