Main Page | Class List | File List | Class Members | File Members

Field Class Reference

Field structure represents the light field at a given place in time/position. More...

#include <Field.h>

Collaboration diagram for Field:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 Field (unsigned int number, double side_length, double lambda, int fft_level=0, double sph_coords_factor=0.0)
 Constructor.
 Field (const Info &that_info)
 Constructor with Field::Info initialization.
 Field (const Field &that)
 Copy constructor.
 ~Field ()
 Destructor.
std::ostream & write (std::ostream &out=std::cout)
std::complex< double > & operator[] (const unsigned int i)
const std::complex< double > & operator[] (const unsigned int i) const
Fieldoperator= (const Field &that)
 Copy operator.
template<class T>
Fieldoperator *= (const T &input)
 Scaling operator.
Fieldoperator+= (const Field &that)
 Field addition operator (Field1 += Field2).
Fieldlens (const double &f, const double &x0, const double &y0)
 Apply a lens.
Fieldt_lens (const double &R, const double &f, const double &x0, const double &y0)
 Apply a toroidal lens.
Fieldaxicon (const double &phi, const std::complex< double > &n1, const double &x0, const double &y0)
 Apply an axicon lens.
Fieldfresnel (const double &z)
Fieldforward (const double &z, const double &new_side_length, const int &new_number)
 Note that this operates on the input field structure.
Fieldlens_forvard (double f, double z)
Fieldlens_fresnel (const double &f, const double &z)
Fieldforvard (const double &z)
Fieldspherical_to_normal_coords ()
Fieldcircular_aperture (const double &r, const double &x0, const double &y0)
Fieldcircular_screen (const double &r, const double &x0=0.0, const double &y0=0.0)
Fieldrectangular_aperture (const double &Lx, const double &Ly=-0.1, const double &x0=0.0, const double &y0=0.0, const double &angle=0.0)
Fieldrectangular_screen (const double &Lx, const double &Ly=-0.1, const double &x0=0.0, const double &y0=0.0, const double &angle=0.0)
Fieldsupergaussian_aperture (const double &w, const int &n, const double &x0=0.0, const double &y0=0.0, const double &A=1.0)
Fieldsupergaussian_screen (const double &w, const int &n, const double &x0=0.0, const double &y0=0.0, const double &A=1.0)
Fieldgaussian_aperture (const double &w, const double &x0=0.0, const double &y0=0.0, const double &A=1.0)
Fieldgaussian_screen (const double &w, const double &x0=0.0, const double &y0=0.0, const double &A=1.0)
Fieldfft3 (int ind)
Fieldtilt (double tx, double ty)
Fieldzernike (int n, int m, double R, double A)
std::ostream & print_strehl (std::ostream &output)
double get_strehl ()
Fieldpip_fft (const int &)
bool compatible (const Field &that) const
Fieldnormalize (double *norm_coeff=NULL)
Fieldl_amplify (const double &gain, const double &length, const double &i_sat)
std::ostream & print_field (std::ostream &output, int output_size=0, const double &gamma=2.0, const int &max_val=255, const bool ascii=false)

Static Public Member Functions

static Fieldread (std::istream &in=std::cin) throw (std::runtime_error)

Public Attributes

Info info
std::complex< double > * val

Classes

class  Info
 Defines character of Field such as wavelength of light, spatial size, spatial precision, etc. More...

Detailed Description

Field structure represents the light field at a given place in time/position.

The structure FIELD contains the characteristics of the light beam: number of points along the side of a square grid, wavelength and side length of the square grid, then two huge arrays of Re and Im data


Constructor & Destructor Documentation

Field::Field unsigned int  number,
double  side_length,
double  lambda,
int  fft_level = 0,
double  sph_coords_factor = 0.0
[inline]
 

Constructor.

Field::Field const Info that_info  )  [inline]
 

Constructor with Field::Info initialization.

Field::Field const Field that  )  [inline]
 

Copy constructor.

Field::~Field  )  [inline]
 

Destructor.


Member Function Documentation

Field& Field::axicon const double &  phi,
const std::complex< double > &  n1,
const double &  x0,
const double &  y0
 

