Example #1
0
    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;
    }
Example #2
0
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;
	}
}