|
Reference documentation for deal.II version 9.2.0
|
\(\newcommand{\dealvcentcolon}{\mathrel{\mathop{:}}}\)
\(\newcommand{\dealcoloneq}{\dealvcentcolon\mathrel{\mkern-1.2mu}=}\)
\(\newcommand{\jump}[1]{\left[\!\left[ #1 \right]\!\right]}\)
\(\newcommand{\average}[1]{\left\{\!\left\{ #1 \right\}\!\right\}}\)
Go to the documentation of this file.
16 #ifndef dealii_patterns_h
17 #define dealii_patterns_h
34 #include <boost/archive/basic_archive.hpp>
35 #include <boost/core/demangle.hpp>
36 #include <boost/property_tree/ptree_fwd.hpp>
37 #include <boost/property_tree/ptree_serialization.hpp>
38 #include <boost/serialization/split_member.hpp>
48 #include <type_traits>
49 #include <unordered_map>
50 #include <unordered_set>
92 match(
const std::string &test_string)
const = 0;
134 virtual std::unique_ptr<PatternBase>
159 std::unique_ptr<PatternBase>
227 match(
const std::string &test_string)
const override;
242 virtual std::unique_ptr<PatternBase>
243 clone()
const override;
250 static std::unique_ptr<Integer>
323 match(
const std::string &test_string)
const override;
338 virtual std::unique_ptr<PatternBase>
339 clone()
const override;
348 static std::unique_ptr<Double>
397 match(
const std::string &test_string)
const override;
412 virtual std::unique_ptr<PatternBase>
413 clone()
const override;
427 static std::unique_ptr<Selection>
497 match(
const std::string &test_string)
const override;
511 virtual std::unique_ptr<PatternBase>
512 clone()
const override;
519 static std::unique_ptr<List>
540 <<
"The values " << arg1 <<
" and " << arg2
541 <<
" do not form a valid range.");
620 match(
const std::string &test_string)
const override;
634 virtual std::unique_ptr<PatternBase>
635 clone()
const override;
642 static std::unique_ptr<Map>
687 <<
"The values " << arg1 <<
" and " << arg2
688 <<
" do not form a valid range.");
785 Tuple(
const std::vector<std::unique_ptr<PatternBase>> &
patterns,
793 Tuple(
const std::vector<std::unique_ptr<PatternBase>> &
patterns,
804 template <
class... PatternTypes>
814 template <
class... PatternTypes>
835 match(
const std::string &test_string)
const override;
849 virtual std::unique_ptr<PatternBase>
850 clone()
const override;
857 static std::unique_ptr<Tuple>
883 std::vector<std::unique_ptr<PatternBase>>
patterns;
920 match(
const std::string &test_string)
const override;
935 virtual std::unique_ptr<PatternBase>
936 clone()
const override;
943 static std::unique_ptr<MultipleSelection>
964 <<
"A comma was found at position " << arg1
965 <<
" of your input string, but commas are not allowed here.");
1004 virtual std::unique_ptr<PatternBase>
1005 clone()
const override;
1012 static std::unique_ptr<Bool>
1039 match(
const std::string &test_string)
const override;
1053 virtual std::unique_ptr<PatternBase>
1054 clone()
const override;
1061 static std::unique_ptr<Anything>
1116 match(
const std::string &test_string)
const override;
1130 virtual std::unique_ptr<PatternBase>
1131 clone()
const override;
1143 static std::unique_ptr<FileName>
1179 match(
const std::string &test_string)
const override;
1193 virtual std::unique_ptr<PatternBase>
1194 clone()
const override;
1201 static std::unique_ptr<DirectoryName>
1304 template <
class T,
class Enable =
void>
1316 static std::unique_ptr<Patterns::PatternBase>
1331 const std::unique_ptr<Patterns::PatternBase> &p =
1345 const std::unique_ptr<Patterns::PatternBase> &p =
1369 template <
typename T>
1400 template <
typename T>
1415 <<
"The string " << arg1 <<
" does not match the pattern \""
1425 template <
class... PatternTypes>
1428 Tuple(std::string(separator), ps...)
1433 template <
class... PatternTypes>
1435 : separator(separator)
1438 "Not all of the input arguments of this function "
1439 "are derived from PatternBase");
1440 static_assert(
sizeof...(ps) > 0,
1441 "The number of PatternTypes must be greater than zero!");
1442 const auto pattern_pointers = {(
static_cast<const PatternBase *
>(&ps))...};
1443 for (
const auto p : pattern_pointers)
1449 template <
class... PatternTypes>
1452 Tuple(std::string(
":"), ps...)
1487 template <
class T,
class Enable =
void>
1498 typename std::enable_if<std::is_arithmetic<T>::value>::type>
1500 template <
typename Dummy = T>
1504 std::unique_ptr<Patterns::PatternBase>>::type
1507 return std_cxx14::make_unique<Patterns::Bool>();
1510 template <
typename Dummy = T>
1515 std::unique_ptr<Patterns::PatternBase>>::type
1518 return std_cxx14::make_unique<Patterns::Integer>(
1522 template <
typename Dummy = T>
1527 std::unique_ptr<Patterns::PatternBase>>::type
1530 return std_cxx14::make_unique<Patterns::Double>(
1536 const std::unique_ptr<Patterns::PatternBase> &p =
1539 std::stringstream str;
1542 str << static_cast<int>(
value);
1544 str << (static_cast<bool>(
value) ?
"true" :
"false");
1554 const std::unique_ptr<Patterns::PatternBase> &p =
1560 value = (s ==
"true");
1563 std::istringstream is(s);
1584 ExcMessage(
"Failed to convert from \"" + s +
"\" to the type \"" +
1585 boost::core::demangle(
typeid(
T).name()) +
"\""));
1594 {
",",
";",
"|",
"%"}};
1596 {
":",
"=",
"@",
"#"}};
1599 template <
typename T>
1602 template <
typename T, std::
size_t N>
1605 template <
typename... Args>
1608 template <
typename... Args>
1611 template <
typename... Args>
1614 template <
typename... Args>
1617 template <
typename... Args>
1620 template <
typename... Args>
1623 template <
typename... Args>
1628 template <
typename T>
1631 template <
class Key,
class T,
class Compare,
class Allocator>
1635 template <
class Key,
class T,
class Compare,
class Allocator>
1639 template <
class Key,
class T,
class Hash,
class KeyEqual,
class Allocator>
1641 std::unordered_map<Key, T, Hash, KeyEqual, Allocator>> : std::true_type
1643 template <
class Key,
class T,
class Hash,
class KeyEqual,
class Allocator>
1645 std::unordered_multimap<Key, T, Hash, KeyEqual, Allocator>>
1652 template <
typename T>
1659 template <
typename T>
1676 template <
class T1,
class T2,
class... Types>
1681 max_list_rank<T2, Types...>());
1692 template <
class T1,
class T2,
class... Types>
1697 max_map_rank<T2, Types...>());
1704 typename std::enable_if<is_list_compatible<T>::value>::type>
1716 typename std::enable_if<is_map_compatible<T>::value>::type>
1719 max_list_rank<typename T::key_type, typename T::mapped_type>() + 1;
1721 max_map_rank<typename T::key_type, typename T::mapped_type>() + 1;
1725 template <
int rank,
int dim,
class Number>
1732 template <
int dim,
class Number>
1737 template <
class Number>
1761 template <
class Key,
class Value>
1772 template <
class... Types>
1783 typename std::enable_if<is_list_compatible<T>::value>::type>
1785 static std::unique_ptr<Patterns::PatternBase>
1789 "Cannot use this class for non List-compatible types.");
1790 return std_cxx14::make_unique<Patterns::List>(
1800 const std::unique_ptr<Patterns::PatternBase> &pattern =
1805 ExcMessage(
"I need a List pattern to convert a "
1806 "string to a List type."));
1807 auto base_p = p->get_base_pattern().clone();
1808 std::vector<std::string> vec(t.size());
1811 for (
const auto &entry : t)
1817 for (
unsigned int i = 1; i < vec.size(); ++i)
1818 s += p->get_separator() +
" " + vec[i];
1826 const std::unique_ptr<Patterns::PatternBase> &pattern =
1833 ExcMessage(
"I need a List pattern to convert a string "
1834 "to a List type."));
1836 auto base_p = p->get_base_pattern().clone();
1840 for (
const auto &str : v)
1851 typename std::enable_if<is_map_compatible<T>::value>::type>
1853 static std::unique_ptr<Patterns::PatternBase>
1857 "Cannot use this class for non List-compatible types.");
1859 "Cannot use this class for non Map-compatible types.");
1860 return std_cxx14::make_unique<Patterns::Map>(
1872 const std::unique_ptr<Patterns::PatternBase> &pattern =
1875 auto p =
dynamic_cast<const Patterns::Map *
>(pattern.get());
1877 ExcMessage(
"I need a Map pattern to convert a string to "
1878 "a Map compatible type."));
1879 auto key_p = p->get_key_pattern().clone();
1880 auto val_p = p->get_value_pattern().clone();
1881 std::vector<std::string> vec(t.size());
1884 for (
const auto &ti : t)
1887 p->get_key_value_separator() +
1893 for (
unsigned int i = 1; i < vec.size(); ++i)
1894 s += p->get_separator() +
" " + vec[i];
1902 const std::unique_ptr<Patterns::PatternBase> &pattern =
1907 auto p =
dynamic_cast<const Patterns::Map *
>(pattern.get());
1909 ExcMessage(
"I need a Map pattern to convert a "
1910 "string to a Map compatible type."));
1912 auto key_p = p->get_key_pattern().clone();
1913 auto val_p = p->get_value_pattern().clone();
1917 for (
const auto &str : v)
1922 t.insert(std::make_pair(
1932 template <
int rank,
int dim,
class Number>
1936 static std::unique_ptr<Patterns::PatternBase>
1940 "Cannot use this class for non List-compatible types.");
1941 return std_cxx14::make_unique<Patterns::List>(
1951 const std::unique_ptr<Patterns::PatternBase> &pattern =
1956 ExcMessage(
"I need a List pattern to convert a string "
1957 "to a List compatible type."));
1958 auto base_p = p->get_base_pattern().clone();
1959 std::vector<std::string> vec(dim);
1961 for (
unsigned int i = 0; i < dim; ++i)
1967 for (
unsigned int i = 1; i < vec.size(); ++i)
1968 s += p->get_separator() +
" " + vec[i];
1976 const std::unique_ptr<Patterns::PatternBase> &pattern =
1983 ExcMessage(
"I need a List pattern to convert a string "
1984 "to a List compatible type."));
1986 auto base_p = p->get_base_pattern().clone();
1991 for (
const auto &str : v)
1999 template <
int dim,
class Number>
2004 static std::unique_ptr<Patterns::PatternBase>
2012 const std::unique_ptr<Patterns::PatternBase> &pattern =
2021 const std::unique_ptr<Patterns::PatternBase> &pattern =
2030 struct Convert<std::unique_ptr<FunctionParser<dim>>>
2032 using T = std::unique_ptr<FunctionParser<dim>>;
2034 static std::unique_ptr<Patterns::PatternBase>
2038 "Cannot use this class for non List-compatible types.");
2040 return std_cxx14::make_unique<Patterns::List>(
2050 const std::unique_ptr<Patterns::PatternBase> &pattern =
2055 ExcMessage(
"I need a List pattern to convert a string "
2056 "to a List compatible type."));
2058 const auto &expressions = t->get_expressions();
2059 if (expressions.size() == 0)
2060 return std::string();
2062 std::string s = expressions[0];
2063 for (
unsigned int i = 1; i < expressions.size(); ++i)
2064 s = s + p->get_separator() + expressions[i];
2072 const std::unique_ptr<Patterns::PatternBase> &pattern =
2079 ExcMessage(
"I need a List pattern to convert a string "
2080 "to a List compatible type."));
2082 const auto expressions =
2085 T t = std_cxx14::make_unique<FunctionParser<dim>>(expressions.size());
2086 const std::string var =
2089 t->initialize(var, expressions, constants,
true);
2100 static std::unique_ptr<Patterns::PatternBase>
2108 const std::unique_ptr<Patterns::PatternBase> &pattern =
2111 std::vector<bool> mask(t.
size());
2112 for (
unsigned int i = 0; i < t.
size(); ++i)
2120 const std::unique_ptr<Patterns::PatternBase> &pattern =
2129 template <
class Number>
2132 using T = std::complex<Number>;
2134 static std::unique_ptr<Patterns::PatternBase>
2138 "Cannot use this class for non List-compatible types.");
2139 return std_cxx14::make_unique<Patterns::List>(
2149 const std::unique_ptr<Patterns::PatternBase> &pattern =
2154 ExcMessage(
"I need a List pattern to convert a string "
2155 "to a List compatible type."));
2157 auto base_p = p->get_base_pattern().clone();
2160 p->get_separator() +
" " +
2172 const std::unique_ptr<Patterns::PatternBase> &pattern =
2179 ExcMessage(
"I need a List pattern to convert a string "
2180 "to a List compatible type."));
2182 auto base_p = p->get_base_pattern().clone();
2196 using T = std::string;
2198 static std::unique_ptr<Patterns::PatternBase>
2201 return std_cxx14::make_unique<Patterns::Anything>();
2206 const std::unique_ptr<Patterns::PatternBase> &pattern =
2215 const std::unique_ptr<Patterns::PatternBase> &pattern =
2224 template <
class Key,
class Value>
2227 using T = std::pair<Key, Value>;
2229 static std::unique_ptr<Patterns::PatternBase>
2233 "Cannot use this class for non Map-compatible types.");
2234 return std_cxx14::make_unique<Patterns::Tuple>(
2242 const std::unique_ptr<Patterns::PatternBase> &pattern =
2245 std::tuple<Key, Value> m(t);
2253 const std::unique_ptr<Patterns::PatternBase> &pattern =
2256 std::tuple<Key, Value> m;
2258 return std::make_pair(std::get<0>(m), std::get<1>(m));
2263 template <
class... Args>
2266 using T = std::tuple<Args...>;
2268 static std::unique_ptr<Patterns::PatternBase>
2272 "Cannot use this class for non tuple-compatible types.");
2273 return std_cxx14::make_unique<Patterns::Tuple>(
2280 const std::unique_ptr<Patterns::PatternBase> &pattern =
2285 ExcMessage(
"I need a Tuple pattern to convert a tuple "
2290 for (
unsigned int i = 0; i < string_array.size(); ++i)
2291 str += (i ?
" " + p->get_separator() +
" " :
"") + string_array[i];
2298 const std::unique_ptr<Patterns::PatternBase> &pattern =
2305 ExcMessage(
"I need a Tuple pattern to convert a string "
2306 "to a tuple type."));
2314 template <std::size_t...
U>
2318 std_cxx14::index_sequence<U...>)
2335 template <std::size_t...
U>
2339 std_cxx14::index_sequence<U...>)
2341 return std::make_tuple(
2358 template <
typename T>
2366 template <
typename T>
virtual bool match(const std::string &test_string) const override
virtual std::unique_ptr< PatternBase > clone() const =0
static const char * description_init
virtual bool match(const std::string &test_string) const override
static std::unique_ptr< Integer > create(const std::string &description)
static std::unique_ptr< Map > create(const std::string &description)
static const double min_double_value
static T to_value(const std::string &s, const std::unique_ptr< Patterns::PatternBase > &pattern=Convert< T >::to_pattern())
static const char * description_init
const std::string & get_separator() const
static std::array< std::string, std::tuple_size< T >::value > to_string_internal_2(const T &t, const Patterns::Tuple &pattern)
virtual bool match(const std::string &test_string) const override
static T to_value(const std::string &s, const std::unique_ptr< Patterns::PatternBase > &pattern=Convert< T >::to_pattern())
static std::string to_string(const T &t, const std::unique_ptr< Patterns::PatternBase > &pattern=Convert< T >::to_pattern())
virtual std::string description(const OutputStyle style=Machine) const override
void to_value(const std::string &s, T &t)
const std::string & get_separator() const
static const unsigned int max_int_value
static std::unique_ptr< Patterns::PatternBase > to_pattern()
FileName(const FileType type=input)
static std::unique_ptr< Patterns::PatternBase > to_pattern()
std::size_t memory_consumption() const override
static T to_value(const std::string &s, const std::unique_ptr< Patterns::PatternBase > &pattern=Convert< T >::to_pattern())
static T to_value(const std::string &s, const std::unique_ptr< Patterns::PatternBase > &pattern=Convert< T >::to_pattern())
static constexpr const bool value
std::unique_ptr< PatternBase > value_pattern
static std::unique_ptr< FileName > create(const std::string &description)
const PatternBase & get_pattern(const unsigned int i) const
static const double max_double_value
virtual bool match(const std::string &test_string) const override
static std::unique_ptr< MultipleSelection > create(const std::string &description)
static const int min_int_value
std::unique_ptr< PatternBase > pattern_factory(const std::string &description)
virtual bool match(const std::string &test_string) const override
static std::unique_ptr< Patterns::PatternBase > to_pattern()
std::string to_string(const T &t)
Integer(const int lower_bound=min_int_value, const int upper_bound=max_int_value)
static std::string to_string(const T &t, const std::unique_ptr< Patterns::PatternBase > &pattern=Convert< T >::to_pattern())
virtual std::unique_ptr< PatternBase > clone() const override
virtual std::string description(const OutputStyle style=Machine) const override
static std::string to_string(const T &value, const std::unique_ptr< Patterns::PatternBase > &p=Convert< T >::to_pattern())
virtual std::unique_ptr< PatternBase > clone() const override
static std::string default_variable_names()
const PatternBase & get_value_pattern() const
__global__ void set(Number *val, const Number s, const size_type N)
const unsigned int min_elements
static const unsigned int max_int_value
Tuple(const std::vector< std::unique_ptr< PatternBase >> &patterns, const std::string &separator=":")
std::size_t memory_consumption() const override
virtual std::unique_ptr< PatternBase > clone() const override
virtual std::string description(const OutputStyle style=Machine) const override
const std::string & get_separator() const
virtual std::string description(const OutputStyle style=Machine) const override
virtual ~PatternBase()=default
static const char * description_init
static std::array< std::string, std::tuple_size< T >::value > to_string_internal_1(const T &t, const Patterns::Tuple &pattern, std_cxx14::index_sequence< U... >)
static std::unique_ptr< Patterns::PatternBase > to_pattern()
static T to_value(const std::string &s, const std::unique_ptr< Patterns::PatternBase > &pattern=Convert< T >::to_pattern())
#define DEAL_II_ENABLE_EXTRA_DIAGNOSTICS
static std::string to_string(const T &t, const std::unique_ptr< Patterns::PatternBase > &pattern=Convert< T >::to_pattern())
static ::ExceptionBase & ExcInvalidRange(int arg1, int arg2)
unsigned int size() const
static T to_value(const std::string &s, const std::unique_ptr< Patterns::PatternBase > &p=Convert< T >::to_pattern())
std::size_t memory_consumption() const override
static T to_value(const std::string &s, const std::unique_ptr< Patterns::PatternBase > &pattern=Convert< T >::to_pattern())
virtual std::string description(const OutputStyle style=Machine) const override
static const char * description_init
const std::string & get_key_value_separator() const
static ::ExceptionBase & ExcInvalidRange(int arg1, int arg2)
static std::unique_ptr< Patterns::PatternBase > to_pattern()
static std::string to_string(const T &t, const std::unique_ptr< Patterns::PatternBase > &pattern=Convert< T >::to_pattern())
static const char * description_init
static T to_value_internal_2(const std::vector< std::string > &s, const Patterns::Tuple &pattern)
std::map< std::string, double > ConstMap
static std::unique_ptr< Selection > create(const std::string &description)
Double(const double lower_bound=min_double_value, const double upper_bound=max_double_value)
static ::ExceptionBase & ExcMessage(std::string arg1)
static const char * description_init
static std::unique_ptr< Tuple > create(const std::string &description)
virtual std::string description(const OutputStyle style=Machine) const override
static constexpr int list_rank
static constexpr const bool value
static T to_value(const std::string &s, const std::unique_ptr< Patterns::PatternBase > &pattern=Convert< T >::to_pattern())
List(const PatternBase &base_pattern, const unsigned int min_elements=0, const unsigned int max_elements=max_int_value, const std::string &separator=",")
#define DEAL_II_NAMESPACE_OPEN
virtual bool match(const std::string &test_string) const override
const unsigned int max_elements
static std::unique_ptr< Bool > create(const std::string &description)
MultipleSelection(const std::string &seq)
static std::string to_string(const T &t, const std::unique_ptr< Patterns::PatternBase > &pattern=Convert< T >::to_pattern())
Map(const PatternBase &key_pattern, const PatternBase &value_pattern, const unsigned int min_elements=0, const unsigned int max_elements=max_int_value, const std::string &separator=",", const std::string &key_value_separator=":")
virtual std::unique_ptr< PatternBase > clone() const override
virtual bool match(const std::string &test_string) const override
virtual std::string description(const OutputStyle style=Machine) const =0
static std::string to_string(const T &t, const std::unique_ptr< Patterns::PatternBase > &pattern=Convert< T >::to_pattern())
virtual std::string description(const OutputStyle style=Machine) const override
const PatternBase & get_key_pattern() const
static std::unique_ptr< DirectoryName > create(const std::string &description)
virtual std::unique_ptr< PatternBase > clone() const override
virtual std::string description(const OutputStyle style=Machine) const override
#define DeclException1(Exception1, type1, outsequence)
static std::unique_ptr< Patterns::PatternBase > to_pattern()=delete
#define AssertDimension(dim1, dim2)
std::unique_ptr< FunctionParser< dim > > T
std::size_t memory_consumption() const override
virtual std::unique_ptr< PatternBase > clone() const override
virtual std::unique_ptr< PatternBase > clone() const override
Selection(const std::string &seq)
static const char * description_init
const std::string separator
const PatternBase & get_base_pattern() const
static std::unique_ptr< Patterns::PatternBase > to_pattern()
static std::enable_if< std::is_same< Dummy, T >::value &&std::is_same< T, bool >::value, std::unique_ptr< Patterns::PatternBase > >::type to_pattern()
static T to_value(const std::string &s, const std::unique_ptr< Patterns::PatternBase > &p=Convert< T >::to_pattern())=delete
virtual std::string description(const OutputStyle style=Machine) const override
static T to_value(const std::string &s, const std::unique_ptr< Patterns::PatternBase > &pattern=Convert< T >::to_pattern())
virtual std::unique_ptr< PatternBase > clone() const override
const unsigned int min_elements
std::vector< std::string > split_string_list(const std::string &s, const std::string &delimiter=",")
static const int max_int_value
constexpr int max_list_rank()
static std::unique_ptr< Patterns::PatternBase > to_pattern()
static std::unique_ptr< Patterns::PatternBase > to_pattern()
std::unique_ptr< PatternBase > key_pattern
static const char * description_init
std::size_t memory_consumption() const override
static const char * description_init
constexpr std::array< const char *, 4 > default_list_separator
virtual std::size_t memory_consumption() const
virtual bool match(const std::string &test_string) const override
static T to_value_internal_1(const std::vector< std::string > &s, const Patterns::Tuple &pattern, std_cxx14::index_sequence< U... >)
const std::string separator
static constexpr int map_rank
static std::string to_string(const T &t, const std::unique_ptr< Patterns::PatternBase > &pattern=Convert< T >::to_pattern())
virtual bool match(const std::string &test_string) const override
virtual std::unique_ptr< PatternBase > clone() const override
static T to_value(const std::string &s, const std::unique_ptr< Patterns::PatternBase > &pattern=Convert< T >::to_pattern())
constexpr std::array< const char *, 4 > default_map_separator
constexpr int max_map_rank()
static const char * description_init
static const char * description_init
static std::unique_ptr< Double > create(const std::string &description)
#define DEAL_II_NAMESPACE_CLOSE
virtual bool match(const std::string &test_string) const =0
virtual std::string description(const OutputStyle style=Machine) const override
virtual bool match(const std::string &test_string) const override
virtual std::unique_ptr< PatternBase > clone() const override
static std::unique_ptr< Patterns::PatternBase > to_pattern()
std::string escape(const std::string &input, const PatternBase::OutputStyle style)
static T to_value(const std::string &s, const std::unique_ptr< Patterns::PatternBase > &pattern=Convert< T >::to_pattern())
virtual std::unique_ptr< PatternBase > clone() const override
static std::string to_string(const T &t, const std::unique_ptr< Patterns::PatternBase > &pattern=Convert< T >::to_pattern())
#define DeclException2(Exception2, type1, type2, outsequence)
static std::string to_string(const T &t, const std::unique_ptr< Patterns::PatternBase > &pattern=Convert< T >::to_pattern())
static std::unique_ptr< List > create(const std::string &description)
#define AssertThrow(cond, exc)
const unsigned int max_elements
std::vector< std::unique_ptr< PatternBase > > patterns
virtual std::string description(const OutputStyle style=Machine) const override
const std::string key_value_separator
T max(const T &t, const MPI_Comm &mpi_communicator)
std::unique_ptr< PatternBase > pattern
const std::string separator
static std::unique_ptr< Anything > create(const std::string &description)
static ::ExceptionBase & ExcCommasNotAllowed(int arg1)
std::pair< Key, Value > T
#define DEAL_II_DISABLE_EXTRA_DIAGNOSTICS
static std::unique_ptr< Patterns::PatternBase > to_pattern()
static std::string to_string(const T &s, const std::unique_ptr< Patterns::PatternBase > &p=Convert< T >::to_pattern())=delete
static std::string to_string(const T &t, const std::unique_ptr< Patterns::PatternBase > &pattern=Convert< T >::to_pattern())
static ::ExceptionBase & ExcNoMatch(std::string arg1, std::string arg2)