| 44 |  | * | 
| 45 |  | *  Created by Xiuquan Sun on 05/09/06. | 
| 46 |  | *  @author  Xiuquan Sun | 
| 47 | < | *  @version $Id: Hxy.cpp,v 1.2 2006-05-16 02:06:37 gezelter Exp $ | 
| 47 | > | *  @version $Id: Hxy.cpp,v 1.3 2006-05-16 20:38:23 gezelter Exp $ | 
| 48 |  | * | 
| 49 |  | */ | 
| 50 |  |  | 
| 60 |  | #include<string.h> | 
| 61 |  | #include<stdlib.h> | 
| 62 |  | #include<math.h> | 
| 63 | – | #ifndef WITHOUT_FFTW | 
| 64 | – | #include<fftw3.h> | 
| 65 | – | #endif | 
| 63 |  |  | 
| 64 |  | namespace oopse { | 
| 65 |  |  | 
| 87 |  | } | 
| 88 |  |  | 
| 89 |  | void Hxy::process() { | 
| 90 | < | #ifndef WITHOUT_FFTW | 
| 94 | < |  | 
| 90 | > | #if defined(HAVE_FFTW_H) || defined(HAVE_DFFTW_H) || defined(HAVE_FFTW3_H) | 
| 91 |  | DumpReader reader(info_, dumpFilename_); | 
| 92 |  | int nFrames = reader.getNFrames(); | 
| 93 |  | nProcessed_ = nFrames/step_; | 
| 111 |  | reader.readFrame(istep); | 
| 112 |  | currentSnapshot_ = info_->getSnapshotManager()->getCurrentSnapshot(); | 
| 113 |  | nMolecules = info_->getNGlobalMolecules(); | 
| 114 | < |  | 
| 114 | > |  | 
| 115 |  | Mat3x3d hmat = currentSnapshot_->getHmat(); | 
| 120 | – |  | 
| 116 |  |  | 
| 117 | < | fftw_complex *in, *out; | 
| 117 | > | #ifdef HAVE_FFTW3_H | 
| 118 |  | fftw_plan p; | 
| 119 | + | #else | 
| 120 | + | fftwnd_plan p; | 
| 121 | + | #endif | 
| 122 | + | fftw_complex *in, *out; | 
| 123 | + |  | 
| 124 |  |  | 
| 125 |  | in = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * (nBinsX_*nBinsY_)); | 
| 126 |  | out = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) *(nBinsX_*nBinsY_)); | 
| 127 | < | p =  fftw_plan_dft_2d(nBinsX_, | 
| 128 | < | nBinsY_, | 
| 129 | < | in, out, | 
| 130 | < | FFTW_FORWARD, | 
| 131 | < | FFTW_ESTIMATE); | 
| 127 | > |  | 
| 128 | > | #ifdef HAVE_FFTW3_H | 
| 129 | > | p = fftw_plan_dft_2d(nBinsX_, nBinsY_, in, out, | 
| 130 | > | FFTW_FORWARD, FFTW_ESTIMATE); | 
| 131 | > | #else | 
| 132 | > | p = fftw2d_create_plan(nBinsX_, nBinsY_, FFTW_FORWARD, FFTW_ESTIMATE); | 
| 133 | > | #endif | 
| 134 |  |  | 
| 135 |  | int i, j; | 
| 136 |  |  | 
| 267 |  | c_im(in[newindex]) = 0.0; | 
| 268 |  | } | 
| 269 |  | } | 
| 270 | < |  | 
| 271 | < | fftw_execute(p); | 
| 270 | > | #ifdef HAVE_FFTW3_H | 
| 271 | > | fftw_execute(p); | 
| 272 | > | #else | 
| 273 | > | fftwnd_one(p, in, out); | 
| 274 | > | #endif | 
| 275 |  |  | 
| 276 |  | for (i=0; i< nBinsX_; i++) { | 
| 277 |  | for(j=0; j< nBinsY_; j++) { | 
| 279 |  | mag[newindex] = pow(c_re(out[newindex]),2) + pow(c_im(out[newindex]),2); | 
| 280 |  | } | 
| 281 |  | } | 
| 282 | < |  | 
| 282 | > | #ifdef HAVE_FFTW3_H | 
| 283 |  | fftw_destroy_plan(p); | 
| 284 | + | #else | 
| 285 | + | fftwnd_destroy_plan(p); | 
| 286 | + | #endif | 
| 287 |  | fftw_free(out); | 
| 288 |  | fftw_free(in); | 
| 289 |  |  |