Commit 50b07a15 authored by Dipl.-Ing. Jonas Stienen's avatar Dipl.-Ing. Jonas Stienen
Browse files

Merge branch 'develop' of https://git.rwth-aachen.de/ita/ITAPropagationPathSim into develop

parents a5e70a5d 316dd5ca
......@@ -13,6 +13,7 @@ endif( )
# dependencies
vista_use_package( ITABase REQUIRED FIND_DEPENDENCIES )
vista_use_package( ITAGeo REQUIRED FIND_DEPENDENCIES )
# NOTE: Do not link against ITAPropagationModels. Otherwise, a circular link might be established.
if( ITA_PROPAGATION_PATH_SIM_WITH_OPENMP )
vista_use_package( OpenMP REQUIRED )
endif( )
......
......@@ -25,8 +25,8 @@
#include <VistaBase/VistaVector3D.h>
// ITA includes
#include <ITAPropagationPathSim/AtmosphericRayTracing/EigenraySearch/Settings.h>
#include <ITAPropagationPathSim/AtmosphericRayTracing/Simulation/Settings.h>
#include <ITAPropagationPathSim/AtmosphericRayTracing/EigenraySearch/EigenraySettings.h>
#include <ITAPropagationPathSim/AtmosphericRayTracing/Simulation/ARTSettings.h>
#include <ITAPropagationPathSim/AtmosphericRayTracing/Rays.h>
#include <ITAGeo/Atmosphere/StratifiedAtmosphere.h>
......
......@@ -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 = 30; //!< 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 = false; //!< 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;
......
......@@ -5,8 +5,8 @@ set( RelativeDir "include/ITAPropagationPathSim/AtmosphericRayTracing/EigenraySe
set( RelativeSourceGroup "Header Files\\ITAPropagationPathSim\\AtmosphericRayTracing\\EigenraySearch" )
set( DirFiles
Settings.h
Engine.h
EigenraySettings.h
EigenrayEngine.h
AdaptiveRayGrid.h
)
......
......@@ -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;
......
......@@ -25,7 +25,7 @@
#include <VistaBase/VistaVector3D.h>
// ITA includes
#include <ITAPropagationPathSim/AtmosphericRayTracing/Simulation/Settings.h>
#include <ITAPropagationPathSim/AtmosphericRayTracing/Simulation/ARTSettings.h>
#include <ITAPropagationPathSim/AtmosphericRayTracing/Rays.h>
#include <ITAGeo/Atmosphere/StratifiedAtmosphere.h>
......
......@@ -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.
};
......
......@@ -5,8 +5,8 @@ set( RelativeDir "include/ITAPropagationPathSim/AtmosphericRayTracing/Simulation
set( RelativeSourceGroup "Header Files\\ITAPropagationPathSim\\AtmosphericRayTracing\\Simulation" )
set( DirFiles
Settings.h
Engine.h
ARTSettings.h
ARTEngine.h
)
set( DirFiles_SourceGroup "${RelativeSourceGroup}" )
......
#include <ITAPropagationPathSim/AtmosphericRayTracing/EigenraySearch/Engine.h>
#include <ITAPropagationPathSim/AtmosphericRayTracing/EigenraySearch/EigenrayEngine.h>
// ITA includes
#include "Worker.h"
......
......@@ -25,13 +25,13 @@
#include <VistaBase/VistaVector3D.h>
// ITA includes
#include <ITAPropagationPathSim/AtmosphericRayTracing/Simulation/Engine.h>
#include <ITAPropagationPathSim/AtmosphericRayTracing/Simulation/Settings.h>
#include <ITAPropagationPathSim/AtmosphericRayTracing/Simulation/ARTEngine.h>
#include <ITAPropagationPathSim/AtmosphericRayTracing/Simulation/ARTSettings.h>
#include <ITAPropagationPathSim/AtmosphericRayTracing/Rays.h>
#include <ITAPropagationPathSim/AtmosphericRayTracing/RayGrid.h>
#include <ITAPropagationPathSim/AtmosphericRayTracing/EigenraySearch/Settings.h>
#include <ITAPropagationPathSim/AtmosphericRayTracing/EigenraySearch/EigenraySettings.h>
#include <ITAPropagationPathSim/AtmosphericRayTracing/EigenraySearch/AdaptiveRayGrid.h>
#include <ITAGeo/Atmosphere/StratifiedAtmosphere.h>
......@@ -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);
......
......@@ -5,7 +5,7 @@ set( RelativeDir "src/ITAPropagationPathSim/AtmosphericRayTracing/EigenraySearch
set( RelativeSourceGroup "Source Files\\ITAPropagationPathSim\\AtmosphericRayTracing\\EigenraySearch" )
set( DirFiles
Engine.cpp
EigenrayEngine.cpp
AdaptiveRayGrid.cpp
Worker.h
Worker.cpp
......
#include <ITAPropagationPathSim/AtmosphericRayTracing/Simulation/Engine.h>
#include <ITAPropagationPathSim/AtmosphericRayTracing/Simulation/ARTEngine.h>
// ITA includes
#include "AdaptiveSolver.h"
......
......@@ -19,7 +19,7 @@
#ifndef IW_ITA_PROPAGATIONPATHSIM_ART_SIMULATION_ADAPTIVESOLVER
#define IW_ITA_PROPAGATIONPATHSIM_ART_SIMULATION_ADAPTIVESOLVER
#include <ITAPropagationPathSim/AtmosphericRayTracing/Simulation/Settings.h>
#include <ITAPropagationPathSim/AtmosphericRayTracing/Simulation/ARTSettings.h>
// ITA includes
#include <ITAGeo/Atmosphere/StratifiedAtmosphere.h>
......
......@@ -7,7 +7,7 @@ set( RelativeSourceGroup "Source Files\\ITAPropagationPathSim\\AtmosphericRayTra
set( DirFiles
AdaptiveSolver.h
AdaptiveSolver.cpp
Engine.cpp
ARTEngine.cpp
)
set( DirFiles_SourceGroup "${RelativeSourceGroup}" )
......
......@@ -28,11 +28,11 @@
#include <ITAGeo/Utils/JSON/PropagationPath.h>
#include <ITAGeo/Atmosphere/StratifiedAtmosphere.h>
#include <ITAPropagationPathSim/AtmosphericRayTracing/Simulation/Engine.h>
#include <ITAPropagationPathSim/AtmosphericRayTracing/Simulation/Settings.h>
#include <ITAPropagationPathSim/AtmosphericRayTracing/Simulation/ARTEngine.h>
#include <ITAPropagationPathSim/AtmosphericRayTracing/Simulation/ARTSettings.h>
#include <ITAPropagationPathSim/AtmosphericRayTracing/EigenraySearch/Engine.h>
#include <ITAPropagationPathSim/AtmosphericRayTracing/EigenraySearch/Settings.h>
#include <ITAPropagationPathSim/AtmosphericRayTracing/EigenraySearch/EigenrayEngine.h>
#include <ITAPropagationPathSim/AtmosphericRayTracing/EigenraySearch/EigenraySettings.h>
//#include <cassert>
......@@ -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.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");
}
......@@ -22,7 +22,7 @@
//#include <ITAStringUtils.h>
#include <ITAGeo/Atmosphere/StratifiedAtmosphere.h>
#include <ITAPropagationPathSim/AtmosphericRayTracing/Simulation/Engine.h>
#include <ITAPropagationPathSim/AtmosphericRayTracing/Simulation/ARTEngine.h>
#include <ITAPropagationPathSim/AtmosphericRayTracing/ODESolver/ODESolver.h>
#include <ITAPropagationPathSim/AtmosphericRayTracing/Rays.h>
......
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