12 constexpr double INF = std::numeric_limits<double>::infinity();
17#define I std::complex<double>(0.0,1.0)
26#define ANZ_STRAHLEN 500
33#define SQRT3 1.73205080756887729352744634150587
41#define IN_INC_AND_HOST 3
83 std::complex<double>
E;
84 std::complex<double>
phi;
92 maths::Vector <double>
P;
104 maths::Vector <double>
P;
105 std::complex<double>
n;
169 std::complex<double>
n0;
210 std::complex<double>
acos(
const std::complex<double>&);
215 void minmax(
double x,
double dx,
int& min,
int& max);
This class represents a threedimensional (numeric) Matrix as a template.
Template class for threedimensional vectors.
int AnzReflex
Anzahl der max. durch zufuehrenden Reflexionen an der Oberflaeche pro Strahl.
double r0
Radius der "Weltkugel".
int nx
Anzahl der Gitterpunkte in x/y-Richtung.
std::complex< double > n0
Brechungsindex des Umgebungsmediums.
double alpha
Einfallswinkel (relativ zur x-Achse)
double dx
Breite einer Gitterzelle.
int pol
Polarisationsrichtung: kann die Werte SENKRECHT und PARALLEL annehmen.
double dy
Hoehe einer Gitterzelle.
double dxy
Diagonale einer Gitterzelle.
int AnzRays
Anzahl Strahlen.
Class used to set the parameters for inelastic scattering (may replaced later)
This file contains the definition of a template for 3x3 matrices, which can be used together with the...
Raytracer used for ultrashort pulse calculation with raytracing only.
RRTParmsInfo readRRTParms(bool old, std::ifstream *is)
void toString(char *S, objectInfo *E, int i)
std::ostream & savebinGlobalParms(std::ostream &os, GlobalParms parms)
std::complex< double > acos(const std::complex< double > &)
std::istream & loadbinGlobalParms(std::istream &os, GlobalParms &parms)
double abs2(double x)
returns the squared absolute value of x
maths::Vector< double > set_grid_point(const GlobalParms &parms, Point P)
void init_Strahl(GlobalParms Parms, StrahlArray *Strahl)
maths::Vector< double > kart2sph(maths::Vector< double > v)
bool operator==(objectInfo a, objectInfo b)
maths::Vector< double > nextP(maths::Vector< double > P, maths::Vector< double > k, maths::Vector< double > OK, double rK, bool &found)
double grad(const GlobalParms &parms, maths::Vector< std::complex< double > > **Gitter, const maths::Vector< double > &P)
maths::Vector< double > sph2kart(maths::Vector< double > v)
void checkObjectIntersection(maths::Vector< double > &anf, const maths::Vector< double > &end, StrahlInfo &S, int numObj, objectInfo *Obj, maths::Vector< double > &Ps, int &Index)
void output(int nx, int ny, maths::Vector< std::complex< double > > **G)
void copy(StrahlInfo &dest, StrahlInfo src)
void writeRRTParms(std::ofstream &os, RRTParmsInfo erg)
GlobalParms readGlobalParms(bool old, std::ifstream &is)
void add_Gitter(GlobalParms parms, maths::Vector< std::complex< double > > **Erg, maths::Vector< std::complex< double > > **Gitter1, maths::Vector< std::complex< double > > **Gitter2)
double minmax(double a, double b)
void sub_Gitter(GlobalParms parms, maths::Vector< std::complex< double > > **Erg, maths::Vector< std::complex< double > > **Gitter1, maths::Vector< std::complex< double > > **Gitter2)
Point get_grid_point(const GlobalParms &parms, maths::Vector< double > P)
std::ostream & operator<<(std::ostream &os, Box B)
output operator for the Box class
void clear(GlobalParms parms, maths::Vector< std::complex< double > > **Gitter)
void Delete(int n, maths::Vector< std::complex< double > > **Gitter)
std::istream & operator>>(std::istream &is, GlobalParms &parms)
maths::Vector< double > next(const GlobalParms &parms, const maths::Vector< double > &P0, const maths::Vector< double > &k)
This class is used for the iray class. This class is intended for internal use only....
maths::Vector< double > P
maths::Vector< double > k
std::complex< double > phi
maths::Vector< double > EAmp
maths::Vector< double > P
maths::Matrix< double > alpha
This file contains the Vector template class and some useful functions around this class.