#include <DinverCore.h>
#include <DinverDCCore.h>
#include <QGpCompatibility.h>
#include <QGpCoreTools.h>
#include <QGpCoreWave.h>
#include "gpdcreportVersion.h"
#include "gpdcreportInstallPath.h"
enum InputType |
{NaViewer, BetaRelease, Current};
enum OutputType |
{Parameters, Count, BestCurve, Checksum, GroundModel, TiltGroundModelVp, TiltGroundModelVs, VpProfile, VsProfile, RhoProfile, PitchProfile, ResistivityProfile, DispersionRayleighPhase, DispersionRayleighGroup, DispersionLovePhase, DispersionLoveGroup, Ellipticity, AutocorrVertical, AutocorrRadial, AutocorrTransverse, Report, RefractionVp, RefractionVs};
int cleanReturn | ( | int | value | ) |
References models, outputReport, and reports.
Referenced by main().
{ foreach(DCModelInfo * model, models) ReportReader::removeReference(model); foreach(ReportReader * report, reports) ReportReader::removeReference(report); delete outputReport; return value; }
ApplicationHelp* help | ( | ) |
int main | ( | int | argc, |
char ** | argv | ||
) |
References QGpCoreTools::SharedObject::addReference(), AutocorrRadial, AutocorrTransverse, AutocorrVertical, BestCurve, BetaRelease, Checksum, cleanReturn(), Count, QGpCompatibility::CompatInversionReport::countModels(), Current, QGpCompatibility::CompatInversionReport::currentCost(), DispersionLoveGroup, DispersionLovePhase, DispersionRayleighGroup, DispersionRayleighPhase, Ellipticity, QGpCoreTools::endl(), GroundModel, help(), iModel, DinverDCCore::DCModelInfo::indexInReport(), inputType, QGpCompatibility::CompatInversionReport::isValid(), QGpCompatibility::CompatInversionReport::loadDispersion(), QGpCompatibility::CompatInversionReport::loadModel(), misfit(), DinverCore::ReportReader::misfit(), DinverDCCore::DCModelInfo::misfit(), modeIndex, models, NaViewer, DinverCore::ReportWriter::open(), outputModel(), outputType, Parameters, PitchProfile, RefractionVp, RefractionVs, Report, DinverDCCore::DCModelInfo::report(), reports, ResistivityProfile, RhoProfile, ringIndexes, DinverDCCore::DCModelInfo::setIndexInReport(), DinverDCCore::DCModelInfo::setMisfit(), DinverDCCore::DCModelInfo::setReport(), sourceIndex, sOut(), DinverCore::ReportReader::stream(), TiltGroundModelVp, TiltGroundModelVs, QGpCoreTools::tr(), VpProfile, and VsProfile.
{ CoreApplication a(argc, argv, help); // Options int nModels=RAND_MAX; int bestModelCount=0; bool readIndexes=false; double maxMisfit=1e99; // Maximum misfit selected by user // Check arguments int i, j=1; for(i=1; i<argc; i++) { QByteArray arg=argv[i]; if(arg[0]=='-') { if(arg=="-n") { CoreApplication::checkOptionArg(i, argc, argv); nModels=atoi(argv[i]); } else if(arg=="-m") { CoreApplication::checkOptionArg(i, argc, argv); maxMisfit=atof(argv[i])*(1.0+1e-15); } else if(arg=="-best") { CoreApplication::checkOptionArg(i, argc, argv); bestModelCount=atoi(argv[i] ); } else if(arg=="-best-curve") { outputType=BestCurve; } else if(arg=="-index") { readIndexes=true; } else if(arg=="-compat") { CoreApplication::checkOptionArg(i, argc, argv); if(strcmp(argv[i],"na_viewer")==0) { inputType=NaViewer; } else if(strcmp(argv[i],"beta")==0) { inputType=BetaRelease; } else if(strcmp(argv[i],"current")==0) { inputType=Current; } else { App::stream() << tr("gpdcreport: bad compatibility type, see -h.") << endl; return cleanReturn(2); } // else do nothing for compatibility, read current .report format } else if(arg=="-o" || arg=="-report") { // Kept for compatibility if(outputReport) { App::stream() << tr("gpdcreport: only one option '-o' is accepted.") << endl; return cleanReturn(2); } CoreApplication::checkOptionArg(i, argc, argv); QFileInfo fi(argv[i]); if(fi.exists()) { App::stream() << tr("gpdcreport: report %1 already exists (option -o), remove it before.").arg(argv[i]) << endl; return cleanReturn(2); } outputReport=new ReportWriter(fi.fileName()); if(!outputReport->open()) { App::stream() << tr("gpdcreport: cannot open file %1 for writing.").arg(argv[i]) << endl; return cleanReturn(2); } outputType=Report; } else if(arg=="-pm") { outputType=Parameters; } else if(arg=="-count") { outputType=Count; } else if(arg=="-checksum") { outputType=Checksum; } else if(arg=="-gm") { outputType=GroundModel; } else if(arg=="-tgmVp") { outputType=TiltGroundModelVp; } else if(arg=="-tgmVs") { outputType=TiltGroundModelVs; } else if(arg=="-vp") { outputType=VpProfile; } else if(arg=="-vs") { outputType=VsProfile; } else if(arg=="-rho") { outputType=RhoProfile; } else if(arg=="-pitch") { outputType=PitchProfile; } else if(arg=="-res") { outputType=ResistivityProfile; } else if(arg=="-pR") { outputType=DispersionRayleighPhase; CoreApplication::checkOptionArg(i, argc, argv); modeIndex=atoi(argv[i]); } else if(arg=="-gR") { outputType=DispersionRayleighGroup; CoreApplication::checkOptionArg(i, argc, argv); modeIndex=atoi(argv[i]); } else if(arg=="-pL") { outputType=DispersionLovePhase; CoreApplication::checkOptionArg(i, argc, argv); modeIndex=atoi(argv[i]); } else if(arg=="-gL") { outputType=DispersionLoveGroup; CoreApplication::checkOptionArg(i, argc, argv); modeIndex=atoi(argv[i]); } else if(arg=="-e") { outputType=::Ellipticity; CoreApplication::checkOptionArg(i, argc, argv); modeIndex=atoi(argv[i]); } else if(arg=="-aV") { outputType=AutocorrVertical; CoreApplication::checkOptionArg(i, argc, argv); modeIndex=atoi(argv[i]); } else if(arg=="-aR") { outputType=AutocorrRadial; CoreApplication::checkOptionArg(i, argc, argv); modeIndex=atoi(argv[i]); } else if(arg=="-aT") { outputType=AutocorrTransverse; CoreApplication::checkOptionArg(i, argc, argv); modeIndex=atoi(argv[i]); } else if(arg=="-ring") { CoreApplication::checkOptionArg(i, argc, argv); ringIndexes.append(atoi(argv[i])); } else if(arg=="-refraVp") { outputType=RefractionVp; CoreApplication::checkOptionArg(i, argc, argv); sourceIndex=atoi(argv[i]); } else if(arg=="-refraVs") { outputType=RefractionVs; CoreApplication::checkOptionArg(i, argc, argv); sourceIndex=atoi(argv[i]); } else { App::stream() << tr("gpdcreport: bad option %1, see --help").arg(argv[i]) << endl; return cleanReturn(2); } } else { argv[j++]=argv[i]; } } if(j < argc) { argv[j]=0; argc=j; } if(bestModelCount>0) { if(inputType==NaViewer) { App::stream() << tr("gpdcreport: option '-best' is not supported for old .report formats\n" " First convert it to current .report format (option '-report')") << endl; return cleanReturn(2); } if(readIndexes) { App::stream() << tr("gpdcreport: option '-best' is not compatible with option '-index'.") << endl; return cleanReturn(2); } } // Initialize list of indexes, if requested QList<int> indexes; if(readIndexes) { while(!feof(stdin)) { QString l=File::readLine(true); if(l[0]!='#' && !l.isEmpty()) { bool ok; int i=l.toInt(&ok); if(ok) { indexes << i; } else { App::stream() << tr("Bad model index %1").arg(l) << endl; } } } } i=1; if(inputType==NaViewer) { while(i<argc) { CompatInversionReport * report=CompatReportFactory::open(argv[i]); if(!report->isValid()) { delete report; App::stream() << tr("gpdcreport: cannot open file %1 for reading.").arg(argv[i]) << endl; return cleanReturn(2); } int nReportModels=report->countModels(); sOut << "# " << nReportModels << " " << argv[i] << endl; if(outputType==Count) { i++; continue; } if(indexes.isEmpty()) { for(int iReportModel=0 ; iReportModel<nReportModels; iReportModel++) { report->loadDispersion(iReportModel); double misfit=report->currentCost(); if(misfit<=maxMisfit) { outputModel(misfit, report); } if(iModel>=nModels) { return cleanReturn(0); } } } else { for(QList<int>::iterator it=indexes.begin(); it!=indexes.end(); it++ ) { report->loadModel(*it); outputModel(report->currentCost(), report); } } delete report; i++; } } else { while(i<argc) { ReportReader * report=new ReportReader(argv[i]); report->addReference(); reports << report; if(!report->open()) { App::stream() << tr("gpdcreport: cannot open file %1 for reading.").arg(argv[i]) << endl; return cleanReturn(2); } report->synchronize(); int nReportModels=report->nModels(); sOut << "# " << nReportModels << " " << argv[i] << endl; if(outputType==Count) { i++; continue; } QDataStream& s=report->stream(); if(indexes.isEmpty()) { for(int iReportModel=0 ; iReportModel<nReportModels; iReportModel++) { double misfit=report->misfit(iReportModel); if(bestModelCount > 0) { if(misfit<=maxMisfit) { DCModelInfo * info=new DCModelInfo; info->setReport(report); info->setIndexInReport(iReportModel); info->setMisfit(misfit); info->addReference(); models << info; } } else { if(misfit<=maxMisfit) { outputModel(s, iReportModel, misfit, report); } if(iModel>=nModels) { return cleanReturn(0); } } } } else { for(QList<int>::iterator it=indexes.begin(); it!=indexes.end(); it++ ) { outputModel(s, *it, report->misfit(*it), report); } } i++; } if(bestModelCount>0) { qSort(models.begin(), models.end(), DCModelInfo::misfitLessThan); int iStop=models.count() - bestModelCount; if(iStop<0) iStop=0; for(int i=models.count()-1; i>=iStop; i-- ) { DCModelInfo * info=models.at(i); ReportReader * report=info->report(); QDataStream& s=report->stream(); report->misfit(info->indexInReport()); outputModel(s, info->indexInReport( ), info->misfit(), report); } } } return cleanReturn(0); }
void outputDCModel | ( | QDataStream & | s, |
int | iReportModel, | ||
double | misfit, | ||
ReportReader * | report | ||
) |
References DinverDCCore::DCReportBlock::autocorr(), AutocorrRadial, AutocorrTransverse, AutocorrVertical, BetaRelease, Current, QGpCoreWave::Profile::depths(), DinverDCCore::DCReportBlock::dispersion(), DispersionLoveGroup, DispersionLovePhase, DispersionRayleighGroup, DispersionRayleighPhase, Ellipticity, DinverDCCore::DCReportBlock::ellipticity(), QGpCoreTools::endl(), GroundModel, iModel, inputType, QGpCoreWave::Seismic1DModel::layerCount(), DinverDCCore::DCReportBlock::modalStorage(), modeIndex, NaViewer, outputType, DinverDCCore::DCReportBlock::pitch(), PitchProfile, DinverDCCore::DCReportBlock::readModalStorages(), DinverDCCore::DCReportBlock::readProfiles(), QGpCoreWave::Profile::readReport(), QGpCoreWave::RefractionFactory::readReport(), DinverDCCore::DCReportBlock::readSeismicModel(), RefractionVp, DinverDCCore::DCReportBlock::refractionVp(), RefractionVs, DinverDCCore::DCReportBlock::refractionVs(), DinverDCCore::DCReportBlock::res(), QGpCoreWave::Profile::resample(), ResistivityProfile, DinverDCCore::DCReportBlock::rho(), RhoProfile, ringIndexes, DinverDCCore::ModalStorageReader::seek(), DinverDCCore::ModalStorageReader::setBetaReleaseOffsets(), QGpCoreWave::RefractionDippingModel::setXLeft(), QGpCoreWave::RefractionFactory::sourceCount(), sourceIndex, QGpCoreWave::RefractionFactory::sources(), sOut(), DinverDCCore::DCReportBlock::stream(), TiltGroundModelVp, TiltGroundModelVs, DinverDCCore::ModalStorageReader::toStream(), QGpCoreWave::Profile::toStream(), QGpCoreWave::RefractionFactory::toStream(), QGpCoreWave::Seismic1DModel::toStream(), QGpCoreTools::unique(), DinverCore::ReportReader::userBlockVersion(), QGpCoreWave::Profile::values(), DinverDCCore::DCReportBlock::vp(), VpProfile, DinverDCCore::DCReportBlock::vs(), VsProfile, QGpCoreWave::RefractionFactory::xLeft(), and QGpCoreWave::RefractionFactory::xRight().
Referenced by outputModel().
{ int reportDCVersion=report->userBlockVersion("DISP"); if(reportDCVersion>=0) { DCReportBlock dcBlock(s); dcBlock.readProfiles(reportDCVersion); switch (outputType) { case VpProfile: if(dcBlock.vp()) { Profile p; p.readReport(s); sOut << QString("# Vp profile %1: value=%2").arg(iReportModel).arg(misfit) << endl; p.toStream(sOut, true); iModel++; } break; case VsProfile: if(dcBlock.vs()) { Profile p; p.readReport(s); sOut << QString("# Vs profile %1: value=%2").arg(iReportModel).arg(misfit) << endl; p.toStream(sOut, true); iModel++; } break; case RhoProfile: if(dcBlock.rho()) { Profile p; p.readReport(s); sOut << QString("# Rho profile %1: value=%2").arg(iReportModel).arg(misfit) << endl; p.toStream(sOut, true); iModel++; } break; case PitchProfile: if(dcBlock.pitch()) { Profile p; p.readReport(s); sOut << QString("# Pitch profile %1: value=%2").arg(iReportModel).arg(misfit) << endl; p.toStream(sOut, true); iModel++; } break; case ResistivityProfile: if(dcBlock.res()) { Profile p; p.readReport(s); sOut << QString("# Resistivity profile %1: value=%2").arg(iReportModel).arg(misfit) << endl; p.toStream(sOut, true); iModel++; } break; case GroundModel: { Seismic1DModel * m=dcBlock.readSeismicModel(); if(!m) return; sOut << QString("# Layered model %1: value=%2").arg(iReportModel).arg(misfit) << endl; m->toStream(sOut); delete m; iModel++; } break; case TiltGroundModelVp: { Profile vp,pitch; if(dcBlock.vp()) vp.readReport(s); else return; if(dcBlock.pitch()) pitch.readReport(s); else return; RefractionFactory f; if(dcBlock.refractionVp()) f.readReport(dcBlock.stream()); else return; QVector<double> depths; depths << vp.depths(); depths << pitch.depths(); qSort(depths); unique(depths); vp.resample(depths); pitch.resample(depths); Seismic1DModel * m; m=DCReportBlock::vpModel(depths ,vp.values()); RefractionDippingModel tm(m->layerCount()); tm.setXLeft(f.xLeft()); tm.setXRight(f.xRight()); tm.fromSeismic1DModel( *m, pitch.values(), Seismic1DModel::P); sOut << QString("# Vp Tilt Layered model %1: value=%2").arg(iReportModel).arg(misfit) << endl; tm.toStream(sOut); delete m; iModel++; } break; case TiltGroundModelVs: { Profile vs,pitch; if(dcBlock.vs()) vs.readReport(s); else return; if(dcBlock.pitch()) pitch.readReport(s); else return; RefractionFactory f; if(dcBlock.refractionVs()) f.readReport(dcBlock.stream()); else return; QVector<double> depths; depths << vs.depths(); depths << pitch.depths(); qSort(depths); unique(depths); vs.resample(depths); pitch.resample(depths); Seismic1DModel * m; m=DCReportBlock::vsModel(depths ,vs.values()); RefractionDippingModel tm(m->layerCount()); tm.setXLeft(f.xLeft()); tm.setXRight(f.xRight()); tm.fromSeismic1DModel( *m, pitch.values(), Seismic1DModel::S); sOut << QString("# Vs Tilt Layered model %1: value=%2").arg(iReportModel).arg(misfit) << endl; tm.toStream(sOut); delete m; iModel++; } break; case DispersionRayleighPhase: if(dcBlock.dispersion()) { switch(inputType) { case BetaRelease: { /* Nothing else than phase Love and phase Rayleigh were available at that time Rayleigh and Love was indicated by nRayleighModes */ ModalStorageReader m(s); // Read number of modes m.setBetaReleaseOffsets(s, true); // Read number of Rayleigh modes if(m.seek(s, modeIndex)) { QTextStream sOut(stdout); sOut << QString("# Rayleigh Phase dispersion curve (mode=%1) %2: value=%3") .arg(modeIndex).arg(iReportModel).arg(misfit) << endl; m.toStream(s, sOut); iModel++; } } break; case Current: dcBlock.readModalStorages(4); if(dcBlock.modalStorage(0)) { ModalStorageReader m(s); if(m.seek(s, modeIndex)) { sOut << QString("# Rayleigh Phase dispersion curve (mode=%1) %2: value=%3") .arg(modeIndex).arg(iReportModel).arg(misfit) << endl; m.toStream(s, sOut); iModel++; } } break; case NaViewer: // Not possible here break; } } break; case DispersionRayleighGroup: if(dcBlock.dispersion()) { switch(inputType) { case Current: dcBlock.readModalStorages(4); if(dcBlock.modalStorage(1)) { ModalStorageReader m(s); if(m.seek(s, modeIndex)) { sOut << QString("# Rayleigh Group dispersion curve (mode=%1) %2: value=%3") .arg(modeIndex).arg(iReportModel).arg(misfit) << endl; m.toStream(s, sOut); iModel++; } } break; case BetaRelease: // Not possible here case NaViewer: // Not possible here break; } } break; case DispersionLovePhase: if(dcBlock.dispersion()) { switch(inputType) { case BetaRelease: { /* Nothing else than phase Love and phase Rayleigh were available at that time Rayleigh and Love was indicated by nRayleighModes */ ModalStorageReader m(s); // Read number of modes m.setBetaReleaseOffsets(s, false); // Read number of Rayleigh modes if(m.seek(s, modeIndex)) { sOut << QString("# Love Phase dispersion curve (mode=%1) %2: value=%3") .arg(modeIndex).arg(iReportModel).arg(misfit) << endl; m.toStream(s, sOut); iModel++; } } break; case Current: dcBlock.readModalStorages(4); if(dcBlock.modalStorage(2)) { ModalStorageReader m(s); if(m.seek(s, modeIndex)) { sOut << QString("# Love Phase dispersion curve (mode=%1) %2: value=%3") .arg(modeIndex).arg(iReportModel).arg(misfit) << endl; m.toStream(s, sOut); iModel++; } } break; case NaViewer: // Not possible here break; } } break; case DispersionLoveGroup: if(dcBlock.dispersion()) { switch(inputType) { case Current: dcBlock.readModalStorages(4); if(dcBlock.modalStorage(3)) { ModalStorageReader m(s); if(m.seek(s, modeIndex)) { sOut << QString("# Love Group dispersion curve (mode=%1) %2: value=%3") .arg(modeIndex).arg(iReportModel).arg(misfit) << endl; m.toStream(s, sOut); iModel++; } } case BetaRelease: // Not possible here case NaViewer: // Not possible here break; } } break; case ::Ellipticity: if(dcBlock.ellipticity()) { dcBlock.readModalStorages(1); if(dcBlock.modalStorage(0)) { ModalStorageReader m(s); if(m.seek(s, modeIndex)) { sOut << QString("# Ellipticity curve (mode=%1) %2: value=%3") .arg(modeIndex).arg(iReportModel).arg(misfit) << endl; m.toStream(s, sOut); iModel++; } } } break; case AutocorrVertical: if(dcBlock.autocorr()) { int nRings; s >> nRings; dcBlock.readModalStorages(nRings*3); for(QList<int>::iterator it=ringIndexes.begin();it!=ringIndexes.end();it++) { if(*it<nRings) { if(dcBlock.modalStorage(*it*3)) { ModalStorageReader m(s); if(m.seek(s,modeIndex)) { sOut << QString("# Vertical autocorrelation curve (ring=%1,mode=%2) %3: value=%4") .arg(*it).arg(modeIndex).arg(iReportModel).arg(misfit) << endl; m.toStream(s, sOut); iModel++; } } } } } break; case AutocorrRadial: if(dcBlock.autocorr()) { int nRings; s >> nRings; dcBlock.readModalStorages(nRings*3); for(QList<int>::iterator it=ringIndexes.begin();it!=ringIndexes.end();it++) { if(*it<nRings) { if(dcBlock.modalStorage(*it*3+1)) { ModalStorageReader m(s); if(m.seek(s,modeIndex)) { sOut << QString("# Radial autocorrelation curve (ring=%1,mode=%2) %3: value=%4") .arg(*it).arg(modeIndex).arg(iReportModel).arg(misfit) << endl; m.toStream(s, sOut); iModel++; } } } } } break; case AutocorrTransverse: if(dcBlock.autocorr()) { int nRings; s >> nRings; dcBlock.readModalStorages(nRings*3); for(QList<int>::iterator it=ringIndexes.begin();it!=ringIndexes.end();it++) { if(*it<nRings) { if(dcBlock.modalStorage(*it*3+2)) { ModalStorageReader m(s); if(m.seek(s,modeIndex)) { sOut << QString("# Transverse autocorrelation curve (ring=%1,mode=%2) %3: value=%4") .arg(*it).arg(modeIndex).arg(iReportModel).arg(misfit) << endl; m.toStream(s, sOut); iModel++; } } } } } break; case RefractionVp: if(dcBlock.refractionVp() && inputType==Current) { RefractionFactory f; f.readReport(dcBlock.stream()); if(sourceIndex<f.sourceCount()) { sOut << QString("# Vp refraction curve (source %1 at %2 m) %3: value=%4") .arg(sourceIndex).arg(f.sources()[sourceIndex]).arg(iReportModel).arg(misfit) << endl; f.toStream(sourceIndex, sOut); iModel++; } } break; case RefractionVs: if(dcBlock.refractionVs() && inputType==Current) { RefractionFactory f; f.readReport(dcBlock.stream()); if(sourceIndex<f.sourceCount()) { sOut << QString("# Vs refraction curve (source %1 at %2 m) %3: value=%4") .arg(sourceIndex).arg(f.sources()[sourceIndex]).arg(iReportModel).arg(misfit) << endl; f.toStream(sourceIndex, sOut); iModel++; } } break; default: break; } } }
void outputModel | ( | QDataStream & | s, |
int | iReportModel, | ||
double | misfit, | ||
ReportReader * | report | ||
) |
References DinverCore::ReportWriter::addModel(), BestCurve, BetaRelease, Checksum, Current, currentBestMisfit, QGpCoreTools::endl(), iModel, inputType, misfit(), NaViewer, outputDCModel(), outputType, Report, DinverCore::Parameter::setRealValue(), and sOut().
Referenced by main().
{ switch(outputType) { case Parameters: { int nd; uint cs; double val; s >> nd; s >> cs; sOut << iReportModel << " " << nd << " "; sOut.setRealNumberPrecision(20); for(int id=0 ; id<nd; id++ ) { s >> val; sOut << val << " "; } sOut << misfit << endl; iModel++; } break; case Checksum: { int nd; uint cs; s >> nd; s >> cs; sOut << iReportModel << " " << cs << "\n"; } break; case BestCurve: { if(misfit<currentBestMisfit) { sOut << iReportModel << " " << misfit << "\n"; currentBestMisfit=misfit; } } break; case Report: { int nParams; uint cs; double val; qint64 blockOffset=s.device()->pos(); s >> nParams; s >> cs; Parameter * params[nParams]; for(int id=0 ; id<nParams; id++ ) { s >> val; params[id]=new Parameter; params[id]->setRealValue(val); } outputReport->addModel(misfit, cs, nParams, params); for(int id=0 ; id<nParams; id++ ) delete params[id]; s.device()->seek(blockOffset); switch(inputType) { case BetaRelease: DCReportBlock::writeBeta(outputReport, report); break; case Current: DCReportBlock::write(outputReport, report); break; case NaViewer: // Not possible here break; } iModel++; } break; default: outputDCModel(s, iReportModel, misfit, report); break; } }
void outputModel | ( | double | misfit, |
CompatInversionReport * | report | ||
) |
References DinverCore::ReportWriter::addModel(), QGpCompatibility::CompatInversionReport::currentNAModel(), QGpCompatibility::CompatInversionReport::dimension(), iModel, outputType, Report, and DinverCore::Parameter::setRealValue().
{ if(outputType==Report) { // Old reports have not this var and all parameter list int nParams=report->dimension(); Parameter * params[nParams]; float * pm=report->currentNAModel(); for(int id=0 ; id<nParams; id++ ) { params[id]=new Parameter; params[id]->setRealValue(Number::toDouble(pm[id] )); } outputReport->addModel(misfit, 0, nParams, params); for(int id=0 ; id<nParams; id++ ) delete params[id]; DCReportBlock::writeNaViewer(outputReport, report); iModel++; } }
PACKAGE_INFO | ( | gpdcreport | , |
GPDCREPORT | |||
) |
QTextStream sOut | ( | stdout | ) |
Referenced by QGpCoreTools::CoreApplicationPrivate::checkOptionArg(), GeopsyCore::DoubleSignal::convolution(), SignalReader::exec(), TargetExtract::execute(), DinverCore::ImportanceSampling::generate(), CurveReader::generateFunction(), main(), outputDCModel(), outputModel(), MagnetoTelluricReader::parse(), TimeReader::parse(), EC8Reader::parse(), EllipticityReader::parse(), Group2PhaseReader::parse(), Model2ParamReader::parse(), RefraReader::parse(), ShReader::parse(), DispersionReader::parse(), SpacReader::parse(), CurveReader::parse(), CoordReader::parse(), LiveModelReader::parse(), replace(), reportMode(), MainWindow::scan(), CoordReader::setOptions(), ProfileReader::setOptions(), sortCurve(), CurveReader::terminate(), ProfileReader::terminate(), CoordReader::terminate(), DinverDCCore::DCReportBlock::write(), DinverDCCore::DCReportBlock::writeBeta(), DinverDCCore::DCReportBlock::writeNaViewer(), and QGpCoreTools::Message::wrongTextFormat().
double currentBestMisfit = 1e99 |
Referenced by outputModel().
int iModel = 0 |
Referenced by DinverDCGui::GroundModelViewer::exportModels(), DinverDCGui::DCModelViewer::loadModels(), main(), DinverDCGui::GroundModelViewer::minMaxProfiles(), outputDCModel(), outputModel(), reportMode(), DinverDCGui::GroundModelViewer::saveAsReport(), DinverDCGui::DCModelViewer::selectModels(), DinverCore::Neighborhood::setVolumes(), PSViewer::synchronize(), and ProcessStatus::updateMisfitCurve().
Referenced by main(), outputDCModel(), and outputModel().
int modeIndex = 0 |
Referenced by main(), outputDCModel(), and QGpCoreWave::Dispersion::refine().
QList<DCModelInfo *> models |
ReportWriter* outputReport = 0 |
Referenced by cleanReturn(), and reportMode().
Referenced by main(), outputDCModel(), and outputModel().
QList<ReportReader *> reports |
Referenced by cleanReturn(), main(), and reportMode().
QList<int> ringIndexes |
Referenced by main(), and outputDCModel().
int sourceIndex = 0 |
Referenced by main(), and outputDCModel().