Diffpack Documentation


Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Search  

AlgebraicContribs.h

Go to the documentation of this file.
00001 
00005 class AlgebraicContribs: public HandleId
00006 
00007 {
00008 private:
00009 
00010   VecSimple(AlgebraicEquation) equations;  
00011   VecSimple(AlgebraicCoupling) couplings;  
00012 
00013   int cnt_equations;                       
00014   int cnt_couplings;                       
00015   
00016   int row_base;                            
00017   int col_base;                            
00018 
00019   
00020   DegFreeFD* dof;                          
00021 
00022 
00023   bool is_assembled;                       
00024   int nnz;                                 
00025 
00026   Handle(VecSimpleH(VecSimple(NUMT))) alg_coeffs;  
00027   Handle(VecSimpleH(VecSimple(int)))  alg_pattern; 
00028 
00029   Handle(Vec(NUMT)) b_mod;                 
00030 
00031   void connect (const DegFreeFD& dof_);
00032 
00033 public :
00034 
00035   AlgebraicContribs (const DegFreeFD& dof_);
00036   AlgebraicContribs (const AlgebraicContribs& alg_contribs);
00037   AlgebraicContribs (int no_algdofs,
00038                      const DegFreeFD& dof_);
00039   AlgebraicContribs (int no_equations, 
00040                      int no_couplings, 
00041                      const DegFreeFD& dof_);
00042   AlgebraicContribs (VecSimple(AlgebraicEquation) equations_,
00043                      VecSimple(AlgebraicCoupling) couplings_,
00044                      const DegFreeFD& dof_);
00045 
00046   virtual ~AlgebraicContribs () {}
00047 
00048   AlgebraicContribs& operator= (const AlgebraicContribs& alg_contribs);
00049 
00050   
00051   bool redim (int no_algdofs);
00052   bool redim (int no_equations, int no_couplings);
00053   bool redim (VecSimple(AlgebraicEquation) equations_,
00054               VecSimple(AlgebraicCoupling) couplings_);
00055 
00056   void update ();
00057   void reset ();
00058 
00059   void grow (int neqns, int ndofs);
00060   void grow (int n);
00061 
00062   int  getNoEquations () const;
00063   int  getNoCouplings () const;
00064   void size (int& neqns, int& ndofs) const;
00065 
00066   int loc2globEqn (int loc_eqn)  const;
00067   int glob2locEqn (int glob_eqn) const;
00068 
00069   int loc2globDof (int loc_dof)  const;
00070   int glob2locDof (int glob_dof) const;
00071 
00072 
00073   
00074         AlgebraicEquation& equation (int loc_eqn);
00075   const AlgebraicEquation& equation (int loc_eqn) const;
00076 
00077         AlgebraicCoupling& coupling (int loc_dof);
00078   const AlgebraicCoupling& coupling (int loc_dof) const;
00079 
00080   void fill (VecSimple(AlgebraicEquation) equations_,
00081              VecSimple(AlgebraicCoupling) couplings_);
00082 
00083   void insertEquation (int loc_eqn, NUMT coeff, int glob_dof);
00084   void insertEquation (int loc_eqn, const VecSimple(NUMT)& coeffs,
00085                        const VecSimple(int)& glob_dofs);
00086 
00087 
00088   void insertCoupling (int loc_dof, NUMT coeff, int glob_eqn);
00089   void insertCoupling (int loc_dof, const VecSimple(NUMT)& coeffs,
00090                        const VecSimple(int)& glob_eqns);
00091 
00092 
00093 
00094   
00095   void insertEquation (NUMT coeff, int glob_dof); 
00096   void insertEquation (const VecSimple(NUMT)& coeffs,
00097                        const VecSimple(int)& glob_dofs);
00098                        
00099 
00100   void insertCoupling (NUMT coeff, int glob_eqn);
00101   void insertCoupling (const VecSimple(NUMT)& coeffs,
00102                        const VecSimple(int)& glob_eqns);
00103                        
00104 
00105   
00106   int  assemble ();
00107   bool isAssembled ();
00108   const VecSimpleH(VecSimple(NUMT))* getCoeffs  () const;
00109   const VecSimpleH(VecSimple(int))*  getPattern () const; 
00110   
00111   
00112   void insertRHS (const Vec(NUMT)& b_mod_, bool allocate = false);
00113 
00114   virtual void print (Os os) const;
00115   virtual void scan  (Is is);
00116 
00117   CLASS_INFO
00118 
00119   friend class FDM;
00120 };
00121 
00122 

Copyright © 2003 inuTech GmbH. All rights reserved.