SurfaceWaveSynthetic.h

Go to the documentation of this file.
00001 #ifndef SURFACEWAVESYNTHETIC_H_
00002 #define SURFACEWAVESYNTHETIC_H_
00003 #include "Sdisp96Model.h"
00004 #include "SurfaceWaveData.h"
00005 #include <string>
00006 #include <boost/shared_ptr.hpp>
00007 
00008 namespace gplib
00009   {
00010     /** \addtogroup seistools Seismic data analysis and modeling */
00011     /* @{ */
00012 
00013     //! Calculate synthetic fundamental mode Rayleigh phase velocity data from an isotropic 1D model
00014     class SurfaceWaveSynthetic
00015       {
00016     private:
00017       trealdata calculationperiods;
00018       Sdisp96Model Model;
00019       SurfaceWaveData SynthData;
00020     public:
00021       //! For a parallel execution, these are things that have to be done before any parallel block
00022       void PreParallel(const std::string &filename);
00023       //! Operations that are safe to perform in parallel
00024       SurfaceWaveData SafeParallel(const std::string &filename);
00025       //! Read only access to the current seismic model
00026       const SurfaceWaveModel &GetModel()
00027         {
00028           return Model;
00029         }
00030       //! Get the vector of periods in s for which we want to calculate phase velocities
00031       const trealdata &GetCalculationPeriods() const
00032         {
00033           return calculationperiods;
00034         }
00035       //! Set the vector of periods in s for which we want to calculate phase velocities
00036       void SetCalculationPeriods(const trealdata &c)
00037         {
00038           calculationperiods.clear();
00039           std::copy(c.begin(),c.end(),std::back_inserter(calculationperiods));
00040         }
00041       //! Set the model for which we want to calculate the data
00042       void SetModel(const Sdisp96Model &m)
00043         {
00044           Model = m;
00045         }
00046       //! Perform a complete forward calculation and return the calculated data, not thread safe as it calls PreParallel
00047       SurfaceWaveData GetSynthData(const std::string &filename);
00048       SurfaceWaveSynthetic();
00049       virtual ~SurfaceWaveSynthetic();
00050       };
00051   /* @} */
00052   }
00053 #endif /*SURFACEWAVESYNTHETIC_H_*/

Generated on Tue May 4 16:52:15 2010 for GPLIB++ by  doxygen 1.5.8