rb_assembly_expansion.h
Go to the documentation of this file.
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_ASSEMBLY_EXPANSION_H
21 #define LIBMESH_RB_ASSEMBLY_EXPANSION_H
22 
23 // libMesh includes
24 #include "libmesh/elem_assembly.h"
26 
27 // C++ includes
28 #include <vector>
29 
30 
31 namespace libMesh
32 {
33 
41 // ------------------------------------------------------------
42 // RBAssemblyExpansion class definition
43 class RBAssemblyExpansion : public ReferenceCountedObject<RBAssemblyExpansion>
44 {
45 public:
46 
51 
55  virtual ~RBAssemblyExpansion() {}
56 
60  void perform_A_interior_assembly(unsigned int q,
61  FEMContext& context);
62 
66  void perform_A_boundary_assembly(unsigned int q,
67  FEMContext& context);
68 
72  void perform_F_interior_assembly(unsigned int q,
73  FEMContext& context);
74 
78  void perform_F_boundary_assembly(unsigned int q,
79  FEMContext& context);
80 
84  void perform_output_interior_assembly(unsigned int output_index,
85  unsigned int q_l,
86  FEMContext& context);
87 
91  void perform_output_boundary_assembly(unsigned int output_index,
92  unsigned int q_l,
93  FEMContext& context);
94 
99  unsigned int get_n_A_terms() const;
100 
105  unsigned int get_n_F_terms() const;
106 
110  unsigned int get_n_outputs() const;
111 
115  unsigned int get_n_output_terms(unsigned int output_index) const;
116 
121  void attach_A_assembly(ElemAssembly* Aq_assembly);
122 
127  void attach_multiple_A_assembly(std::vector<ElemAssembly*> Aq_assembly);
128 
133  void attach_F_assembly(ElemAssembly* Fq_assembly);
134 
139  void attach_multiple_F_assembly(std::vector<ElemAssembly*> Fq_assembly);
140 
146  virtual void attach_output_assembly(std::vector<ElemAssembly*> output_assembly);
147 
154  virtual void attach_output_assembly(ElemAssembly* output_assembly);
155 
159  ElemAssembly& get_A_assembly(unsigned int q);
160 
164  ElemAssembly& get_F_assembly(unsigned int q);
165 
169  ElemAssembly& get_output_assembly(unsigned int output_index, unsigned int q_l);
170 
171 private:
172 
178  std::vector<ElemAssembly*> _A_assembly_vector;
179 
184  std::vector<ElemAssembly*> _F_assembly_vector;
185 
190  std::vector< std::vector<ElemAssembly*> > _output_assembly_vector;
191 
192 };
193 
194 }
195 
196 #endif // LIBMESH_RB_ASSEMBLY_EXPANSION_H

Site Created By: libMesh Developers
Last modified: February 07 2014 16:57:07 UTC

Hosted By:
SourceForge.net Logo