AnisoSurfaceWaveModel.h

Go to the documentation of this file.
00001 #ifndef ANISOSURFACEWAVEMODEL_H_
00002 #define ANISOSURFACEWAVEMODEL_H_
00003 
00004 #include "types.h"
00005 
00006 namespace gplib
00007   {
00008     /** \addtogroup seistools Seismic data analysis and modeling */
00009     /* @{ */
00010 
00011     //! A class to store information about anisotropic surface wave models
00012     /*! This class stores 1D anisotropic seismic models. At the moment
00013      * we use these models to calculate surface waves with AnisoSurfaceWaveSynthetic,
00014      * but in general it can be used for other seismic methods as well.
00015      */
00016 
00017     class AnisoSurfaceWaveModel
00018       {
00019     private:
00020       //! The thickness of each layer in km
00021       trealdata thicknesses;
00022       //! The P-wave velocity of each layer in km/s
00023       trealdata vp;
00024       //! The S-wave velocity of each layer in km/s
00025       trealdata vs;
00026       //three anisotropy coefficients
00027       trealdata B;
00028       trealdata C;
00029       trealdata E;
00030       //and two anisotropy angles
00031       trealdata theta;
00032       trealdata phi;
00033       //! The density of each layer in g/cm^3
00034       trealdata densities;
00035     public:
00036       //! Get read-only access to the vector of layer thicknesses in km
00037       const trealdata &GetThicknesses() const
00038         {
00039           return thicknesses;
00040         }
00041       //! Get read-only access to the vector of P-wave velocities in km/s
00042       const trealdata &GetVp() const
00043         {
00044           return vp;
00045         }
00046       //! Get read-only access to the vector of S-wave velocities in km/s
00047       const trealdata &GetVs() const
00048         {
00049           return vs;
00050         }
00051       //! Get read-only access to the vector of anisotropy coefficients for each layer
00052       const trealdata &GetB() const
00053         {
00054           return B;
00055         }
00056       //! Get read-only access to the vector of anisotropy coefficients for each layer
00057       const trealdata &GetC() const
00058         {
00059           return C;
00060         }
00061       //! Get read-only access to the vector of anisotropy coefficients for each layer
00062       const trealdata &GetE() const
00063         {
00064           return E;
00065         }
00066       //! Get read-only access to the vector of anisotropy angles theta for each layer
00067       const trealdata &GetTheta() const
00068         {
00069           return theta;
00070         }
00071       //! Get read-only access to the vector of anisotropy angles phi for each layer
00072       const trealdata &GetPhi() const
00073         {
00074           return phi;
00075         }
00076       //! Get read-only access to the vector densities for each layer
00077       const trealdata &GetDensities() const
00078         {
00079           return densities;
00080         }
00081       //! Set the vector of layer thicknesses in km
00082       trealdata &SetThicknesses()
00083         {
00084           return thicknesses;
00085         }
00086       //! Set the vector of P-wave velocities in km/s
00087       trealdata &SetVp()
00088         {
00089           return vp;
00090         }
00091       //! Set the vector of S-wave velocities in km/s
00092       trealdata &SetVs()
00093         {
00094           return vs;
00095         }
00096       //! Set the vector of anisotropy coefficients B
00097       trealdata &SetB()
00098         {
00099           return B;
00100         }
00101       //! Set the vector of anisotropy coefficients C
00102       trealdata &SetC()
00103         {
00104           return C;
00105         }
00106       //! Set the vector of anisotropy coefficients E
00107       trealdata &SetE()
00108         {
00109           return E;
00110         }
00111       //! Set the vector of anisotropy angles theta
00112       trealdata &SetTheta()
00113         {
00114           return theta;
00115         }
00116       //! Set the vector of anisotropy angles phi
00117       trealdata &SetPhi()
00118         {
00119           return phi;
00120         }
00121       //! Set the vector of densities
00122       trealdata &SetDensities()
00123         {
00124           return densities;
00125         }
00126       //! Read the model information from an ascii file with name filename
00127       void ReadModel(const std::string &filename);
00128       //! Write the model to a file with name filename
00129       void WriteModel(const std::string &filename) const;
00130       //! Write out a script that computes synthetic data for a model with name filename+.dat
00131       void WriteRunFile(const std::string &filename) const;
00132       //!Write out an ascii file for plotting the model with xmgrace
00133       void WritePlot(const std::string &filename) const;
00134       //we use the compiler generated copy constructor and operator
00135       AnisoSurfaceWaveModel();
00136       virtual ~AnisoSurfaceWaveModel();
00137       };
00138   /* @} */
00139   }
00140 #endif /*ANISOSURFACEWAVEMODEL_H_*/

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