diff --git a/configure.ac b/configure.ac index ffb146cdd3d0830b6c835b297b8ac563e6a2b26e..04c82357c08da0db37b358aa099ff81e23e09302 100644 --- a/configure.ac +++ b/configure.ac @@ -150,7 +150,7 @@ AC_ARG_ENABLE([mpi], # so could change. good_mpi="yes" if test "$enable_mpi" = "yes"; then - AX_MPI([CC="$MPICC $ac_cv_prog_cc_stdc" AC_DEFINE(HAVE_MPI, 1, [Define if you have the MPI library.]) ]) + AX_MPI([CC="$MPICC $ac_cv_prog_cc_stdc" AC_DEFINE(HAVE_MPI, 1, [Define if you have the MPI library.]) ], [enable_mpi="no"]) MPI_LIBRARY="Unknown MPI" # Various MPI implementations require additional libraries when also using diff --git a/src/power_spectrum.c b/src/power_spectrum.c index 55a974960081b4843cdea668dcd39a5dabdf177d..1eaef8168a21a01daccaf11179ffde7149cf8361 100644 --- a/src/power_spectrum.c +++ b/src/power_spectrum.c @@ -28,6 +28,8 @@ #include <fftw3.h> #endif +/* Standard headers */ +#include <stdio.h> #include <string.h> /* This object's header. */ @@ -114,6 +116,8 @@ INLINE static const char* get_powtype_filename(const enum power_type type) { void power_init(struct power_spectrum_data* p, struct swift_params* params, int nr_threads) { +#ifdef HAVE_FFTW + /* Get power spectrum parameters */ p->Ngrid = parser_get_opt_param_int(params, "PowerSpectrum:grid_side_length", power_data_default_grid_side_length); @@ -223,8 +227,14 @@ void power_init(struct power_spectrum_data* p, struct swift_params* params, safe_checkdir("power_spectra", /*create=*/1); safe_checkdir("power_spectra/foldings", /*create=*/1); } + +#else + error("Trying to initialize the PS code without FFTW present!"); +#endif } +#ifdef HAVE_FFTW + /** * @brief Shared information for shot noise to be used by all the threads in the * pool. @@ -1355,9 +1365,12 @@ void power_spectrum(const enum power_type type1, const enum power_type type2, pow_data->powgridft = NULL; } +#endif /* HAVE_FFTW */ + void calc_all_power_spectra(struct power_spectrum_data* pow_data, const struct space* s, struct threadpool* tp, const int verbose) { +#ifdef HAVE_FFTW const ticks tic = getticks(); @@ -1375,9 +1388,13 @@ void calc_all_power_spectra(struct power_spectrum_data* pow_data, if (verbose) message("took %.3f %s.", clocks_from_ticks(getticks() - tic), clocks_getunit()); +#else + error("Can't use the PS code without FFTW present!"); +#endif /* HAVE_FFTW */ } void power_clean(struct power_spectrum_data* pow_data) { +#ifdef HAVE_FFTW fftw_destroy_plan(pow_data->fftplanpow); fftw_destroy_plan(pow_data->fftplanpow2); free(pow_data->types2); @@ -1386,6 +1403,9 @@ void power_clean(struct power_spectrum_data* pow_data) { // Probably already done for PM at this point fftw_cleanup_threads(); #endif +#else + error("Can't use the PS code without FFTW present!"); +#endif /* HAVE_FFTW */ } /** @@ -1397,12 +1417,14 @@ void power_clean(struct power_spectrum_data* pow_data) { */ void power_spectrum_struct_dump(const struct power_spectrum_data* p, FILE* stream) { +#ifdef HAVE_FFTW restart_write_blocks((void*)p, sizeof(struct power_spectrum_data), 1, stream, "power spectrum data", "power spectrum data"); restart_write_blocks(p->types1, p->spectrumcount, sizeof(enum power_type), stream, "power types 1", "power types 1"); restart_write_blocks(p->types2, p->spectrumcount, sizeof(enum power_type), stream, "power types 2", "power types 2"); +#endif } /** @@ -1414,6 +1436,7 @@ void power_spectrum_struct_dump(const struct power_spectrum_data* p, */ void power_spectrum_struct_restore(struct power_spectrum_data* p, FILE* stream) { +#ifdef HAVE_FFTW restart_read_blocks((void*)p, sizeof(struct power_spectrum_data), 1, stream, NULL, "power spectrum data"); p->types1 = @@ -1465,4 +1488,5 @@ void power_spectrum_struct_restore(struct power_spectrum_data* p, fftw_free(p->powgrid2); p->powgrid2 = NULL; p->powgridft2 = NULL; +#endif /* HAVE_FFTW */ } diff --git a/src/power_spectrum.h b/src/power_spectrum.h index c717dcaf1ad97a23465a6fa06fc199a7749bf983..97b7feefde6225e590a05f0331b607838a5a24bb 100644 --- a/src/power_spectrum.h +++ b/src/power_spectrum.h @@ -100,9 +100,6 @@ struct power_spectrum_data { void power_init(struct power_spectrum_data* p, struct swift_params* params, int nr_threads); -void power_spectrum(const enum power_type type1, const enum power_type type2, - struct power_spectrum_data* pow_data, const struct space* s, - struct threadpool* tp, const int verbose); void calc_all_power_spectra(struct power_spectrum_data* pow_data, const struct space* s, struct threadpool* tp, const int verbose);