GOAT (Geometrical optics application tool) 0.1
Loading...
Searching...
No Matches
GOAT::raytracing::LightSrcPlane Class Reference

class derived from LightSrc. It represents a plane wave described by the electric field \( \vec{E}(\vec{P})=\vec{E}_0 \cdot e^{i\vec{k}\cdot\Delta\vec{P}} \) More...

#include <lightsrc.h>

Inheritance diagram for GOAT::raytracing::LightSrcPlane:
GOAT::raytracing::LightSrc GOAT::raytracing::LightSrcPlane_mc GOAT::raytracing::LightSrcRingGauss_mc GOAT::raytracing::LightSrcRing_mc

Public Member Functions

double area ()
 area A of the light source, \( A=d^2\)
void binReadItem (std::ifstream &os)
 reads content of LightSrc from a binary file, represented by os (has to be specified by the derived classes)
void binWriteItem (std::ofstream &os)
 writes content of LightSrc in a binary file, represented by is (has to be specified by the derived classes)focuspos
 LightSrcPlane (const LightSrcPlane &)
 copy Constructor
 LightSrcPlane (maths::Vector< double > Pos, int N, double wvl, double D=100.0, maths::Vector< std::complex< double > > Pol=maths::Vector< std::complex< double > >(0.0, 1.0, 0.0), int raytype=LIGHTSRC_RAYTYPE_IRAY, double r0=100.0)
 constructor with the following parameters : Pos: position of the light source, k : main direction of the light source, N : number of rays per direction(total number of all rays is N* N)
 LightSrcPlane (void)
int next (GOAT::raytracing::RayBase *ray)
 Destructor, not needed.
int next (IRay &S)
 gives the next ray for the following calculations
int next (Ray_pow &S)
 gives the next ray for the following calculations
int next (tubedRay &S)
 gives the next ray for the following calculations
 ~LightSrcPlane (void)
Public Member Functions inherited from GOAT::raytracing::LightSrc
void addObject (ObjectShape *obj)
 add single object to the object list
void adjustDirection ()
void binRead (std::ifstream &is)
 writes content of LightSrc in a binary file, represented by is
void binWrite (std::ofstream &os)
 reads content of LightSrc from a binary file, represented by os
void clearObjects ()
 clear object list
double getDensity ()
 returns the ray density, i.e. the number of rays per unit length (=D/N)
maths::Vector< std::complex< double > > getInitPol ()
double getIsum1 ()
double getIsum2 ()
maths::Vector< double > getk ()
 returns the main direction of the light source
int getNumObjs ()
 returns the number of Objects (only needed, when used seperately outside scene)
int getNumRays ()
 returns the number of rays (per direction in space)
int getNumRaysRT ()
ObjectShapegetObject (int i)
 returns i-th item in the object list
maths::Vector< double > getPos ()
 returns the position of the light source. This is the center of the square area of the light source
double getWavelength ()
double getWavenumber ()
 LightSrc ()
 LightSrc (const LightSrc &)
 Copy constructor.
void ObjectList (int Anz, std::vector< ObjectShape * > Obj)
int rayType ()
 returns the current ray type
void removeObject (ObjectShape *obj)
 remove object from the object list
void reset ()
 Reset everything (counting starts from the beginning)
void setD (double D)
 sets the width of the light source (this resets also the ray counter)
void setD (double D1, double D2)
void setk (const maths::Vector< double > &k)
 sets the main direction of the light source
void setN0 (std::complex< double > n0)
 sets the complex valued refractive index of the intermediate medium
void setNumRays (int N)
void setNumRaysRT (int numRaysRT)
void setObject (ObjectShape *O, int i=-1)
 exchanges i-th object in the object list
void setPol (maths::Vector< std::complex< double > > pol)
 sets the polarisation
void setPos (maths::Vector< double > P)
 sets the position of the light source. This is the center of the square area of the light source
void setR0 (double r0)
 sets the radius of the calculation sphere
void setWavelength (double wvl)
void setWavenumber (double k0)
 ~LightSrc (void)

Additional Inherited Members

Public Attributes inherited from GOAT::raytracing::LightSrc
double D
 width of the square light source area
double D1
double D2
 width in the e1- and the e2-direction (used only for _mc versions of LightSrc)
double density
 ray density, i.e. distance between two neighboring rays
maths::Vector< double > e1
maths::Vector< double > e2
 unit vectors that span the light source area
int i1
 first index of the ray inside the starting area (for internal use, -1 if the calculation has not yet been started)
int i2
 second index of the ray inside the starting area (for internal use, -1 if the calculation has not yet been started)
maths::Vector< std::complex< double > > initPol
 Polarisation, if the k-Vector points in z-direction.
maths::Vector< double > k
 main direction of the light source
int N =10000
 number of rays (per direction)
std::complex< double > n0
 refractive index of the intermediate medium
int numObjs
 number of objects
std::vector< ObjectShape * > Obj
 list of all objects
double P0 =1.0
 power
double Pall
 overall Power
