libMesh
rb_theta_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_THETA_EXPANSION_H
21 #define LIBMESH_RB_THETA_EXPANSION_H
22 
23 // libMesh includes
24 #include "libmesh/libmesh_common.h"
25 #include "libmesh/reference_counted_object.h"
26 
27 // C++ includes
28 #include <vector>
29 
30 
31 namespace libMesh
32 {
33 
34 class RBTheta;
35 class RBParameters;
36 
44 class RBThetaExpansion : public ReferenceCountedObject<RBThetaExpansion>
45 {
46 public:
47 
52 
56  virtual ~RBThetaExpansion() {}
57 
63  virtual Number eval_A_theta(unsigned int q,
64  const RBParameters & mu);
65 
69  virtual Number eval_F_theta(unsigned int q,
70  const RBParameters & mu);
71 
75  virtual Number eval_output_theta(unsigned int output_index,
76  unsigned int q_l,
77  const RBParameters & mu);
78 
83  unsigned int get_n_A_terms() const;
84 
89  unsigned int get_n_F_terms() const;
90 
94  unsigned int get_n_outputs() const;
95 
99  unsigned int get_n_output_terms(unsigned int output_index) const;
100 
105  virtual void attach_A_theta(RBTheta * theta_q_a);
106 
111  virtual void attach_multiple_A_theta(std::vector<RBTheta *> theta_q_a);
112 
117  virtual void attach_F_theta(RBTheta * theta_q_f);
118 
123  virtual void attach_multiple_F_theta(std::vector<RBTheta *> theta_q_f);
124 
129  virtual void attach_output_theta(std::vector<RBTheta *> theta_q_l);
130 
135  virtual void attach_output_theta(RBTheta * theta_q_l);
136 
137 
138 private:
139 
143  std::vector<RBTheta *> _A_theta_vector;
144 
148  std::vector<RBTheta *> _F_theta_vector;
149 
153  std::vector<std::vector<RBTheta *>> _output_theta_vector;
154 
155 };
156 
157 }
158 
159 #endif // LIBMESH_RB_THETA_EXPANSION_H
virtual void attach_output_theta(std::vector< RBTheta * > theta_q_l)
Attach a vector of pointers to functor objects that define one of the outputs.
std::vector< RBTheta * > _A_theta_vector
Vector storing the pointers to the RBTheta functors for A.
virtual Number eval_A_theta(unsigned int q, const RBParameters &mu)
Evaluate theta_q_a at the current parameter.
unsigned int get_n_A_terms() const
Get Q_a, the number of terms in the affine expansion for the bilinear form.
unsigned int get_n_output_terms(unsigned int output_index) const
Get the number of affine terms associated with the specified output.
The libMesh namespace provides an interface to certain functionality in the library.
This class stores the set of RBTheta functor objects that define the "parameter-dependent expansion" ...
virtual void attach_F_theta(RBTheta *theta_q_f)
Attach a pointer to a functor object that defines one of the theta_q_a terms.
virtual Number eval_output_theta(unsigned int output_index, unsigned int q_l, const RBParameters &mu)
Evaluate theta_q_l at the current parameter.
virtual ~RBThetaExpansion()
Destructor.
std::vector< RBTheta * > _F_theta_vector
Vector storing the RBTheta functors for the affine expansion of the rhs.
unsigned int get_n_F_terms() const
Get Q_f, the number of terms in the affine expansion for the right-hand side.
std::vector< std::vector< RBTheta * > > _output_theta_vector
Vector storing the RBTheta functors for the affine expansion of the outputs.
This class is part of the rbOOmit framework.
Definition: rb_parameters.h:42
This class implements reference counting.
unsigned int get_n_outputs() const
Get n_outputs, the number output functionals.
virtual Number eval_F_theta(unsigned int q, const RBParameters &mu)
Evaluate theta_q_f at the current parameter.
This class is part of the rbOOmit framework.
Definition: rb_theta.h:46
virtual void attach_multiple_A_theta(std::vector< RBTheta * > theta_q_a)
Attach a vector of pointers to functor objects that each define one of the theta_q_a terms...
virtual void attach_A_theta(RBTheta *theta_q_a)
Attach a pointer to a functor object that defines one of the theta_q_a terms.
virtual void attach_multiple_F_theta(std::vector< RBTheta * > theta_q_f)
Attach a vector of pointers to functor objects that each define one of the theta_q_f terms...