Main Page   Modules   Class Hierarchy   Compound List   File List   Compound Members   File Members   Related Pages  

hyp.math.vector.h

00001 /*
00002 \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
00003  Ephydryne Components.
00004  Ephydryne is a part of the Hyperion Project.
00005 ----------------------------------------------------------
00006  Copyright (c) 2001 Pierre Rebours.
00007 
00008  This library is free software; you can redistribute it and/or
00009  modify it under the terms of the GNU Lesser General Public
00010  License as published by the Free Software Foundation; either
00011  version 2.1 of the License, or (at your option) any later version.
00012 
00013  This library is distributed in the hope that it will be useful,
00014  but WITHOUT ANY WARRANTY; without even the implied warranty of
00015  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
00016  
00017  See hyp.license.txt file for more information about the license.
00018  
00019  Web: http://lagrandeporte.multimania.com/hyperion
00020  Email: pierre_rebours@yahoo.com
00021 ----------------------------------------------------------
00022  CVS
00023  $Log$
00024  
00025  Creation 22/03/01 P.Naves
00026  Add 29/03/01 Pierre Rebours Miscellenious functions of the IMatrix interface
00027 \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
00028 */
00029 
00030 
00031 #ifndef _hyp_math_vector_h_
00032 #define _hyp_math_vector_h_
00033 
00034 
00035 #ifndef hypfem_INSIDE_INTERN
00036 #error Inclusion not allowed (include hyp.fem.intern.h instead)
00037 #endif
00038 
00051 class CVector :
00052 #ifdef hypfem_IDENTIFY_CONSTRUCTION_ON
00053 protected CIDClass,
00054 #endif
00055 public IMatrix,
00056 public hyp_ker::CUnknown
00057 {
00058 public:
00060         CVector(hyp_ker::IUnknown*);
00061         virtual ~CVector();
00062         hyp_DECLARE_IUNKNOWN
00063         virtual hyp_ker::com_result NondelegatingQueryInterface(const hyp_ker::hypIID&,void**);
00064         static hyp_ker::com_result CreateInstance(hyp_ker::IUnknown* ,hyp_ker::CUnknown**);
00065         hyp_ker::com_result Init();     
00066         void FinalRelease();
00068 
00072         virtual void Transpose(IMatrix* );
00073         virtual void SetMatrix(IMatrix* );
00074         virtual void Multiply (const IMatrix* , IMatrix* );
00075         virtual void Extract (const t_size& ,const t_size& ,const t_size& , const t_size& , IMatrix* );
00076         virtual void IncrValue(const t_size& ,const t_size& ,const t_real& );
00077         virtual void SetDim(const t_size& , const t_size& , const t_real& );
00078         virtual void SetValue(const t_size& , const t_size& , const t_real& );
00079         virtual t_real GetValue(const t_size& ,const t_size& ) const;
00080         virtual void SetMatrix(const t_real& );
00081         virtual t_size GetNbRow() const;
00082         virtual t_size GetNbColumn() const;
00083         virtual void Multiply(const t_real& );
00084         virtual void Substract(const IMatrix* );
00085         virtual void Invert();
00086         virtual void Add(const IMatrix* );
00087         virtual bool IsSymmetrical(void) { return false; }
00088         virtual void EraseRow(const t_size& ) { hyp_ASSERT(0); }
00089         virtual void EraseColumn(const t_size& ) { hyp_ASSERT(0); }
00090         virtual void EraseRowsAndColumns(const t_mask_array&, const t_mask_array&) { hyp_ASSERT(0); }
00092 
00093 private:
00094         t_LibraryVector Vector_biblio;
00095         void _CopyMatrixFromComposant(const IMatrix* pIMatriceACopier,t_LibraryMatrix& DestMatrice) const;
00096         void _CopyMatrixFromImpl(const t_LibraryMatrix& SourceMatrice,IMatrix* pIMatriceDest);
00097         void _CopyVectorFromComposant(const IMatrix* pIMatriceACopier,t_LibraryVector& DestMatrice) const;
00098         void _CopyVectorFromImpl(const t_LibraryVector& SourceMatrice,IMatrix* pIMatriceDest);
00099 
00100 
00101 
00102 };
00103 
00104 #endif

Top of Page
written by Pierre Rebours © 2000-2001. Terms of Use.