Line data Source code
1 : // rbOOmit: An implementation of the Certified Reduced Basis method. 2 : // Copyright (C) 2009, 2010 David J. Knezevic 3 : 4 : // This file is part of rbOOmit. 5 : 6 : // rbOOmit is free software; you can redistribute it and/or 7 : // modify it under the terms of the GNU Lesser General Public 8 : // License as published by the Free Software Foundation; either 9 : // version 2.1 of the License, or (at your option) any later version. 10 : 11 : // rbOOmit is distributed in the hope that it will be useful, 12 : // but WITHOUT ANY WARRANTY; without even the implied warranty of 13 : // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 : // Lesser General Public License for more details. 15 : 16 : // You should have received a copy of the GNU Lesser General Public 17 : // License along with this library; if not, write to the Free Software 18 : // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 19 : 20 : #ifndef LIBMESH_TRANSIENT_RB_THETA_EXPANSION_H 21 : #define LIBMESH_TRANSIENT_RB_THETA_EXPANSION_H 22 : 23 : // rbOOmit includes 24 : #include "libmesh/rb_theta_expansion.h" 25 : 26 : // libMesh includes 27 : 28 : // C++ includes 29 : 30 : 31 : namespace libMesh 32 : { 33 : 34 : /** 35 : * This class stores the set of RBTheta functor objects that define 36 : * the "parameter-dependent expansion" of a PDE. 37 : * 38 : * \author David J. Knezevic 39 : * \date 2011 40 : */ 41 : class TransientRBThetaExpansion : public RBThetaExpansion 42 : { 43 : public: 44 : 45 : /** 46 : * All special functions can be defaulted for this simple class. 47 : */ 48 : TransientRBThetaExpansion() = default; 49 : TransientRBThetaExpansion (TransientRBThetaExpansion &&) = default; 50 : TransientRBThetaExpansion (const TransientRBThetaExpansion &) = default; 51 : TransientRBThetaExpansion & operator= (const TransientRBThetaExpansion &) = default; 52 : TransientRBThetaExpansion & operator= (TransientRBThetaExpansion &&) = default; 53 0 : virtual ~TransientRBThetaExpansion () = default; 54 : 55 : /** 56 : * The type of the parent. 57 : */ 58 : typedef RBThetaExpansion Parent; 59 : 60 : /** 61 : * Evaluate theta at the current parameter. Override 62 : * if the theta functions need to be treated differently 63 : * in subclasses. 64 : */ 65 : virtual Number eval_M_theta(unsigned int q, 66 : const RBParameters & mu) const; 67 : 68 : /** 69 : * Get Q_m, the number of terms in the affine 70 : * expansion for the mass operator. 71 : */ 72 : virtual unsigned int get_n_M_terms() const; 73 : 74 : /** 75 : * Attach a pointer to a functor object that defines one 76 : * of the theta_q_m terms. 77 : */ 78 : virtual void attach_M_theta(RBTheta * theta_q_m); 79 : 80 : private: 81 : 82 : /** 83 : * Vector storing the pointers to the RBTheta functors. 84 : */ 85 : std::vector<RBTheta *> _M_theta_vector; 86 : }; 87 : 88 : } 89 : 90 : #endif // LIBMESH_TRANSIENT_RB_THETA_EXPANSION_H