#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;}