#include <CompatRefraReport.h>
Public Member Functions | |
void | addRefraGoal (CompatHodoChroneData *hd) |
CompatRefraReport (bool isWrite, QString reportFile, QString naInFile=QString::null, int nModels=0) | |
CompatHodoChrone * | currentHodoChrone () |
Returns the autocorr curves of current model. | |
RefractionDippingModel * | currentTiltModel () |
virtual bool | isA (const char *className) |
Test whether this class is of type className. | |
void | loadRefra (int modelIndex) |
load the model, the cost, the hodochrone curve | |
void | loadRefra (CompatHodoChrone *hodo, int modelIndex) |
CompatHodoChroneData * | loadRefraGoal () |
void | modifyRefraGoal (CompatHodoChroneData *rms) |
~CompatRefraReport () | |
Protected Member Functions | |
virtual bool | initCurrentDispersion () |
initialize current dispersion object | |
void | initCurrentTiltModel () |
Protected Attributes | |
RefractionDippingModel * | _currentTiltModel |
QGpCompatibility::CompatRefraReport::CompatRefraReport | ( | bool | isWrite, |
QString | reportFile, | ||
QString | naInFile = QString::null , |
||
int | nModels = 0 |
||
) |
References QGpCompatibility::CompatInversionReport::_currentDispersion, _currentTiltModel, and TRACE.
: CompatInversionReport(isWrite,reportFile,naInFile,nModels) { TRACE; _currentTiltModel=0; if(!isWrite) { // Force _currentDispersion to be a CompatHodoChrone delete _currentDispersion; _currentDispersion=0; } }
References _currentTiltModel, and TRACE.
{ TRACE; delete _currentTiltModel; }
References QGpCompatibility::CompatInversionReport::_blockOmegas, QGpCompatibility::CompatInversionReport::_s, QGpCompatibility::CompatMultiModalData::dataToReport(), QGpCompatibility::CompatInversionReport::endWritingBlock(), QGpCompatibility::CompatInversionReport::Omegas, QGpCompatibility::CompatInversionReport::RefraGoal, QGpCompatibility::CompatInversionReport::startReadingBlock(), QGpCompatibility::CompatInversionReport::startWritingBlock(), and TRACE.
{ TRACE; // tests if omegas are entered if(!startReadingBlock(_blockOmegas,Omegas)) { fprintf(stderr,"You must call addOmegas before calling addRefraGoal\n"); return; } startWritingBlock(RefraGoal); if(hd) hd->dataToReport(_s); endWritingBlock(); }
Returns the autocorr curves of current model.
References QGpCompatibility::CompatInversionReport::_currentDispersion, loadRefra(), and TRACE.
{ TRACE; if(!_currentDispersion) loadRefra(0); return (CompatHodoChrone *)_currentDispersion; }
References _currentTiltModel, initCurrentTiltModel(), and TRACE.
{ TRACE; if(!_currentTiltModel) initCurrentTiltModel(); return _currentTiltModel; }
bool QGpCompatibility::CompatRefraReport::initCurrentDispersion | ( | ) | [protected, virtual] |
initialize current dispersion object
Reimplemented from QGpCompatibility::CompatInversionReport.
References QGpCompatibility::CompatInversionReport::_blockEll, QGpCompatibility::CompatInversionReport::_blockOmegas, QGpCompatibility::CompatInversionReport::_currentDispersion, QGpCompatibility::CompatInversionReport::_s, QGpCompatibility::CompatInversionReport::_trueN, QGpCompatibility::CompatInversionReport::_version, QGpCompatibility::CompatInversionReport::EllipticityGoal, QGpCompatibility::CompatInversionReport::initCurrentEllipticity(), QGpCompatibility::CompatMultiModalFrequency::modesCount(), MSG_ID, QGpCompatibility::CompatInversionReport::Omegas, QGpCompatibility::CompatMultiModalCurves::reportToOmega(), QGpCompatibility::CompatMultiModalCurves::setRayleighModesCount(), QGpCompatibility::CompatInversionReport::startReadingBlock(), and TRACE.
Referenced by loadRefra(), and loadRefraGoal().
{ TRACE; ASSERT(!_currentDispersion); _currentDispersion=(CompatMultiModalCurves *) new CompatHodoChrone(); if(startReadingBlock(_blockOmegas,Omegas)) _currentDispersion->reportToOmega(_s); else { Message::critical(MSG_ID,"Inversion report", "Bad block: Omegas at index 1",Message::cancel()); return false; } if(_trueN>_blockEll && startReadingBlock(_blockEll,EllipticityGoal)) if(!initCurrentEllipticity()) return false; if(_version<2) _currentDispersion->setRayleighModesCount(_currentDispersion->modesCount()); return true; }
void QGpCompatibility::CompatRefraReport::initCurrentTiltModel | ( | ) | [protected] |
References QGpCompatibility::CompatInversionReport::_currentModel, _currentTiltModel, QGpCompatibility::CompatInversionReport::initCurrentModel(), QGpCoreWave::Seismic1DModel::layerCount(), and TRACE.
Referenced by currentTiltModel(), and loadRefra().
{ TRACE; if(!_currentModel) initCurrentModel(); _currentTiltModel=new RefractionDippingModel(_currentModel->layerCount()); }
bool QGpCompatibility::CompatRefraReport::isA | ( | const char * | className | ) | [virtual] |
Test whether this class is of type className.
Reimplemented from QGpCompatibility::CompatInversionReport.
References TRACE.
void QGpCompatibility::CompatRefraReport::loadRefra | ( | int | modelIndex | ) |
load the model, the cost, the hodochrone curve
References QGpCompatibility::CompatInversionReport::_currentCost, QGpCompatibility::CompatInversionReport::_currentDispersion, QGpCompatibility::CompatInversionReport::_currentID, QGpCompatibility::CompatInversionReport::_currentModel, QGpCompatibility::CompatInversionReport::_currentNAModel, _currentTiltModel, QGpCompatibility::CompatInversionReport::_headerBlocksCount, QGpCompatibility::CompatInversionReport::_nd, QGpCompatibility::CompatInversionReport::_s, QGpCompatibility::CompatInversionReport::_version, QGpCoreWave::Seismic1DModel::fromStream(), initCurrentDispersion(), initCurrentTiltModel(), QGpCompatibility::CompatInversionReport::ModelDispersion, QGpCompatibility::CompatMultiModalCurves::reportToRefines(), QGpCompatibility::CompatMultiModalCurves::reportToValues(), QGpCompatibility::CompatInversionReport::startReadingBlock(), and TRACE.
Referenced by currentHodoChrone().
{ TRACE; if(!_currentTiltModel) initCurrentTiltModel(); if(!_currentNAModel) _currentNAModel=new float [_nd]; if(!_currentDispersion) initCurrentDispersion(); if(startReadingBlock(modelIndex+_headerBlocksCount,ModelDispersion)) { _s >> _currentID; _currentModel->fromStream(_s); //_currentTiltModel->set(_currentModel); _s >> _currentCost; if(_version>=4) _s.readRawData((char *)_currentNAModel,_nd*sizeof(float)); _currentDispersion->reportToValues(_s); if(_version>0) _currentDispersion->reportToRefines(_s); //_currentTiltModel->reportToSpec(_s); } else _currentCost=-1; }
void QGpCompatibility::CompatRefraReport::loadRefra | ( | CompatHodoChrone * | hodo, |
int | modelIndex | ||
) |
References QGpCompatibility::CompatInversionReport::_blockOmegas, QGpCompatibility::CompatInversionReport::_currentCost, QGpCompatibility::CompatInversionReport::_currentDispersion, QGpCompatibility::CompatInversionReport::_currentID, QGpCompatibility::CompatInversionReport::_currentModel, QGpCompatibility::CompatInversionReport::_currentNAModel, _currentTiltModel, QGpCompatibility::CompatInversionReport::_headerBlocksCount, QGpCompatibility::CompatInversionReport::_nd, QGpCompatibility::CompatInversionReport::_s, QGpCompatibility::CompatInversionReport::_version, QGpCoreWave::Seismic1DModel::fromStream(), initCurrentDispersion(), initCurrentTiltModel(), QGpCompatibility::CompatInversionReport::ModelDispersion, QGpCompatibility::CompatInversionReport::Omegas, QGpCompatibility::CompatMultiModalCurves::reportToOmega(), QGpCompatibility::CompatMultiModalCurves::reportToRefines(), QGpCompatibility::CompatMultiModalCurves::reportToValues(), QGpCompatibility::CompatInversionReport::startReadingBlock(), and TRACE.
{ TRACE; if(!_currentTiltModel) initCurrentTiltModel(); if(!_currentNAModel) _currentNAModel=new float [_nd]; if(!_currentDispersion) initCurrentDispersion(); if(startReadingBlock(_blockOmegas,Omegas)) { hodo->reportToOmega(_s); if(startReadingBlock(modelIndex+_headerBlocksCount,ModelDispersion)) { _s >> _currentID; _currentModel->fromStream(_s); //_currentTiltModel->set(_currentModel); _s >> _currentCost; if(_version>=4) _s.readRawData((char *)_currentNAModel,_nd*sizeof(float)); hodo->reportToValues(_s); if(_version>=1) hodo->reportToRefines(_s); } else _currentCost=-1; } else _currentCost=-1; }
References QGpCompatibility::CompatInversionReport::_blockGoal, QGpCompatibility::CompatInversionReport::_currentDispersion, QGpCompatibility::CompatInversionReport::_s, QGpCompatibility::CompatInversionReport::_version, initCurrentDispersion(), QGpCompatibility::CompatInversionReport::RefraGoal, QGpCompatibility::CompatMultiModalData::reportToData(), QGpCompatibility::CompatMultiModalData::reportToDataWeight(), QGpCompatibility::CompatInversionReport::startReadingBlock(), and TRACE.
{ TRACE; if(!_currentDispersion) initCurrentDispersion(); CompatHodoChroneData * rms=new CompatHodoChroneData(_currentDispersion); if(startReadingBlock(_blockGoal,RefraGoal)) { rms->reportToData(_s); rms->reportToDataWeight(_s,_version>=3); } else fprintf(stderr,"Unable to read block RefraGoal in current file\n"); return rms; }
Re-writing over the existing goal curves, extrem caution may be observe to the size of the new CompatHodoChroneData: it must be exactly the same structure as the one added with addRefraGoal(), only some changes in the values are tolerated
References QGpCompatibility::CompatInversionReport::_blockGoal, QGpCompatibility::CompatInversionReport::_s, QGpCompatibility::CompatMultiModalData::dataToReport(), QGpCompatibility::CompatInversionReport::endWritingBlock(), QGpCompatibility::CompatInversionReport::RefraGoal, QGpCompatibility::CompatInversionReport::startWritingBlock(), and TRACE.
{ TRACE; startWritingBlock(_blockGoal,RefraGoal); if(hd) hd->dataToReport(_s); endWritingBlock(); }
Referenced by CompatRefraReport(), currentTiltModel(), initCurrentTiltModel(), loadRefra(), and ~CompatRefraReport().