DOLFIN
DOLFIN C++ interface
|
18 #ifndef __PARAMETERS_H
19 #define __PARAMETERS_H
24 #include <boost/optional.hpp>
25 #include <boost/variant.hpp>
26 #include "Parameter.h"
27 #include <dolfin/log/log.h>
31 namespace program_options
34 class options_description;
99 explicit Parameters(std::string key=
"parameters");
108 std::string
name()
const;
111 void rename(std::string key);
128 template<
typename T>
void add(std::string key)
135 "Parameter \"%s.%s\" already defined",
136 this->
name().c_str(), key.c_str());
141 if (std::is_same<T, bool>::value)
142 _parameters.insert({key,
Parameter(key, Parameter::Type::Bool)});
143 else if (std::is_same<T, std::string>::value)
144 _parameters.insert({key,
Parameter(key, Parameter::Type::String)});
145 else if (std::is_integral<T>::value)
146 _parameters.insert({key,
Parameter(key, Parameter::Type::Int)});
147 else if (std::is_floating_point<T>::value)
148 _parameters.insert({key,
Parameter(key, Parameter::Type::Float)});
153 "Parameter type not supported");
160 template<
typename T>
void add(std::string key, T min, T max)
167 "Parameter \"%s.%s\" already defined",
168 this->
name().c_str(), key.c_str());
172 _parameters.insert({key,
Parameter(key, min, max)});
178 void add(std::string key, std::set<std::string> valid_values)
185 "Parameter \"%s.%s\" already defined",
186 this->
name().c_str(), key.c_str());
190 _parameters.insert({key,
Parameter(key, valid_values)});
194 void add(std::string key,
int value);
197 void add(std::string key,
int value,
int min_value,
int max_value);
200 void add(std::string key,
double value);
203 void add(std::string key,
double value,
double min_value,
double max_value);
206 void add(std::string key, std::string value);
209 void add(std::string key,
const char* value);
212 void add(std::string key, std::string value, std::set<std::string> range);
215 void add(std::string key,
const char* value, std::set<std::string> range);
218 void add(std::string key,
bool value);
224 void remove(std::string key);
227 virtual void parse(
int argc,
char* argv[]);
252 bool has_key(std::string key)
const;
267 std::string
str(
bool verbose)
const;
288 add_parameter_set_to_po(boost::program_options::options_description& desc,
290 std::string base_name=
"")
const;
293 void read_vm(boost::program_options::variables_map& vm,
295 std::string base_name=
"");
301 std::map<std::string, boost::variant<Parameter, Parameters>> _parameters;
306 std::size_t
size()
const {
return _parameters.size(); }
309 std::map<std::string, boost::variant<Parameter, Parameters>>::const_iterator
begin()
const
310 {
return _parameters.cbegin(); }
314 std::map<std::string, boost::variant<Parameter, Parameters>>::const_iterator
end()
const
315 {
return _parameters.cend(); }
Parameter & operator[](std::string key)
Return parameter for given key.
Definition: Parameters.cpp:290
void add_unset(std::string key, Parameter::Type type)
Add unset parameter of specified type.
Definition: Parameters.cpp:70
std::size_t size() const
Interface for pybind11 iterators.
Definition: Parameters.h:306
bool has_parameter(std::string key) const
Check if parameter set has given parameter.
Definition: Parameters.cpp:386
void parse_petsc(int argc, char *argv[])
Parse filtered options (only PETSc options)
Definition: Parameters.cpp:502
Definition: Parameters.h:94
void add(std::string key)
Definition: Parameters.h:128
virtual ~Parameters()
Destructor.
Definition: Parameters.cpp:40
void remove(std::string key)
Remove parameter or parameter set with given key.
Definition: Parameters.cpp:223
boost::optional< Parameters & > find_parameter_set(std::string key)
Return parameter set, if present.
Definition: Parameters.cpp:622
bool has_key(std::string key) const
Check if parameter set has key (parameter or nested parameter set)
Definition: Parameters.cpp:381
void rename(std::string key)
Rename parameter set.
Definition: Parameters.cpp:55
Parameters & operator()(std::string key)
Return nested parameter set for given key.
Definition: Parameters.cpp:330
Base class for parameters.
Definition: Parameter.h:33
void add(std::string key, std::set< std::string > valid_values)
Definition: Parameters.h:178
std::string str(bool verbose) const
Return informal string representation (pretty-print)
Definition: Parameters.cpp:416
void clear()
Clear parameter set.
Definition: Parameters.cpp:61
bool has_parameter_set(std::string key) const
Check if parameter set has given nested parameter set.
Definition: Parameters.cpp:392
void parse_common(int argc, char *argv[])
Parse filtered options (everything except PETSc options)
Definition: Parameters.cpp:458
const Parameters & operator=(const Parameters ¶meters)
Assignment operator.
Definition: Parameters.cpp:370
Type
Enum for the parameter type.
Definition: Parameter.h:54
std::map< std::string, boost::variant< Parameter, Parameters > >::const_iterator begin() const
Interface for pybind11 iterators.
Definition: Parameters.h:309
void get_parameter_set_keys(std::vector< std::string > &keys) const
Return a vector of parameter set keys.
Definition: Parameters.cpp:407
void update(const Parameters ¶meters)
Update parameters with another set of parameters.
Definition: Parameters.cpp:245
std::string name() const
Return name for parameter set.
Definition: Parameters.cpp:50
std::map< std::string, boost::variant< Parameter, Parameters > >::const_iterator end() const
Interface for pybind11 iterators.
Definition: Parameters.h:314
void dolfin_error(std::string location, std::string task, std::string reason,...)
Definition: log.cpp:129
virtual void parse(int argc, char *argv[])
Parse parameters from command-line.
Definition: Parameters.cpp:239
void get_parameter_keys(std::vector< std::string > &keys) const
Return a vector of parameter keys.
Definition: Parameters.cpp:398
Parameters(std::string key="parameters")
Create empty parameter set.
Definition: Parameters.cpp:34
GlobalParameters parameters
The global parameter database.
Definition: GlobalParameters.cpp:32
boost::optional< Parameter & > find_parameter(std::string key)
Return parameter, if present.
Definition: Parameters.cpp:611
void add(std::string key, T min, T max)
Definition: Parameters.h:160
Parameters empty_parameters("empty")
Default empty parameters.
Definition: Parameters.h:321