$extrastylesheet
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