tops.cpp

00001 /*************************************************************************************
00002  * MechSys - A C++ library to simulate (Continuum) Mechanical Systems                *
00003  * Copyright (C) 2005 Dorival de Moraes Pedroso <dorival.pedroso at gmail.com>       *
00004  * Copyright (C) 2005 Raul Dario Durand Farfan  <raul.durand at gmail.com>           *
00005  *                                                                                   *
00006  * This file is part of MechSys.                                                     *
00007  *                                                                                   *
00008  * MechSys is free software; you can redistribute it and/or modify it under the      *
00009  * terms of the GNU General Public License as published by the Free Software         *
00010  * Foundation; either version 2 of the License, or (at your option) any later        *
00011  * version.                                                                          *
00012  *                                                                                   *
00013  * MechSys is distributed in the hope that it will be useful, but WITHOUT ANY        *
00014  * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A   *
00015  * PARTICULAR PURPOSE. See the GNU General Public License for more details.          *
00016  *                                                                                   *
00017  * You should have received a copy of the GNU General Public License along with      *
00018  * MechSys; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, *
00019  * Fifth Floor, Boston, MA 02110-1301, USA                                           *
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     // 1) ----------------------------------  sc = a * b
00050     cout << "x * y =\n" << dot(x,y) << endl;
00051     // 5) ------------------------------  A = x dyadic y
00052     Dyad(x,y,A);
00053     cout << "A = x dyadic y =\n" << A << endl;
00054     // 2) -----------------------------------  y = x * A
00055     Dot(x,A,y);
00056     cout << "y = x * A =\n" << y << endl;
00057     // 3) -----------------------------------  y = A * x
00058     Dot(A,x,y);
00059     cout << "y = A * x =\n" << y << endl;
00060     // 5) ------------------------------  B = x dyadic y
00061     Dyad(x,y,B);
00062     cout << "B = x dyadic y =\n" << B << endl;
00063     // 4) -----------------------------------  C = A * B
00064     Dot(A,B,C);
00065     cout << "C = A * B =\n" << C << endl;
00066     //    ---------------------------------  y = a*x + y
00067     y = 0.1*x + y; //Axpy(0.1,x,y);
00068     cout << "y = 0.1*x + y =\n" << y << endl;
00069     // 7) ------------------------  A = a*(x dyad y) + A
00070     Ger(0.01,x,y,A);
00071     cout << "A = 0.5*(x dyad y) + A =\n" << A << endl;
00072     // 8) ------------------  C = a*(A*x) dyad (y*B) + C
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     //   ---------------------------------  y = a*x
00077     y = 0.1*x; //CopyScale(0.1,x,y);
00078     cout << "y = 0.1*x =\n" << y << endl;
00079     //   ---------------------------------  z = x + y
00080     z = x + y; //Add(x,y, z);
00081     cout << "z = x + y =\n" << z << endl;
00082     //   ---------------------------------  w = x + y + z
00083     w = x + y + z; //Add(x,y,z, w);
00084     cout << "w = x + y + z =\n" << w << endl;
00085     //   ---------------------------------  w = a*x + b*y + c*z
00086     w = x + 2.0*y + 3.0*z; //AddScaled(1.0,x, 2.0,y, 3.0,z, w);
00087     cout << "w = 1*x + 2*y + 3*z =\n" << w << endl;
00088     // 6) ---------------------------------  Z = a*X + b*Y
00089     AddScaled(1.0,A, 2.0,B, W);
00090     cout << "W = 1*A + 2*B =\n" << W << endl;
00091 
00092     // 9) ---------------------------------  B = a * B
00093     Scale(2.0,B);
00094     cout << " B = 2.0*B =\n" << B << endl;
00095     // 10) --------------------------------  B = a * A
00096     CopyScale(2.0,A,B);
00097     cout << " B = 2.0*A =\n" << B << endl;
00098     // 11) --------------------------------  s = xt * A * y
00099     cout << " xt * A * y = " << Reduce(x,A,y) << endl;
00100 
00101     return 0;
00102 }

Generated on Wed Jan 24 15:56:27 2007 for MechSys by  doxygen 1.4.7