GPLIB++
AnisoSurfaceWaveObjective.h
Go to the documentation of this file.
1 #ifndef ANISOSURFACEWAVEOBJECTIVE_H_
2 #define ANISOSURFACEWAVEOBJECTIVE_H_
3 
4 #include "PlottableObjective.h"
5 #include "ParkSurfaceWaveData.h"
7 #include <string>
8 
9 namespace gplib
10  {
11  /** \addtogroup seistools Seismic data analysis and modeling */
12  /* @{ */
13  //! This class calculates the misfit for anisotropic surface wave dispersion data
15  {
16  private:
17  ParkSurfaceWaveData MeasuredData;
18  ParkSurfaceWaveData SynthData;
19  AnisoSurfaceWaveSynthetic Synthetic;
20  double errorlevel;
21  double poisson;
22  double backazimuth;
23  double avelratio;
24  public:
25 
26  //! Write the current model to ascii file for calculations
27  virtual void WriteModel(const std::string &filename)
28  {
29  Synthetic.WriteModel(filename);
30  }
31  //! Write the current model to ascii file for plotting
32  virtual void WritePlot(const std::string &filename)
33  {
34  Synthetic.WritePlot(filename);
35  }
36  //! Write synthetic data as ascii file
37  virtual void WriteData(const std::string &filename)
38  {
39  SynthData.WriteAscii(filename);
40  }
41  //! Provide read only access to the synthetic data
43  {
44  return SynthData;
45  }
48  const AnisoSurfaceWaveObjective& source);
50  const double ba, const double avel, const double pois = 1.8,
51  const double err = 0.01);
53  //! 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
55  {
56  return new AnisoSurfaceWaveObjective(*this);
57  }
58  //! Some operations cannot be done in parallel, these are done before
59  virtual void PreParallel(const ttranscribed &member);
60  //! Some operations cannot be done in parallel, these are done after, returns the misfit value
61  virtual double PostParallel(const ttranscribed &member);
62  //! The core performance calculation, has to be safe to be done in parallel
63  virtual void SafeParallel(const ttranscribed &member);
64  };
65  /* @} */
66  }
67 #endif /*ANISOSURFACEWAVEOBJECTIVE_H_*/
ublas::vector< double > ttranscribed
Definition: gentypes.h:21
AnisoSurfaceWaveObjective & operator=(const AnisoSurfaceWaveObjective &source)
virtual void WriteData(const std::string &filename)
Write synthetic data as ascii file.
virtual void WriteAscii(const std::string &filename) const
Write the data in simple ascii format.
void WriteModel(const std::string &filename) const
virtual AnisoSurfaceWaveObjective * 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.
This only adds a few plotting functions to GeneralObjective to define a common interface.
const ParkSurfaceWaveData & GetSynthetic() const
Provide read only access to the synthetic data.
virtual void WritePlot(const std::string &filename)
Write the current model to ascii file for plotting.
This class calculates the misfit for anisotropic surface wave dispersion data.
virtual void WriteModel(const std::string &filename)
Write the current model to ascii file for calculations.
virtual void PreParallel(const ttranscribed &member)
Some operations cannot be done in parallel, these are done before.
AnisoSurfaceWaveObjective(const AnisoSurfaceWaveObjective &Old)
virtual double PostParallel(const ttranscribed &member)
Some operations cannot be done in parallel, these are done after, returns the misfit value...
Calculate synthetic anisotropic surface wave data.
virtual void SafeParallel(const ttranscribed &member)
The core performance calculation, has to be safe to be done in parallel.
void WritePlot(const std::string &filename) const