71{
72 bool is_valid = true;
73
75 std::string bc_type_string("undefined");
76 std::string coordinate_string("undefined");
77 std::stringstream ss(bc_string);
78 ss >> bc_type_string;
79
80 if (bc_type_string == "initial_velocity") {
82 } else if (bc_type_string == "prescribed_velocity") {
84 } else if (bc_type_string == "prescribed_displacement") {
86 } else if (bc_type_string == "prescribed_traction") {
88 } else {
89 throw std::invalid_argument(
90 "Error processing boundary condition, unknown boundary condition "
91 "type: " +
92 bc_type_string);
93 }
94
96
97 if (is_neumann_bc == true) {
99 } else {
101 }
102 ss >> coordinate_string;
103
104
105 int num_quotes = std::count(bc_string.begin(), bc_string.end(), '"');
106 if (num_quotes == 2) {
108 size_t first_pos = bc_string.find('"');
109 size_t last_pos = bc_string.rfind('"');
112 } else if (num_quotes == 0) {
115 } else {
116 throw std::invalid_argument("Error processing boundary condition, illegal number of quotes: " + bc_string);
117 }
118
119 std::transform(bc_type_string.begin(), bc_type_string.end(), bc_type_string.begin(), ::tolower);
120 std::transform(coordinate_string.begin(), coordinate_string.end(), coordinate_string.begin(), ::tolower);
121
122
123
124
125 if (is_neumann_bc == true) {
128 } else {
131 }
132
133 if (coordinate_string == "x") {
135 } else if (coordinate_string == "y") {
137 } else if (coordinate_string == "z") {
139 } else {
140 throw std::invalid_argument("Error processing boundary condition, unknown coordinate: " + coordinate_string);
141 }
142
143 return is_valid;
144}
std::string node_set_name_
Definition nimble_boundary_condition.h:97
bool has_expression_
Definition nimble_boundary_condition.h:104
std::string expression_string_
Definition nimble_boundary_condition.h:105
int dim_
Definition nimble_boundary_condition.h:96
int side_set_id_
Definition nimble_boundary_condition.h:100
double magnitude_
Definition nimble_boundary_condition.h:102
int coordinate_
Definition nimble_boundary_condition.h:101
std::string side_set_name_
Definition nimble_boundary_condition.h:99
ExpressionParsing::BoundaryConditionFunctor expression_
Definition nimble_boundary_condition.h:106
Boundary_Condition_Type bc_type_
Definition nimble_boundary_condition.h:103
int node_set_id_
Definition nimble_boundary_condition.h:98