diff --git a/src/randomProcesses/noise/noiseModels/noiseModel/noiseModel.C b/src/randomProcesses/noise/noiseModels/noiseModel/noiseModel.C index efc36e33463ebd058743b655a069143252c353e5..3bce2b6f0afbe86499d9892f9c164f8058f4c3f4 100644 --- a/src/randomProcesses/noise/noiseModels/noiseModel/noiseModel.C +++ b/src/randomProcesses/noise/noiseModels/noiseModel/noiseModel.C @@ -237,7 +237,8 @@ Foam::fileName Foam::noiseModel::baseFileDir(const label dataseti) const Foam::tmp<Foam::scalarField> Foam::noiseModel::uniformFrequencies ( - const scalar deltaT + const scalar deltaT, + const bool check ) const { const auto& window = windowModelPtr_(); @@ -247,9 +248,24 @@ Foam::tmp<Foam::scalarField> Foam::noiseModel::uniformFrequencies auto& f = tf.ref(); const scalar deltaf = 1.0/(N*deltaT); + + label nFreq = 0; forAll(f, i) { f[i] = i*deltaf; + + if (f[i] > fLower_ && f[i] < fUpper_) + { + ++nFreq; + } + } + + if (check && nFreq == 0) + { + WarningInFunction + << "No frequencies found in range " + << fLower_ << " to " << fUpper_ + << endl; } return tf; @@ -263,8 +279,6 @@ Foam::tmp<Foam::scalarField> Foam::noiseModel::octaves const labelUList& freqBandIDs ) const { - auto toctData = tmp<scalarField>::New(freqBandIDs.size() - 1, Zero); - if (freqBandIDs.size() < 2) { WarningInFunction @@ -272,11 +286,13 @@ Foam::tmp<Foam::scalarField> Foam::noiseModel::octaves << "- skipping octaves calculation" << endl; - return toctData; + return tmp<scalarField>::New(); } + auto toctData = tmp<scalarField>::New(freqBandIDs.size() - 1, Zero); auto& octData = toctData.ref(); + bitSet bandUsed(freqBandIDs.size() - 1); for (label bandI = 0; bandI < freqBandIDs.size() - 1; ++bandI) { label fb0 = freqBandIDs[bandI]; @@ -290,9 +306,20 @@ Foam::tmp<Foam::scalarField> Foam::noiseModel::octaves label f1 = f[freqI + 1]; scalar dataAve = 0.5*(data[freqI] + data[freqI + 1]); octData[bandI] += dataAve*(f1 - f0); + + bandUsed.set(bandI); } } + bandUsed.flip(); + labelList bandUnused = bandUsed.sortedToc(); + if (bandUnused.size()) + { + WarningInFunction + << "Empty bands found: " << bandUnused.size() << " of " + << bandUsed.size() << endl; + } + return toctData; } diff --git a/src/randomProcesses/noise/noiseModels/noiseModel/noiseModel.H b/src/randomProcesses/noise/noiseModels/noiseModel/noiseModel.H index 380ec389d26354d942583839f9fb115146a606ef..af26b9ba953d85bbd95d58cb7e0903a730b10f3e 100644 --- a/src/randomProcesses/noise/noiseModels/noiseModel/noiseModel.H +++ b/src/randomProcesses/noise/noiseModels/noiseModel/noiseModel.H @@ -246,7 +246,11 @@ protected: //- Create a field of equally spaced frequencies for the current set of //- data - assumes a constant time step - tmp<scalarField> uniformFrequencies(const scalar deltaT) const; + tmp<scalarField> uniformFrequencies + ( + const scalar deltaT, + const bool check + ) const; //- Return a list of the frequency indices wrt f field that correspond //- to the bands limits for a given octave diff --git a/src/randomProcesses/noise/noiseModels/pointNoise/pointNoise.C b/src/randomProcesses/noise/noiseModels/pointNoise/pointNoise.C index 8606462f1ee463ff3dbb71ed0abe5c7219b7445d..5be43857cb2e43dcbb33c54bd85e5826a893724b 100644 --- a/src/randomProcesses/noise/noiseModels/pointNoise/pointNoise.C +++ b/src/randomProcesses/noise/noiseModels/pointNoise/pointNoise.C @@ -109,7 +109,7 @@ void pointNoise::processData // Narrow band data // ---------------- - scalarField f(uniformFrequencies(deltaT)); + scalarField f(uniformFrequencies(deltaT, true)); // RMS pressure [Pa] if (writePrmsf_) diff --git a/src/randomProcesses/noise/noiseModels/surfaceNoise/surfaceNoise.C b/src/randomProcesses/noise/noiseModels/surfaceNoise/surfaceNoise.C index ea227417c4bd4054a0294b9eb855d2d10795354a..845a7de3e5d9cc003c82920c92aa8492dcbdaf15 100644 --- a/src/randomProcesses/noise/noiseModels/surfaceNoise/surfaceNoise.C +++ b/src/randomProcesses/noise/noiseModels/surfaceNoise/surfaceNoise.C @@ -515,7 +515,7 @@ void surfaceNoise::calculate() Info<< "Creating noise FFTs" << endl; - const scalarField freq1(uniformFrequencies(deltaT_)); + const scalarField freq1(uniformFrequencies(deltaT_, true)); // Reset desired frequency range if outside actual frequency range fLower_ = min(fLower_, max(freq1));