Commit 5887fe4f authored by Philipp Schäfer's avatar Philipp Schäfer

ART - updated documentation

parent 6ceed542
......@@ -29,25 +29,25 @@ namespace ITAPropagationPathSim
namespace EigenraySearch {
struct ITA_PROPAGATION_PATH_SIM_API RayAdaptationSettings {
struct {
int maxNAdaptations = 15; //< Abort after N adaptations of the ray resolution
double minAngleResolutionDeg = 0.001; //< Abort if angle between neighboring rays is below this value []
int maxNAdaptations = 15; //!< Abort after N adaptations of the ray resolution
double minAngleResolutionDeg = 0.001; //!< Abort if angle between neighboring rays is below this value []
} abort;
struct {
double maxReceiverRadius = 1; //< Maximum radius of receiver sphere [m]
double maxSourceReceiverAngle = 1; //< Maximum angle between vectors from source to receiver point and receiver sphere []
double maxAngleForGeomSpreading = 0.01; //< Angular resolution of rays which is required to calculate spreading loss []
double maxReceiverRadius = 1; //!< Maximum radius of receiver sphere [m]
double maxSourceReceiverAngle = 1; //!< Maximum angle between vectors from source to receiver point and receiver sphere []
double maxAngleForGeomSpreading = 0.01; //!< Angular resolution of rays which is required to calculate spreading loss []
} accuracy;
struct {
bool bActive = true; //< Switch to enable/disable advanced ray zooming
double threshold = 0.1; //< Threshold between 0 and 2 above which advanced ray zooming is performed (0 = always, 2 = never)
bool bActive = true; //!< Switch to enable/disable advanced ray zooming
double threshold = 0.1; //!< Threshold between 0 and 2 above which advanced ray zooming is performed (0 = always, 2 = never)
} advancedRayZooming;
};
struct ITA_PROPAGATION_PATH_SIM_API RayTracingAbortSettings {
int maxReflectionOrder = 1; //< Maximum considered order of reflections
double maxTime = 30; //< Maximum propagation time of rays [s]
bool bAbortOnReceiverDistIncrease = true; //< If enabled, ray tracing will be aborted as soon as ray receiver distance increases
int maxReflectionOrder = 1; //!< Maximum considered order of reflections
double maxTime = 30; //!< Maximum propagation time of rays [s]
bool bAbortOnReceiverDistIncrease = true; //!< If enabled, ray tracing will be aborted as soon as ray receiver distance increases
};
struct ITA_PROPAGATION_PATH_SIM_API Settings {
RayTracingAbortSettings rayTracing;
......
......@@ -47,14 +47,14 @@ namespace ITAPropagationPathSim
typedef std::vector< RayPtr > RayVector;
typedef std::vector<RayVector> RayMatrix;
VistaVector3D m_v3SourcePos; //< Origin of all rays in this ray grid.
std::vector<double> m_vdThetaDeg; //< Sorted vector of elevation angles in degrees.
std::vector<double> m_vdPhiDeg; //< Sorted vector of azimuth angles in degrees.
VistaVector3D m_v3SourcePos; //!< Origin of all rays in this ray grid.
std::vector<double> m_vdThetaDeg; //!< Sorted vector of elevation angles in degrees.
std::vector<double> m_vdPhiDeg; //!< Sorted vector of azimuth angles in degrees.
private:
RayMatrix m_vvpRayMatrix; //< Matrix of pointers to ray. First index refers to elevation (theta), second to azimuth (phi) angle.
RayVector m_vpRays; //< Vector of all rays contained by vvpRayMatrix. May contain duplicates at poles (theta = 0 or 180°).
std::set<RayPtr> m_vpUniqueRays; // Unique set of all rays contained by vvpRayMatrix.
bool m_bCircularPhi = false; //< Indicates whether the azimuth vector is considered to be circular (phi covers full 360 degrees) or not.
RayMatrix m_vvpRayMatrix; //!< Matrix of pointers to ray. First index refers to elevation (theta), second to azimuth (phi) angle.
RayVector m_vpRays; //!< Vector of all rays contained by vvpRayMatrix. May contain duplicates at poles (theta = 0 or 180°).
std::set<RayPtr> m_vpUniqueRays;//!< Unique set of all rays contained by vvpRayMatrix.
bool m_bCircularPhi = false; //!< Indicates whether the azimuth vector is considered to be circular (phi covers full 360 degrees) or not.
private:
CRayGrid(const RayMatrix& rayMatrix, const std::vector<double>& thetaDeg, const std::vector<double>& phiDeg, const bool circularPhi = false);
......
......@@ -51,7 +51,7 @@ namespace ITAPropagationPathSim
class ITA_PROPAGATION_PATH_SIM_API CRayReceiverData {
public:
bool bDistanceUpdatedInLastIt; //< indicates whether receiver distance was updated in last during last integration step
bool bDistanceUpdatedInLastIt; //!< indicates whether receiver distance was updated in last during last integration step
float distance;
int idxMinDist;
int reflectionOrder;
......
......@@ -62,8 +62,8 @@ namespace ITAPropagationPathSim
struct ITA_PROPAGATION_PATH_SIM_API AdaptiveIntegrationSettings {
bool bActive = true; //!< If this is set to false, the adaptation is bypassed and the integration step size is therefore constant
double dMaxError = 0.015; //< For errors above this threshold the time step is decreased.
double dUncriticalError = 0.005; //< An error below this limit allows to increase the time step again.
double dMaxError = 0.015; //!< For errors above this threshold the time step is decreased.
double dUncriticalError = 0.005; //!< An error below this limit allows to increase the time step again.
unsigned int iMaxAdaptationLevel = 31; //!< Maximum times, the time step is halfed. Maximum valid value = 31.
};
......
......@@ -110,7 +110,7 @@ namespace ITAPropagationPathSim
class CInitialWorker : public CWorkerBase
{
private:
RayVector m_vpMinDistanceRays; //< Vector containing the current ray of minimum receiver distance for each reflection order
RayVector m_vpMinDistanceRays; //!< Vector containing the current ray of minimum receiver distance for each reflection order
public:
CInitialWorker(const VistaVector3D& sourcePosition, const VistaVector3D& receiverPosition, const Simulation::Settings& simSettings, const RayTracingAbortSettings& abortSettings);
......
......@@ -61,8 +61,10 @@ void runTest(const CStratifiedAtmosphere& atmosphere, const VistaVector3D& sourc
engine.eigenraySettings.rayAdaptation.accuracy.maxSourceReceiverAngle = 1;
engine.eigenraySettings.rayAdaptation.accuracy.maxAngleForGeomSpreading = 0.01;
engine.eigenraySettings.rayAdaptation.advancedRayZooming.threshold = 1.0;
engine.eigenraySettings.rayAdaptation.advancedRayZooming.bActive = true;
engine.eigenraySettings.rayAdaptation.advancedRayZooming.threshold = 1.0;
engine.eigenraySettings.rayTracing.bAbortOnReceiverDistIncrease = true;
engine.eigenraySettings.rayTracing.maxReflectionOrder = 1;
engine.eigenraySettings.rayTracing.maxTime = 15;
......@@ -129,7 +131,7 @@ void TestSourceAtGround(const CStratifiedAtmosphere& atmosphere, const string& a
engine.eigenraySettings.rayAdaptation.advancedRayZooming.bActive = false;
//engine.eigenraySettings.rayAdaptation.advancedRayZooming.threshold = 1.0;
engine.eigenraySettings.rayTracing.bAbortOnReceiverDistIncrease = false;
engine.eigenraySettings.rayTracing.bAbortOnReceiverDistIncrease = true;
engine.eigenraySettings.rayTracing.maxReflectionOrder = 1;
engine.eigenraySettings.rayTracing.maxTime = 30;
......@@ -171,15 +173,15 @@ int main(int iNumInArgs, char* pcInArgs[])
//Disable multi-threading for debugging purposes
omp_set_num_threads(1);
TestSourceReceiverAzimuthAbove324Deg();
//TestSourceReceiverAzimuthAbove324Deg();
const CStratifiedAtmosphere homAtmosphere = GetHomogeneousAtmosphere();
const CStratifiedAtmosphere inhomAtmosphere = GetInhomogeneousAtmosphere();
TestSourceAtGround(inhomAtmosphere, "Inhomogeneous");
TestReceiverNearGroundSourceElevation(homAtmosphere, "Homogeneous");
TestReceiverNearGroundSourceElevation(inhomAtmosphere, "Inhomogeneous");
TestReceiverNearGroundSourceAzimuth(inhomAtmosphere, "Inhomogeneous");
//TestReceiverNearGroundSourceElevation(homAtmosphere, "Homogeneous");
//TestReceiverNearGroundSourceElevation(inhomAtmosphere, "Inhomogeneous");
//TestReceiverNearGroundSourceAzimuth(inhomAtmosphere, "Inhomogeneous");
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment