69 std::vector<SuperArray<std::vector<gridEntry> > >
SA;
104 void field(
double t);
111 double Domega = 8.0 * 4.0 * M_LN2 /
trafoparms.dt;
112 std::cout <<
"Domega=" << Domega << std::endl;
118 double omegaStart = omega0 - Domega / 2.0;
121 rt = Raytrace_field_usp(
S);
123 trafo.initResult(
S.r0,
rt.SE.nges[0],
rt.SE.nges[1],
rt.SE.nges[2],
S.Obj,
S.nObj);
125 for (
int iOmega = 0; iOmega <
trafoparms.nI; iOmega++)
127 omega = omegaStart + (double)iOmega *
domega;
133 std::cout <<
"% " << iOmega <<
":start FFT (" << wvl <<
"µm)" <<
"\twvl1=" << wvl1 <<
"\twvl2=" << wvl2 <<
"\tomega=" << omega << std::endl << std::flush;
136 trafo.calc(
static_cast<std::vector<SuperArray<std::vector<gridEntry>
> > >(
rt.SA), omega -
domega * 0.5, omega +
domega * 0.5, t);
143#include "pulsecalculation.hpp"
class which represents a box (cuboid). It is derived by class ObjectShape This class is mainly used f...
Class defining a scene with lightsources and objects. This is a container used to inform the Raytrace...
Template class to store arbitrary information in a 3D-grid This template class provides a virtual 3D-...
This class calculates the time dependence of a field which calculated before.
void addBoxDetector(Box *box)
void field(double t)
add a box as detector
pulseCalculation_field(Scene &S)
void setCenterWavelength(double wvl)
Set center wavelength of the pulse.
pulseCalculation(Scene S)
INDEX_TYPE nn
number of cells over the whole width of the calculation space (i.e. 2*r0).
void setSpatialResolution(double dx)
sets the spatial resolution to a value near to dx
double dRWvl
spectral width of one subdivision
double findHitTime(int ObjNo)
Make an estimation, when the pulse hits the object the first time Often it is a problem,...
double dWvl
spectral width of the light (default 20nm)
void setNumReflex(int numReflex)
void setNumWavelengthsPerRange(int nS)
Set number of wavelengths per range. For the calculation, the spectral range is subdivided into a num...
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
void setPulseWidth(double dt)
Sets the spectral width according to the pulse width and adjusts the widht of the subdivisions.
void setRepetitionRate(double rep)
Set the repetition rate (in fs) The repetition rate is the frequency resolution within the calculatio...
void setReferenceTime(double tref)
bool raytracingDone
If true, the raytracing part was done and the field calculation starts directly.
void setSpectralRanges(int n)
Number of spectral ranges in which one raytracing calculation is made.
void fieldCalculation(double omega)
This function makes one raytracing step at frequency omega.
void field(double t)
This function calculates the fields at time. Keep in mind, that it works only if the class has the li...
void fieldCalculation()
This function makes the raytracing (normally only used internally)
void reset()
Clears all arrays.
double domega
spectral resolution
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 ...
void setBandwidth(double dWvl)
Set Bandwith of the light source(s) Approximately,.
Raytracer used for ultrashort pulse calculation with raytracing only.
constexpr int INEL_MAX_NREFLEX
constexpr double C_LIGHT_MU_FS
speed of light in
This class is used for the iray class. This class is intended for internal use only....
Structure, which acts as a container for all informations needed to process the calculation.