Apply an axicon lens.

Parameters:
phi including angle of axicon (note that the sign of this value is disregarded).
n1 complex index of refraction of axicon material.
x0 x-shift in position of center.
y0 y-shift in position of center.

Field& Field::circular_aperture const double &  r,
const double &  x0,
const double &  y0
 

Field& Field::circular_screen const double &  r,
const double &  x0 = 0.0,
const double &  y0 = 0.0
 

bool Field::compatible const Field that  )  const [inline]
 

Field& Field::fft3 int  ind  ) 
 

Field& Field::forvard const double &  z  ) 
 

Field& Field::forward const double &  z,
const double &  new_side_length,
const int &  new_number
 

Note that this operates on the input field structure.

Returns:
a reference to the changed field.

Field& Field::fresnel const double &  z  ) 
 

Field& Field::gaussian_aperture const double &  w,
const double &  x0 = 0.0,
const double &  y0 = 0.0,
const double &  A = 1.0
[inline]
 

Field& Field::gaussian_screen const double &  w,
const double &  x0 = 0.0,
const double &  y0 = 0.0,
const double &  A = 1.0
[inline]
 

double Field::get_strehl  ) 
 

Field& Field::l_amplify const double &  gain,
const double &  length,
const double &  i_sat
 

Field& Field::lens const double &  f,
const double &  x0,
const double &  y0
 

Apply a lens.

f>0 for positive lens !!!!! (Unlike the original lightpipes code)

Field& Field::lens_forvard double  f,
double  z
 

Field& Field::lens_fresnel const double &  f,
const double &  z
 

Field& Field::normalize double *  norm_coeff = NULL  ) 
 

template<class T>
Field& Field::operator *= const T &  input  )  [inline]
 

Scaling operator.

Field& Field::operator+= const Field that  )  [inline]
 

Field addition operator (Field1 += Field2).

Field& Field::operator= const Field that  )  [inline]
 

Copy operator.

const std::complex<double>& Field::operator[] const unsigned int  i  )  const [inline]
 

std::complex<double>& Field::operator[] const unsigned int  i  )  [inline]
 

Field& Field::pip_fft const int &   ) 
 

std::ostream& Field::print_field std::ostream &  output,
int  output_size = 0,
const double &  gamma = 2.0,
const int &  max_val = 255,
const bool  ascii = false
 

std::ostream& Field::print_strehl std::ostream &  output  ) 
 

static Field* Field::read std::istream &  in = std::cin  )  throw (std::runtime_error) [static]
 

Field& Field::rectangular_aperture const double &  Lx,
const double &  Ly = -0.1,
const double &  x0 = 0.0,
const double &  y0 = 0.0,
const double &  angle = 0.0
 

Field& Field::rectangular_screen const double &  Lx,
const double &  Ly = -0.1,
const double &  x0 = 0.0,
const double &  y0 = 0.0,
const double &  angle = 0.0
 

Field& Field::spherical_to_normal_coords  ) 
 

Field& Field::supergaussian_aperture const double &  w,
const int &  n,
const double &  x0 = 0.0,
const double &  y0 = 0.0,
const double &  A = 1.0
 

Field& Field::supergaussian_screen const double &  w,
const int &  n,
const double &  x0 = 0.0,
const double &  y0 = 0.0,
const double &  A = 1.0
 

Field& Field::t_lens const double &  R,
const double &  f,
const double &  x0,
const double &  y0
 

Apply a toroidal lens.

f>0 for positive lens !!!!! (Unlike the original lightpipes code) filters the beam through the toroidal quadratic phase corrector.

Parameters:
R toroidal radius.
f focal length.
x0 x-shift in position of center.
y0 y-shift in position of center.

Field& Field::tilt double  tx,
double  ty
 

std::ostream& Field::write std::ostream &  out = std::cout  ) 
 

Field& Field::zernike int  n,
int  m,
double  R,
double  A
 


Member Data Documentation

Info Field::info
 

std::complex< double >* Field::val
 


The documentation for this class was generated from the following file:
Generated on Thu Apr 24 15:13:48 2008 for lightpipes by  doxygen 1.4.4