$extrastylesheet
rb_theta_expansion.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_THETA_EXPANSION_H
00021 #define LIBMESH_RB_THETA_EXPANSION_H
00022 
00023 // libMesh includes
00024 #include "libmesh/libmesh_common.h"
00025 #include "libmesh/reference_counted_object.h"
00026 
00027 // C++ includes
00028 #include <vector>
00029 
00030 
00031 namespace libMesh
00032 {
00033 
00034 class RBTheta;
00035 class RBParameters;
00036 
00044 // ------------------------------------------------------------
00045 // RBThetaExpansion class definition
00046 class RBThetaExpansion : public ReferenceCountedObject<RBThetaExpansion>
00047 {
00048 public:
00049 
00053   RBThetaExpansion();
00054 
00058   virtual ~RBThetaExpansion() {}
00059 
00065   virtual Number eval_A_theta(unsigned int q,
00066                               const RBParameters& mu);
00067 
00071   virtual Number eval_F_theta(unsigned int q,
00072                               const RBParameters& mu);
00073 
00077   virtual Number eval_output_theta(unsigned int output_index,
00078                                    unsigned int q_l,
00079                                    const RBParameters& mu);
00080 
00085   unsigned int get_n_A_terms() const;
00086 
00091   unsigned int get_n_F_terms() const;
00092 
00096   unsigned int get_n_outputs() const;
00097 
00101   unsigned int get_n_output_terms(unsigned int output_index) const;
00102 
00107   virtual void attach_A_theta(RBTheta* theta_q_a);
00108 
00113   virtual void attach_multiple_A_theta(std::vector<RBTheta*> theta_q_a);
00114 
00119   virtual void attach_F_theta(RBTheta* theta_q_f);
00120 
00125   virtual void attach_multiple_F_theta(std::vector<RBTheta*> theta_q_f);
00126 
00131   virtual void attach_output_theta(std::vector<RBTheta*> theta_q_l);
00132 
00137   virtual void attach_output_theta(RBTheta* theta_q_l);
00138 
00139 
00140 private:
00141 
00145   std::vector<RBTheta*> _A_theta_vector;
00146 
00150   std::vector<RBTheta*> _F_theta_vector;
00151 
00155   std::vector< std::vector<RBTheta*> > _output_theta_vector;
00156 
00157 };
00158 
00159 }
00160 
00161 #endif // LIBMESH_RB_THETA_EXPANSION_H