ColumnVector createColumnVectorFromJSON(const rapidjson::Document &config_doc, std::string key, unsigned int size) { ColumnVector col_vec(size); if (config_doc.HasMember(key.c_str())) { std::vector< std::vector<double> > vec; createVectorFromJSON(config_doc, key, vec); if (vec.size() != size) { throw std::runtime_error( (boost::format("Key specified by %s does not have the required %d values. %d entries were parsed.") % key % size % vec.size()).str() ); } for (int i = 0; i < size; ++i) { if (vec[i].size() != 1) { throw std::runtime_error( (boost::format("Row %d in the file specified by %s has %d values. There should only be one nodal value per line.") % i % key % size % vec[i].size()).str() ); } col_vec[i] = vec[i][0]; } } else { col_vec.setZero(); } return col_vec; }
Dim Dim::transpose_dim() const { switch (type()) { case SCALAR: return *this; case ROW_VECTOR: return col_vec(vec_size()); case COL_VECTOR: return row_vec(vec_size()); case MATRIX: return matrix(dim3,dim2); case MATRIX_ARRAY: default: throw DimException("cannot transpose an array of matrices"); return *this; } }