C1DAnisoMTSynthData.h

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

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