|
GOAT (Geometrical optics application tool) 0.1
|
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 |
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.
| GOAT::raytracing::pulseCalculation_Field::pulseCalculation_Field | ( | Scene | S | ) |
|
inline |
Definition at line 75 of file pulsecalculation_field.h.
|
private |
| 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.
| void GOAT::raytracing::pulseCalculation_Field::fieldCalculation | ( | ) |
This function makes the raytracing (normally only used internally)
| void GOAT::raytracing::pulseCalculation_Field::fieldCalculation | ( | double | omega | ) |
This function makes one raytracing step at frequency omega.
| 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.
|
inline |
Definition at line 79 of file pulsecalculation_field.h.
|
inline |
Definition at line 78 of file pulsecalculation_field.h.
|
inline |
Definition at line 77 of file pulsecalculation_field.h.
| void GOAT::raytracing::pulseCalculation_Field::reset | ( | ) |
Clears all arrays.
| void GOAT::raytracing::pulseCalculation_Field::saveIntensity | ( | std::string | FName, |
| int | i ) |
| 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)
| void GOAT::raytracing::pulseCalculation_Field::setCenterWavelength | ( | double | wvl | ) |
Set center wavelength of the pulse.
|
private |
| void GOAT::raytracing::pulseCalculation_Field::setNumReflex | ( | int | numReflex | ) |
| 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.
| void GOAT::raytracing::pulseCalculation_Field::setPeriod | ( | double | time | ) |
Set the period between two adjacent pulses (start->start) in fs.
| time | period in fs |
| void GOAT::raytracing::pulseCalculation_Field::setPulseWidth | ( | double | dt | ) |
Sets the spectral width according to the pulse width and adjusts the widht of the subdivisions.
| void GOAT::raytracing::pulseCalculation_Field::setReferenceTime | ( | double | tref | ) |
| 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)
| 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)
| void GOAT::raytracing::pulseCalculation_Field::setSpatialResolution | ( | double | dx | ) |
sets the spatial resolution to a value near to dx
| void GOAT::raytracing::pulseCalculation_Field::setSpectralRanges | ( | int | n | ) |
Number of spectral ranges in which one raytracing calculation is made.
|
private |
Definition at line 99 of file pulsecalculation_field.h.
|
private |
spectral resolution
Definition at line 92 of file pulsecalculation_field.h.
|
private |
spectral width of one subdivision
Definition at line 94 of file pulsecalculation_field.h.
|
private |
spectral width of the light (default 20nm)
Definition at line 93 of file pulsecalculation_field.h.
|
private |
Definition at line 95 of file pulsecalculation_field.h.
|
private |
Definition at line 102 of file pulsecalculation_field.h.
|
private |
If true, the raytracing part was done and the field calculation starts directly.
Definition at line 98 of file pulsecalculation_field.h.
| Raytrace_Field_usp GOAT::raytracing::pulseCalculation_Field::rt |
Definition at line 74 of file pulsecalculation_field.h.
|
private |
Definition at line 96 of file pulsecalculation_field.h.
| 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.
| SuperArray<GOAT::maths::Vector<std::complex<double> > > GOAT::raytracing::pulseCalculation_Field::SAres |
Definition at line 72 of file pulsecalculation_field.h.
| Trafo GOAT::raytracing::pulseCalculation_Field::trafo |
Definition at line 71 of file pulsecalculation_field.h.
|
private |
Definition at line 100 of file pulsecalculation_field.h.
|
private |
Definition at line 101 of file pulsecalculation_field.h.