MTTensor.cpp

Go to the documentation of this file.
00001 #include "MTTensor.h"
00002 
00003 namespace gplib
00004   {
00005     MTTensor::MTTensor() :
00006       Zxx(0), Zxy(0), Zyx(0), Zyy(0), dZxx(0), dZxy(0), dZyx(0), dZyy(0),
00007           frequency(0), rotangle(0), Rx(0), Ry(0), Nu(0)
00008       {
00009       }
00010 
00011     MTTensor::MTTensor(const std::complex<double> &xx, const std::complex<
00012         double> &xy, const std::complex<double> &yx,
00013         const std::complex<double> &yy, const double freq, const double angle):
00014       Zxx(xx), Zxy(xy), Zyx(yx), Zyy(yy), dZxx(0), dZxy(0), dZyx(0), dZyy(0),
00015           frequency(freq), rotangle(angle), Rx(0), Ry(0), Nu(0)
00016       {
00017       }
00018 
00019     MTTensor& MTTensor::operator=(const MTTensor& source)
00020       {
00021         if (this == &source)
00022           return *this;
00023         Zxx = source.Zxx;
00024         Zxy = source.Zxy;
00025         Zyx = source.Zyx;
00026         Zyy = source.Zyy;
00027         dZxx = source.dZxx;
00028         dZxy = source.dZxy;
00029         dZyx = source.dZyx;
00030         dZyy = source.dZyy;
00031         frequency = source.frequency;
00032         rotangle = source.rotangle;
00033         Rx = source.Rx;
00034         Ry = source.Ry;
00035         Nu = source.Nu;
00036         return *this;
00037       }
00038     MTTensor::~MTTensor()
00039       {
00040       }
00041 
00042     void MTTensor::Rotate(double angle)
00043       {
00044         dcomp newxx, newxy, newyx, newyy;
00045         const double cangle = cos(angle);
00046         const double sangle = sin(angle);
00047         newxx = Zxx * cangle * cangle + (Zxy + Zyx) * sangle * cangle + Zyy
00048             * sangle * sangle;
00049         newxy = Zxy * cangle * cangle - (Zxx - Zyy) * sangle * cangle - Zyx
00050             * sangle * sangle;
00051         newyx = Zyx * cangle * cangle - (Zxx - Zyy) * sangle * cangle - Zxy
00052             * sangle * sangle;
00053         newyy = Zyy * cangle * cangle - (Zxy + Zyx) * sangle * cangle + Zxx
00054             * sangle * sangle;
00055         Zxx = newxx;
00056         Zxy = newxy;
00057         Zyx = newyx;
00058         Zyy = newyy;
00059         rotangle += angle;
00060       }
00061   }

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