Tracer

#include <rayTrace.hpp>

Coming Soon

Setting the Geometry

void setGeometry(std::vector<std::array<NumericType, Dim>> &points,
                std::vector<std::array<NumericType, Dim>> &normals,
                const NumericType gridDelta)
template <typename T> void setMaterialIds(std::vector<T> &pMaterialIds) 
void setBoundaryConditions(rayBoundaryCondition pBoundaryConditions[D])
void setSourceDirection(const rayTraceDirection pDirection)
Example usage
...
rayTrace<NumericType, 3> tracer;
tracer.setGeometry(points, normals, gridDelta);
tracer.setMaterialIds(matIds);
tracer.setSourceDirection(rayTraceDirection::POS_Z);

rayBoundaryCondition boundardyConds[3] = {rayBoundaryCondition::REFLECTIVE};
tracer.setBoundaryConditions(boundaryConds);
...

Setting the Particle

template <typename ParticleType>
void setParticleType(std::unique_ptr<ParticleType> &p)

Set the particle type used for ray tracing. The particle is a user defined object that has to interface the rayParticle class.

void setNumberOfRaysPerPoint(const size_t pNum)
void setNumberOfRaysFixed(const size_t pNum)

Set the number of rays per geometry point. The total number of traced rays is determined by multiplying the set number with the total number of points in the geometry. Alternatively, you can fix the total number of traced rays, regardless of the geometry.

void setPrimaryDirection(const rayTriple<NumericType> pPrimaryDirection)

Set the primary direction of the source distribution. This can be used to obtain a tilted source distribution. Setting the primary direction does not change the position of the source plane. Therefore, one has to be careful that the resulting distribution does not lie completely above the source plane.

Example usage
...
rayTrace<NumericType, 3> tracer;

auto myParticle = std::make_unique<myParticleType>();
tracer.setParticleType(myParticle);
tracer.setNumRaysPerPoint(1000);
...

Local Data and Global Data

Extracting the Results

Additional Settings