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( ) ...@@ -13,6 +13,7 @@ endif( )
# dependencies # dependencies
vista_use_package( ITABase REQUIRED FIND_DEPENDENCIES ) vista_use_package( ITABase REQUIRED FIND_DEPENDENCIES )
vista_use_package( ITAGeo 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 ) if( ITA_PROPAGATION_PATH_SIM_WITH_OPENMP )
vista_use_package( OpenMP REQUIRED ) vista_use_package( OpenMP REQUIRED )
endif( ) endif( )
......
...@@ -25,8 +25,8 @@ ...@@ -25,8 +25,8 @@
#include <VistaBase/VistaVector3D.h> #include <VistaBase/VistaVector3D.h>
// ITA includes // ITA includes
#include <ITAPropagationPathSim/AtmosphericRayTracing/EigenraySearch/Settings.h> #include <ITAPropagationPathSim/AtmosphericRayTracing/EigenraySearch/EigenraySettings.h>
#include <ITAPropagationPathSim/AtmosphericRayTracing/Simulation/Settings.h> #include <ITAPropagationPathSim/AtmosphericRayTracing/Simulation/ARTSettings.h>
#include <ITAPropagationPathSim/AtmosphericRayTracing/Rays.h> #include <ITAPropagationPathSim/AtmosphericRayTracing/Rays.h>
#include <ITAGeo/Atmosphere/StratifiedAtmosphere.h> #include <ITAGeo/Atmosphere/StratifiedAtmosphere.h>
......
...@@ -29,25 +29,25 @@ namespace ITAPropagationPathSim ...@@ -29,25 +29,25 @@ namespace ITAPropagationPathSim
namespace EigenraySearch { namespace EigenraySearch {
struct ITA_PROPAGATION_PATH_SIM_API RayAdaptationSettings { struct ITA_PROPAGATION_PATH_SIM_API RayAdaptationSettings {
struct { struct {
int maxNAdaptations = 15; //< Abort after N adaptations of the ray resolution 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 [] double minAngleResolutionDeg = 0.001; //!< Abort if angle between neighboring rays is below this value []
} abort; } abort;
struct { struct {
double maxReceiverRadius = 1; //< Maximum radius of receiver sphere [m] 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 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 maxAngleForGeomSpreading = 0.01; //!< Angular resolution of rays which is required to calculate spreading loss []
} accuracy; } accuracy;
struct { struct {
bool bActive = true; //< Switch to enable/disable advanced ray zooming 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) double threshold = 0.1; //!< Threshold between 0 and 2 above which advanced ray zooming is performed (0 = always, 2 = never)
} advancedRayZooming; } advancedRayZooming;
}; };
struct ITA_PROPAGATION_PATH_SIM_API RayTracingAbortSettings { struct ITA_PROPAGATION_PATH_SIM_API RayTracingAbortSettings {
int maxReflectionOrder = 1; //< Maximum considered order of reflections int maxReflectionOrder = 1; //!< Maximum considered order of reflections
double maxTime = 30; //< Maximum propagation time of rays [s] 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 bool bAbortOnReceiverDistIncrease = true; //!< If enabled, ray tracing will be aborted as soon as ray receiver distance increases
}; };
struct ITA_PROPAGATION_PATH_SIM_API Settings { struct ITA_PROPAGATION_PATH_SIM_API Settings {
RayTracingAbortSettings rayTracing; RayTracingAbortSettings rayTracing;
......
...@@ -5,8 +5,8 @@ set( RelativeDir "include/ITAPropagationPathSim/AtmosphericRayTracing/EigenraySe ...@@ -5,8 +5,8 @@ set( RelativeDir "include/ITAPropagationPathSim/AtmosphericRayTracing/EigenraySe
set( RelativeSourceGroup "Header Files\\ITAPropagationPathSim\\AtmosphericRayTracing\\EigenraySearch" ) set( RelativeSourceGroup "Header Files\\ITAPropagationPathSim\\AtmosphericRayTracing\\EigenraySearch" )
set( DirFiles set( DirFiles
Settings.h EigenraySettings.h
Engine.h EigenrayEngine.h
AdaptiveRayGrid.h AdaptiveRayGrid.h
) )
......
...@@ -47,14 +47,14 @@ namespace ITAPropagationPathSim ...@@ -47,14 +47,14 @@ namespace ITAPropagationPathSim
typedef std::vector< RayPtr > RayVector; typedef std::vector< RayPtr > RayVector;
typedef std::vector<RayVector> RayMatrix; typedef std::vector<RayVector> RayMatrix;
VistaVector3D m_v3SourcePos; //< Origin of all rays in this ray grid. 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_vdThetaDeg; //!< Sorted vector of elevation angles in degrees.
std::vector<double> m_vdPhiDeg; //< Sorted vector of azimuth angles in degrees. std::vector<double> m_vdPhiDeg; //!< Sorted vector of azimuth angles in degrees.
private: private:
RayMatrix m_vvpRayMatrix; //< Matrix of pointers to ray. First index refers to elevation (theta), second to azimuth (phi) angle. 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°). 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. 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. bool m_bCircularPhi = false; //!< Indicates whether the azimuth vector is considered to be circular (phi covers full 360 degrees) or not.
private: private:
CRayGrid(const RayMatrix& rayMatrix, const std::vector<double>& thetaDeg, const std::vector<double>& phiDeg, const bool circularPhi = false); CRayGrid(const RayMatrix& rayMatrix, const std::vector<double>& thetaDeg, const std::vector<double>& phiDeg, const bool circularPhi = false);
......
...@@ -51,7 +51,7 @@ namespace ITAPropagationPathSim ...@@ -51,7 +51,7 @@ namespace ITAPropagationPathSim
class ITA_PROPAGATION_PATH_SIM_API CRayReceiverData { class ITA_PROPAGATION_PATH_SIM_API CRayReceiverData {
public: 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; float distance;
int idxMinDist; int idxMinDist;
int reflectionOrder; int reflectionOrder;
......
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
#include <VistaBase/VistaVector3D.h> #include <VistaBase/VistaVector3D.h>
// ITA includes // ITA includes
#include <ITAPropagationPathSim/AtmosphericRayTracing/Simulation/Settings.h> #include <ITAPropagationPathSim/AtmosphericRayTracing/Simulation/ARTSettings.h>
#include <ITAPropagationPathSim/AtmosphericRayTracing/Rays.h> #include <ITAPropagationPathSim/AtmosphericRayTracing/Rays.h>
#include <ITAGeo/Atmosphere/StratifiedAtmosphere.h> #include <ITAGeo/Atmosphere/StratifiedAtmosphere.h>
......
...@@ -62,8 +62,8 @@ namespace ITAPropagationPathSim ...@@ -62,8 +62,8 @@ namespace ITAPropagationPathSim
struct ITA_PROPAGATION_PATH_SIM_API AdaptiveIntegrationSettings { 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 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 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 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. 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 ...@@ -5,8 +5,8 @@ set( RelativeDir "include/ITAPropagationPathSim/AtmosphericRayTracing/Simulation
set( RelativeSourceGroup "Header Files\\ITAPropagationPathSim\\AtmosphericRayTracing\\Simulation" ) set( RelativeSourceGroup "Header Files\\ITAPropagationPathSim\\AtmosphericRayTracing\\Simulation" )
set( DirFiles set( DirFiles
Settings.h ARTSettings.h
Engine.h ARTEngine.h
) )
set( DirFiles_SourceGroup "${RelativeSourceGroup}" ) set( DirFiles_SourceGroup "${RelativeSourceGroup}" )
......
#include <ITAPropagationPathSim/AtmosphericRayTracing/EigenraySearch/Engine.h> #include <ITAPropagationPathSim/AtmosphericRayTracing/EigenraySearch/EigenrayEngine.h>
// ITA includes // ITA includes
#include "Worker.h" #include "Worker.h"
......
...@@ -25,13 +25,13 @@ ...@@ -25,13 +25,13 @@
#include <VistaBase/VistaVector3D.h> #include <VistaBase/VistaVector3D.h>
// ITA includes // ITA includes
#include <ITAPropagationPathSim/AtmosphericRayTracing/Simulation/Engine.h> #include <ITAPropagationPathSim/AtmosphericRayTracing/Simulation/ARTEngine.h>
#include <ITAPropagationPathSim/AtmosphericRayTracing/Simulation/Settings.h> #include <ITAPropagationPathSim/AtmosphericRayTracing/Simulation/ARTSettings.h>
#include <ITAPropagationPathSim/AtmosphericRayTracing/Rays.h> #include <ITAPropagationPathSim/AtmosphericRayTracing/Rays.h>
#include <ITAPropagationPathSim/AtmosphericRayTracing/RayGrid.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 <ITAPropagationPathSim/AtmosphericRayTracing/EigenraySearch/AdaptiveRayGrid.h>
#include <ITAGeo/Atmosphere/StratifiedAtmosphere.h> #include <ITAGeo/Atmosphere/StratifiedAtmosphere.h>
...@@ -110,7 +110,7 @@ namespace ITAPropagationPathSim ...@@ -110,7 +110,7 @@ namespace ITAPropagationPathSim
class CInitialWorker : public CWorkerBase class CInitialWorker : public CWorkerBase
{ {
private: 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: public:
CInitialWorker(const VistaVector3D& sourcePosition, const VistaVector3D& receiverPosition, const Simulation::Settings& simSettings, const RayTracingAbortSettings& abortSettings); CInitialWorker(const VistaVector3D& sourcePosition, const VistaVector3D& receiverPosition, const Simulation::Settings& simSettings, const RayTracingAbortSettings& abortSettings);
......
...@@ -5,7 +5,7 @@ set( RelativeDir "src/ITAPropagationPathSim/AtmosphericRayTracing/EigenraySearch ...@@ -5,7 +5,7 @@ set( RelativeDir "src/ITAPropagationPathSim/AtmosphericRayTracing/EigenraySearch
set( RelativeSourceGroup "Source Files\\ITAPropagationPathSim\\AtmosphericRayTracing\\EigenraySearch" ) set( RelativeSourceGroup "Source Files\\ITAPropagationPathSim\\AtmosphericRayTracing\\EigenraySearch" )
set( DirFiles set( DirFiles
Engine.cpp EigenrayEngine.cpp
AdaptiveRayGrid.cpp AdaptiveRayGrid.cpp
Worker.h Worker.h
Worker.cpp Worker.cpp
......
#include <ITAPropagationPathSim/AtmosphericRayTracing/Simulation/Engine.h> #include <ITAPropagationPathSim/AtmosphericRayTracing/Simulation/ARTEngine.h>
// ITA includes // ITA includes
#include "AdaptiveSolver.h" #include "AdaptiveSolver.h"
......
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
#ifndef IW_ITA_PROPAGATIONPATHSIM_ART_SIMULATION_ADAPTIVESOLVER #ifndef IW_ITA_PROPAGATIONPATHSIM_ART_SIMULATION_ADAPTIVESOLVER
#define 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 // ITA includes
#include <ITAGeo/Atmosphere/StratifiedAtmosphere.h> #include <ITAGeo/Atmosphere/StratifiedAtmosphere.h>
......
...@@ -7,7 +7,7 @@ set( RelativeSourceGroup "Source Files\\ITAPropagationPathSim\\AtmosphericRayTra ...@@ -7,7 +7,7 @@ set( RelativeSourceGroup "Source Files\\ITAPropagationPathSim\\AtmosphericRayTra
set( DirFiles set( DirFiles
AdaptiveSolver.h AdaptiveSolver.h
AdaptiveSolver.cpp AdaptiveSolver.cpp
Engine.cpp ARTEngine.cpp
) )
set( DirFiles_SourceGroup "${RelativeSourceGroup}" ) set( DirFiles_SourceGroup "${RelativeSourceGroup}" )
......
...@@ -28,11 +28,11 @@ ...@@ -28,11 +28,11 @@
#include <ITAGeo/Utils/JSON/PropagationPath.h> #include <ITAGeo/Utils/JSON/PropagationPath.h>
#include <ITAGeo/Atmosphere/StratifiedAtmosphere.h> #include <ITAGeo/Atmosphere/StratifiedAtmosphere.h>
#include <ITAPropagationPathSim/AtmosphericRayTracing/Simulation/Engine.h> #include <ITAPropagationPathSim/AtmosphericRayTracing/Simulation/ARTEngine.h>
#include <ITAPropagationPathSim/AtmosphericRayTracing/Simulation/Settings.h> #include <ITAPropagationPathSim/AtmosphericRayTracing/Simulation/ARTSettings.h>
#include <ITAPropagationPathSim/AtmosphericRayTracing/EigenraySearch/Engine.h> #include <ITAPropagationPathSim/AtmosphericRayTracing/EigenraySearch/EigenrayEngine.h>
#include <ITAPropagationPathSim/AtmosphericRayTracing/EigenraySearch/Settings.h> #include <ITAPropagationPathSim/AtmosphericRayTracing/EigenraySearch/EigenraySettings.h>
//#include <cassert> //#include <cassert>
...@@ -61,8 +61,10 @@ void runTest(const CStratifiedAtmosphere& atmosphere, const VistaVector3D& sourc ...@@ -61,8 +61,10 @@ void runTest(const CStratifiedAtmosphere& atmosphere, const VistaVector3D& sourc
engine.eigenraySettings.rayAdaptation.accuracy.maxSourceReceiverAngle = 1; engine.eigenraySettings.rayAdaptation.accuracy.maxSourceReceiverAngle = 1;
engine.eigenraySettings.rayAdaptation.accuracy.maxAngleForGeomSpreading = 0.01; 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.maxReflectionOrder = 1;
engine.eigenraySettings.rayTracing.maxTime = 15; engine.eigenraySettings.rayTracing.maxTime = 15;
...@@ -129,7 +131,7 @@ void TestSourceAtGround(const CStratifiedAtmosphere& atmosphere, const string& a ...@@ -129,7 +131,7 @@ void TestSourceAtGround(const CStratifiedAtmosphere& atmosphere, const string& a
engine.eigenraySettings.rayAdaptation.advancedRayZooming.bActive = false; engine.eigenraySettings.rayAdaptation.advancedRayZooming.bActive = false;
//engine.eigenraySettings.rayAdaptation.advancedRayZooming.threshold = 1.0; //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.maxReflectionOrder = 1;
engine.eigenraySettings.rayTracing.maxTime = 30; engine.eigenraySettings.rayTracing.maxTime = 30;
...@@ -171,15 +173,15 @@ int main(int iNumInArgs, char* pcInArgs[]) ...@@ -171,15 +173,15 @@ int main(int iNumInArgs, char* pcInArgs[])
//Disable multi-threading for debugging purposes //Disable multi-threading for debugging purposes
omp_set_num_threads(1); omp_set_num_threads(1);
TestSourceReceiverAzimuthAbove324Deg(); //TestSourceReceiverAzimuthAbove324Deg();
const CStratifiedAtmosphere homAtmosphere = GetHomogeneousAtmosphere(); const CStratifiedAtmosphere homAtmosphere = GetHomogeneousAtmosphere();
const CStratifiedAtmosphere inhomAtmosphere = GetInhomogeneousAtmosphere(); const CStratifiedAtmosphere inhomAtmosphere = GetInhomogeneousAtmosphere();
TestSourceAtGround(inhomAtmosphere, "Inhomogeneous"); TestSourceAtGround(inhomAtmosphere, "Inhomogeneous");
TestReceiverNearGroundSourceElevation(homAtmosphere, "Homogeneous"); //TestReceiverNearGroundSourceElevation(homAtmosphere, "Homogeneous");
TestReceiverNearGroundSourceElevation(inhomAtmosphere, "Inhomogeneous"); //TestReceiverNearGroundSourceElevation(inhomAtmosphere, "Inhomogeneous");
TestReceiverNearGroundSourceAzimuth(inhomAtmosphere, "Inhomogeneous"); //TestReceiverNearGroundSourceAzimuth(inhomAtmosphere, "Inhomogeneous");
} }
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
//#include <ITAStringUtils.h> //#include <ITAStringUtils.h>
#include <ITAGeo/Atmosphere/StratifiedAtmosphere.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/ODESolver/ODESolver.h>
#include <ITAPropagationPathSim/AtmosphericRayTracing/Rays.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