Brief description of class still missing. More...
#include <ProfileReader.h>
Public Member Functions | |
| ProfileReader () | |
| bool | setOptions (int &argc, char **argv) |
| bool | terminate () |
| ~ProfileReader () | |
Protected Member Functions | |
| virtual bool | parse (QTextStream &s) |
Brief description of class still missing.
Full description of class still missing
Description of constructor still missing
References TRACE.
: ArgumentStdinReader() { TRACE; _maxDepth=100.0; _nDepths=100; _nProfiles=0; _model=SurfaceWaveModels; _profile=Vs; _output=Original; _pseudo3DModels=0; _pseudo3DPositions=0; }
| bool ProfileReader::parse | ( | QTextStream & | s | ) | [protected, virtual] |
Implements QGpCoreTools::ArgumentStdinReader.
References TRACE.
{
TRACE;
switch(_model) {
case SurfaceWaveModels:
return parseSurfaceWaveModels(s);
case RefractionModels:
break;
case ResistivityModels:
return parseResistivityModels(s);
}
return false;
}
| bool ProfileReader::setOptions | ( | int & | argc, |
| char ** | argv | ||
| ) |
References QGpCoreTools::endl(), QGpCoreTools::Point::fromString(), QGpCoreTools::Curve< pointType >::resize(), sOut(), QGpCoreTools::tr(), and TRACE.
Referenced by main().
{
TRACE;
// Check arguments
int i, j=1;
for(i=1; i<argc; i++) {
QByteArray arg=argv[i];
if(arg[0]=='-') {
if(arg=="-original") {
_output=Original;
} else if(arg=="-surfacewave-models") {
_model=SurfaceWaveModels;
} else if(arg=="-refraction-models") {
_model=RefractionModels;
App::stream() << tr("gpprofile: refraction models are not yet supported") << endl;
return false;
} else if(arg=="-resistivity-models") {
_model=ResistivityModels;
if(_profile==Vs) { // Change default value if still set to default
_profile=Resistivity;
}
} else if(arg=="-resample") {
_output=Resample;
} else if(arg=="-average-profiles") {
_output=AverageProfiles;
} else if(arg=="-average-depths") {
_output=AverageDepths;
} else if(arg=="-minmax") {
_output=MinMax;
} else if(arg=="-pseudo3d") {
CoreApplication::checkOptionArg(i, argc, argv);
QString s(argv[i]);
if(!_pseudo3DAt.fromString(s)) {
App::stream() << tr("gpprofile: bad position for option '-pseudo3d'") << endl;
return false;
}
_output=Pseudo3D;
} else if(arg=="-average-at") {
CoreApplication::checkOptionArg(i, argc, argv);
_output=AverageAt;
_maxDepth=atof(argv[i] );
_nDepths=1;
} else if(arg=="-d" || arg=="-max-depth") {
CoreApplication::checkOptionArg(i, argc, argv);
_maxDepth=atof(argv[i]);
} else if(arg=="-n") {
CoreApplication::checkOptionArg(i, argc, argv);
_nDepths=atoi(argv[i]);
if(_nDepths<=0) {
App::stream() << tr("gpprofile: negative or null number of depth samples (option -n)") << endl;
return false;
}
} else if(arg=="-vp") {
_profile=Vp;
} else if(arg=="-vs") {
_profile=Vs;
} else if(arg=="-rho") {
_profile=Rho;
} else if(arg=="-nu") {
_profile=Poisson;
} else if(arg=="-imp") {
_profile=Impedance;
} else if(arg=="-res") {
_profile=Resistivity;
} else if(arg=="-model") {
_profile=Model;
} else {
App::stream() << tr("gpprofile: bad option %1, see -help").arg(argv[i]) << endl;
return false;
}
} else {
argv[j++]=argv[i];
}
}
if(j < argc) {
argv[j]=0;
argc=j;
}
// Sampling for resampled profiles
QTextStream sOut(stdout);
switch(_output) {
case Original:
break;
case Resample:
case AverageDepths:
case AverageAt: {
if(_profile==Model) {
App::stream() << tr("gpprofile: '-model' option not allowed in this output mode") << endl;
return false;
}
_sampling.resize(_nDepths);
double dDepth=_maxDepth/(double)_nDepths;
for(int i=0;i<_nDepths;i++) {
_sampling[i]=(double)(i+1)*dDepth;
}
}
break;
case AverageProfiles: {
if(_profile==Model) {
App::stream() << tr("gpprofile: '-model' option not allowed in this output mode") << endl;
return false;
}
_vMin.resize(_nDepths);
double dDepth=_maxDepth/(double)_nDepths;
for(int i=0;i<_nDepths;i++) {
double d=(double)i*dDepth;
_vMin[i].setX(0.0);
_vMin[i].setY(d);
}
break;
}
case MinMax: {
if(_profile==Model) {
App::stream() << tr("gpprofile: '-model' option not allowed in this output mode") << endl;
return false;
}
_vMin.resize(_nDepths);
_vMax.resize(_nDepths);
double dDepth=_maxDepth/(double)_nDepths;
for(int i=0;i<_nDepths;i++) {
double d=(double)i*dDepth;
_vMin[i].setX(1e99);
_vMax[i].setX( -1e99);
_vMin[i].setY(d);
_vMax[i].setY(d);
}
break;
}
case Pseudo3D:
if(_model!=SurfaceWaveModels) {
App::stream() << tr("gpprofile: '-pseudo3D' option not yet supported for other model type than 'Surface Wave'") << endl;
return false;
}
_pseudo3DModels=new Seismic1DModel[3];
_pseudo3DPositions=new Point[3];
sOut << tr("# Reference models at") << endl;
break;
}
return true;
}
| bool ProfileReader::terminate | ( | ) |
References QGpCoreTools::endl(), QGpCoreWave::Seismic1DModel::interpole(), sOut(), QGpCoreWave::Profile::toStream(), QGpCoreWave::Seismic1DModel::toStream(), QGpCoreTools::Point::toString(), QGpCoreTools::Curve< pointType >::toString(), QGpCoreTools::tr(), and TRACE.
Referenced by main().
{
TRACE;
QTextStream sOut(stdout);
switch(_output) {
case Original:
case Resample:
case AverageDepths:
case AverageAt:
break;
case AverageProfiles: {
profileComment(sOut, QString::null);
double factor=1.0/(double) _nProfiles;
for(int i=0;i<_nDepths;i++) {
_vMin[i].setX(_vMin[i].x() * factor);
}
sOut << "# Average\n"
<< _vMin.toString();
}
break;
case MinMax:
profileComment(sOut, QString::null);
sOut << "# Min\n"
<< _vMin.toString()
<< "# Max\n"
<< _vMin.toString();
break;
case Pseudo3D: {
Seismic1DModel m;
if(_nProfiles!=3) {
App::stream() << tr("gpprofile: 3 models are expected for pseudo 3D mode.") << endl;
return false;
}
if(!m.interpole(_pseudo3DAt, _pseudo3DPositions, _pseudo3DModels)) {
return false;
}
profileComment(sOut, QString::null);
sOut << tr("# Interpolated at %1").arg(_pseudo3DAt.toString(20)) << endl;
if(_profile==Model) {
m.toStream(sOut);
} else {
Profile p=profile(m);
p.toStream(sOut, true);
}
}
break;
}
return true;
}