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

This class provides functionality to calculate field distributions for short pulses. More...

#include <pulsecalculation_field.h>

Public Member Functions

void addBoxDetector (Box *box)
void field (double t)
 This function calculates the fields at time t. Keep in mind, that it works only if the class has the list with the refractive index functions.
void fieldCalculation ()
 This function makes the raytracing (normally only used internally)
void fieldCalculation (double omega)
 This function makes one raytracing step at frequency omega.
double findHitTime (int ObjNo)
 Make an estimation, when the pulse hits the object the first time Often it is a problem, to find the pulse in the time domain, especially for very short pulses. This function gives an estimation, by searching the first element of the array around the chosen object which was hit by a ray. Then, the time the light needs to travel from the light source until this point will be calculated.
INDEX_TYPE getNumCellsPerDirection ()
double getReferenceTime ()
TrafoParms getTrafoParms ()
 pulseCalculation_Field (Scene S)
void reset ()
 Clears all arrays.
void saveIntensity (std::string FName, int i)
void setBandwidth (double dWvl)
 Set Bandwith of the light source(s) Approximately,.
void setCenterWavelength (double wvl)
 Set center wavelength of the pulse.
void setNumReflex (int numReflex)
void setNumWavelengthsPerRange (int nS)
 Set number of wavelengths per range. For the calculation, the spectral range is subdivided into a number of wavelength ranges. This method set the number of wavelength steps per spectral range.
void setPeriod (double time)
 Set the period between two adjacent pulses (start->start) in fs.
void setPulseWidth (double dt)
 Sets the spectral width according to the pulse width and adjusts the widht of the subdivisions.
void setReferenceTime (double tref)
void setRefractiveIndexFunctions (std::vector< std::function< std::complex< double >(double) > > nList)
 sets the list of functions, which describe the wavelength dependend refractive index (length must be number of objects + 1)
void setRepetitionRate (double rep)
 Set the repetition rate (in fs^-1) The repetition rate is the frequency resolution within the calculation. This function sets trafoparms::nS to the next integer value. The used repetition rate used in the calculation is then given by bandwith df/(nI*nS)
void setSpatialResolution (double dx)
 sets the spatial resolution to a value near to dx
void setSpectralRanges (int n)
 Number of spectral ranges in which one raytracing calculation is made.

Public Attributes

Raytrace_Field_usp rt
std::vector< SuperArray< std::vector< gridEntry > > > SA
 Here, all infos are stored to calculate the pulse (step lengths, index of the medium etc.)
SuperArray< GOAT::maths::Vector< std::complex< double > > > SAres
Trafo trafo

Private Member Functions

void calcTrafoParms ()
void setDefaults ()

Private Attributes

std::vector< Box * > BoxDetector
double domega
 spectral resolution
double dRWvl
 spectral width of one subdivision
double dWvl =0.02
 spectral width of the light (default 20nm)
INDEX_TYPE nn
int numReflex = INEL_MAX_NREFLEX
bool raytracingDone = false
 If true, the raytracing part was done and the field calculation starts directly.
Scene S
TrafoParms trafoparms
double tref = 0.0

Detailed Description

This class provides functionality to calculate field distributions for short pulses.

The class calculates the field distribution for a short pulsed light source. Also dispersion is considered, therefore a list of functionsis required, which describe the wavelength dependence of all objects and the surrounding medium. Since short pulses are considered, the light has a spectral width, which depends on the pulse width (Fourier transform). For the pulse a gaussian shape is assumed. All lengths and the wavelength is given in micro meters. The default wavelength is set to 1.0μm and the pulse width 10fs. As spectral width, the full width at half maximum (FWHM) is used. The result is stored in a SuperArray SAres, which holds the electric field at a certain time t which was given to the class by calling the function field

Definition at line 26 of file pulsecalculation_field.h.

Constructor & Destructor Documentation

◆ pulseCalculation_Field()

GOAT::raytracing::pulseCalculation_Field::pulseCalculation_Field ( Scene S)

Member Function Documentation

◆ addBoxDetector()

void GOAT::raytracing::pulseCalculation_Field::addBoxDetector ( Box * box)
inline

Definition at line 75 of file pulsecalculation_field.h.

◆ calcTrafoParms()

void GOAT::raytracing::pulseCalculation_Field::calcTrafoParms ( )
private

◆ field()

void GOAT::raytracing::pulseCalculation_Field::field ( double t)

This function calculates the fields at time t. Keep in mind, that it works only if the class has the list with the refractive index functions.

◆ fieldCalculation() [1/2]

void GOAT::raytracing::pulseCalculation_Field::fieldCalculation ( )

This function makes the raytracing (normally only used internally)

◆ fieldCalculation() [2/2]

void GOAT::raytracing::pulseCalculation_Field::fieldCalculation ( double omega)

This function makes one raytracing step at frequency omega.

◆ findHitTime()

double GOAT::raytracing::pulseCalculation_Field::findHitTime ( int ObjNo)

Make an estimation, when the pulse hits the object the first time Often it is a problem, to find the pulse in the time domain, especially for very short pulses. This function gives an estimation, by searching the first element of the array around the chosen object which was hit by a ray. Then, the time the light needs to travel from the light source until this point will be calculated.

◆ getNumCellsPerDirection()

INDEX_TYPE GOAT::raytracing::pulseCalculation_Field::getNumCellsPerDirection ( )
inline

Definition at line 79 of file pulsecalculation_field.h.

◆ getReferenceTime()

double GOAT::raytracing::pulseCalculation_Field::getReferenceTime ( )
inline

Definition at line 78 of file pulsecalculation_field.h.

