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 : #include "libmesh/rb_eim_theta.h" 21 : #include "libmesh/rb_parameters.h" 22 : #include "libmesh/rb_eim_evaluation.h" 23 : 24 : namespace libMesh 25 : { 26 : 27 0 : RBEIMTheta::RBEIMTheta(RBEIMEvaluation & rb_eim_eval_in, unsigned int index_in) 28 : : 29 0 : rb_eim_eval(rb_eim_eval_in), 30 0 : index(index_in) 31 : { 32 0 : } 33 : 34 0 : Number RBEIMTheta::evaluate(const RBParameters & mu) 35 : { 36 0 : std::vector<RBParameters> mus {mu}; 37 0 : std::vector<Number> values = evaluate_vec(mus); 38 : 39 0 : libmesh_error_msg_if(values.size() != 1, "Error: should have one value"); 40 0 : return values[0]; 41 0 : } 42 : 43 0 : std::vector<Number> RBEIMTheta::evaluate_vec(const std::vector<RBParameters> & mus) 44 : { 45 0 : rb_eim_eval.set_eim_error_indicator_active(true); 46 0 : rb_eim_eval.rb_eim_solves(mus, rb_eim_eval.get_n_basis_functions()); 47 0 : rb_eim_eval.set_eim_error_indicator_active(false); 48 : 49 0 : return rb_eim_eval.get_rb_eim_solutions_entries(index); 50 : } 51 : 52 : }