diff --git a/src/ELECTRODE/pppm_electrode.h b/src/ELECTRODE/pppm_electrode.h index 8e3b86c932..4bfa05c65f 100644 --- a/src/ELECTRODE/pppm_electrode.h +++ b/src/ELECTRODE/pppm_electrode.h @@ -27,27 +27,6 @@ KSpaceStyle(pppm/electrode, PPPMElectrode); #include "electrode_kspace.h" #include "pppm.h" -#if defined(FFT_FFTW3) -#define LMP_FFT_LIB "FFTW3" -#elif defined(FFT_MKL) -#define LMP_FFT_LIB "MKL FFT" -#elif defined(FFT_CUFFT) -#define LMP_FFT_LIB "cuFFT" -#else -#define LMP_FFT_LIB "KISS FFT" -#endif - -#ifdef FFT_SINGLE -typedef float FFT_SCALAR; -#define LMP_FFT_PREC "single" -#define MPI_FFT_SCALAR MPI_FLOAT -#else - -typedef double FFT_SCALAR; -#define LMP_FFT_PREC "double" -#define MPI_FFT_SCALAR MPI_DOUBLE -#endif - namespace LAMMPS_NS { class PPPMElectrode : public PPPM, public ElectrodeKSpace { diff --git a/src/KOKKOS/fftdata_kokkos.h b/src/KOKKOS/fftdata_kokkos.h index 8a853c33af..5ff9a669aa 100644 --- a/src/KOKKOS/fftdata_kokkos.h +++ b/src/KOKKOS/fftdata_kokkos.h @@ -23,20 +23,7 @@ #ifndef LMP_FFT_DATA_KOKKOS_H #define LMP_FFT_DATA_KOKKOS_H -// User-settable FFT precision - -// FFT_PRECISION = 1 is single-precision complex (4-byte real, 4-byte imag) -// FFT_PRECISION = 2 is double-precision complex (8-byte real, 8-byte imag) - -#ifdef FFT_SINGLE -#define FFT_PRECISION 1 -#define MPI_FFT_SCALAR MPI_FLOAT -typedef float FFT_SCALAR; -#else -#define FFT_PRECISION 2 -#define MPI_FFT_SCALAR MPI_DOUBLE -typedef double FFT_SCALAR; -#endif +#include "lmpfftsettings.h" // ------------------------------------------------------------------------- diff --git a/src/KSPACE/fft3d.h b/src/KSPACE/fft3d.h index bd0a1d2472..41e1c8a722 100644 --- a/src/KSPACE/fft3d.h +++ b/src/KSPACE/fft3d.h @@ -13,24 +13,8 @@ #include -// User-settable FFT precision -// FFT_PRECISION = 1 is single-precision complex (4-byte real, 4-byte imag) -// FFT_PRECISION = 2 is double-precision complex (8-byte real, 8-byte imag) - -#ifdef FFT_SINGLE -#define FFT_PRECISION 1 -typedef float FFT_SCALAR; -#else -#define FFT_PRECISION 2 -typedef double FFT_SCALAR; -#endif - -// if user set FFTW, it means FFTW3 - -#ifdef FFT_FFTW -#define FFT_FFTW3 -#endif +#include "lmpfftsettings.h" // ------------------------------------------------------------------------- diff --git a/src/KSPACE/pppm.h b/src/KSPACE/pppm.h index 136aa6ad10..cac5338ed7 100644 --- a/src/KSPACE/pppm.h +++ b/src/KSPACE/pppm.h @@ -21,27 +21,7 @@ KSpaceStyle(pppm,PPPM); #define LMP_PPPM_H #include "kspace.h" - -#if defined(FFT_FFTW3) -#define LMP_FFT_LIB "FFTW3" -#elif defined(FFT_MKL) -#define LMP_FFT_LIB "MKL FFT" -#elif defined(FFT_CUFFT) -#define LMP_FFT_LIB "cuFFT" -#else -#define LMP_FFT_LIB "KISS FFT" -#endif - -#ifdef FFT_SINGLE -typedef float FFT_SCALAR; -#define LMP_FFT_PREC "single" -#define MPI_FFT_SCALAR MPI_FLOAT -#else - -typedef double FFT_SCALAR; -#define LMP_FFT_PREC "double" -#define MPI_FFT_SCALAR MPI_DOUBLE -#endif +#include "lmpfftsettings.h" namespace LAMMPS_NS { diff --git a/src/KSPACE/pppm_disp.h b/src/KSPACE/pppm_disp.h index 533a3a2112..87265bee2f 100644 --- a/src/KSPACE/pppm_disp.h +++ b/src/KSPACE/pppm_disp.h @@ -21,24 +21,7 @@ KSpaceStyle(pppm/disp,PPPMDisp); #define LMP_PPPM_DISP_H #include "kspace.h" - -#if defined(FFT_FFTW3) -#define LMP_FFT_LIB "FFTW3" -#elif defined(FFT_MKL) -#define LMP_FFT_LIB "MKL FFT" -#else -#define LMP_FFT_LIB "KISS FFT" -#endif - -#ifdef FFT_SINGLE -typedef float FFT_SCALAR; -#define LMP_FFT_PREC "single" -#define MPI_FFT_SCALAR MPI_FLOAT -#else -typedef double FFT_SCALAR; -#define LMP_FFT_PREC "double" -#define MPI_FFT_SCALAR MPI_DOUBLE -#endif +#include "lmpfftsettings.h" namespace LAMMPS_NS { diff --git a/src/KSPACE/remap.h b/src/KSPACE/remap.h index 0f91fae996..0e0663be35 100644 --- a/src/KSPACE/remap.h +++ b/src/KSPACE/remap.h @@ -13,13 +13,7 @@ #include -#ifdef FFT_SINGLE -typedef float FFT_SCALAR; -#define MPI_FFT_SCALAR MPI_FLOAT -#else -typedef double FFT_SCALAR; -#define MPI_FFT_SCALAR MPI_DOUBLE -#endif +#include "lmpfftsettings.h" // details of how to do a 3d remap diff --git a/src/PHONON/fix_phonon.h b/src/PHONON/fix_phonon.h index db878a787a..7c790c5efb 100644 --- a/src/PHONON/fix_phonon.h +++ b/src/PHONON/fix_phonon.h @@ -32,15 +32,9 @@ FixStyle(phonon,FixPhonon); #ifndef FIX_PHONON_H #define FIX_PHONON_H -#ifdef FFT_SINGLE -typedef float FFT_SCALAR; -#define MPI_FFT_SCALAR MPI_FLOAT -#else -typedef double FFT_SCALAR; -#define MPI_FFT_SCALAR MPI_DOUBLE -#endif - #include "fix.h" +#include "lmpfftsettings.h" + #include #include diff --git a/src/lmpfftsettings.h b/src/lmpfftsettings.h new file mode 100644 index 0000000000..b55e4acb77 --- /dev/null +++ b/src/lmpfftsettings.h @@ -0,0 +1,52 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +// common FFT library related defines and compilation settings + +#ifndef LMP_FFT_SETTINGS_H +#define LMP_FFT_SETTINGS_H + +// if user set FFTW, it means FFTW3 + +#ifdef FFT_FFTW +#ifndef FFT_FFTW3 +#define FFT_FFTW3 +#endif +#endif + +// set strings for library info output + +#if defined(FFT_FFTW3) +#define LMP_FFT_LIB "FFTW3" +#elif defined(FFT_MKL) +#define LMP_FFT_LIB "MKL FFT" +#elif defined(FFT_CUFFT) +#define LMP_FFT_LIB "cuFFT" +#else +#define LMP_FFT_LIB "KISS FFT" +#endif + +#ifdef FFT_SINGLE +typedef float FFT_SCALAR; +#define FFT_PRECISION 1 +#define LMP_FFT_PREC "single" +#define MPI_FFT_SCALAR MPI_FLOAT +#else + +typedef double FFT_SCALAR; +#define FFT_PRECISION 2 +#define LMP_FFT_PREC "double" +#define MPI_FFT_SCALAR MPI_DOUBLE +#endif + +#endif