libMesh
src
reduced_basis
transient_rb_assembly_expansion.C
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
// rbOOmit includes
21
#include "libmesh/transient_rb_assembly_expansion.h"
22
#include "libmesh/elem_assembly.h"
23
24
namespace
libMesh
25
{
26
27
// ------------------------------------------------------------
28
// TransientRBAssemblyExpansion implementation
29
30
TransientRBAssemblyExpansion::TransientRBAssemblyExpansion
()
31
{
32
}
33
34
void
TransientRBAssemblyExpansion::perform_M_interior_assembly
(
unsigned
int
q,
35
FEMContext
& context)
36
{
37
if
(q >=
get_n_M_terms
())
38
libmesh_error_msg(
"Error: We must have q < get_n_M_terms in perform_M_interior_assembly."
);
39
40
libmesh_assert
(
_M_assembly_vector
[q]);
41
42
return
_M_assembly_vector
[q]->interior_assembly( context );
43
}
44
45
void
TransientRBAssemblyExpansion::perform_M_boundary_assembly
(
unsigned
int
q,
46
FEMContext
& context)
47
{
48
if
(q >=
get_n_M_terms
())
49
libmesh_error_msg(
"Error: We must have q < get_n_M_terms in perform_M_boundary_assembly."
);
50
51
libmesh_assert
(
_M_assembly_vector
[q]);
52
53
return
_M_assembly_vector
[q]->boundary_assembly( context );
54
}
55
56
unsigned
int
TransientRBAssemblyExpansion::get_n_M_terms
()
const
57
{
58
return
cast_int<unsigned int>(
_M_assembly_vector
.size());
59
}
60
61
void
TransientRBAssemblyExpansion::attach_M_assembly
(
ElemAssembly
* M_q_assembly)
62
{
63
_M_assembly_vector
.push_back(M_q_assembly);
64
}
65
66
ElemAssembly
&
TransientRBAssemblyExpansion::get_M_assembly
(
unsigned
int
q)
67
{
68
if
(q >=
get_n_M_terms
())
69
libmesh_error_msg(
"Error: We must have q < get_n_M_terms in get_M_assembly."
);
70
71
return
*
_M_assembly_vector
[q];
72
}
73
74
}
libMesh::TransientRBAssemblyExpansion::get_n_M_terms
unsigned int get_n_M_terms() const
Get Q_m, the number of terms in the affine expansion for the bilinear form.
Definition:
transient_rb_assembly_expansion.C:56
libMesh::TransientRBAssemblyExpansion::perform_M_interior_assembly
void perform_M_interior_assembly(unsigned int q, FEMContext &context)
Perform the specified M interior assembly.
Definition:
transient_rb_assembly_expansion.C:34
libMesh
The libMesh namespace provides an interface to certain functionality in the library.
Definition:
factoryfunction.C:55
libMesh::TransientRBAssemblyExpansion::get_M_assembly
ElemAssembly & get_M_assembly(unsigned int q)
Return a reference to the specified M_assembly object.
Definition:
transient_rb_assembly_expansion.C:66
libMesh::TransientRBAssemblyExpansion::attach_M_assembly
void attach_M_assembly(ElemAssembly *A_q_assembly)
Attach ElemAssembly object for the time-derivative (both interior and boundary assembly).
Definition:
transient_rb_assembly_expansion.C:61
libMesh::libmesh_assert
libmesh_assert(ctx)
libMesh::TransientRBAssemblyExpansion::perform_M_boundary_assembly
void perform_M_boundary_assembly(unsigned int q, FEMContext &context)
Perform the specified M boundary assembly.
Definition:
transient_rb_assembly_expansion.C:45
libMesh::TransientRBAssemblyExpansion::_M_assembly_vector
std::vector< ElemAssembly * > _M_assembly_vector
Vectors storing the function pointers to the assembly routines for the time-derivative operators,...
Definition:
transient_rb_assembly_expansion.h:85
libMesh::TransientRBAssemblyExpansion::TransientRBAssemblyExpansion
TransientRBAssemblyExpansion()
Constructor.
Definition:
transient_rb_assembly_expansion.C:30
libMesh::ElemAssembly
ElemAssembly provides a per-element (interior and boundary) assembly functionality.
Definition:
elem_assembly.h:38
libMesh::FEMContext
This class provides all data required for a physics package (e.g.
Definition:
fem_context.h:62
Generated on Sat Jan 25 2020 12:07:04 for libMesh by
1.8.16