rb_scm_construction.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_SCM_CONSTRUCTION_H
21 #define LIBMESH_RB_SCM_CONSTRUCTION_H
22 
23 // Configuration data
24 #include "libmesh/libmesh_config.h"
25 
26 // Currently, the RBSCMConstruction is only usable
27 // if SLEPc is enabled.
28 #if defined(LIBMESH_HAVE_SLEPC) && (LIBMESH_HAVE_GLPK)
29 
30 // rbOOmit includes
32 
33 // libMesh includes
35 
36 // C++ includes
37 
38 namespace libMesh
39 {
40 
41 // Forward declarations
42 class RBSCMEvaluation;
43 
53 class RBSCMConstruction : public RBConstructionBase<CondensedEigenSystem>
54 {
55 public:
56 
62  const std::string & name_in,
63  const unsigned int number_in);
64 
68  virtual ~RBSCMConstruction ();
69 
74 
79 
84  virtual void clear () override;
85 
89  void set_rb_scm_evaluation(RBSCMEvaluation & rb_scm_eval_in);
90 
95 
100 
105  virtual void resize_SCM_vectors ();
106 
111  virtual void process_parameters_file(const std::string & parameters_filename);
112 
116  virtual void print_info();
117 
127  virtual void set_eigensolver_properties(int) {}
128 
133  void set_RB_system_name(const std::string & new_name)
134  { RB_system_name = new_name; }
135 
140  void set_SCM_training_tolerance(Real SCM_training_tolerance_in) { this->SCM_training_tolerance = SCM_training_tolerance_in; }
141 
146  virtual void perform_SCM_greedy();
147 
156  virtual void attach_deflation_space() {}
157 
158 protected:
159 
164  virtual void add_scaled_symm_Aq(unsigned int q_a, Number scalar);
165 
171  virtual void load_matrix_B();
172 
176  virtual void compute_SCM_bounding_box();
177 
183  virtual void evaluate_stability_constant();
184 
189  virtual void enrich_C_J(unsigned int new_C_J_index);
190 
197  virtual std::pair<unsigned int,Real> compute_SCM_bounds_on_training_set();
198 
204 
209  Number Aq_inner_product(unsigned int q,
210  const NumericVector<Number> & v,
211  const NumericVector<Number> & w);
212 
218  virtual Real SCM_greedy_error_indicator(Real LB, Real UB) { return fabs(UB-LB)/fabs(UB); }
219 
220  //----------- PROTECTED DATA MEMBERS -----------//
221 
226 
230  std::string RB_system_name;
231 
232 private:
233 
239 };
240 
241 } // namespace libMesh
242 
243 #endif // LIBMESH_HAVE_SLEPC && LIBMESH_HAVE_GLPK
244 
245 #endif // LIBMESH_RB_SCM_CONSTRUCTION_H
Manages multiples systems of equations.
Number Aq_inner_product(unsigned int q, const NumericVector< Number > &v, const NumericVector< Number > &w)
virtual void add_scaled_symm_Aq(unsigned int q_a, Number scalar)
virtual void enrich_C_J(unsigned int new_C_J_index)
void set_rb_scm_evaluation(RBSCMEvaluation &rb_scm_eval_in)
Number B_inner_product(const NumericVector< Number > &v, const NumericVector< Number > &w) const
virtual void clear() override
virtual void process_parameters_file(const std::string &parameters_filename)
virtual void evaluate_stability_constant()
virtual Real SCM_greedy_error_indicator(Real LB, Real UB)
virtual void set_eigensolver_properties(int)
RBSCMConstruction(EquationSystems &es, const std::string &name_in, const unsigned int number_in)
virtual void perform_SCM_greedy()
RBSCMEvaluation & get_rb_scm_evaluation()
virtual void compute_SCM_bounding_box()
void set_SCM_training_tolerance(Real SCM_training_tolerance_in)
virtual void load_matrix_B()
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
virtual std::pair< unsigned int, Real > compute_SCM_bounds_on_training_set()
RBConstructionBase< CondensedEigenSystem > Parent
virtual void resize_SCM_vectors()
RBThetaExpansion & get_rb_theta_expansion()
void set_RB_system_name(const std::string &new_name)