#include <LinearFKPassiveLoop.h>
Public Member Functions | |
LinearFKPassiveLoopTask () | |
virtual void | setGrid (double azimuth) |
~LinearFKPassiveLoopTask () | |
Protected Member Functions | |
virtual void | run (int index) |
void LinearFKPassiveLoopTask::run | ( | int | index | ) | [protected, virtual] |
Reimplemented from FKLoopTask.
References FKLoopTask::_currentComponent, FKLoopTask::_loop, FKLoopTask::_process, FKLoopTask::_win, FKLoop::addLog(), GeopsyCore::TimeRangeList::at(), GeopsyCore::TimeRangeList::count(), QGpCoreTools::LoopTask::endIndex(), ArrayCore::ArrayProcess::lockTimeWindow(), ArrayCore::ArrayProcess::setFrequency(), QGpCoreTools::LoopTask::setProgressMaximum(), QGpCoreTools::LoopTask::setProgressValue(), QGpCoreTools::LoopTask::setStatus(), QGpCoreTools::LoopTask::terminated(), ArrayCore::ArrayProcess::timeRangeList(), TRACE, and ArrayCore::ArrayProcess::unlockTimeWindow().
{ TRACE; // Revert the order: start with expensive high frequencies // When the number of cores increases and tends to the number // of frequencies, it is more efficient to start with with the // most expensive frequencies. index=endIndex()-index-1; QString freqLog, freqStatus; _process->setFrequency(index, &freqLog, &freqStatus); setStatus(freqStatus); _loop->addLog(freqLog); // Loop over all time windows const TimeRangeList& winList=*_process->timeRangeList(); int nWin=winList.count(); setProgressMaximum(nWin); for(int iWin=0; iWin<nWin; iWin++) { if(terminated()) break; setProgressValue(iWin); _win=&winList.at(iWin); if(!_process->lockTimeWindow(_win)) continue; _currentComponent=0; exportMax(); _process->unlockTimeWindow(); } }
void LinearFKPassiveLoopTask::setGrid | ( | double | azimuth | ) | [virtual] |
References FKLoopTask::_grid, FKLoopTask::_process, LinearFKSearch::function(), ArrayCore::FKArrayProcess::function(), ArrayCore::FKParameters::maximumSlowness(), ArrayCore::FKParameters::maximumWaveNumber(), ArrayCore::FKParameters::minimumWaveNumber(), ArrayCore::FKArrayProcess::parameters(), QGpCoreTools::DirectionalSearch::setAzimuth(), LinearFKSearch::setFunction(), LinearFKSearch::setGrid(), ArrayCore::FK::setMaximumSlowness(), and TRACE.
Referenced by LinearFKPassiveLoop::newTask().
{ TRACE; // FK tools use a FKGridSearch which is not valid in this case. // We must initialize to null to avoid problems with destructors. _grid[0]=0; // We need two search objets for both directions (initialization of shifts) _linearGrid=new LinearFKSearch; _linearGrid->setFunction(_process->function(0)); _linearGrid->setAzimuth(azimuth); const FKParameters * param=_process->parameters(); _linearGrid->setGrid(param->minimumWaveNumber(), param->maximumWaveNumber()); _linearGrid->function()->setMaximumSlowness(param->maximumSlowness()); }