GPLIB++
MultiAnisoSurfaceWaveObjective.h
Go to the documentation of this file.
1 #ifndef MULTIANISOSURFACEWAVEOBJECTIVE_H_
2 #define MULTIANISOSURFACEWAVEOBJECTIVE_H_
3 
4 #include "GeneralObjective.h"
6 #include <vector>
7 #include <boost/shared_ptr.hpp>
8 namespace gplib
9  {
10  /** \addtogroup seistools Seismic data analysis and modeling */
11  /* @{ */
12  //! Minimize the misfit for several surface wave dispersion curves simultaneously
14  {
15  private:
16  std::vector<boost::shared_ptr<AnisoSurfaceWaveObjective> >
17  IndividualObjectives;
18  std::vector<double> backazimuths;
19  public:
21  {
22  return new MultiAnisoSurfaceWaveObjective(*this);
23  }
24  void AddMeasurement(const ParkSurfaceWaveData &Measured,
25  const double back, const double avel);
26  //! Some operations cannot be done in parallel, these are done before
27  virtual void PreParallel(const ttranscribed &member);
28  //! Some operations cannot be done in parallel, these are done after, returns the misfit value
29  virtual double PostParallel(const ttranscribed &member);
30  //! The core performance calculation, has to be safe to be done in parallel
31  virtual void SafeParallel(const ttranscribed &member);
32  void WriteData(const std::string &filename);
33  void WriteModel(const std::string &filename);
34  void WritePlot(const std::string &filename);
37  const MultiAnisoSurfaceWaveObjective& source);
40  };
41  /* @} */
42  }
43 #endif /*MULTIANISOSURFACEWAVEOBJECTIVE_H_*/
ublas::vector< double > ttranscribed
Definition: gentypes.h:21
virtual void SafeParallel(const ttranscribed &member)
The core performance calculation, has to be safe to be done in parallel.
virtual void PreParallel(const ttranscribed &member)
Some operations cannot be done in parallel, these are done before.
Minimize the misfit for several surface wave dispersion curves simultaneously.
MultiAnisoSurfaceWaveObjective & operator=(const MultiAnisoSurfaceWaveObjective &source)
virtual double PostParallel(const ttranscribed &member)
Some operations cannot be done in parallel, these are done after, returns the misfit value...
void AddMeasurement(const ParkSurfaceWaveData &Measured, const double back, const double avel)
The basic object for any objective function, mainly an interface class and some storage.
virtual MultiAnisoSurfaceWaveObjective * clone() const
We need clone and create for building an array of derived objects, see FAQ lite 20.8, the return type depends on the derived class.