SHTns /

The default branch has multiple heads

Filename Size Date modified Message
150 B
1.1 KB
607 B
20.6 KB
4.9 KB
5.2 KB
94.8 KB
3.9 KB
2.8 KB
3.1 KB
2.4 KB
152.6 KB
5.9 KB
13.5 KB
944 B
3.7 KB
21.0 KB
1.5 KB
1.4 KB
1.7 KB
13.1 KB
1.3 KB
1.6 KB
14.1 KB
12.7 KB
16.3 KB
173.6 KB
5.8 KB
877 B
22.1 KB
953 B
SHTns is a high performance library for Spherical Harmonic Transform written in C, aimed at
numerical simulation (fluid flows, mhd, ...) in spherical geometries.

Copyright (c) 2010-2012 Centre National de la Recherche Scientifique.
written by Nathanael Schaeffer (CNRS, ISTerre, Grenoble, France).
SHTns is distributed under the open source CeCILL License (GPL compatible)
located in the LICENSE file.


	- blazingly fast
	- both scalar and vector transforms
	- backward and forward (synthesis and analysis) functions
	- flexible truncation (degree, order, azimuthal periodicity)
	- spatial data can be stored in latitude-major or longitude-major order arrays.
	- various conventions (normalization and Condon-Shortley phase)
	- can be used from Fortran, c/c++, and Python programs
	- a highly efficient Gauss algorithm working with Gauss nodes (based on Gauss-Legendre quadrature)
	- support for SSE2, SSE3 and AVX vectorization with gcc.
	- parallel transforms with OpenMP (for Gauss grid only).
	- an algorithm using DCT for regular nodes (based on a generalized Fejer quadrature)
	- synthesis (inverse transform) at any coordinate (not constrained to a grid) useful for rendering purposes.
	- ability to choose the optimal spatial sizes for a given spherical harmonic truncation.
	- on-the-fly transforms : saving memory and bandwidth, and can even be faster depending on architecture.
	- accurate up to spherical harmonic degree l=8000 (at least).
	- rotation functions to rotate spherical harmonics (beta).

	Briefly, the shell commands `./configure; make; make install' should
	configure, build, and install this package. `./configure --help' will list
	available options. However, in order to get the best performance, it is highly
	recommended to compile and install the FFTW library yourself, because many
	distributions include a non-optimized FFTW library.


	- On-line doc is available:
	- You can build it locally: Run "make docs" to generate documentation with doxygen.
	  Then browse the html documentation starting with doc/html/index.html
	- A related research paper can be found on arXiv:
	  If you use SHTns for research work, please cite this paper.


  v2.2.4  (25 Jun 2012)
	- the previous critical bugfix had not been applied to parallel OpenMP transforms.

  v2.2.3  (24 Jun 2012)
	- critical bugfix: SHtor_to_spat() and SHsph_to_spat() gave wrong results for mmax>0 with on-the-fly transoforms.
	- minor bugfix in Python interface.

  v2.2.2  (21 Jun 2012)
	- better Python interface: using synth() and analys() methods.
	- bugfix in build system: can now compile python extension without openmp.

  v2.2.1  (21 May 2012)
	- slightly faster parallel transforms.
	- better Python interface: decent error handling and keyword argument support.
	- changes to Python interface: grid defaults to SHT_PHI_CONTIGUOUS, set_grid_auto() removed.
	- bugfix: default compilation with FFTW 3.0 to avoid "bad Gauss points" error.
	- bugfix: correct alignement of gauss weights in 32 bit systems to avoid segfaults.
	- new ./configure script for easier configuration and compilation.

  v2.2  (23 Apr 2012)
	- parallel transforms with OpenMP (for Gauss grid, significant benefit for l>=127).

  v2.1  (8 Mar 2012)
	- support for huge spherical harmonic degree (tested up to l>43600).
	- speed improvements, especially for large transforms.
	- compilation with FFTW v3.0 or more is now possible through a configuration option (see sht_config.h)

  v2.0  (9 Feb 2012)
	- support for AVX instruction set (almost x2 speed-up on Sandy-Bridge processors).
	- allow multiple transforms with different sizes, normalizations and grids (C interface only).
	- changes to C interface : most functions now require a handle to identify the transform. (Fortran interface unchanged)
	- transforms are accurate up to spherical harmonic degree l=2700 (at least).
	- lots of small improvements, speed-ups and a few bug fixes.
	- requires FFTW v3.3.
	- better Python interface using NumPy arrays (beta).
	- rotation functions to rotate spherical harmonics (beta).

  v1.5  (4 May 2011)
	- on-the-fly transforms which do not require huge matrices : save memory and bandwidth,
	  and can be faster on some architecture.
	- runtime selection of fastest algorithm, including on-the-fly transforms.
	- transforms are accurate up to spherical harmonic degree l=2045 (at least).
	- fix a bug that lead to wrong results for SHtor_to_spat() and SHsph_to_spat().
	- a bunch of minor improvements, optimizations and fixes.

  v1.0  (9 June 2010)
	- initial release for C/C++ and Fortran under CeCILL licence (GPL compatible).
	- scalar and vector, forward and backward transforms.
	- support several normalization conventions.
	- transforms are accurate up to spherical harmonic degree l=1300 (at least).
	- flexible truncation and spatial sizes.
	- support spatial data stored in latitude-major or longitude-major arrays.
	- regular grid (with DCT acceleration) or Gauss grid (highly optimized).
	- SSE2 vectorization.
	- synthesis at any coordinate (not constrained to grid).
	- can choose the optimal spatial size for a given spherical harmonic truncation.
	- requires FFTW 3.0.