00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
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