MTFuncs.h

Go to the documentation of this file.
00001 #ifndef MTFUNCS_H_
00002 #define MTFUNCS_H_
00003 #include <complex>
00004 #include "miscfunc.h"
00005 
00006 namespace gplib
00007   {
00008     //double CalcRhoa(const  MTTensor &Z){
00009     //return 1./(2 * PI * Z.frequency) * mu * (pow(Z.real(),2)+pow(Z.at(k).imag(),2)) * pow(1000.0,2);
00010     //}
00011     class MTTensor;
00012     double CalcPhi(const std::complex<double> &Z)
00013       {
00014         return atan(Z.imag() / Z.real()) / PI * 180;
00015       }
00016 
00017     std::complex<double> CalcS1(const MTTensor &Z)
00018       {
00019         return Z.GetZxx() + Z.GetZyy();
00020       }
00021   /*
00022 
00023 
00024    S1.at(i) = DataXX.Z.at(i) + DataYY.Z.at(i);
00025    S2.at(i) = DataXY.Z.at(i) + DataYX.Z.at(i);
00026    D1.at(i) = DataXX.Z.at(i) - DataYY.Z.at(i);
00027    D2.at(i) = DataXY.Z.at(i) - DataYX.Z.at(i);
00028    Berd.at(i) = 0.5 * D2.at(i);
00029    dBerd.at(i) = sqrt(0.5*pow(DataXY.dZ.at(i),2)+pow(DataYX.dZ.at(i),2));
00030    alpha.at(i) = 0.5 * atan((Commute(S1.at(i),S2.at(i))-Commute(D1.at(i),D2.at(i)))/(Commute(S1.at(i),D1.at(i))-Commute(S2.at(i),D2.at(i))));
00031    eta.at(i)   = sqrt(abs(Commute(D1.at(i),S2.at(i))-Commute(S1.at(i),D2.at(i))))/abs(D2.at(i));
00032    det = DataXX.Z.at(i).real() * DataYY.Z.at(i).real() - DataXY.Z.at(i).real() * DataYX.Z.at(i).real();
00033    detreal.at(i) = det;
00034    Phi11.at(i) = (DataYY.Z.at(i).real() * DataXX.Z.at(i).imag() - DataXY.Z.at(i).real() * DataYX.Z.at(i).imag())/det;
00035    Phi12.at(i) = (DataYY.Z.at(i).real() * DataXY.Z.at(i).imag() - DataXY.Z.at(i).real() * DataYY.Z.at(i).imag())/det;
00036    Phi21.at(i) =  (DataXX.Z.at(i).real() * DataYX.Z.at(i).imag() - DataYX.Z.at(i).real() * DataXX.Z.at(i).imag())/det;
00037    Phi22.at(i) = (DataXX.Z.at(i).real() * DataYY.Z.at(i).imag() - DataYX.Z.at(i).real() * DataXY.Z.at(i).imag())/det;
00038    alpha_phi.at(i) = 0.5 * atan((Phi12.at(i) + Phi21.at(i))/(Phi11.at(i) - Phi22.at(i)));
00039    beta_phi.at(i) = 0.5 * atan((Phi12.at(i) - Phi21.at(i))/(Phi11.at(i) + Phi22.at(i)));
00040    trPhi.at(i) = (Phi11.at(i) + Phi22.at(i));
00041    skPhi.at(i) = Phi12.at(i) - Phi21.at(i);
00042    detPhi.at(i) = Phi11.at(i) * Phi22.at(i) - Phi12.at(i) * Phi21.at(i);
00043    Phi1.at(i) = trPhi.at(i) / 2.;
00044    Phi2.at(i) = sqrt(detPhi.at(i));
00045    Phi3.at(i) = skPhi.at(i) / 2.;
00046    Phimax.at(i) = sqrt( pow(Phi1.at(i),2) + pow(Phi3.at(i),2)) + sqrt(pow(Phi1.at(i),2)+pow(Phi3.at(i),2) - pow(Phi2.at(i),2));
00047    Phimin.at(i) = sqrt( pow(Phi1.at(i),2) + pow(Phi3.at(i),2)) - sqrt(pow(Phi1.at(i),2)+pow(Phi3.at(i),2) - pow(Phi2.at(i),2));
00048    PhiEllip.at(i) = (Phimax.at(i)- Phimin.at(i))/ (Phimax.at(i)+Phimin.at(i));
00049    temp1 = gsl_complex_rect(D1.at(i).real(),D1.at(i).imag());
00050    temp2 = gsl_complex_rect(S2.at(i).real(),S2.at(i).imag());
00051    temp3= gsl_complex_mul_real(gsl_complex_arctan(gsl_complex_div(gsl_complex_mul_real(temp1,-1.),temp2)),0.5);
00052    thetabar.at(i) = GSL_REAL(temp3);
00053    thetabar.at(i) += I*GSL_IMAG(temp3);
00054    temp1 = gsl_complex_rect(S1.at(i).real(),S1.at(i).imag());
00055    temp2 = gsl_complex_rect(D2.at(i).real(),D2.at(i).imag());
00056    temp3 = gsl_complex_arctan(gsl_complex_div(temp1,temp2));
00057    dtheta.at(i) = GSL_REAL(temp3);
00058    dtheta.at(i) += I*GSL_IMAG(temp3);
00059    //dtheta.at(i) = atan(S1.at(i)/D2.at(i))
00060    Zs.at(i) = sqrt((pow(DataXX.Z.at(i),2) + pow(DataXY.Z.at(i),2) + pow(DataYX.Z.at(i),2) + pow(DataYY.Z.at(i),2))/2.);
00061    Zp.at(i) = (DataXY.Z.at(i)*DataYX.Z.at(i)-DataXX.Z.at(i)*DataYY.Z.at(i))/Zs.at(i);
00062    rhos.at(i) = 1/(2 * PI * frequency.at(i)) * mu * (pow(Zs.at(i).real(),2)+pow(Zs.at(i).imag(),2)) * pow(1000.0,2);
00063    rhop.at(i) = 1/(2 * PI * frequency.at(i)) * mu * (pow(Zp.at(i).real(),2)+pow(Zp.at(i).imag(),2)) * pow(1000.0,2);
00064    phis.at(i) = atan(Zs.at(i).imag()/Zs.at(i).real());
00065    phip.at(i) = atan(Zp.at(i).imag()/Zp.at(i).real());
00066    dPhips.at(i) = phip.at(i) - phis.at(i);
00067    */
00068   }
00069 #endif /*MTFUNCS_H_*/

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