SeismicModel.h

Go to the documentation of this file.
00001 #ifndef CSEISMICMODEL_H
00002 #define CSEISMICMODEL_H
00003 
00004 #include "types.h"
00005 
00006 /** \addtogroup seistools Seismic data analysis and modeling */
00007 /* @{ */
00008 class SeismicModel
00009   {
00010 public:
00011   enum tArrivalType
00012     { DirectS, DirectP};
00013 private:
00014     trealdata SVelErrors;
00015     trealdata ThickErrors;
00016     bool
00017         FuzzComp(const double elem1, const double elem2, const double tolerance);
00018     trealdata PVelocity;
00019     trealdata SVelocity;
00020     trealdata Density;
00021     trealdata Thickness;
00022     trealdata Qp;
00023     trealdata Qs;
00024     trealdata RecDist;
00025     trealdata Strike;
00026     trealdata Dip;
00027     double SourceDepth;
00028     double RedVelocity;
00029     double dt;
00030     unsigned int npts;
00031     double slowness;
00032 public:
00033     double GetSourceDepth() const
00034       {
00035         return SourceDepth;
00036       }
00037     void SetSourceDepth(const double s){SourceDepth =s;}
00038     double GetRedVelocity() const
00039       {
00040         return RedVelocity;
00041       }
00042     void SetRedVelocity(const double s){RedVelocity =s;}
00043     double GetDt() const
00044       {
00045         return dt;
00046       }
00047     void SetDt(const double s){dt =s;}
00048     unsigned int GetNpts() const
00049       {
00050         return npts;
00051       }
00052     void SetNpts(const unsigned int s){npts =s;}
00053     double GetSlowness() const
00054       {
00055         return slowness;
00056       }
00057     void SetSlowness(const double s){slowness =s;}
00058     const trealdata &GetPVelocity() const {return PVelocity;}
00059     trealdata &SetPVelocity(){return PVelocity;}
00060     const trealdata &GetSVelocity() const {return SVelocity;}
00061     trealdata &SetSVelocity() {return SVelocity;}
00062     const trealdata &GetDensity() const {return Density;}
00063     trealdata &SetDensity(){return Density;}
00064     const trealdata &GetThickness() const {return Thickness;}
00065     trealdata &SetThickness(){return Thickness;}
00066     const trealdata &GetQp() const {return Qp;}
00067     trealdata &SetQp(){return Qp;}
00068     const trealdata &GetQs() const {return Qs;}
00069     trealdata &SetQs(){return Qs;}
00070     const trealdata &GetRecDist() const {return RecDist;}
00071     trealdata &SetRecDist(){return RecDist;}
00072     const trealdata &GetStrike() const {return Strike;}
00073     trealdata &SetStrike(){return Strike;}
00074     const trealdata &GetDip() const {return Dip;}
00075     trealdata &SetDip(){return Dip;}
00076     void SetSVelErrors(const trealdata &sve)
00077       {
00078         SVelErrors = sve;
00079       }
00080     void SetThickErrors(const trealdata &te)
00081       {
00082         ThickErrors = te;
00083       }
00084     int FindLayer(const double depth);
00085     double MatchSlowness(const double slowness, const tArrivalType mode);
00086     double CalcArrival(const tArrivalType mode, const int recindex);
00087     double CalcTravelTime(const tArrivalType mode, const double sdepth,
00088         const double rdepth, const double p);
00089     virtual void GetData()=0;
00090     virtual void GetData(const std::string filename)=0;
00091     virtual void WriteData(const std::string filename)=0;
00092     virtual void WriteRunFile(const std::string &filename)=0;
00093     void WritePlot(const std::string &filename);
00094     void PlotVelWithErrors(const std::string &filename);
00095     void Init(const int nlayers);
00096     SeismicModel();
00097     SeismicModel(const int nlayers);
00098     SeismicModel(const SeismicModel& source);
00099     SeismicModel& operator=(const SeismicModel& source);
00100     virtual ~SeismicModel();
00101   };
00102 /* @} */
00103 #endif // CSEISMICMODEL_H

Generated on Fri Jul 4 15:30:21 2008 for GPLIB++ by  doxygen 1.5.5