Skip to content
/ fftwpp Public

Fast Fourier Transform C++ Header/MPI Transpose for FFTW3 with Implicitly Dealiased Convolutions

License

GPL-3.0, LGPL-3.0 licenses found

Licenses found

GPL-3.0
LICENSE
LGPL-3.0
LICENSE.LESSER
Notifications You must be signed in to change notification settings

dealias/fftwpp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

        FFTW++: Fast Fourier Transform C++ Header Class for FFTW3 Library
           Copyright (C) 2004-10 John C. Bowman, University of Alberta
                    http://fftwpp.sourceforge.net

FFTW++ is a C++ header class for Version 3 of the highly optimized FFTW
(http://www.fftw.org) Fourier Transform library. It provides a simple
interface for 1D, 2D, and 3D complex-to-complex, real-to-complex, and
complex-to-real Fast Fourier Transforms and convolutions. It takes
care of the technical aspects of memory allocation, alignment, planning,
and wisdom. Wrappers for multiple 1D transforms are also provided. As with
the FFTW3 library itself, both in-place and out-of-place transforms of
arbitrary size are supported. 

Implicitly dealiasing of standard and centered Hermitian convolutions is
also implemented; in 2D and 3D implicit zero-padding substantially reduces
memory usage and computation time.  For more information, see the
manuscript "Efficient Dealiased Convolutions without Padding"
by John C. Bowman and Malcolm Roberts, submitted to the SIAM Journal on
Scientific Computing, 2010:

http://www.math.ualberta.ca/~bowman/publications/dealias.pdf

Convenient optional shift routines that place the Fourier origin in the logical
center of the domain are provided for centered complex-to-real transforms
in 2D and 3D; see fftw++.h for details.

FFTW++ can also exploit the high-performance Array class available at
http://www.math.ualberta.ca/~bowman/Array (version 1.43 or higher),
designed for scientific computing. The arrays in that package do memory
bounds checking in debugging mode, but can be optimized by specifying the
-DNDEBUG compilation option (1D arrays optimize completely to pointer
operations).

Detailed documentation is provided before each class in the fftw++.h header
file. The included examples illustrate how easy it is to use FFTW in C++
with the FFTW++ header class. Use of the Array class is optional, but
encouraged. If for some reason the Array class is not used, memory should
be allocated with ComplexAlign (or doubleAlign) to ensure that the data is
optimally aligned to sizeof(Complex), to enable the SIMD extensions.
The optional alignment check in fftw++.h can be disabled with the
-DNO_CHECK_ALIGN compiler option.

1D examples using ComplexAlign allocator:
example0.cc
example0r.cc

1D examples using Array class:
example1.cc
example1r.cc

2D examples using Array class:
example2.cc
example2r.cc

3D examples using Array class:
example3.cc
example3r.cc

1D complex implicitly dealiased convolution test:
cconv.cc

1D Hermitian implicitly dealiased convolution test:
conv.cc

1D Hermitian implicitly dealiased biconvolution test:
biconv.cc

2D complex implicitly dealiased convolution test:
cconv2.cc

2D Hermitian implicitly dealiased convolution test:
conv2.cc

2D Hermitian implicitly dealiased biconvolution test:
biconv2.cc

3D complex implicitly dealiased convolution test:
cconv3.cc

3D Hermitian implicitly dealiased convolution test:
conv3.cc

The latest developmental source code of fftw++ is available via Subversion:
svn co https://fftwpp.svn.sourceforge.net/svnroot/fftwpp/trunk/fftw++

All source files in the FFTW++ project, unless explicitly noted otherwise,
are released under version 3 (or later) of the GNU Lesser General Public
License (see the files LICENSE.LESSER and LICENSE in the top-level source
directory).

========================================================================

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

========================================================================

About

Fast Fourier Transform C++ Header/MPI Transpose for FFTW3 with Implicitly Dealiased Convolutions

Resources

License

GPL-3.0, LGPL-3.0 licenses found

Licenses found

GPL-3.0
LICENSE
LGPL-3.0
LICENSE.LESSER

Stars

Watchers

Forks

Packages

No packages published