BornAgain  1.18.0
Simulate and fit neutron and x-ray scattering at grazing incidence
Convolve::Workspace Class Reference
Collaboration diagram for Convolve::Workspace:

Public Member Functions

 Workspace ()
 
 ~Workspace ()
 
void clear ()
 

Private Attributes

int h_src
 
int w_src
 
int h_kernel
 
int w_kernel
 
int w_fftw
 
int h_fftw
 
double * in_src
 
double * out_src
 
double * in_kernel
 
double * out_kernel
 
double * dst_fft
 
int h_dst
 
int w_dst
 
int h_offset
 
int w_offset
 
fftw_plan p_forw_src
 
fftw_plan p_forw_kernel
 
fftw_plan p_back
 

Friends

class Convolve
 

Detailed Description

Workspace for Fourier convolution.

Workspace contains input (source and kernel), intermediate and output arrays to run convolution via fft; 'source' it is our signal, 'kernel' it is our resolution function. Sizes of input arrays are adjusted; output arrays are alocated via fftw3 allocation for maximum performance.

Definition at line 85 of file Convolve.h.

Constructor & Destructor Documentation

◆ Workspace()

Convolve::Workspace::Workspace ( )

Definition at line 29 of file Convolve.cpp.

30  : h_src(0), w_src(0), h_kernel(0), w_kernel(0), w_fftw(0), h_fftw(0), in_src(0), out_src(0),
31  in_kernel(0), out_kernel(0), dst_fft(0), h_dst(0), w_dst(0),
32  // dst(0),
33  h_offset(0), w_offset(0), p_forw_src(nullptr), p_forw_kernel(nullptr), p_back(nullptr)
34 {
35 }
double * out_src
result of Fourier transformation of source
Definition: Convolve.h:101
fftw_plan p_back
Definition: Convolve.h:112
double * in_src
adjusted input 'source' array
Definition: Convolve.h:99
double * in_kernel
adjusted input 'kernel' array
Definition: Convolve.h:103
double * dst_fft
result of product of FFT(source) and FFT(kernel)
Definition: Convolve.h:107
fftw_plan p_forw_src
Definition: Convolve.h:110
fftw_plan p_forw_kernel
Definition: Convolve.h:111
double * out_kernel
result of Fourier transformation of kernel
Definition: Convolve.h:105

◆ ~Workspace()

Convolve::Workspace::~Workspace ( )

Definition at line 37 of file Convolve.cpp.

38 {
39  clear();
40 }

Member Function Documentation

◆ clear()

void Convolve::Workspace::clear ( )

Definition at line 42 of file Convolve.cpp.

43 {
44  h_src = 0;
45  w_src = 0;
46  h_kernel = 0;
47  w_kernel = 0;
48  if (in_src)
49  delete[] in_src;
50  in_src = 0;
51 
52  if (out_src)
53  fftw_free((fftw_complex*)out_src);
54  out_src = 0;
55 
56  if (in_kernel)
57  delete[] in_kernel;
58  in_kernel = 0;
59 
60  if (out_kernel)
61  fftw_free((fftw_complex*)out_kernel);
62  out_kernel = 0;
63 
64  if (dst_fft)
65  delete[] dst_fft;
66  dst_fft = 0;
67 
68  // if(dst) delete[] dst;
69  // dst=0;
70 
71  h_offset = 0;
72  w_offset = 0;
73 
74  if (p_forw_src != nullptr)
75  fftw_destroy_plan(p_forw_src);
76  if (p_forw_kernel != nullptr)
77  fftw_destroy_plan(p_forw_kernel);
78  if (p_back != nullptr)
79  fftw_destroy_plan(p_back);
80 
81  fftw_cleanup();
82 }

Referenced by Convolve::init().

Friends And Related Function Documentation

◆ Convolve

friend class Convolve
friend

Definition at line 91 of file Convolve.h.

Member Data Documentation

◆ h_src

int Convolve::Workspace::h_src
private

Definition at line 94 of file Convolve.h.

Referenced by Convolve::fftw_circular_convolution(), and Convolve::init().

◆ w_src

int Convolve::Workspace::w_src
private

Definition at line 94 of file Convolve.h.

Referenced by Convolve::fftw_circular_convolution(), and Convolve::init().

◆ h_kernel

int Convolve::Workspace::h_kernel
private

◆ w_kernel

int Convolve::Workspace::w_kernel
private

◆ w_fftw

int Convolve::Workspace::w_fftw
private

◆ h_fftw

int Convolve::Workspace::h_fftw
private

◆ in_src

double* Convolve::Workspace::in_src
private

adjusted input 'source' array

Definition at line 99 of file Convolve.h.

Referenced by Convolve::fftw_circular_convolution(), and Convolve::init().

◆ out_src

double* Convolve::Workspace::out_src
private

result of Fourier transformation of source

Definition at line 101 of file Convolve.h.

Referenced by Convolve::fftw_circular_convolution(), and Convolve::init().

◆ in_kernel

double* Convolve::Workspace::in_kernel
private

adjusted input 'kernel' array

Definition at line 103 of file Convolve.h.

Referenced by Convolve::fftw_circular_convolution(), and Convolve::init().

◆ out_kernel

double* Convolve::Workspace::out_kernel
private

result of Fourier transformation of kernel

Definition at line 105 of file Convolve.h.

Referenced by Convolve::fftw_circular_convolution(), and Convolve::init().

◆ dst_fft

double* Convolve::Workspace::dst_fft
private

result of product of FFT(source) and FFT(kernel)

Definition at line 107 of file Convolve.h.

Referenced by Convolve::fftconvolve(), Convolve::fftw_circular_convolution(), and Convolve::init().

◆ h_dst

int Convolve::Workspace::h_dst
private

Definition at line 108 of file Convolve.h.

Referenced by Convolve::fftconvolve(), and Convolve::init().

◆ w_dst

int Convolve::Workspace::w_dst
private

Definition at line 108 of file Convolve.h.

Referenced by Convolve::fftconvolve(), and Convolve::init().

◆ h_offset

int Convolve::Workspace::h_offset
private

Definition at line 109 of file Convolve.h.

Referenced by Convolve::fftconvolve(), and Convolve::init().

◆ w_offset

int Convolve::Workspace::w_offset
private

Definition at line 109 of file Convolve.h.

Referenced by Convolve::fftconvolve(), and Convolve::init().

◆ p_forw_src

fftw_plan Convolve::Workspace::p_forw_src
private

Definition at line 110 of file Convolve.h.

Referenced by Convolve::fftw_circular_convolution(), and Convolve::init().

◆ p_forw_kernel

fftw_plan Convolve::Workspace::p_forw_kernel
private

Definition at line 111 of file Convolve.h.

Referenced by Convolve::fftw_circular_convolution(), and Convolve::init().

◆ p_back

fftw_plan Convolve::Workspace::p_back
private

Definition at line 112 of file Convolve.h.

Referenced by Convolve::fftw_circular_convolution(), and Convolve::init().


The documentation for this class was generated from the following files: