65{
67
68
69
70
72
73 const std::string material_name = tokens.front();
74 auto token = tokens.cbegin() + 1;
75 auto tokens_end = tokens.cend();
76
77 std::map<std::string, std::string> material_string_parameters;
78 std::map<std::string, double> material_double_parameters;
79 for (; token != tokens_end; token += 2) {
80 auto&& key = *token;
81 auto&& val = *(token + 1);
82 if (std::find(valid_double_parameter_names.begin(), valid_double_parameter_names.end(), key) !=
83 valid_double_parameter_names.end()) {
85 material_double_parameters.insert(std::make_pair(key, double_val));
86 } else if (
87 std::find(valid_string_parameter_names.begin(), valid_string_parameter_names.end(), key) !=
88 valid_string_parameter_names.end()) {
89 material_string_parameters.insert(std::make_pair(key, val));
90 } else {
91 std::string errMsg = "Invalid material parameter encountered: '" + key + "'";
92 throw std::invalid_argument(errMsg);
93 }
94 }
95
96 return std::make_shared<MaterialParameters>(
97 material_name, material_string_parameters, material_double_parameters, num_material_points);
98}
std::vector< std::string > tokenize_string(const std::string &s)
Definition nimble_parser_util.h:70
double string_to_double(const std::string &s)
Definition nimble_parser_util.h:90
#define NIMBLE_ASSERT(...)
Definition nimble_macros.h:85