Commit 4d31ba4a authored by Philipp Schäfer's avatar Philipp Schäfer
Browse files

Atmospheric Ray Tracing

- started to work on EigenrayFinder
parent aecdd668
/*
* ----------------------------------------------------------------
*
* ITA geometrical acoustics
* (c) Copyright Institute of Technical Acoustics (ITA)
* RWTH Aachen University, Germany, 2015-2019
*
* ----------------------------------------------------------------
* ____ __________ _______
* // / //__ ___/ // _ |
* // / // / // /_| |
* // / // / // ___ |
* //__/ //__/ //__/ |__|
*
* ----------------------------------------------------------------
*
*/
#ifndef IW_ITA_PROPAGATIONPATHSIM_ART_SIMULATION_EIGENRAYFINDER
#define IW_ITA_PROPAGATIONPATHSIM_ART_SIMULATION_EIGENRAYFINDER
#include <ITAPropagationPathSim/Definitions.h>
// Vista includes
#include <VistaBase/VistaVector3D.h>
// ITA includes
#include <ITAPropagationPathSim/AtmosphericRayTracing/Simulation/Engine.h>
#include <ITAPropagationPathSim/AtmosphericRayTracing/Rays.h>
#include <ITAGeo/Atmosphere/StratifiedAtmosphere.h>
// STD
#include <vector>
#include <memory>
namespace ITAPropagationPathSim
{
namespace AtmosphericRayTracing
{
namespace Simulation {
struct ITA_PROPAGATION_PATH_SIM_API EigenraySettings {
unsigned int maxReflectionOrder; //< Maximum considered order of reflections
double maxTime = 30; //< [s]
double maxReceiverRadius = 1; //< [m]
double maxSourceReceiverAngle = 1; //< []
unsigned int maxNAdaptations = 15; //< Abort after X adaptations of the ray resolution
//double minAngleResolutionDeg = 0.001; //< []
double advangedRayZoomingThreshold = 0.1; //< [0 1]
double maxAngleForGeomSpreading = 0.01; //< []
};
class ITA_PROPAGATION_PATH_SIM_API CEigenrayFinder
{
private:
CEngine simulationEngine;
EigenraySettings eigenSettings;
VistaVector3D v3SourcePosition;
VistaVector3D v3ReceiverPosition;
public:
CEigenrayFinder() {}
public:
SimulationSettings& SimulationSettings() { return simulationEngine.settings; }
EigenraySettings& EigenraySettings() { return eigenSettings; }
public:
std::vector<std::shared_ptr<CRay>> Run(const ITAGeo::CStratifiedAtmosphere& atmosphere, const VistaVector3D& sourcePosition, const VistaVector3D& receiverPosition);
private:
void InitialRayTracing(const ITAGeo::CStratifiedAtmosphere& atmosphere);
};
}
}
}
#endif //IW_ITA_PROPAGATIONPATHSIM_ART_SIMULATION_EIGENRAYFINDER
\ No newline at end of file
......@@ -7,6 +7,7 @@ set( RelativeSourceGroup "Header Files\\ITAPropagationPathSim\\AtmosphericRayTra
set( DirFiles
Settings.h
Engine.h
EigenrayFinder.h
)
set( DirFiles_SourceGroup "${RelativeSourceGroup}" )
......
#include <ITAPropagationPathSim/AtmosphericRayTracing/Simulation/EigenrayFinder.h>
// ITA includes
#include "RayResolutionAdapter.h"
#include <ITAPropagationPathSim/AtmosphericRayTracing/RayGrid.h>
// Vista includes
//#include <VistaInterProcComm/Concurrency/VistaThread.h>
// STD
//#include <cmath>
using namespace ITAPropagationPathSim::AtmosphericRayTracing;
using namespace ITAPropagationPathSim::AtmosphericRayTracing::Simulation;
std::vector<std::shared_ptr<CRay>> CEigenrayFinder::Run(const ITAGeo::CStratifiedAtmosphere& atmosphere, const VistaVector3D& sourcePosition, const VistaVector3D& receiverPosition)
{
v3ReceiverPosition = receiverPosition;
v3SourcePosition = sourcePosition;
CRayGrid rayGrid = CEquiangularRayDistribution(sourcePosition, 7, 10);
return std::vector<std::shared_ptr<CRay>>();
}
void CEigenrayFinder::InitialRayTracing(const ITAGeo::CStratifiedAtmosphere& atmosphere)
{
CRayGrid rayGrid = CEquiangularRayDistribution(v3SourcePosition, 7, 10);
simulationEngine.Run(atmosphere, rayGrid.Rays());
}
......@@ -8,6 +8,7 @@ set( DirFiles
AdaptiveSolver.h
AdaptiveSolver.cpp
Engine.cpp
EigenrayFinder.cpp
RayResolutionAdapter.h
RayResolutionAdapter.cpp
)
......
Supports Markdown
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