#include <CompatDispersion.h>
Public Member Functions | |
| bool | checkSlopes (double maxSlowness) |
| void | clear () |
| CompatDispersion () | |
| CompatDispersion (int modesCount, int omegasCount) | |
| CompatDispersion (const CompatMultiModalFrequency *o) | |
| CompatDispersion (const CompatMultiModalFrequency *o, int modesCount) | |
| CompatDispersion (const CompatMultiModalCurves *o) | |
| CompatDispersion (const CompatMultiModalCurves *o, int modesCount) | |
| void | exportHerrmann (char *fileName) |
| int | omegasCount (int m) const |
| int | omegasCount () const |
| Returns the omega count. | |
| void | resetValues () |
| void | setPrecision (double prec) |
| QGpCompatibility::CompatDispersion::CompatDispersion | ( | ) | [inline] |
: CompatMultiModalCurves() {_relPrec=1e-7;}
| QGpCompatibility::CompatDispersion::CompatDispersion | ( | int | modesCount, |
| int | omegasCount | ||
| ) | [inline] |
: CompatMultiModalCurves(modesCount, omegasCount) {_relPrec=1e-7;}
| QGpCompatibility::CompatDispersion::CompatDispersion | ( | const CompatMultiModalFrequency * | o | ) | [inline] |
: CompatMultiModalCurves(o) {_relPrec=1e-7;}
| QGpCompatibility::CompatDispersion::CompatDispersion | ( | const CompatMultiModalFrequency * | o, |
| int | modesCount | ||
| ) | [inline] |
: CompatMultiModalCurves(o, modesCount) {_relPrec=1e-7;}
| QGpCompatibility::CompatDispersion::CompatDispersion | ( | const CompatMultiModalCurves * | o | ) | [inline] |
: CompatMultiModalCurves(o) {_relPrec=1e-7;}
| QGpCompatibility::CompatDispersion::CompatDispersion | ( | const CompatMultiModalCurves * | o, |
| int | modesCount | ||
| ) | [inline] |
: CompatMultiModalCurves(o, modesCount,0) {_relPrec=1e-7;}
| bool QGpCompatibility::CompatDispersion::checkSlopes | ( | double | maxSlowness | ) |
References QGpCompatibility::CompatMultiModalFrequency::_modesCount, QGpCompatibility::CompatMultiModalFrequency::_omegas, QGpCompatibility::CompatMultiModalFrequency::_omegasCount, QGpCompatibility::CompatMultiModalCurves::_values, mode, and TRACE.
{
TRACE;
bool ret=true;
double smin=1e99;
for(int mode=0; mode<_modesCount;mode++) {
double * values=_values[mode];
int i=0;
for(; values[i]==0 && i<_omegasCount; i++) {}
for(i++; i<_omegasCount; i++) {
// Normally slowness curve is increasing with frequency
// But some Rayleigh curve can decrease on some small portion
// with very gentle slopes.
// It's not easy to define a threshold but we are going to aquire some
// experience
if(values[i]<=values[i-1])
{
double s=values[i-1]-values[i]/(_omegas[i-1]-_omegas[i]);
if(s<smin) smin=s;
ret=false;
}
}
}
if(!ret)
printf("*** WARNING ***: slowness decreasing with frequency, max slope=%lg\n",smin);
return ret;
}
| void QGpCompatibility::CompatDispersion::clear | ( | ) | [inline] |
| void QGpCompatibility::CompatDispersion::exportHerrmann | ( | char * | fileName | ) |
| int QGpCompatibility::CompatDispersion::omegasCount | ( | int | m | ) | const |
References QGpCompatibility::CompatMultiModalFrequency::_omegasCount, QGpCompatibility::CompatMultiModalCurves::_values, and TRACE.
{
TRACE;
int n=0;
double * values=_values[m];
for(int i=0;i<_omegasCount;i++) {
if(values[i]!=0) n++;
}
return n;
}
| int QGpCompatibility::CompatDispersion::omegasCount | ( | ) | const [inline] |
Returns the omega count.
Reimplemented from QGpCompatibility::CompatMultiModalFrequency.
References QGpCompatibility::CompatMultiModalFrequency::_omegasCount.
{return _omegasCount;}
References QGpCompatibility::CompatMultiModalFrequency::_modesCount, QGpCompatibility::CompatMultiModalFrequency::_omegasCount, QGpCompatibility::CompatMultiModalCurves::_values, mode, and TRACE.
{
TRACE;
for(int mode=0; mode<_modesCount;mode++) {
double * values=_values[mode];
for(int i=0;i<_omegasCount;i++) values[i]=0;
}
}
| void QGpCompatibility::CompatDispersion::setPrecision | ( | double | prec | ) | [inline] |
{_relPrec=prec;}