hp2FEM
0.1
|
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_