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

This class provides a vortex phase plate object. Here, a vortex phase plate object is provided. The reference point is situated in the center of bottom face. More...

#include <vortex.h>

Inheritance diagram for GOAT::raytracing::VortexPlate:
GOAT::raytracing::ObjectShape

Public Member Functions

void binRead (std::ifstream &is)
 binary reading from file
void binWrite (std::ofstream &os)
 binary writing to file
maths::Vector< double > calcCoM ()
 Calculates the center of mass, which is in the case of an ellipsoid simply its center, P.
maths::Matrix< double > computeInertia ()
 Calculates the inertia matrix of the ellipsoid.
double height ()
void initQuad ()
 Sets the circumscribing cuboid (for use in inelastic calculations)
bool isInside (const maths::Vector< double > &p)
 checks if point P is inside the object
bool next (const maths::Vector< double > &Ps, const maths::Vector< double > &K, maths::Vector< double > &pout)
 searches for the next (nearest) intersection of a ray with the object, p: current position of the ray, k: direction of the ray, pout: position of the crossing point. Returns true, if a crossing point was found.
maths::Vector< double > norm (const maths::Vector< double > &p)
 surface normal at the point P
VortexPlateoperator= (VortexPlate &f)
VortexPlateoperator= (VortexPlate f)
int order ()
 returns the order (~topological charge)
double radius ()
void scale (double sf)
 Set the scaling factor (the half axis will be multiplied by this factor)
void setHeight (double h)
void setm (int m)
 set the topological charge
void setPos (double x, double y, double z)
 sets reference point P
void setPos (maths::Vector< double > r)
 sets reference point P
void setr0 (double r0)
 set the radius of the calculation space
void setRadius (double r)
double volume ()
 Calculates the volume of the ellipsoid.
double vortexHeight ()
 returns the height of the vortex structure
 VortexPlate ()
 VortexPlate (const maths::Vector< double > &P, double r, double h, double dh, int m, std::complex< double > n, double r0=1.0, const maths::Matrix< std::complex< double > > alpha=maths::CUNITY, const maths::Vector< double > &Ex=maths::ex, const maths::Vector< double > &Ey=maths::ey, const maths::Vector< double > &Ez=maths::ez)
 VortexPlate (ObjectShape &os)
 VortexPlate (VortexPlate &c)
Public Member Functions inherited from GOAT::raytracing::ObjectShape
std::complex< double > getn ()
 returns refractive index for inelastic (RRT) calculation
std::complex< double > getninel ()
 returns refractive index
bool getVisible ()
 show the visiblity state (used in GOATvis)
bool isActive ()
 returns true if the object should be considered for inelastic calculation
bool isOutsideWorld ()
 Test if bounding box is (partly) outside the calculation space.
 ObjectShape ()
 ObjectShape (const maths::Vector< double > &P, std::complex< double > n, GOAT::maths::Matrix< std::complex< double > > alpha, const maths::Vector< double > &Ex=maths::ex, const maths::Vector< double > &Ey=maths::ey, const maths::Vector< double > &Ez=maths::ez, const int type=-1)
 Constructor, as template for all derived classes.
 ObjectShape (const ObjectShape &F)
void rotate (maths::Vector< double > A, double phi)
 sets the matrix for the transformation between object's coordinate system and outer coordinate system, A: rotation axis, phi: angle for rotation around A
void scale (double sf)
 sets scaling of the shape by the factor sf
void setActive (bool active)
 sets flag if the object is inelastic active, i.e. it will be considered for inelastic calculation
void setAlpha (double Alpha)
 sets rotation angle around x-axis
void setBeta (double Beta)
 sets rotation angle around y-axis
void setCenter (maths::Vector< double > P)
 sets Center to P (check, if function is necessary)
void setCenter2CoM ()
 Calculates the center of mass (CoM) and sets the object's reference point to the CoM.
void setGamma (double Gamma)
 sets rotation angle around z-axis
