AnisoSurfaceWaveObjective.h

Go to the documentation of this file.
00001 #ifndef ANISOSURFACEWAVEOBJECTIVE_H_
00002 #define ANISOSURFACEWAVEOBJECTIVE_H_
00003 
00004 #include "PlottableObjective.h"
00005 #include "ParkSurfaceWaveData.h"
00006 #include "AnisoSurfaceWaveSynthetic.h"
00007 #include <string>
00008 
00009 namespace gplib
00010   {
00011     /** \addtogroup seistools Seismic data analysis and modeling */
00012     /* @{ */
00013     //! This class calculates the misfit for anisotropic surface wave dispersion data
00014     class AnisoSurfaceWaveObjective: public PlottableObjective
00015       {
00016     private:
00017       ParkSurfaceWaveData MeasuredData;
00018       ParkSurfaceWaveData SynthData;
00019       AnisoSurfaceWaveSynthetic Synthetic;
00020       double errorlevel;
00021       double poisson;
00022       double backazimuth;
00023       double avelratio;
00024     public:
00025       //! Write the current model to ascii file for calculations
00026       virtual void WriteModel(const std::string &filename)
00027         {
00028           Synthetic.WriteModel(filename);
00029         }
00030       //! Write the current model to ascii file for plotting
00031       virtual void WritePlot(const std::string &filename)
00032         {
00033           Synthetic.WritePlot(filename);
00034         }
00035       //! Write synthetic data as ascii file
00036       virtual void WriteData(const std::string &filename)
00037         {
00038           SynthData.WriteAscii(filename);
00039         }
00040       //! Provide read only access to the synthetic data
00041       const ParkSurfaceWaveData &GetSynthetic() const
00042         {
00043           return SynthData;
00044         }
00045 
00046       AnisoSurfaceWaveObjective(const AnisoSurfaceWaveObjective &Old);
00047       AnisoSurfaceWaveObjective& operator=(
00048           const AnisoSurfaceWaveObjective& source);
00049       AnisoSurfaceWaveObjective(const ParkSurfaceWaveData &Data,
00050           const double ba);
00051       virtual ~AnisoSurfaceWaveObjective();
00052       //! 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
00053       virtual AnisoSurfaceWaveObjective *clone() const
00054         {
00055           return new AnisoSurfaceWaveObjective(*this);
00056         }
00057       //! Some operations cannot be done in parallel, these are done before
00058       virtual void PreParallel(const ttranscribed &member);
00059       //! Some operations cannot be done in parallel, these are done after, returns the misfit value
00060       virtual double PostParallel(const ttranscribed &member);
00061       //! The core performance calculation, has to be safe to be done in parallel
00062       virtual void SafeParallel(const ttranscribed &member);
00063       };
00064   /* @} */
00065   }
00066 #endif /*ANISOSURFACEWAVEOBJECTIVE_H_*/

Generated on Tue Nov 3 13:24:13 2009 for GPLIB++ by  doxygen 1.5.8