◆ getTrafoParms()

TrafoParms GOAT::raytracing::pulseCalculation_Field::getTrafoParms ( )
inline

Definition at line 77 of file pulsecalculation_field.h.

◆ reset()

void GOAT::raytracing::pulseCalculation_Field::reset ( )

Clears all arrays.

◆ saveIntensity()

void GOAT::raytracing::pulseCalculation_Field::saveIntensity ( std::string FName,
int i )

◆ setBandwidth()

void GOAT::raytracing::pulseCalculation_Field::setBandwidth ( double dWvl)

Set Bandwith of the light source(s) Approximately,.

\[\frac{\Delta\lambda}{\lamda}=\frac{\Delta\omega}{\omega}\Rightarrow \Delta\omega=\Delta\lambda \cdot \frac{2\pi c}{\lambda^2}\]

Set Bandwith of the light source(s)

◆ setCenterWavelength()

void GOAT::raytracing::pulseCalculation_Field::setCenterWavelength ( double wvl)

Set center wavelength of the pulse.

◆ setDefaults()

void GOAT::raytracing::pulseCalculation_Field::setDefaults ( )
private

◆ setNumReflex()

void GOAT::raytracing::pulseCalculation_Field::setNumReflex ( int numReflex)

◆ setNumWavelengthsPerRange()

void GOAT::raytracing::pulseCalculation_Field::setNumWavelengthsPerRange ( int nS)

Set number of wavelengths per range. For the calculation, the spectral range is subdivided into a number of wavelength ranges. This method set the number of wavelength steps per spectral range.

◆ setPeriod()

void GOAT::raytracing::pulseCalculation_Field::setPeriod ( double time)

Set the period between two adjacent pulses (start->start) in fs.

Parameters
timeperiod in fs

◆ setPulseWidth()

void GOAT::raytracing::pulseCalculation_Field::setPulseWidth ( double dt)

Sets the spectral width according to the pulse width and adjusts the widht of the subdivisions.

◆ setReferenceTime()

void GOAT::raytracing::pulseCalculation_Field::setReferenceTime ( double tref)

◆ setRefractiveIndexFunctions()

void GOAT::raytracing::pulseCalculation_Field::setRefractiveIndexFunctions ( std::vector< std::function< std::complex< double >(double) > > nList)

sets the list of functions, which describe the wavelength dependend refractive index (length must be number of objects + 1)

◆ setRepetitionRate()

void GOAT::raytracing::pulseCalculation_Field::setRepetitionRate ( double rep)

Set the repetition rate (in fs^-1) The repetition rate is the frequency resolution within the calculation. This function sets trafoparms::nS to the next integer value. The used repetition rate used in the calculation is then given by bandwith df/(nI*nS)

◆ setSpatialResolution()

void GOAT::raytracing::pulseCalculation_Field::setSpatialResolution ( double dx)

sets the spatial resolution to a value near to dx

◆ setSpectralRanges()

void GOAT::raytracing::pulseCalculation_Field::setSpectralRanges ( int n)

Number of spectral ranges in which one raytracing calculation is made.

Member Data Documentation

◆ BoxDetector

std::vector<Box*> GOAT::raytracing::pulseCalculation_Field::BoxDetector
private

Definition at line 99 of file pulsecalculation_field.h.

◆ domega

double GOAT::raytracing::pulseCalculation_Field::domega
private

spectral resolution

Definition at line 92 of file pulsecalculation_field.h.

◆ dRWvl

double GOAT::raytracing::pulseCalculation_Field::dRWvl
private

spectral width of one subdivision

Definition at line 94 of file pulsecalculation_field.h.

◆ dWvl

double GOAT::raytracing::pulseCalculation_Field::dWvl =0.02
private

spectral width of the light (default 20nm)

Definition at line 93 of file pulsecalculation_field.h.

◆ nn

INDEX_TYPE GOAT::raytracing::pulseCalculation_Field::nn
private

Definition at line 95 of file pulsecalculation_field.h.

◆ numReflex

int GOAT::raytracing::pulseCalculation_Field::numReflex = INEL_MAX_NREFLEX
private

Definition at line 102 of file pulsecalculation_field.h.

◆ raytracingDone

bool GOAT::raytracing::pulseCalculation_Field::raytracingDone = false
private

If true, the raytracing part was done and the field calculation starts directly.

Definition at line 98 of file pulsecalculation_field.h.

◆ rt

Raytrace_Field_usp GOAT::raytracing::pulseCalculation_Field::rt

Definition at line 74 of file pulsecalculation_field.h.

◆ S

Scene GOAT::raytracing::pulseCalculation_Field::S
private

Definition at line 96 of file pulsecalculation_field.h.

◆ SA

std::vector<SuperArray<std::vector<gridEntry> > > GOAT::raytracing::pulseCalculation_Field::SA

Here, all infos are stored to calculate the pulse (step lengths, index of the medium etc.)

Definition at line 73 of file pulsecalculation_field.h.

◆ SAres

SuperArray<GOAT::maths::Vector<std::complex<double> > > GOAT::raytracing::pulseCalculation_Field::SAres

Definition at line 72 of file pulsecalculation_field.h.

◆ trafo

Trafo GOAT::raytracing::pulseCalculation_Field::trafo

Definition at line 71 of file pulsecalculation_field.h.

◆ trafoparms

TrafoParms GOAT::raytracing::pulseCalculation_Field::trafoparms
private

Definition at line 100 of file pulsecalculation_field.h.

◆ tref

double GOAT::raytracing::pulseCalculation_Field::tref = 0.0
private

Definition at line 101 of file pulsecalculation_field.h.


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