Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
Institute of Technical Acoustics (ITA)
ITAPropagationPathSim
Commits
5887fe4f
Commit
5887fe4f
authored
Jun 19, 2020
by
Philipp Schäfer
Browse files
ART - updated documentation
parent
6ceed542
Changes
6
Hide whitespace changes
Inline
Side-by-side
include/ITAPropagationPathSim/AtmosphericRayTracing/EigenraySearch/Settings.h
View file @
5887fe4f
...
...
@@ -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
;
...
...
include/ITAPropagationPathSim/AtmosphericRayTracing/RayGrid.h
View file @
5887fe4f
...
...
@@ -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
);
...
...
include/ITAPropagationPathSim/AtmosphericRayTracing/Rays.h
View file @
5887fe4f
...
...
@@ -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
;
...
...
include/ITAPropagationPathSim/AtmosphericRayTracing/Simulation/Settings.h
View file @
5887fe4f
...
...
@@ -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.
};
...
...
src/ITAPropagationPathSim/AtmosphericRayTracing/EigenraySearch/Worker.h
View file @
5887fe4f
...
...
@@ -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
);
...
...
tests/AtmosphericRayTracing/EigenraySearch/EigenrayEngineTest.cpp
View file @
5887fe4f
...
...
@@ -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
=
fals
e
;
engine
.
eigenraySettings
.
rayTracing
.
bAbortOnReceiverDistIncrease
=
tru
e
;
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");
}
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment