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
1.5.5