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 #ifndef _hyp_math_matrix_h_
00031 #define _hyp_math_matrix_h_
00032
00033 #ifndef hypfem_INSIDE_INTERN
00034 #error Inclusion not allowed (include hyp.fem.intern.h instead)
00035 #endif
00036
00049 class CMatrix :
00050 #ifdef hypfem_IDENTIFY_CONSTRUCTION_ON
00051 protected CIDClass,
00052 #endif
00053 public IMatrix,
00054 public hyp_ker::CUnknown
00055 {
00056 public:
00058 CMatrix(hyp_ker::IUnknown*);
00059 virtual ~CMatrix();
00060 hyp_DECLARE_IUNKNOWN
00061 virtual hyp_ker::com_result NondelegatingQueryInterface(const hyp_ker::hypIID&,void**);
00062 static hyp_ker::com_result CreateInstance(hyp_ker::IUnknown* pUnknownOuter,hyp_ker::CUnknown**);
00063 hyp_ker::com_result Init(void);
00064 void FinalRelease(void);
00066
00070 virtual void Transpose(IMatrix*);
00071 virtual void SetMatrix(IMatrix*);
00072 virtual void Multiply (const IMatrix* ,IMatrix*);
00073 virtual void Extract (const t_size& ,const t_size& ,const t_size& , const t_size& ,IMatrix* );
00074 virtual void IncrValue(const t_size& ,const t_size& ,const t_real& );
00075 virtual void SetDim(const t_size& , const t_size& , const t_real& );
00076 virtual void SetValue(const t_size& , const t_size& , const t_real& );
00077 virtual t_real GetValue(const t_size& ,const t_size& ) const;
00078 virtual void SetMatrix(const t_real& );
00079 virtual t_size GetNbRow() const;
00080 virtual t_size GetNbColumn() const;
00081 virtual void Multiply(const t_real& );
00082 virtual void Substract(const IMatrix* );
00083 virtual void Invert();
00084 virtual void Add(const IMatrix* );
00085 virtual bool IsSymmetrical();
00086 virtual void EraseRow(const t_size& );
00087 virtual void EraseColumn(const t_size& );
00088 virtual void EraseRowsAndColumns(const t_mask_array&, const t_mask_array&);
00090
00091 private:
00092 t_LibraryMatrix Matrix_biblio;
00093 void _CopyMatrixFromComposant( const IMatrix* ,t_LibraryMatrix& ) const;
00094 void _CopyMatrixFromImpl(const t_LibraryMatrix& ,IMatrix* );
00095 void _CopyVectorFromComposant(const IMatrix* ,t_LibraryVector& ) const;
00096 void _CopyVectorFromImpl(const t_LibraryVector& ,IMatrix* );
00097
00098 };
00099
00100
00101 #endif