All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines
Public Member Functions | Protected Member Functions | Protected Attributes
QGpCoreWave::ModalFactory Class Reference

Gathers ModalStorage to compute misfit for Rayleigh/Love and Phase/Group slowness. More...

#include <ModalFactory.h>

Inheritance diagram for QGpCoreWave::ModalFactory:
QGpCoreWave::AutocorrFactory QGpCoreWave::DispersionFactory QGpCoreWave::EllipticityFactory

List of all members.

Public Member Functions

void linkX (QList< ModalCurve > &curves) const
void linkX (ModalCurve &c) const
 ModalFactory ()
virtual const RealValuemode (const Mode &m) const =0
void setAngularFrequency ()
virtual void setMode (const Mode &m)=0
void setModes (const QList< ModalCurve > &curves)
void setModes (const ModalCurve &c)
void setX (ModalFactory &f)
void setX (const QList< ModalCurve > &curves)
void setX (const ModalCurve &c)
virtual ModalStoragestorage (int storageIndex) const =0
virtual int storageCount () const =0
virtual void writeReportHeader (QDataStream &) const
const QVector< double > * x () const
virtual ~ModalFactory ()

Protected Member Functions

virtual ModalStoragenewStorage (int nModes)=0
template<class StorageType >
void upgrade (StorageType *&s, int requestedMode)

Protected Attributes

QVector< double > _x

Detailed Description

Gathers ModalStorage to compute misfit for Rayleigh/Love and Phase/Group slowness.

Initialized is achieved with three distinct steps:

Never mix these steps.


Constructor & Destructor Documentation

{}
virtual QGpCoreWave::ModalFactory::~ModalFactory ( ) [inline, virtual]
{}

Member Function Documentation

void QGpCoreWave::ModalFactory::linkX ( QList< ModalCurve > &  curves) const

Repeat calls to linkX()

References TRACE.

Referenced by Spac3CForward::setCurves(), SpacReader::setOptions(), and DinverDCCore::TargetList::validateTargets().

{
  TRACE;
  for(QList<ModalCurve>::iterator it=curves.begin();it!=curves.end();++it) {
    linkX(*it);
  }
}

Must be called before setModes()

References _x, QGpCoreTools::endl(), QGpCoreWave::ModalCurve::linkX(), QGpCoreTools::tr(), and TRACE.

{
  TRACE;
  if(_x.isEmpty()) {
    App::stream() << tr("### ERROR ### : omega list not set or empty when linking omegas.") << endl;
    return;
  }
  c.linkX(_x);
}
virtual const RealValue* QGpCoreWave::ModalFactory::mode ( const Mode m) const [pure virtual]
virtual ModalStorage* QGpCoreWave::ModalFactory::newStorage ( int  nModes) [protected, pure virtual]

Switch to omega from frequency. Must be called only once.

References _x, and TRACE.

Referenced by Spac3CForward::setCurves(), SpacReader::setOptions(), and DinverDCCore::TargetList::validateTargets().

{
  TRACE;
  double factor=2*M_PI;
  for(QVector<double>::iterator it=_x.begin(); it!=_x.end(); it++ ) {
    (*it) *= factor;;
  }
}
virtual void QGpCoreWave::ModalFactory::setMode ( const Mode m) [pure virtual]
void QGpCoreWave::ModalFactory::setModes ( const QList< ModalCurve > &  curves)

Repeat calls to setModes()

References TRACE.

Referenced by Spac3CForward::setCurves(), and DinverDCCore::TargetList::validateTargets().

{
  TRACE;
  for(QList<ModalCurve>::const_iterator it=curves.begin();it!=curves.end();++it) {
    setModes(*it);
  }
}

References _x, QGpCoreTools::endl(), QGpCoreWave::ModalCurve::modes(), setMode(), QGpCoreTools::tr(), and TRACE.

{
  TRACE;
  if(_x.isEmpty()) {
    App::stream() << tr("### ERROR ### : X list not set or empty when setting modes.") << endl;
    return;
  }
  const QList<Mode>& l=c.modes();
  for(QList<Mode>::ConstIterator it=l.begin(); it!=l.end(); it++ ) {
    setMode( *it);
  }
}

Merge x vectors of the two factories

References _x, TRACE, and QGpCoreTools::unique().

Referenced by SpacSelector::createObjects(), SpacSelector::inverse(), SpacSelector::inverseAt(), SpacSelector::selectSamples(), Spac3CForward::setCurves(), SpacReader::setOptions(), setX(), and DinverDCCore::TargetList::validateTargets().

{
  TRACE;
  _x.reserve(_x.count()+f._x.count());
  for(QVector<double>::Iterator it=f._x.begin(); it!=f._x.end(); it++ ) {
    _x.append( *it);
  }
  qSort(_x);
  unique(_x);
  f._x=_x;
}
void QGpCoreWave::ModalFactory::setX ( const QList< ModalCurve > &  curves)

Repeat calls to setX()

References setX(), and TRACE.

{
  TRACE;
  for(QList<ModalCurve>::const_iterator it=curves.begin();it!=curves.end();++it) {
    setX(*it);
  }
}

Must be called before setModes()

References _x, QGpCoreTools::Curve< pointType >::begin(), QGpCoreTools::Curve< pointType >::count(), QGpCoreTools::Curve< pointType >::end(), TRACE, and QGpCoreTools::unique().

{
  TRACE;
  _x.reserve(_x.count()+c.count());
  for(ModalCurve::const_iterator it=c.begin(); it!=c.end(); it++ ) {
    _x.append(it->x());
  }
  qSort(_x);
  unique(_x);
}
virtual ModalStorage* QGpCoreWave::ModalFactory::storage ( int  storageIndex) const [pure virtual]
virtual int QGpCoreWave::ModalFactory::storageCount ( ) const [pure virtual]
template<class StorageType >
void QGpCoreWave::ModalFactory::upgrade ( StorageType *&  s,
int  requestedMode 
) [protected]

References newStorage(), and TRACE.

Referenced by QGpCoreWave::EllipticityFactory::setMode().

{
  TRACE;
  if( !s || requestedMode >= s->modeCount()) {
    StorageType * tmp_s=static_cast<StorageType *>(newStorage(requestedMode + 1));
    delete s;
    s=tmp_s;
  }
}
virtual void QGpCoreWave::ModalFactory::writeReportHeader ( QDataStream &  ) const [inline, virtual]

Reimplemented in QGpCoreWave::AutocorrFactory.

{}
const QVector<double>* QGpCoreWave::ModalFactory::x ( ) const [inline]

Member Data Documentation


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines