hp2FEM  0.1
include/ds/Vector.h
00001 #ifndef _VECTOR_H_
00002 #define _VECTOR_H_
00003 // ---------------------------------------------
00004 // company   : 
00005 // user      : 
00006 // date      : 22 Mar 2015 17:21
00007 // file      : Vector.h
00008 // markers   : Full
00009 // language  : C++
00010 // generator : Metamill 6.0
00011 // ---------------------------------------------
00012 
00013 //#UBLK-BEG-HEADERH
00014 //==============================================================
00015 // Description : 
00016 //--------------------------------------------------------------
00017 // Author      : Gilberto Luis
00018 // Created     : 16 Dez 2010
00019 //--------------------------------------------------------------
00020 // Change history : 
00021 //   16 Dez 2010 (Gilberto Luis) Initial version generated
00022 //
00023 //==============================================================
00024 //#UBLK-END-HEADERH
00025 
00026 /*=================================================================================================
00027 =                                                                                                 =
00028 =       Copyright 2010-2015  Marco Lucio Bittencourt / Fabiano Fernandes Bargos                       =
00029 =                        Gilberto Luis Valente / Jorge Luis Suzuki / Allan Patrick Cordeiro Dias  =
00030 =                                                                                                 =
00031 =       Licensed under the Apache License, Version 2.0 (the "License");                               =
00032 =       you may not use this file except in compliance with the License.                              =
00033 =       You may obtain a copy of the License at                                                       =
00034 =                                                                                                 =
00035 =               http://www.apache.org/licenses/LICENSE-2.0                                                =
00036 =                                                                                                 =
00037 =       Unless required by applicable law or agreed to in writing, software                           =
00038 =       distributed under the License is distributed on an "AS IS" BASIS,                             =
00039 =       WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                      =
00040 =       See the License for the specific language governing permissions and                           =
00041 =       limitations under the License.                                                                =
00042 =                                                                                                 =
00043 =================================================================================================*/
00044 
00045 
00046 #include <cstdio>
00047 #include "ds/Matrix.h"
00048 #include "ds/SymmetricMatrix.h"
00049 
00050 
00055 class Vector
00056 {
00057 //#UBLK-BEG-CLASSDEF mm:a3b2475d-c5c5-11df-8d40-e1925b19f1b8
00058 //#UBLK-END-CLASSDEF
00059 
00060  public:
00061 
00062    // METHOD=mm:a3b24860-c5c5-11df-8d40-e1925b19f1b8
00063    Vector();
00064 
00065    // METHOD=mm:a3b24861-c5c5-11df-8d40-e1925b19f1b8
00066    Vector(long Dimension, double InitValue = 0.0);
00067 
00068    // METHOD=mm:a3b24862-c5c5-11df-8d40-e1925b19f1b8
00069    Vector(Vector& Instance);
00070 
00071    // METHOD=mm:a3b24863-c5c5-11df-8d40-e1925b19f1b8
00072    Vector(FILE* File);
00073 
00074    // METHOD=mm:a3b24868-c5c5-11df-8d40-e1925b19f1b8
00075    ~Vector();
00076 
00077    // METHOD=mm:a3b24869-c5c5-11df-8d40-e1925b19f1b8
00078    void operator=(Vector& Instance);
00079 
00080    // METHOD=mm:a3b2486a-c5c5-11df-8d40-e1925b19f1b8
00081    void Equal(Vector& Instance);
00082 
00083    // METHOD=mm:a3b2486b-c5c5-11df-8d40-e1925b19f1b8
00084    double& operator[](long Index);
00085 
00086    // METHOD=mm:a3b2486c-c5c5-11df-8d40-e1925b19f1b8
00087    double& operator()(long Index);
00088 
00089    // METHOD=mm:a3b2486d-c5c5-11df-8d40-e1925b19f1b8
00090    double& GetElement(unsigned long Index);
00091 
00092    // METHOD=mm:4887e8df-dd53-11e0-9bb1-fbdee659cc27
00093    double& GetEndElement();
00094 
00095    // METHOD=mm:a3b24872-c5c5-11df-8d40-e1925b19f1b8
00096    operator double*const();
00097 
00098    // METHOD=mm:a3b24873-c5c5-11df-8d40-e1925b19f1b8
00099    void SetOrder(unsigned long VectorOrder = 0, double InitValue = 0.0);
00100 
00101    // METHOD=mm:a3b24874-c5c5-11df-8d40-e1925b19f1b8
00102    long GetOrder();
00103 
00104    // METHOD=mm:a3b24875-c5c5-11df-8d40-e1925b19f1b8
00105    long SizeOf();
00106 
00107    // METHOD=mm:a3b24876-c5c5-11df-8d40-e1925b19f1b8
00108    void Reset(double Value = 0.0);
00109 
00110    // METHOD=mm:a3b24877-c5c5-11df-8d40-e1925b19f1b8
00111    friend Vector operator+(Vector& B, Vector& C);
00112 
00113    // METHOD=mm:a3b2487c-c5c5-11df-8d40-e1925b19f1b8
00114    Vector& Add(Vector& B, Vector& C);
00115 
00116    // METHOD=mm:a3b2487d-c5c5-11df-8d40-e1925b19f1b8
00117    Vector& operator+=(Vector& B);
00118 
00119    // METHOD=mm:a3b2487e-c5c5-11df-8d40-e1925b19f1b8
00120    Vector& Add(Vector& B);
00121 
00122    // METHOD=mm:a3b2487f-c5c5-11df-8d40-e1925b19f1b8
00123    friend Vector operator-(Vector& B, Vector& C);
00124 
00125    // METHOD=mm:a3b24880-c5c5-11df-8d40-e1925b19f1b8
00126    Vector& Subtract(Vector& B, Vector& C);
00127 
00128    // METHOD=mm:a3b24881-c5c5-11df-8d40-e1925b19f1b8
00129    Vector& operator-=(Vector& B);
00130 
00131    // METHOD=mm:a3b24886-c5c5-11df-8d40-e1925b19f1b8
00132    Vector& Subtract(Vector& B);
00133 
00134    // METHOD=mm:a3b24887-c5c5-11df-8d40-e1925b19f1b8
00135    friend Vector operator*(Vector& B, Vector& C);
00136 
00137    // METHOD=mm:a3b24888-c5c5-11df-8d40-e1925b19f1b8
00138    Vector& VectorialProduct(Vector& B, Vector& C);
00139 
00140    // METHOD=mm:a3b24889-c5c5-11df-8d40-e1925b19f1b8
00141    double operator^(Vector& B);
00142 
00143    // METHOD=mm:a3b2488a-c5c5-11df-8d40-e1925b19f1b8
00144    double ScalarProduct(Vector& B);
00145 
00146    // METHOD=mm:4963412e-d204-4737-9fde-d242a119822f
00147    double ScalarProduct(double* B, unsigned long BDim);
00148 
00149    // METHOD=mm:a3b2488b-c5c5-11df-8d40-e1925b19f1b8
00150    Vector& operator-();
00151 
00152    // METHOD=mm:a3b24890-c5c5-11df-8d40-e1925b19f1b8
00153    Vector& Chs();
00154 
00155    // METHOD=mm:a3b24891-c5c5-11df-8d40-e1925b19f1b8
00156    double EuclideanNorm();
00157 
00158    // METHOD=mm:a3b24892-c5c5-11df-8d40-e1925b19f1b8
00159    double InfinityNorm();
00160 
00161    // METHOD=mm:a3b24893-c5c5-11df-8d40-e1925b19f1b8
00162    double OneNorm();
00163 
00164    // METHOD=mm:a3b24894-c5c5-11df-8d40-e1925b19f1b8
00165    double Maximum();
00166 
00167    // METHOD=mm:a3b24895-c5c5-11df-8d40-e1925b19f1b8
00168    double Minimum();
00169 
00170    // METHOD=mm:a3b2489a-c5c5-11df-8d40-e1925b19f1b8
00171    Vector& Multiplicate(double Scalar);
00172 
00173    // METHOD=mm:a3b2489b-c5c5-11df-8d40-e1925b19f1b8
00174    Vector& operator*=(double Scalar);
00175 
00176    // METHOD=mm:a3b2489c-c5c5-11df-8d40-e1925b19f1b8
00177    Vector& Multiplicate(Matrix& Matrix, Vector& Vect);
00178 
00179    // METHOD=mm:61ef890a-ddfb-4d9b-9a56-9ee0dc5790e0
00180    Vector& Multiplicate(Matrix& Matrix, double* Vect);
00181 
00182    // METHOD=mm:b082262a-2899-461e-a716-3f2e8a2e4e2f
00183    Vector& TransposeMultiplicate(Matrix& Matrix, Vector& Vect);
00184 
00185    // METHOD=mm:155359e0-efcf-46f5-a1d7-065572481c4f
00186    Vector& TransposeMultiplicate(double* Matrix, unsigned short NLines, Vector& Vect);
00187 
00188    // METHOD=mm:a3b2489d-c5c5-11df-8d40-e1925b19f1b8
00189    friend Vector operator*(Matrix& Matrix, Vector& Vect);
00190 
00191    // METHOD=mm:a3b2489e-c5c5-11df-8d40-e1925b19f1b8
00192    Vector& Multiplicate(SymmetricMatrix& Matrix, Vector& Vect);
00193 
00194    // METHOD=mm:1dd81976-8082-4e14-ad1a-e32f641b63e6
00195    Vector& Multiplicate(double* Matrix, double* Vect, unsigned long Dim);
00196 
00197    // METHOD=mm:464877bf-b6f8-404d-b4b4-e90692654e7f
00198    double Multiplicate(Vector& Vect, SymmetricMatrix& SymMat);
00199 
00200    // METHOD=mm:a3b2489f-c5c5-11df-8d40-e1925b19f1b8
00201    friend Vector operator*(SymmetricMatrix& Matrix, Vector& Vect);
00202 
00203    // METHOD=mm:a3b248a6-c5c5-11df-8d40-e1925b19f1b8
00204    Vector& UnitVector(Vector& A);
00205 
00206    // METHOD=mm:a3b248a7-c5c5-11df-8d40-e1925b19f1b8
00207    void Save(FILE* File);
00208 
00209    // METHOD=mm:a3b248a8-c5c5-11df-8d40-e1925b19f1b8
00210    void Save(char* TabName, int Version, char* Filename);
00211 
00212    // METHOD=mm:a3b248a9-c5c5-11df-8d40-e1925b19f1b8
00213    void Restore(FILE* File);
00214 
00215    // METHOD=mm:a3b248f4-c5c5-11df-8d40-e1925b19f1b8
00216    void Restore(char* TabName, int Version, char* Filename);
00217 
00218    // METHOD=mm:a3b248f5-c5c5-11df-8d40-e1925b19f1b8
00219    void Print(FILE* File, const char* Message, char* Format);
00220 
00221    // METHOD=mm:a3b248f6-c5c5-11df-8d40-e1925b19f1b8
00222    void Print(FILE* File, const char* Message = "", long NumMaxCols = 5, int Mant = 14, int Dec = 7);
00223 
00224    // METHOD=mm:a3b248f7-c5c5-11df-8d40-e1925b19f1b8
00225    void Free();
00226 
00227 
00228  protected:
00229 
00230    // METHOD=mm:a3b2485f-c5c5-11df-8d40-e1925b19f1b8
00231    void Alloc(double InitValue = 0.0);
00232 
00233    // METHOD=mm:15b4f7b3-c42f-485d-8622-397e0ef016a0
00234    double scalv(double* x, double* y, unsigned long dim);
00235 
00236    // METHOD=mm:797f1e63-f3c7-40d4-8d6a-bbbfde2aa5b8
00237    void prodmsv(double* vetc, double* ms, double* vet, long ncolms);
00238 
00239 
00243    // attr=mm:a3b24859-c5c5-11df-8d40-e1925b19f1b8
00244    unsigned long Dim;
00245 
00249    // attr=mm:a3b2485e-c5c5-11df-8d40-e1925b19f1b8
00250    double* Vec;
00251 
00252 
00253  private:
00254 
00255 //#UBLK-BEG-CLASSMEMB mm:a3b2475d-c5c5-11df-8d40-e1925b19f1b8
00256 //#UBLK-END-CLASSMEMB
00257 };
00258 
00259 //#UBLK-BEG-GLOBALH
00260 //*** Removed methods: 16 Mar 2011 12:05
00261 //---
00262 //uuid=mm:a3b248a4-c5c5-11df-8d40-e1925b19f1b8
00263 //   Vector& Multiplicate(SymmetricSkyline& Matrix, Vector& Vect);
00264 //---
00265 //uuid=mm:a3b248a5-c5c5-11df-8d40-e1925b19f1b8
00266 //   friend Vector operator*(SymmetricSkyline& Matrix, Vector& Vect);
00267 
00268 //*** Removed methods: 28 Mar 2011 16:13
00269 //---
00270 //uuid=mm:a3b248a4-c5c5-11df-8d40-e1925b19f1b8
00271 //   Vector& Multiplicate(SymmetricSkyline& Matrix, Vector& Vect);
00272 //---
00273 //uuid=mm:a3b248a5-c5c5-11df-8d40-e1925b19f1b8
00274 //   friend Vector operator*(SymmetricSkyline& Matrix, Vector& Vect);
00275 
00276 //*** Removed methods: 05 Abr 2011 11:43
00277 //---
00278 //uuid=mm:a3b248a4-c5c5-11df-8d40-e1925b19f1b8
00279 //   Vector& Multiplicate(SymmetricSkyline& Matrix, Vector& Vect);
00280 //---
00281 //uuid=mm:a3b248a5-c5c5-11df-8d40-e1925b19f1b8
00282 //   friend Vector operator*(SymmetricSkyline& Matrix, Vector& Vect);
00283 
00284 //*** Removed methods: 08 Abr 2011 17:24
00285 //---
00286 //uuid=mm:a3b248a4-c5c5-11df-8d40-e1925b19f1b8
00287 //   Vector& Multiplicate(SymmetricSkyline& Matrix, Vector& Vect);
00288 //---
00289 //uuid=mm:a3b248a5-c5c5-11df-8d40-e1925b19f1b8
00290 //   friend Vector operator*(SymmetricSkyline& Matrix, Vector& Vect);
00291 
00292 //*** Removed methods: 08 Abr 2011 18:25
00293 //---
00294 //uuid=mm:a3b248a4-c5c5-11df-8d40-e1925b19f1b8
00295 //   Vector& Multiplicate(SymmetricSkyline& Matrix, Vector& Vect);
00296 //---
00297 //uuid=mm:a3b248a5-c5c5-11df-8d40-e1925b19f1b8
00298 //   friend Vector operator*(SymmetricSkyline& Matrix, Vector& Vect);
00299 
00300 //*** Removed methods: 07 Mar 2012 14:55
00301 //---
00302 //uuid=mm:936239ec-d1ed-42ef-96b2-cd8ee36b9947
00303 //   operator double*();
00304 
00305 //#UBLK-END-GLOBALH
00306 
00307 
00308 #endif // _VECTOR_H_
 All Classes Files Functions Variables Typedefs Friends Defines