solver_adjoint.h
Go to the documentation of this file.
/*
* Copyright (c) 2002, 2017 Jens Keiner, Stefan Kunis, Daniel Potts
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation; either version 2 of the License, or (at your option) any later
* version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* this program; if not, write to the Free Software Foundation, Inc., 51
* Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#ifndef SOLVER_ADJOINT_H
#define SOLVER_ADJOINT_H
#include "nfft3.h"
/*
* Macro for mangling an adjoint transform.
* temporary added 01.2007 by tim becker
*/
#define MACRO_SOLVER_ADJOINT_PLAN(MV, FLT, FLT_TYPE) \
\
\
typedef struct \
{ \
MV ## _plan *mv; \
unsigned flags; \
\
double *w; \
double *w_hat; \
\
FLT_TYPE *y_hat; \
\
FLT_TYPE *f_iter; \
FLT_TYPE *r_hat_iter; \
FLT_TYPE *z_iter; \
FLT_TYPE *p_iter; \
FLT_TYPE *v_hat_iter; \
\
double alpha_iter; \
double beta_iter; \
\
double dot_r_hat_iter; \
double dot_r_hat_iter_old; \
double dot_z_iter; \
double dot_z_iter_old; \
double dot_p_iter; \
double dot_v_hat_iter; \
} i ## MV ## _adjoint_plan; \
\
\
void i ## MV ## _adjoint_init(adjoint ## MV ## _plan *ths, MV ## _plan *mv); \
\
void i ## MV ## _adjoint_init_advanced(adjoint ## MV ## _plan *ths, \
MV ## _plan, *mv, unsigned adjoint ## MV ## _flags); \
\
void i ## MV ## _adjoint_before_loop(adjoint ## MV ## _plan *ths); \
\
void i ## MV ## _adjoint_loop_one_step(adjoint ## MV ## _plan *ths); \
\
void i ## MV ## _adjoint_finalize(adjoint ## MV ## _plan *ths); \
MACRO_SOLVER_ADJOINT_PLAN(nfsft, complex, double _Complex)
MACRO_SOLVER_ADJOINT_PLAN(nfft, complex, double _Complex)
MACRO_SOLVER_ADJOINT_PLAN(nfct, double, double)
MACRO_SOLVER_ADJOINT_PLAN(nfst, double, double)
MACRO_SOLVER_ADJOINT_PLAN(nnfft, complex, double _Complex)
MACRO_SOLVER_ADJOINT_PLAN(mri_inh_2d1d, complex, double _Complex)
MACRO_SOLVER_ADJOINT_PLAN(mri_inh_3d, complex, double _Complex)
#endif
/* solver_adjoint.h */
nfft3.h
Header file for the nfft3 library.
MACRO_SOLVER_ADJOINT_PLAN
#define MACRO_SOLVER_ADJOINT_PLAN(MV, FLT, FLT_TYPE)
Include NFFT3 header.
Definition solver_adjoint.h:33