rl_Multilayer Class Reference

#include <rl_Multilayer.h>

Collaboration diagram for rl_Multilayer:
[legend]

List of all members.

Public Types

typedef rl_Traits::EInterpMode EInterpMode
 interpolation mode for dielectric data

Public Member Functions

virtual ~rl_Multilayer ()
 rl_Multilayer (int num_layers, rl_DielectricLayer *layers, rl_Traits::Bool adopt_data=rl_Traits::True)
void init (int num_layers, rl_DielectricLayer *layers, rl_Traits::Bool adopt_data=rl_Traits::True)
int multilayer_reflect_coef (rl_ReflectionCoefPOD &rfl, double energy, double sg)
int multilayer_reflectivity (double &rfl, double energy, double sg, double polarization_factor=0.0)
rl_DielectricLayer const & layer (int layer_no) const
int num_layers () const
std::ostream & dump_on (std::ostream &os, int layer_no, char const pre[]="", char const pst[]="") const
void cdump_on (std::FILE *of, int layer_no, char const pre[]="", char const pst[]="") const

Protected Attributes

int num_layers_
 number of multilayers
rl_DielectricLayer vacuum_
 the top (vacuum) layer
rl_DielectricLayerlayer_
 array of dielectric layers
rl_Traits::Bool own_data_
 do we own the rl_DielectricLayer array?


Detailed Description

A class encapsulating reflection of a ray from a multilayer surface. Given the energy and the sine of the graze angle, reflection coefficient can be evaluated.

Definition at line 60 of file rl_Multilayer.h.


Member Typedef Documentation

interpolation mode for dielectric data

Definition at line 85 of file rl_Multilayer.h.


Constructor & Destructor Documentation

rl_Multilayer::~rl_Multilayer (  )  [virtual]

Destructor.

Frees up rl_DielectricLayer array if own_data_ is rl_Traits::True.

Definition at line 46 of file rl_Multilayer.cc.

References layer_, and own_data_.

rl_Multilayer::rl_Multilayer ( int  num_layers,
rl_DielectricLayer layers,
rl_Traits::Bool  adopt_data = rl_Traits::True 
)

Construct multilayer from num_layers individual layers.

Parameters:
num_layers number of layers to construct.
layers pointer to array of layer data
adopt_data boolean flag
  • if rl_Traits::True, rl_Multilayer assumes responsibility for deleting the rl_DielectricLayer array;
  • if rl_Traits::False, it is the caller's responsibility.

Definition at line 53 of file rl_Multilayer.cc.


Member Function Documentation

void rl_Multilayer::init ( int  num_layers,
rl_DielectricLayer layers,
rl_Traits::Bool  adopt_data = rl_Traits::True 
)

Initialize multilayer from num_layers individual layers.

Parameters:
num_layers number of layers to construct.
layers pointer to array of layer data
adopt_data boolean flag
  • if rl_Traits::True, rl_Multilayer assumes responsibility for deleting the rl_DielectricLayer array;
  • if rl_Traits::False, it is the caller's responsibility.

Definition at line 64 of file rl_Multilayer.cc.

References layer_, num_layers_, and own_data_.

int rl_Multilayer::multilayer_reflect_coef ( rl_ReflectionCoefPOD rfl,
double  energy,
double  sg 
)

Evaluate the multilayer reflection coefficients

Returns:
0 if successful, the number of the invalid layer if not.
Parameters:
rfl the computed reflection coefficient.
energy ray energy.
sg sine of the graze angle between the ray and the surface.

Definition at line 90 of file rl_Multilayer.cc.

References layer_, num_layers_, rl_DielectricLayer::reflect_amp(), rl_DielectricLayer::reflect_nlayer(), rl_DielectricLayer::reflection_coef(), rl_DielectricLayer::setup_for(), and vacuum_.

Referenced by multilayer_reflectivity(), and rl_MultilayerSurface::reflect().

int rl_Multilayer::multilayer_reflectivity ( double &  rfl,
double  energy,
double  sg,
double  polarization_factor = 0.0 
)

Evaluate the multilayer reflectivity (assuming unpolarized rays)

Returns:
0 if successful, the number of the invalid layer if not.
Parameters:
rfl multilayer reflectivity.
energy ray energy.
sg sine of the graze angle between the ray and the surface.
polarization_factor polarization factor; it must be a value between -1 and 1. The polarization factor is related to parallel (p) and perpendicular (s) polarization by:

\[ \mathtt{polarization\_factor} = {(I_\perp - I_\parallel) \over (I_\perp + I_\parallel)} \]

or

\[ \mathtt{polarization\_factor} = {(I_\mathit{s} - I_\mathit{p}) \over (I_\mathit{s} + I_\mathit{p})} \]

where $I_\perp$ and $I_\parallel$ are the perpendicular and parallel E-field intensities, respectively. Thus,

  • -1: pure parallel (p) polarization.
  • 0: completely unpolarized.
  • +1: pure perpendicular (s) polarization.

Definition at line 136 of file rl_Multilayer.cc.

References rl_ReflectionCoefPOD::init(), multilayer_reflect_coef(), and rl_ReflectionCoefPOD::reflectivity().

rl_DielectricLayer const & rl_Multilayer::layer ( int  layer_no  )  const

Returns:
const reference to layer layer_no

Definition at line 156 of file rl_Multilayer.cc.

References layer_.

Referenced by rl_MultilayerSurface::layer().

int rl_Multilayer::num_layers (  )  const [inline]

Returns:
number of layers

Definition at line 231 of file rl_Multilayer.h.

References num_layers_.

std::ostream & rl_Multilayer::dump_on ( std::ostream &  os,
int  layer_no,
char const   pre[] = "",
char const   pst[] = "" 
) const

Dump information about layer layer_no to stream os.

Returns:
reference to stream os.
Parameters:
os output stream
layer_no layer number to be dumped
pre optional prefix string
pst optional postfix string

Definition at line 164 of file rl_Multilayer.cc.

References rl_DielectricLayer::dump_on(), and layer_.

Referenced by rl_MultilayerSurface::dump_on().

void rl_Multilayer::cdump_on ( std::FILE *  of,
int  layer_no,
char const   pre[] = "",
char const   pst[] = "" 
) const

Dump information about layer layer_no to output FILE*.

Parameters:
of output FILE*
layer_no layer number to be dumped
pre optional prefix string
pst optional postfix string

Definition at line 181 of file rl_Multilayer.cc.

References rl_DielectricLayer::cdump_on(), and layer_.


Member Data Documentation

int rl_Multilayer::num_layers_ [protected]

number of multilayers

Definition at line 74 of file rl_Multilayer.h.

Referenced by init(), multilayer_reflect_coef(), and num_layers().

the top (vacuum) layer

Definition at line 76 of file rl_Multilayer.h.

Referenced by multilayer_reflect_coef().

array of dielectric layers

Definition at line 78 of file rl_Multilayer.h.

Referenced by cdump_on(), dump_on(), init(), layer(), multilayer_reflect_coef(), and ~rl_Multilayer().

do we own the rl_DielectricLayer array?

Definition at line 80 of file rl_Multilayer.h.

Referenced by init(), and ~rl_Multilayer().


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

Generated on Mon Nov 3 18:15:05 2008 for rl_raylib by  doxygen 1.5.6