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_RB_THETA_H 21 : #define LIBMESH_RB_THETA_H 22 : 23 : // Local includes 24 : #include "libmesh/libmesh_common.h" 25 : #include "libmesh/reference_counted_object.h" 26 : 27 : // C++ includes 28 : #include <vector> 29 : 30 : namespace libMesh 31 : { 32 : 33 : class RBParameters; 34 : 35 : /** 36 : * This class is part of the rbOOmit framework. 37 : * 38 : * RBTheta provides a default functor class with which 39 : * to define the parameter-dependent functions required 40 : * for the PDE decomposition employed by the Reduced 41 : * Basis method. 42 : * 43 : * \author David J. Knezevic 44 : * \date 2011 45 : */ 46 : class RBTheta : public ReferenceCountedObject<RBTheta> 47 : { 48 : public: 49 : 50 : /** 51 : * Special functions. This class holds no data so everything can be 52 : * defaulted. 53 : */ 54 0 : RBTheta () = default; 55 : RBTheta (RBTheta &&) = default; 56 : RBTheta (const RBTheta &) = default; 57 : RBTheta & operator= (const RBTheta &) = default; 58 : RBTheta & operator= (RBTheta &&) = default; 59 0 : virtual ~RBTheta () = default; 60 : 61 : /** 62 : * Evaluate the functor object for the given parameter. 63 : * Default implementation is to return 1, override 64 : * to provide problem dependent behavior. 65 : */ 66 : virtual Number evaluate(const RBParameters &); 67 : 68 : /* 69 : * Evaluate the functor object for multiple given parameters simultaneously. 70 : * Override to obtain problem-dependent behavior. 71 : */ 72 : virtual std::vector<Number> evaluate_vec(const std::vector<RBParameters> & mus); 73 : }; 74 : 75 : } 76 : 77 : #endif // LIBMESH_RB_THETA_H