00001 #ifndef ANISOSURFACEWAVESYNTHETIC_H_ 00002 #define ANISOSURFACEWAVESYNTHETIC_H_ 00003 00004 #include "ParkSurfaceWaveData.h" 00005 #include "AnisoSurfaceWaveModel.h" 00006 #include <string> 00007 #include <boost/shared_ptr.hpp> 00008 #include "types.h" 00009 00010 namespace gplib 00011 { 00012 /** \addtogroup seistools Seismic data analysis and modeling */ 00013 /* @{ */ 00014 00015 //! Calculate synthetic anisotropic surface wave data 00016 class AnisoSurfaceWaveSynthetic 00017 { 00018 private: 00019 AnisoSurfaceWaveModel Model; 00020 ParkSurfaceWaveData SynthData; 00021 public: 00022 //! Return the synthetic data calculated during the last calculation 00023 const ParkSurfaceWaveData &GetSynthData() const 00024 { 00025 return SynthData; 00026 } 00027 //! Read-only access to the model 00028 const AnisoSurfaceWaveModel &GetModel() const 00029 { 00030 return Model; 00031 } 00032 //! Set the model for the forward calculation 00033 void SetModel(const AnisoSurfaceWaveModel &m) 00034 { 00035 Model = m; 00036 } 00037 //! Write the model to a file with name filename 00038 void WriteModel(const std::string &filename) const 00039 { 00040 Model.WriteModel(filename); 00041 } 00042 //! Write the model to a file with name filename for plotting 00043 void WritePlot(const std::string &filename) const 00044 { 00045 Model.WritePlot(filename); 00046 } 00047 //! Perform actions for forward modeling that have to be done before a parallel section 00048 void PreParallel(const std::string &filename); 00049 //! Perform actions for forward modeling that can safely done in parallel, filename should be unique to ensure safe parallel execution 00050 ParkSurfaceWaveData SafeParallel(const std::string &filename); 00051 //! Calculate the synthetic data for the current model, filename should be unique to ensure safe parallel execution 00052 ParkSurfaceWaveData GetSynthData(const std::string &filename); 00053 AnisoSurfaceWaveSynthetic(); 00054 virtual ~AnisoSurfaceWaveSynthetic(); 00055 }; 00056 /* @} */ 00057 } 00058 #endif /*ANISOSURFACEWAVESYNTHETIC_H_*/
1.5.8