Brief description of class still missing. More...
#include <EC8Reader.h>
Public Member Functions | |
| EC8Reader () | |
| bool | setOptions (int &argc, char **argv) |
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
: ArgumentStdinReader() { }
| bool EC8Reader::parse | ( | QTextStream & | s | ) | [protected, virtual] |
Implements QGpCoreTools::ArgumentStdinReader.
References QGpCoreWave::Profile::average(), QGpCoreTools::endl(), QGpCoreWave::Seismic1DModel::fromStream(), QGpCoreWave::Profile::inverse(), QGpCoreWave::Seismic1DModel::layerCount(), QGpCoreWave::Profile::resample(), QGpCoreWave::Profile::setSamples(), sOut(), TRACE, QGpCoreWave::Profile::values(), QGpCoreWave::Seismic1DModel::vsAt(), and QGpCoreWave::Seismic1DModel::vsProfile().
{
TRACE;
QTextStream sOut(stdout);
Seismic1DModel m;
QString comments;
if(!m.fromStream(s, &comments)) {
return false;
}
if(m.layerCount()>0) {
sOut << comments;
// Get Vs averaged over the first 30 m
QVector<double> sampling;
sampling << 5.0;
sampling << 30.0;
Profile p=m.vsProfile();
p.inverse();
p.resample(sampling);
p.average();
p.setSamples(sampling);
p.inverse();
double vs5=p.values()[0];
double vs30=p.values()[1];
sOut << "Vs30 " << vs30;
// Test for class S1: at least 10 m with a velocity <= 100 m/s over the first 30 m
double startLvzDepth=-1.0;
for(double d=0.0; d<30.0; d+=0.5) {
if(m.vsAt(d)<=100.0) {
if(startLvzDepth<0) startLvzDepth=0;
} else if(startLvzDepth>=0) {
if(d-startLvzDepth>=10.0) {
if(vs30<=100.0) {
sOut << " Class S1\n";
} else {
sOut << " Class S1?\n";
}
return true;
}
startLvzDepth=-1.0;
}
}
// Test for class E: thickness of 5-20 m with a velocity < 360 and next velocity > 800 m/s
startLvzDepth=-1.0;
for(double d=0.0; d<30.0; d+=0.5) {
if(m.vsAt(d)<=360.0) {
if(startLvzDepth<0) startLvzDepth=0;
} else if(startLvzDepth>=0.0 && m.vsAt(d)>=800.0){
double h=d-startLvzDepth;
if(h>=5.0 && h<=20.0) {
sOut << " Class E\n" << endl;
return true;
} else {
break;
}
} else {
startLvzDepth=-1.0;
}
}
// Other class identification
if(vs30>=800.0 && vs5>=360.0) { // max thickness of weaker materials=5m
sOut << " Class A\n";
} else if(vs30>360.0) {
sOut << " Class B\n";
} else if(vs30>=180.0) {
sOut << " Class C\n";
} else if(vs30<=100.0) {
sOut << " Class S1\n";
} else {
sOut << " Class D\n";
}
}
return true;
}
| bool EC8Reader::setOptions | ( | int & | argc, |
| char ** | argv | ||
| ) |
References QGpCoreTools::endl(), QGpCoreTools::tr(), and TRACE.
Referenced by main().