colvarvalue::colvarvalue(cvm::vector1d<cvm::real> const &v, Type vti) { if ((vti != type_vector) && (v.size() != num_dimensions(vti))) { cvm::error("Error: trying to initialize a variable of type \""+type_desc(vti)+ "\" using a vector of size "+cvm::to_str(v.size())+ ".\n"); value_type = type_notset; } else { value_type = vti; switch (vti) { case type_scalar: real_value = v[0]; break; case type_3vector: case type_unit3vector: case type_unit3vectorderiv: rvector_value = cvm::rvector(v); break; case type_quaternion: case type_quaternionderiv: quaternion_value = cvm::quaternion(v); break; case type_vector: vector1d_value = v; break; case type_notset: default: break; } } }
void colvarvalue::add_elem(colvarvalue const &x) { if (this->value_type != type_vector) { cvm::error("Error: trying to set an element for a variable that is not set to be a vector.\n"); return; } size_t const n = vector1d_value.size(); size_t const nd = num_dimensions(x.value_type); elem_types.push_back(x.value_type); elem_indices.push_back(n); elem_sizes.push_back(nd); vector1d_value.resize(n + nd); set_elem(n, x); }
size_t FSTestSettings::fs_dim() { return num_dimensions() + num_vars(); }