00001
00063 #ifndef CCP4_FFTMAP_P1
00064 #define CCP4_FFTMAP_P1
00065
00066
00067 #include <fftw.h>
00068 #include <rfftw.h>
00069
00071 union real_complex_pointer { fftw_real* r; fftw_complex* c; };
00072
00074 typedef struct ccp4_fftmap_p1_ {
00076 int nu, nv, nw;
00078 int ustep_real, vstep_real;
00080 int ustep_reci, vstep_reci;
00082 union real_complex_pointer data;
00084 fftwnd_plan plan_real_recip, plan_recip_real;
00085 } ccp4_fftmap_p1;
00086
00092 ccp4_fftmap_p1* ccp4_fftmap_p1_new( const int nu, const int nv, const int nw );
00093
00097 void ccp4_fftmap_p1_delete( ccp4_fftmap_p1* map );
00098
00102 void ccp4_fftmap_p1_zero( ccp4_fftmap_p1* map );
00103
00111 fftw_real ccp4_fftmap_p1_get_real( const ccp4_fftmap_p1* map, const int u, const int v, const int w );
00112
00121 void ccp4_fftmap_p1_set_real( ccp4_fftmap_p1* map, const int u, const int v, const int w, const fftw_real r );
00122
00131 fftw_complex ccp4_fftmap_p1_get_reci( const ccp4_fftmap_p1* map, const int h, const int k, const int l );
00132
00142 void ccp4_fftmap_p1_set_reci( ccp4_fftmap_p1* map, const int h, const int k, const int l, fftw_complex c );
00143
00149 void ccp4_fftmap_p1_scale_reci( ccp4_fftmap_p1* map, const double sc_re, const double sc_im );
00150
00155 void ccp4_fftmap_p1_fft( ccp4_fftmap_p1* map, const double vol );
00156
00161 void ccp4_fftmap_p1_invfft( ccp4_fftmap_p1* map, const double vol );
00162
00163
00164
00165
00177 #endif