plugin_src/operator/fast_conv.c File Reference

#include <complex.h>
#include <fftw3.h>
#include "crusde_api.h"
#include <stdarg.h>
#include <stdio.h>
#include <time.h>
#include <math.h>

Include dependency graph for fast_conv.c:

Include dependency graph

Defines

#define RESET(x, y)   (x = y = -1)
#define POSITION(m, n)   (n+(N_Y)*m)

Functions

int register_output_fields ()
 Register output fields for spatial directions this Green's function calculates.
void register_parameter ()
 Register parameters this Kernel claims from the input.
void request_plugins ()
 Request necessary plugins: crusde_request_green_plugin("elastic halfspace (pinel)").
void init ()
 Initialization of the convolution. Allocation of memory for inputs and outputs.
void free ()
void run ()
 Performs the fast convolution.
const char * get_name ()
const char * get_version ()
const char * get_authors ()
const char * get_description ()
const PluginCategory get_category ()
void clear ()

Variables

double * load_in
double * green_in
double * conv_out
double * green_back
fftw_complex * load_out
fftw_complex * green_out
fftw_complex * conv_in
fftw_plan load_plan
fftw_plan green_plan
fftw_plan conv_plan
double ** model_buffer
double ** result
int N
int N_X
int N_Y
int size_x
int size_y
int x = -1 y=-1 i=0 n=-1
int dimensions = 1
int displacement_dimensions = 1
boolean is_initialized = false

Detailed Description

Implements a fast convolution using the Fast Fourier Transform (DFT). This Plugin depends on the FFTW3 library, http://www.fftw3.org , which is used to allow convolution in the spectral domain (see convolution theorem).

Define Documentation

#define POSITION m,
n   )     (n+(N_Y)*m)
 

#define RESET x,
 )     (x = y = -1)
 


Function Documentation

void clear  ) 
 

Frees memory allocated during init(). FFTW plans are destroyed.

void free  ) 
 

const char* get_authors  ) 
 

const PluginCategory get_category  ) 
 

const char* get_description  ) 
 

const char* get_name  ) 
 

const char* get_version  ) 
 

void init  ) 
 

Initialization of the convolution. Allocation of memory for inputs and outputs.

This function must not be called before register_parameter() unless none of the necessary values depends on parameters provided by the user, which are only set after they have been registered. This function is called some time after register_parameter().

See also:
register_parameter()

int register_output_fields  ) 
 

Register output fields for spatial directions this Green's function calculates.

It calls crusde_register_output_field() as many times as indices are to be registered. The assigned index in the output field is saved to an address that must be provided as a parameter to crusde_register_output_field() Furthermore, it must be said what type of field (X_FIELD|Y_FIELD|Z_FIELD|ADD_FIELD) is to be registered using crusde_register_output_field().

void register_parameter  ) 
 

Register parameters this Kernel claims from the input.

This function is called right after loading of the Plug-in. It calls register_green_param() defined in crusde_api.h to register references to parameters this Green's function will need to operate properly. For command line use the order of registration in this function defines the identification of parameters in the command line string (i.e. './green -GfirstRegistered/secondRegistered/...'). In case an XML is used to configure the experiment, the reference to this parameter will be identified by the string passed as second argument to register_green_param().

See also:
register_green_param()

register_load_param()

register_kernel_param()

void request_plugins  ) 
 

Request necessary plugins: crusde_request_green_plugin("elastic halfspace (pinel)").

empty

void run  ) 
 

Performs the fast convolution.

This function is only called for Kernel Plug-ins. It can be omitted for any other Plug-in type.


Variable Documentation

fftw_complex * conv_in
 

double * conv_out
 

fftw_plan conv_plan
 

int dimensions = 1
 

int displacement_dimensions = 1
 

double * green_back
 

double * green_in
 

fftw_complex * green_out
 

fftw_plan green_plan
 

boolean is_initialized = false
 

double* load_in
 

fftw_complex* load_out
 

fftw_plan load_plan
 

double** model_buffer
 

int N
 

int N_X
 

int N_Y
 

double ** result
 

int size_x
 

int size_y
 

int x = -1 y=-1 i=0 n=-1
 


Generated on Sun Jul 29 08:17:29 2007 for CrusDe by doxygen 1.3.8