00001 #ifndef C1DANISOMTSYNTHDATA_H_ 00002 #define C1DANISOMTSYNTHDATA_H_ 00003 00004 #include "MTStation.h" 00005 #include "VecMat.h" 00006 //! Calculate response of a 1D anisotropic model, code is based on Pek and Santos fortran code 00007 class C1DAnisoMTSynthData : public MTStation 00008 { 00009 private: 00010 trealdata calc_frequencies; 00011 trealdata thicknesses; // Thickness for each layer 00012 trealdata strikes; 00013 trealdata slants; 00014 trealdata dips; 00015 trealdata rho1; 00016 trealdata rho2; 00017 trealdata rho3; 00018 trealdata effcond1; 00019 trealdata effcond2; 00020 trealdata effstrike; 00021 //! Transform angles and resistivities into effective horizontal values, has to be called before CalcZ 00022 void TransformRho(); 00023 //! Calculate the response 00024 void CalcZ(); 00025 public: 00026 //! Set the anisotropy strike for each layer in degree 00027 void SetStrikes(const trealdata &a){strikes = a;} 00028 //! Set the anisotropy slant for each layer in degree 00029 void SetSlants(const trealdata &a){slants = a;} 00030 //! Set the anisotropy dip for each layer in degree 00031 void SetDips(const trealdata &a){dips = a;} 00032 //! Set the first principal resistivity for each layer in Ohm.m 00033 void SetRho1(const trealdata &a){rho1 = a;} 00034 //! Set the second principal resistivity for each layer in Ohm.m 00035 void SetRho2(const trealdata &a){rho2 = a;} 00036 //! Set the first principal resistivity for each layer in Ohm.m 00037 void SetRho3(const trealdata &a){rho3 = a;} 00038 //! Set the thicknes in km 00039 void SetThicknesses(const trealdata &thick){thicknesses = thick;} 00040 const trealdata &GetThicknesses() {return thicknesses;} 00041 using MTStation::GetData; 00042 //! Calculate the synthetic data given the previously set parameters 00043 virtual void GetData(); 00044 //! write model into file 00045 gplib::rvec GetModelVector(); 00046 void WriteModel(std::string filename); 00047 void ReadModel(std::string filename); 00048 void WritePlot(std::string filename); 00049 virtual C1DAnisoMTSynthData *clone() const{return new C1DAnisoMTSynthData(*this);} 00050 C1DAnisoMTSynthData(const C1DAnisoMTSynthData &old); 00051 C1DAnisoMTSynthData(); 00052 virtual ~C1DAnisoMTSynthData(); 00053 }; 00054 00055 #endif /*C1DANISOMTSYNTHDATA_H_*/
1.5.5