void setMatrix (double alpha, double beta, double gamma)
 sets the matrix for the transformation between object's coordinate system and outer coordinate system, alpha, beta, gamma: angles (rotation around x-, y- and z-axis) to calculate transformation matrix
void setMatrix (maths::Matrix< double > H)
 sets the matrix for the transformation between object's coordinate system and outer coordinate system, H: transformation matrix
void setn (std::complex< double > n)
 sets refractive index
void setninel (std::complex< double > ninel)
 sets refractive index for inelastic (RRT) calculation
void setPolMatrix (maths::Matrix< std::complex< double > >alpha)
 sets polarisability matrix
void setVisible (bool visible)
 set visiblity (used in GOATvis)
int Type ()
 returns the object's type

Protected Attributes

double dh = 1.0
 height of the vortex structure
double h = 1.0
 height of the vortex (without vortex structure)
int m = 1
 topological charge of the vortex
double r = 1.0
 radius of the vortex

Additional Inherited Members

Public Attributes inherited from GOAT::raytracing::ObjectShape
bool Active
 should the object be considered for inelastic (RRT) calculations?
maths::Matrix< std::complex< double > > alpha
 polarisability matrix
maths::Vector< double > e [3]
 unity vectors, describing the directions of the local coordinate system
double Ealpha
double Ebeta
double Egamma
 angles through which the object was rotated (around the x- (Ealpha), then the y- (Ebeta) and finally the z-axis (Egamma))
maths::Matrix< double > H
std::complex< double > n
 refractive index of the object
std::function< std::complex< double >(double)> nfunc
NFUNCTYPE nfuncType =NFUNCTYPE::vacuum
std::complex< double > ninel
 refractive index of the object, used for inelastic (RRT) calculation
maths::Vector< double > P
 position of the object
maths::Vector< double > por
 corners of the circumferent cuboid (lower left corner and upper right corner)
maths::Vector< double > pul
maths::Matrix< double > R
 matrices for the transformation in the local coordinate system (H) and back to the calculation system (R)
double r0
 radius of the calculation sphere
double rho
 mass density in \( kg/m^3 \)
double sf =1
 scaling factor, it is used to scale the shape of the object
int type
 type of the object
bool visible =true

Detailed Description

This class provides a vortex phase plate object. Here, a vortex phase plate object is provided. The reference point is situated in the center of bottom face.

Definition at line 11 of file vortex.h.

Constructor & Destructor Documentation

◆ VortexPlate() [1/4]

GOAT::raytracing::VortexPlate::VortexPlate ( )

◆ VortexPlate() [2/4]

GOAT::raytracing::VortexPlate::VortexPlate ( ObjectShape & os)

◆ VortexPlate() [3/4]

GOAT::raytracing::VortexPlate::VortexPlate ( VortexPlate & c)

◆ VortexPlate() [4/4]

GOAT::raytracing::VortexPlate::VortexPlate ( const maths::Vector< double > & P,
double r,
double h,
double dh,
int m,
std::complex< double > n,
double r0 = 1.0,
const maths::Matrix< std::complex< double > > alpha = maths::CUNITY,
const maths::Vector< double > & Ex = maths::ex,
const maths::Vector< double > & Ey = maths::ey,
const maths::Vector< double > & Ez = maths::ez )

Member Function Documentation

◆ binRead()

void GOAT::raytracing::VortexPlate::binRead ( std::ifstream & os)
virtual

binary reading from file

Implements GOAT::raytracing::ObjectShape.

◆ binWrite()

void GOAT::raytracing::VortexPlate::binWrite ( std::ofstream & os)
virtual

binary writing to file

Implements GOAT::raytracing::ObjectShape.

◆ calcCoM()

maths::Vector< double > GOAT::raytracing::VortexPlate::calcCoM ( )
inlinevirtual

Calculates the center of mass, which is in the case of an ellipsoid simply its center, P.

Implements GOAT::raytracing::ObjectShape.

Definition at line 43 of file vortex.h.

◆ computeInertia()

