NFFT Logo 3.0.3 API Reference
Main Page | Modules | Data Structures | Directories | File List | Data Fields | Globals

solver_adjoint.h

Go to the documentation of this file.
00001 
00004 #ifndef SOLVER_ADJOINT_H
00005 #define SOLVER_ADJOINT_H
00006 
00008 #include "nfft3.h"
00009 
00010 /*
00011  * Macro for mangling an adjoint transform.
00012  * temporary added 01.2007 by tim becker
00013  */
00014                                                                                \
00015 #define MACRO_SOLVER_ADJOINT_PLAN(MV, FLT, FLT_TYPE)                           \
00016                                                                                \
00017                                 \
00018 typedef struct                                                                 \
00019 {                                                                              \
00020   MV ## _plan *mv;                      \
00021   unsigned flags;                       \
00022                                                                                \
00023   double *w;                            \
00024   double *w_hat;                        \
00025                                                                                \
00026   FLT_TYPE *y_hat;                      \
00027                                                                                \
00028   FLT_TYPE *f_iter;                     \
00029   FLT_TYPE *r_hat_iter;                 \
00030   FLT_TYPE *z_iter;                     \
00032   FLT_TYPE *p_iter;                     \
00033   FLT_TYPE *v_hat_iter;                 \
00034                                                                                \
00035   double alpha_iter;                    \
00036   double beta_iter;                     \
00037                                                                                \
00038   double dot_r_hat_iter;                \
00039   double dot_r_hat_iter_old;            \
00040   double dot_z_iter;                    \
00042   double dot_z_iter_old;                \
00043   double dot_p_iter;                    \
00045   double dot_v_hat_iter;                \
00046 } i ## MV ## _adjoint_plan;                                                    \
00047                                                                                \
00048                                                   \
00049 void i ## MV ## _adjoint_init(adjoint ## MV ## _plan *ths, MV ## _plan *mv);   \
00050                                                \
00051 void i ## MV ## _adjoint_init_advanced(adjoint ## MV ## _plan *ths, MV ## _plan,\
00052 *mv, unsigned adjoint ## MV ## _flags);                                       \
00053 \
00054 void i ## MV ## _adjoint_before_loop(adjoint ## MV ## _plan *ths);              \
00055 \
00056 void i ## MV ## _adjoint_loop_one_step(adjoint ## MV ## _plan *ths);            \
00057 \
00058 void i ## MV ## _adjoint_finalize(adjoint ## MV ## _plan *ths);                 \
00059 
00060 
00061 MACRO_SOLVER_ADJOINT_PLAN(nfsft, complex, double complex)
00062 MACRO_SOLVER_ADJOINT_PLAN(nfft, complex, double complex)
00063 MACRO_SOLVER_ADJOINT_PLAN(nfct, double, double)
00064 MACRO_SOLVER_ADJOINT_PLAN(nfst, double, double)
00065 MACRO_SOLVER_ADJOINT_PLAN(nnfft, complex, double complex)
00066 MACRO_SOLVER_ADJOINT_PLAN(mri_inh_2d1d, complex, double complex)
00067 MACRO_SOLVER_ADJOINT_PLAN(mri_inh_3d, complex, double complex)
00068 
00069 #endif
00070 /* solver_adjoint.h */

Generated on 5 Feb 2007 by Doxygen 1.4.1