Diffpack Documentation


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

SystemCollector.h

Go to the documentation of this file.
00001 
00005 class SystemCollector : public HandleId
00006 
00007 {
00008 private:
00009   bool modify_mat_due2essBC;
00010   bool modify_vec_due2essBC;
00011   bool symm_mod_due2essBC;
00012   bool unit_mat_diagonal_due2essBC;
00013   bool keep_dof_due2essBC;      
00014 
00015   Handle(MxElmMatVec)                  elm_mats;
00016   MatSimplest(Handle(MxElmMatVecCalc)) mxelmcalcs;
00017   MatSimplest(Handle(MxIntegrandCalc)) mxintcalcs;
00018   MatSimplest(bool)                    attached_integ;
00019   VecSimplest(Handle(DegFreeFE))       idofs;
00020   VecSimplest(Handle(DegFreeFE))       jdofs;
00021   MxFEM*                               fem;
00022   int                                  nrows, ncols;
00023 
00024 
00025   void modify(int i, int k, NUMT v);
00026 
00027 public:
00028   SystemCollector() {}
00029  ~SystemCollector();
00030 
00031   void redim(int i, int j);
00032 
00033   void attach(MxElmMatVecCalc& elm, int i , int j);
00034 
00035   void attach(MxElmMatVecCalc& elm);
00036 
00037   void attach(MxIntegrandCalc& in, int i , int j);
00038 
00039   void attach(DegFreeFE& dof, int i, bool col);
00040 
00041   void attach(MxFEM* fem_);
00042 
00043   void attach(MxElmMatVec& elm_mats_);
00044 
00045   MxElmMatVecCalc& getMxElmMatVecCalc(int i, int j)
00046     { return mxelmcalcs(i,j).getRef(); }
00047 
00048   MxIntegrandCalc& getMxIntegrandCalc(int i, int j)
00049     { return  mxintcalcs(i,j).getRef(); }
00050 
00051   DegFreeFE& getDegFreeFE (int i, bool rows=true);
00052 
00053   void calcElmMatVec(int e , MxFiniteElement& mfe,
00054                      MxElmMatVec& elmcoll,MxFEM* fem_);
00055 
00056   void enforceEssBC();
00057 
00058   int getNrows () { return nrows; }
00059   int getNcols () { return ncols; }
00060 
00061   void print (Os os, int level=1);
00062   bool ok();
00063 };
00064 
00065 

Copyright © 2003 inuTech GmbH. All rights reserved.