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 : // rbOOmit includes 21 : #include "libmesh/transient_rb_assembly_expansion.h" 22 : #include "libmesh/elem_assembly.h" 23 : 24 : namespace libMesh 25 : { 26 : 27 0 : void TransientRBAssemblyExpansion::perform_M_interior_assembly(unsigned int q, 28 : FEMContext & context) const 29 : { 30 0 : libmesh_error_msg_if(q >= get_n_M_terms(), "Error: We must have q < get_n_M_terms in perform_M_interior_assembly."); 31 0 : libmesh_assert(_M_assembly_vector[q]); 32 : 33 0 : return _M_assembly_vector[q]->interior_assembly( context ); 34 : } 35 : 36 0 : void TransientRBAssemblyExpansion::perform_M_boundary_assembly(unsigned int q, 37 : FEMContext & context) const 38 : { 39 0 : libmesh_error_msg_if(q >= get_n_M_terms(), "Error: We must have q < get_n_M_terms in perform_M_boundary_assembly."); 40 0 : libmesh_assert(_M_assembly_vector[q]); 41 : 42 0 : return _M_assembly_vector[q]->boundary_assembly( context ); 43 : } 44 : 45 72 : unsigned int TransientRBAssemblyExpansion::get_n_M_terms() const 46 : { 47 74 : return cast_int<unsigned int>(_M_assembly_vector.size()); 48 : } 49 : 50 140 : void TransientRBAssemblyExpansion::attach_M_assembly(ElemAssembly * M_q_assembly) 51 : { 52 140 : _M_assembly_vector.push_back(M_q_assembly); 53 140 : } 54 : 55 70 : ElemAssembly & TransientRBAssemblyExpansion::get_M_assembly(unsigned int q) 56 : { 57 70 : libmesh_error_msg_if(q >= get_n_M_terms(), "Error: We must have q < get_n_M_terms in get_M_assembly."); 58 : 59 72 : return *_M_assembly_vector[q]; 60 : } 61 : 62 : }