libMesh
Loading...
Searching...
No Matches
rb_parametrized.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_PARAMETRIZED_H
21#define LIBMESH_RB_PARAMETRIZED_H
22
23// rbOOmit includes
24#include "libmesh/rb_parameters.h"
25
26// libMesh includes
27#include "libmesh/reference_counted_object.h"
28
29// C++ includes
30#include <cstddef>
31#include <vector>
32
33namespace libMesh
34{
35
45class RBParametrized : public ReferenceCountedObject<RBParametrized>
46{
47public:
48
53
61 RBParametrized (const RBParametrized &) = default;
63 virtual ~RBParametrized ();
64
69 virtual void clear ();
70
78 void initialize_parameters(const RBParameters & mu_min_in,
79 const RBParameters & mu_max_in,
80 const std::map<std::string, std::vector<Real>> & discrete_parameter_values);
81
85 void initialize_parameters(const RBParametrized & rb_parametrized);
86
90 unsigned int get_n_params() const;
91
95 unsigned int get_n_continuous_params() const;
96
100 unsigned int get_n_discrete_params() const;
101
105 const RBParameters & get_parameters() const;
106
115 bool set_parameters(const RBParameters & params);
116
121 const RBParameters & get_parameters_min() const;
122
127 const RBParameters & get_parameters_max() const;
128
132 Real get_parameter_min(const std::string & param_name) const;
133
137 Real get_parameter_max(const std::string & param_name) const;
138
142 void print_parameters() const;
143
147 void write_parameter_data_to_files(const std::string & continuous_param_file_name,
148 const std::string & discrete_param_file_name,
149 const bool write_binary_data);
150
154 void read_parameter_data_from_files(const std::string & continuous_param_file_name,
155 const std::string & discrete_param_file_name,
156 const bool read_binary_data);
157
161 bool is_discrete_parameter(const std::string & mu_name) const;
162
166 const std::map<std::string, std::vector<Real>> & get_discrete_parameter_values() const;
167
172
176 static Real get_closest_value(Real value, const std::vector<Real> & list_of_values);
177
182
183private:
184
188 void write_parameter_ranges_to_file(const std::string & file_name,
189 const bool write_binary);
190
194 void write_discrete_parameter_values_to_file(const std::string & file_name,
195 const bool write_binary_data);
196
201 void read_parameter_ranges_from_file(const std::string & file_name,
202 const bool read_binary,
203 RBParameters & param_min,
204 RBParameters & param_max);
205
209 void read_discrete_parameter_values_from_file(const std::string & file_name,
210 const bool read_binary_data,
211 std::map<std::string, std::vector<Real>> & discrete_parameter_values_in);
212
220 bool check_if_valid_params(const RBParameters & params) const;
221
227 static bool is_value_in_list(Real value, const std::vector<Real> & list_of_values, Real tol);
228
229 //--------------- PRIVATE DATA MEMBERS ---------------//
230
235
240
246
250 std::map<std::string, std::vector<Real>> _discrete_parameter_values;
251};
252
253} // namespace libMesh
254
255
256#endif // LIBMESH_RB_PARAMETRIZED_H
This class is part of the rbOOmit framework.
This class is part of the rbOOmit framework.
void write_parameter_data_to_files(const std::string &continuous_param_file_name, const std::string &discrete_param_file_name, const bool write_binary_data)
Write out the parameter ranges to files.
const RBParameters & get_parameters_max() const
Get an RBParameters object that specifies the maximum allowable value for each parameter.
const RBParameters & get_parameters() const
Get the current parameters.
unsigned int get_n_params() const
Get the number of parameters.
RBParametrized(const RBParametrized &)=default
RBParametrized(RBParametrized &&)=default
Special functions.
bool set_parameters(const RBParameters &params)
Set the current parameters to params The parameters are checked for validity; an error is thrown if t...
RBParameters parameters
Vector storing the current parameters.
static Real get_closest_value(Real value, const std::vector< Real > &list_of_values)
void write_parameter_ranges_to_file(const std::string &file_name, const bool write_binary)
Write out the parameter ranges to file.
virtual void clear()
Clear all the data structures associated with the system.
void read_parameter_data_from_files(const std::string &continuous_param_file_name, const std::string &discrete_param_file_name, const bool read_binary_data)
Read in the parameter ranges from files.
const std::map< std::string, std::vector< Real > > & get_discrete_parameter_values() const
Get a const reference to the discrete parameter values.
void initialize_parameters(const RBParameters &mu_min_in, const RBParameters &mu_max_in, const std::map< std::string, std::vector< Real > > &discrete_parameter_values)
Initialize the parameter ranges and set current_parameters.
RBParameters parameters_min
Vectors that define the ranges (min and max) for the parameters.
static bool is_value_in_list(Real value, const std::vector< Real > &list_of_values, Real tol)
Helper function to check if the specified value is in the list of values (within a tolerance given by...
void write_discrete_parameter_values_to_file(const std::string &file_name, const bool write_binary_data)
Write out the discrete parameter values to file.
std::map< std::string, std::vector< Real > > _discrete_parameter_values
Map that defines the allowable values of any discrete parameters.
Real get_parameter_max(const std::string &param_name) const
Get maximum allowable value of parameter param_name.
void print_discrete_parameter_values() const
Print out all the discrete parameter values.
const RBParameters & get_parameters_min() const
Get an RBParameters object that specifies the minimum allowable value for each parameter.
Real get_parameter_min(const std::string &param_name) const
Get minimum allowable value of parameter param_name.
void print_parameters() const
Print the current parameters.
void read_discrete_parameter_values_from_file(const std::string &file_name, const bool read_binary_data, std::map< std::string, std::vector< Real > > &discrete_parameter_values_in)
Read in the discrete parameter values from file, if we have any.
bool check_if_valid_params(const RBParameters &params) const
Helper function to check that params is valid:
bool verbose_mode
Public boolean to toggle verbose mode.
void read_parameter_ranges_from_file(const std::string &file_name, const bool read_binary, RBParameters &param_min, RBParameters &param_max)
Read in the parameter ranges from file.
unsigned int get_n_continuous_params() const
Get the number of continuous parameters.
RBParametrized & operator=(RBParametrized &&)=default
bool parameters_initialized
Flag indicating whether the parameters have been initialized.
bool is_discrete_parameter(const std::string &mu_name) const
Is parameter mu_name discrete?
unsigned int get_n_discrete_params() const
Get the number of discrete parameters.
This class implements reference counting.
The libMesh namespace provides an interface to certain functionality in the library.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
static const bool value
Definition xdr_io.C:55