$extrastylesheet
rb_eim_assembly.h
Go to the documentation of this file.
00001 // rbOOmit: An implementation of the Certified Reduced Basis method.
00002 // Copyright (C) 2009, 2010 David J. Knezevic
00003 
00004 // This file is part of rbOOmit.
00005 
00006 // rbOOmit is free software; you can redistribute it and/or
00007 // modify it under the terms of the GNU Lesser General Public
00008 // License as published by the Free Software Foundation; either
00009 // version 2.1 of the License, or (at your option) any later version.
00010 
00011 // rbOOmit is distributed in the hope that it will be useful,
00012 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00013 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00014 // Lesser General Public License for more details.
00015 
00016 // You should have received a copy of the GNU Lesser General Public
00017 // License along with this library; if not, write to the Free Software
00018 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00019 
00020 #ifndef LIBMESH_RB_EIM_ASSEMBLY_H
00021 #define LIBMESH_RB_EIM_ASSEMBLY_H
00022 
00023 // rbOOmit includes
00024 #include "libmesh/elem_assembly.h"
00025 
00026 // libMesh includes
00027 #include "libmesh/auto_ptr.h"
00028 #include "libmesh/numeric_vector.h"
00029 #include "libmesh/point.h"
00030 #include "libmesh/fe.h"
00031 
00032 namespace libMesh
00033 {
00034 
00035 class Elem;
00036 class RBParameters;
00037 class RBEIMConstruction;
00038 
00047 class RBEIMAssembly : public ElemAssembly
00048 {
00049 public:
00050 
00054   RBEIMAssembly(RBEIMConstruction& rb_eim_con_in,
00055                 unsigned int basis_function_index_in);
00056 
00060   virtual ~RBEIMAssembly();
00061 
00066   virtual void evaluate_basis_function(unsigned int var,
00067                                        const Elem& element,
00068                                        const QBase& element_qrule,
00069                                        std::vector<Number>& values);
00070 
00074   RBEIMConstruction& get_rb_eim_construction();
00075 
00079   NumericVector<Number>& get_ghosted_basis_function();
00080 
00084   FEBase& get_fe(unsigned int var);
00085 
00086 private:
00087 
00091   void initialize_fe_objects();
00092 
00096   RBEIMConstruction& _rb_eim_con;
00097 
00101   unsigned int _basis_function_index;
00102 
00108   UniquePtr< NumericVector<Number> > _ghosted_basis_function;
00109 
00115   std::vector< FEBase* > _fe_var;
00116 
00120   std::vector< QBase* > _fe_qrule;
00121 
00122 };
00123 
00124 }
00125 
00126 #endif // LIBMESH_RB_EIM_ASSEMBLY_H