maths::Matrix< double > GOAT::raytracing::VortexPlate::computeInertia ( )

Calculates the inertia matrix of the ellipsoid.

◆ height()

double GOAT::raytracing::VortexPlate::height ( )
inline

Definition at line 32 of file vortex.h.

◆ initQuad()

void GOAT::raytracing::VortexPlate::initQuad ( )
virtual

Sets the circumscribing cuboid (for use in inelastic calculations)

Implements GOAT::raytracing::ObjectShape.

◆ isInside()

bool GOAT::raytracing::VortexPlate::isInside ( const maths::Vector< double > & p)
virtual

checks if point P is inside the object

Implements GOAT::raytracing::ObjectShape.

◆ next()

bool GOAT::raytracing::VortexPlate::next ( const maths::Vector< double > & p,
const maths::Vector< double > & k,
maths::Vector< double > & pout )
virtual

searches for the next (nearest) intersection of a ray with the object, p: current position of the ray, k: direction of the ray, pout: position of the crossing point. Returns true, if a crossing point was found.

Implements GOAT::raytracing::ObjectShape.

◆ norm()

maths::Vector< double > GOAT::raytracing::VortexPlate::norm ( const maths::Vector< double > & P)
virtual

surface normal at the point P

Implements GOAT::raytracing::ObjectShape.

◆ operator=() [1/2]

VortexPlate & GOAT::raytracing::VortexPlate::operator= ( VortexPlate & f)

◆ operator=() [2/2]

VortexPlate & GOAT::raytracing::VortexPlate::operator= ( VortexPlate f)

◆ order()

int GOAT::raytracing::VortexPlate::order ( )
inline

returns the order (~topological charge)

Definition at line 52 of file vortex.h.

◆ radius()

double GOAT::raytracing::VortexPlate::radius ( )
inline

Definition at line 31 of file vortex.h.

◆ scale()

void GOAT::raytracing::VortexPlate::scale ( double sf)

Set the scaling factor (the half axis will be multiplied by this factor)

◆ setHeight()

void GOAT::raytracing::VortexPlate::setHeight ( double h)

◆ setm()

void GOAT::raytracing::VortexPlate::setm ( int m)

set the topological charge

◆ setPos() [1/2]

void GOAT::raytracing::VortexPlate::setPos ( double x,
double y,
double z )
inlinevirtual

sets reference point P

Implements GOAT::raytracing::ObjectShape.

Definition at line 46 of file vortex.h.

◆ setPos() [2/2]

void GOAT::raytracing::VortexPlate::setPos ( maths::Vector< double > r)
inlinevirtual

sets reference point P

Implements GOAT::raytracing::ObjectShape.

Definition at line 45 of file vortex.h.

◆ setr0()

void GOAT::raytracing::VortexPlate::setr0 ( double r0)
virtual

set the radius of the calculation space

Implements GOAT::raytracing::ObjectShape.

◆ setRadius()

void GOAT::raytracing::VortexPlate::setRadius ( double r)

◆ volume()

double GOAT::raytracing::VortexPlate::volume ( )
virtual

Calculates the volume of the ellipsoid.

Implements GOAT::raytracing::ObjectShape.

◆ vortexHeight()

double GOAT::raytracing::VortexPlate::vortexHeight ( )
inline

returns the height of the vortex structure

Definition at line 53 of file vortex.h.

Member Data Documentation

◆ dh

double GOAT::raytracing::VortexPlate::dh = 1.0
protected

height of the vortex structure

Definition at line 58 of file vortex.h.

◆ h

double GOAT::raytracing::VortexPlate::h = 1.0
protected

height of the vortex (without vortex structure)

Definition at line 55 of file vortex.h.

◆ m

int GOAT::raytracing::VortexPlate::m = 1
protected

topological charge of the vortex

Definition at line 57 of file vortex.h.

◆ r

double GOAT::raytracing::VortexPlate::r = 1.0
protected

radius of the vortex

Definition at line 56 of file vortex.h.


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