maths::Vector< std::complex< double > > Pol
 polarisation (default: (0.0, 1.0, 0.0)
maths::Vector< std::complex< double > > Pol2
 second polarisation (used by IRay)
int polType
 Polarisationsrichtung (s.o.)
maths::Vector< double > Pos
 position of the light source (center of the square area of the light source)
double r0 =1.0
 radius of the calculation sphere
int rayCounter =0
int raytype
 Strahltyp : ray oder ISTRAHL (=RAY oder IRAY)
bool suppress_phase_progress = false
 if set true, the phase won't be changed when calling a next method (needed for USP-calculations)
int type
 type of the light source
Protected Attributes inherited from GOAT::raytracing::LightSrc
double Isum1
double Isum2
double k0
 wavenumber (i.e. \( \frac{2\pi}{\lambda}\)
int numRaysRT =20
 used in GOATvis to determine number of rays for ray representation
maths::Vector< double > rotVec =maths::Vector<double>(1,0,0)
 Vector which holds the spherical coordinates \(r\), \(\vartheta\) and \(\varphi\) of the direction vector k.
double wvl =1
 wavelength

Detailed Description

class derived from LightSrc. It represents a plane wave described by the electric field \( \vec{E}(\vec{P})=\vec{E}_0 \cdot e^{i\vec{k}\cdot\Delta\vec{P}} \)

Definition at line 196 of file lightsrc.h.

Constructor & Destructor Documentation

◆ LightSrcPlane() [1/3]

GOAT::raytracing::LightSrcPlane::LightSrcPlane ( void )

◆ LightSrcPlane() [2/3]

GOAT::raytracing::LightSrcPlane::LightSrcPlane ( maths::Vector< double > Pos,
int N,
double wvl,
double D = 100.0,
maths::Vector< std::complex< double > > Pol = maths::Vector< std::complex< double > >(0.0, 1.0, 0.0),
int raytype = LIGHTSRC_RAYTYPE_IRAY,
double r0 = 100.0 )

constructor with the following parameters : Pos: position of the light source, k : main direction of the light source, N : number of rays per direction(total number of all rays is N* N)

Main constructor

Parameters
PosCenter of the start area
NNumber of rays (per direction, total number of rays:N*N)
wvlWavelength
DEdge length of the quadratic start area (=size of the light source)
Poldirection of the polarisation

◆ LightSrcPlane() [3/3]

GOAT::raytracing::LightSrcPlane::LightSrcPlane ( const LightSrcPlane & )

copy Constructor

◆ ~LightSrcPlane()

GOAT::raytracing::LightSrcPlane::~LightSrcPlane ( void )
inline

Definition at line 210 of file lightsrc.h.

Member Function Documentation

◆ area()

double GOAT::raytracing::LightSrcPlane::area ( )
inlinevirtual

area A of the light source, \( A=d^2\)

Reimplemented from GOAT::raytracing::LightSrc.

Reimplemented in GOAT::raytracing::LightSrcRingGauss_mc.

Definition at line 217 of file lightsrc.h.

◆ binReadItem()

void GOAT::raytracing::LightSrcPlane::binReadItem ( std::ifstream & os)
inlinevirtual

reads content of LightSrc from a binary file, represented by os (has to be specified by the derived classes)

Implements GOAT::raytracing::LightSrc.

Definition at line 216 of file lightsrc.h.

◆ binWriteItem()

void GOAT::raytracing::LightSrcPlane::binWriteItem ( std::ofstream & os)
inlinevirtual

writes content of LightSrc in a binary file, represented by is (has to be specified by the derived classes)focuspos

Implements GOAT::raytracing::LightSrc.

Definition at line 215 of file lightsrc.h.

◆ next() [1/4]

int GOAT::raytracing::LightSrcPlane::next ( GOAT::raytracing::RayBase * ray)
virtual

Destructor, not needed.

gives the next ray for the following calculations

Implements GOAT::raytracing::LightSrc.

◆ next() [2/4]

int GOAT::raytracing::LightSrcPlane::next ( IRay & S)
virtual

gives the next ray for the following calculations

Implements GOAT::raytracing::LightSrc.

Reimplemented in GOAT::raytracing::LightSrcPlane_mc, GOAT::raytracing::LightSrcRing_mc, and GOAT::raytracing::LightSrcRingGauss_mc.

◆ next() [3/4]

int GOAT::raytracing::LightSrcPlane::next ( Ray_pow & S)
virtual

gives the next ray for the following calculations

Implements GOAT::raytracing::LightSrc.

Reimplemented in GOAT::raytracing::LightSrcPlane_mc, GOAT::raytracing::LightSrcRing_mc, and GOAT::raytracing::LightSrcRingGauss_mc.

◆ next() [4/4]

int GOAT::raytracing::LightSrcPlane::next ( tubedRay & S)
virtual

gives the next ray for the following calculations

Implements GOAT::raytracing::LightSrc.

Reimplemented in GOAT::raytracing::LightSrcPlane_mc, GOAT::raytracing::LightSrcRing_mc, and GOAT::raytracing::LightSrcRingGauss_mc.


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