diff --git a/CMakeLists.txt b/CMakeLists.txt index ca2ea182bd1780e1c5b3d08f99af8ebe6b055539..6fada96cb90b61158bb5e78ecfef54c6a5e78318 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,7 +4,7 @@ init_project () project ( ITAPropagationModels - VERSION 2023.0 + VERSION 2023.1 LANGUAGES CXX C ) diff --git a/src/ITAPropagationModels/Atmosphere/AirAttenuation.cpp b/src/ITAPropagationModels/Atmosphere/AirAttenuation.cpp index a511dfcfa05dce6036a3a4576483843492307b63..c1181c0c594c423d26335776d0c18f7c8a596b42 100644 --- a/src/ITAPropagationModels/Atmosphere/AirAttenuation.cpp +++ b/src/ITAPropagationModels/Atmosphere/AirAttenuation.cpp @@ -29,12 +29,15 @@ void Atmosphere::AirAttenuationSpectrum( ITABase::CThirdOctaveFactorMagnitudeSpe { const int idxNext = std::min( idxCurrent + iDownSamplingFactor, oRay.NumPoints( ) - 1 ); - const float fAltitude = std::abs( oRay[idxCurrent].position[Vista::Z] ); - const float fDistance = ( oRay[idxNext].position - oRay[idxCurrent].position ).GetLength( ); + const double dAltitude = (double)std::abs( oRay[idxCurrent].position[Vista::Z] ); + const double dDistance = (double)( oRay[idxNext].position - oRay[idxCurrent].position ).GetLength( ); + + const double dTemperaturCelsius = oAtmosphere.Temperature( dAltitude ) - 273.15; //�C + const double dRelativeHumidity = oAtmosphere.RelativeHumidity( dAltitude ); // % + const double dStaticPressure = oAtmosphere.StaticPressure( dAltitude ) / 1000; // kPA ITABase::CThirdOctaveDecibelMagnitudeSpectrum oTmpSpectrum; - ITABase::ISO9613::AtmosphericAbsorption( oTmpSpectrum, fDistance, oAtmosphere.Temperature( fAltitude ), oAtmosphere.RelativeHumidity( fAltitude ), - oAtmosphere.StaticPressure( fAltitude ) ); + ITABase::ISO9613::AtmosphericAbsorption( oTmpSpectrum, dDistance, dTemperaturCelsius, dRelativeHumidity, dStaticPressure ); oTotalDecibelSpectrum.Add( oTmpSpectrum ); } diff --git a/src/ITAPropagationModels/FilterEngine.cpp b/src/ITAPropagationModels/FilterEngine.cpp index a0ebdf460e2c47136cf7fe837c329c7fbd410bd6..98bfc164ab33b7f89b666f8712ea54ed83e16cfe 100644 --- a/src/ITAPropagationModels/FilterEngine.cpp +++ b/src/ITAPropagationModels/FilterEngine.cpp @@ -211,10 +211,6 @@ void CFilterEngine::Generate( const ITAGeo::CPropagationPathList& oPathList, ITA { // Air attenuation according to ISO9613-1 (overrides third octaves, so no resetting required, do not change order!) ITABase::ISO9613::AtmosphericAbsorption( oThirdOctFactors, (float)dPathLength, oEnvironmentState.dTemperature, oEnvironmentState.dHumidity ); - - // Multiply the transmissionfactor of the air attenuation alpha: sqrt(1-|alpha|) - for( int iFrequencyIndex = 0; iFrequencyIndex < oThirdOctFactors.GetNumBands( ); iFrequencyIndex++ ) - oThirdOctFactors[iFrequencyIndex] *= sqrt( 1 - abs( oThirdOctFactors[iFrequencyIndex] ) ); } // Process path and assemble filter components domain by domain