00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include <iostream>
00023 #include <cmath>
00024
00025 #include "tensors/tensors.h"
00026 #include "tensors/operators.h"
00027
00028 using namespace std;
00029 using namespace Tensors;
00030 using blitz::dot;
00031
00032 int main(int argc, char **argv)
00033 {
00034 cout << "new_mechsys\n\n";
00035
00036 Tensor2 x; x(0)=.4; x(1)=.5; x(2)=.6; x(3)=1*sqrt(2.0); x(4)=2*sqrt(2.0); x(5)=3*sqrt(2.0);
00037 Tensor2 y; y(0)= 3; y(1)= 2; y(2)= 1; y(3)=3*sqrt(2.0); y(4)=2*sqrt(2.0); y(5)=1*sqrt(2.0);
00038 Tensor2 z;
00039 Tensor2 w;
00040 Tensor4 A;
00041 Tensor4 B;
00042 Tensor4 C;
00043 Tensor4 D;
00044 Tensor4 W;
00045
00046 cout << "x =\n" << x << endl;
00047 cout << "y =\n" << y << endl;
00048
00049
00050 cout << "x * y =\n" << dot(x,y) << endl;
00051
00052 Dyad(x,y,A);
00053 cout << "A = x dyadic y =\n" << A << endl;
00054
00055 Dot(x,A,y);
00056 cout << "y = x * A =\n" << y << endl;
00057
00058 Dot(A,x,y);
00059 cout << "y = A * x =\n" << y << endl;
00060
00061 Dyad(x,y,B);
00062 cout << "B = x dyadic y =\n" << B << endl;
00063
00064 Dot(A,B,C);
00065 cout << "C = A * B =\n" << C << endl;
00066
00067 y = 0.1*x + y;
00068 cout << "y = 0.1*x + y =\n" << y << endl;
00069
00070 Ger(0.01,x,y,A);
00071 cout << "A = 0.5*(x dyad y) + A =\n" << A << endl;
00072
00073 GerX(1e-7,A,x,y,B,C,D);
00074 cout << "D = 1e-6*(A*x) dyad (y*B) + C =\n" << D << endl;
00075
00076
00077 y = 0.1*x;
00078 cout << "y = 0.1*x =\n" << y << endl;
00079
00080 z = x + y;
00081 cout << "z = x + y =\n" << z << endl;
00082
00083 w = x + y + z;
00084 cout << "w = x + y + z =\n" << w << endl;
00085
00086 w = x + 2.0*y + 3.0*z;
00087 cout << "w = 1*x + 2*y + 3*z =\n" << w << endl;
00088
00089 AddScaled(1.0,A, 2.0,B, W);
00090 cout << "W = 1*A + 2*B =\n" << W << endl;
00091
00092
00093 Scale(2.0,B);
00094 cout << " B = 2.0*B =\n" << B << endl;
00095
00096 CopyScale(2.0,A,B);
00097 cout << " B = 2.0*A =\n" << B << endl;
00098
00099 cout << " xt * A * y = " << Reduce(x,A,y) << endl;
00100
00101 return 0;
00102 }