All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines
Public Member Functions
QGpCoreWave::RefractionFactory Class Reference

Brief description of class still missing. More...

#include <RefractionFactory.h>

List of all members.

Public Member Functions

bool calculate (RefractionDippingModel *model)
void linkX (QList< RefractionCurve > &curves) const
void readReport (QDataStream &s)
int receiverCount () const
const QVector< double > & receivers () const
 RefractionFactory ()
void setX (const QList< RefractionCurve > &curves)
const RealValuesource (int index) const
int sourceCount () const
const QVector< double > & sources () const
void toStream (int sourceIndex, QTextStream &sOut) const
void writeReport (QDataStream &s) const
double xLeft () const
double xRight () const
 ~RefractionFactory ()

Detailed Description

Brief description of class still missing.

Full description of class still missing


Constructor & Destructor Documentation

Description of constructor still missing

References TRACE.

{
  TRACE;
  _travelTimes=0;
}

Description of destructor still missing

References TRACE.

{
  TRACE;
  delete [] _travelTimes;
}

Member Function Documentation

References QGpCoreWave::RefractionDippingModel::begin(), QGpCoreWave::RefractionDippingModel::end(), QGpCoreWave::TiltNode::init(), QGpCoreWave::RefractionDippingModel::setXLeft(), QGpCoreWave::RefractionDippingModel::setXRight(), TRACE, and QGpCoreWave::RefractionDippingModel::travelTime().

Referenced by DinverDCCore::TargetList::refractionMisfit().

{
  TRACE;
  model->setXLeft(_receivers.first());
  model->setXRight(_receivers.last());
  model->begin();
  TiltNode srcNode, recNode;
  int deepestLayer;
  RealValue * values=_travelTimes;
  for(QVector<double>::const_iterator itSrc=_sources.begin(); itSrc!=_sources.end(); itSrc++) {
    srcNode.init(*itSrc, *model);
    for(QVector<double>::const_iterator itRec=_receivers.begin(); itRec!=_receivers.end(); itRec++) {
      recNode.init(*itRec,*model);
      (values++)->setValue(model->travelTime(srcNode, recNode, deepestLayer));
    }
  }
  model->end();
  return true;
}
void QGpCoreWave::RefractionFactory::linkX ( QList< RefractionCurve > &  curves) const

References QGpCoreWave::RefractionCurve::linkReceivers(), QGpCoreWave::RefractionCurve::linkSource(), and TRACE.

Referenced by DinverDCCore::TargetList::validateTargets().

{
  TRACE;
  // Set references to values
  for(QList<RefractionCurve>::iterator itCurve=curves.begin(); itCurve!=curves.end(); itCurve++) {
    RefractionCurve& curve=*itCurve;
    curve.linkSource(_sources);
    curve.linkReceivers(_receivers);
  }
}
void QGpCoreWave::RefractionFactory::readReport ( QDataStream &  s)

References QGpCoreTools::Value< numberType >::setValue(), and TRACE.

Referenced by outputDCModel(), DinverDCGui::RefractionViewer::report2plot(), and DinverDCCore::DCReportBlock::write().

{
  TRACE;
  int nSrc, nRec, n;
  s >> nSrc >> nRec;
  n=nSrc * nRec;
  _sources.resize(nSrc);
  for(int i=0; i < nSrc; i++ ) {
    s >> _sources[i];
  }
  _receivers.resize(nRec);
  for(int i=0; i < nRec; i++ ) {
    s >> _receivers[i];
  }
  double tt;
  delete _travelTimes;
  _travelTimes=new RealValue[n];
  for(int i=0; i < n; i++ ) {
    s >> tt;
    _travelTimes[i].setValue(tt);
  }
}

Referenced by DinverDCGui::RefractionViewer::report2plot(), and writeReport().

{return _receivers.count();}
const QVector<double>& QGpCoreWave::RefractionFactory::receivers ( ) const [inline]

Referenced by DinverDCGui::RefractionViewer::report2plot().

{return _receivers;}
void QGpCoreWave::RefractionFactory::setX ( const QList< RefractionCurve > &  curves)

References QGpCoreTools::Curve< pointType >::begin(), QGpCoreTools::Curve< pointType >::end(), QGpCoreWave::RefractionCurve::source(), TRACE, and QGpCoreTools::unique().

Referenced by DinverDCCore::TargetList::validateTargets().

{
  TRACE;
  //  Gather all the sources and receivers
  _sources.clear();
  _receivers.clear();
  for(QList<RefractionCurve>::const_iterator itCurve=curves.begin(); itCurve!=curves.end(); itCurve++) {
    const RefractionCurve& curve=*itCurve;
    _sources.append(curve.source());
    for(RefractionCurve::const_iterator itRec=curve.begin(); itRec!=curve.end(); itRec++) {
      _receivers.append(itRec->x());
    }
  }
  qSort(_sources);
  unique(_sources);
  qSort(_receivers);
  unique(_receivers);
  // Allocates values for storing arrival times
  _travelTimes=new RealValue[ _sources.count()*_receivers.count() ];
}
const RealValue* QGpCoreWave::RefractionFactory::source ( int  index) const [inline]

Referenced by QGpCoreWave::RefractionCurve::misfit(), DinverDCGui::RefractionViewer::report2plot(), and toStream().

{return _travelTimes + index * _receivers.count();}

Referenced by outputDCModel(), and writeReport().

{return _sources.count();}
const QVector<double>& QGpCoreWave::RefractionFactory::sources ( ) const [inline]

Referenced by outputDCModel(), and DinverDCGui::RefractionViewer::report2plot().

{return _sources;}
void QGpCoreWave::RefractionFactory::toStream ( int  sourceIndex,
QTextStream &  sOut 
) const

References QGpCoreTools::flush(), QGpCoreTools::Point2D::setX(), QGpCoreTools::Point2D::setY(), source(), and TRACE.

Referenced by outputDCModel().

{
  TRACE;
  const RealValue * tt=source(sourceIndex);
  Point2D p;
  int n=_receivers.count();
  for(int i=0; i < n; i++ ) {
    p.setX(_receivers[i] );
    p.setY(tt[i].value());
    sOut << p << "\n";
  }
  sOut << flush;
}
void QGpCoreWave::RefractionFactory::writeReport ( QDataStream &  s) const

References receiverCount(), sourceCount(), TRACE, and QGpCoreTools::Value< numberType >::value().

Referenced by DinverDCCore::DCReportBlock::write().

{
  TRACE;
  int nSrc=sourceCount();
  int nRec=receiverCount();
  s << nSrc << nRec;
  for(int i=0; i < nSrc; i++ ) {
    s << _sources[i];
  }
  for(int i=0; i < nRec; i++ ) {
    s << _receivers[i];
  }
  int n=nSrc * nRec;
  for(int i=0; i < n; i++ ) {
    s << _travelTimes[i].value();
  }
}
double QGpCoreWave::RefractionFactory::xLeft ( ) const [inline]

Referenced by outputDCModel().

{return _receivers.first();}
double QGpCoreWave::RefractionFactory::xRight ( ) const [inline]

Referenced by outputDCModel().

{return _receivers.last();}

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