void extractInternalFaces(const Dune::CpGrid& grid, Eigen::Array<int, Eigen::Dynamic, 1>& internal_faces, Eigen::Array<int, Eigen::Dynamic, 2, Eigen::RowMajor>& nbi) { // Extracts the internal faces of the grid. // These are stored in internal_faces. int nf=numFaces(grid); int num_internal=0; for(int f=0; f<nf; ++f) { if(grid.faceCell(f, 0)<0 || grid.faceCell(f, 1)<0) continue; ++num_internal; } // std::cout << num_internal << " internal faces." << std::endl; nbi.resize(num_internal, 2); internal_faces.resize(num_internal); int fi = 0; for (int f = 0; f < nf; ++f) { if(grid.faceCell(f, 0)>=0 && grid.faceCell(f, 1)>=0) { internal_faces[fi] = f; nbi(fi,0) = grid.faceCell(f, 0); nbi(fi,1) = grid.faceCell(f, 1); ++fi; } } }
void extractInternalFaces(const UnstructuredGrid& grid, Eigen::Array<int, Eigen::Dynamic, 1>& internal_faces, Eigen::Array<int, Eigen::Dynamic, 2, Eigen::RowMajor>& nbi) { typedef Eigen::Array<bool, Eigen::Dynamic, 1> OneColBool; typedef Eigen::Array<int, Eigen::Dynamic, 2, Eigen::RowMajor> TwoColInt; typedef Eigen::Array<bool, Eigen::Dynamic, 2, Eigen::RowMajor> TwoColBool; TwoColInt nb = faceCells(grid); // std::cout << "nb = \n" << nb << std::endl; // Extracts the internal faces of the grid. // These are stored in internal_faces. TwoColBool nbib = nb >= 0; OneColBool ifaces = nbib.rowwise().all(); const int num_internal = ifaces.cast<int>().sum(); // std::cout << num_internal << " internal faces." << std::endl; nbi.resize(num_internal, 2); internal_faces.resize(num_internal); int fi = 0; int nf = numFaces(grid); for (int f = 0; f < nf; ++f) { if (ifaces[f]) { internal_faces[fi] = f; nbi.row(fi) = nb.row(f); ++fi; } } }
void BinaryInputStream::readVector (Eigen::Array<FinalType,Rows,1> &values, size_t n) { values.resize(n); SourceType value; for (size_t i=0; i<n; i++) { stream->read((char *) &value, sizeof(SourceType)); if (swapEndian) swap(&value); values[i] = static_cast<FinalType>(value); } }
void LQCDA::readVector(AsciiReader& reader, Eigen::Array<double, Eigen::Dynamic, 1>& output) { try { int i; reader.read(i); output.resize(i); for(int _i=0; _i<i; ++_i) reader.read(output(_i)); } catch (const IOException& e) { } }
//----------------------------------------------------------- // Utility functions //----------------------------------------------------------- void LQCDA::readArray(AsciiReader& reader, Eigen::Array<double, Eigen::Dynamic, Eigen::Dynamic>& output) { try { std::string line; reader.readLine(line); std::istringstream isstr (line); int i, j; isstr >> i >> j; output.resize(i, j); for(int _i=0; _i<i; ++_i) for(int _j=0; _j<j; ++_j) { reader.read(output(_i,_j)); } } catch (const IOException& e) { } }