From 4e8c30522f7b074f0444692ad5b2f440b07a28a7 Mon Sep 17 00:00:00 2001 From: "Halvor M. Nilsen" Date: Mon, 11 Jun 2012 11:32:44 +0200 Subject: [PATCH 1/9] Added writing of vag_structure. The missing feature is to construct a vag_structure from an UnstructuredGrid --- opm/core/vag_format/vag.cpp | 49 ++++++++++++++++++++++++++++- opm/core/vag_format/vag.hpp | 63 ++++++++++++++++++++++++++----------- 2 files changed, 93 insertions(+), 19 deletions(-) diff --git a/opm/core/vag_format/vag.cpp b/opm/core/vag_format/vag.cpp index 4996091d..68483ec5 100644 --- a/opm/core/vag_format/vag.cpp +++ b/opm/core/vag_format/vag.cpp @@ -39,6 +39,8 @@ #include #include #include +#include +#include namespace OPM { void readPosStruct(std::istream& is,int n,PosStruct& pos_struct){ @@ -65,6 +67,21 @@ namespace OPM cerr << "pos_struct.pos[n+1]" << pos_struct.pos[n] << endl; } } + void writePosStruct(std::ostream& os,PosStruct& pos_struct){ + using namespace std; + //PosStruct pos_struct; + int n=pos_struct.pos.size()-1; + pos_struct.pos.resize(n+1); + pos_struct.pos[0]=0; + for(int i=0;i< n;++i){ + int number=pos_struct.pos[i+1]-pos_struct.pos[i]; + os << number ; + for(int j=0;j< number;++j){ + os << pos_struct.value[pos_struct.pos[i]+j]; + } + os << endl; + } + } void readVagGrid(std::istream& is,OPM::VAG& vag_grid){ using namespace std; using namespace OPM; @@ -205,8 +222,38 @@ namespace OPM cout << "Computing geometry" << endl; compute_geometry(&grid); - + } + void writeVagFormat(std::ostream& os,OPM::VAG& vag_grid){ + using namespace std; + os << "File in the Vag grid format"; + os << "Number of vertices" << endl; + os << vag_grid.number_of_vertices; + os <<"Number of control volume " << endl; + os << vag_grid.number_of_volumes; + os <<"Number of faces" << endl; + os << vag_grid.number_of_faces; + os <<"Number of edges" << endl; + os << vag_grid.number_of_edges; + os <<"Vertices " << vag_grid.vertices.size() << endl; + writeVector(os, vag_grid.vertices,3); + os << "Volumes->faces " << vag_grid.volumes_to_faces.pos.size()-1 << endl; + writePosStruct(os, vag_grid.volumes_to_faces); + os << "Volumes->Vertices " << vag_grid.volumes_to_vertices.pos.size()-1 << endl; + writePosStruct(os, vag_grid.volumes_to_vertices); + os << "Faces->edges " << vag_grid.faces_to_edges.pos.size()-1 << endl; + writePosStruct(os, vag_grid.faces_to_edges); + os << "Faces->Control volumes " << vag_grid.faces_to_volumes.size() << endl; + writeVector(os,vag_grid.faces_to_volumes,2); + os << "Edges " << vag_grid.edges.size() << endl; + writeVector(os,vag_grid.edges,2); + /* + assert(vag_grid.material.size()%vag_grid.number_of_volumes==0); + int lines= floor(vag_grid.material.size()/vag_grid.number_of_volumes); + os << "Material number " << 1 << endl; + writeVector(os,vag_grid.material,lines); + */ } + } diff --git a/opm/core/vag_format/vag.hpp b/opm/core/vag_format/vag.hpp index 278cdba0..5a51b256 100644 --- a/opm/core/vag_format/vag.hpp +++ b/opm/core/vag_format/vag.hpp @@ -43,6 +43,7 @@ #include #include #include +#include namespace OPM { /** @@ -88,20 +89,21 @@ namespace OPM /** Function the vag grid format and make a vag_grid struct. This structure is intended to be converted to a grid. - \param[in] is is stream of the file. - \param[out] is a reference to a vag_grid struct. + \param[in] is is is stream of the file. + \param[out] vag_grid is a reference to a vag_grid struct. */ void readVagGrid(std::istream& is,OPM::VAG& vag_grid); - /* Function to write vag format. - void writeVagFormat(std::ostream& os){ - using namespace std; - os << "File in the Vag grid format" << endl; - } - */ /** - Function to read of some type from a stream. - \param[in] is is stream of the file. - \param[out] is a resized and filled vector containing the quantiy read. + Function to write vag format. + \param[out] is is is stream of the file. + \param[in] vag_grid is a reference to a vag_grid struct. + + */ + void writeVagFormat(std::ostream& os,OPM::VAG& vag_grid); + /** + Function to read a vector of some type from a stream. + \param[in] os is is stream of the file. + \param[out] vag_grid is a resized and filled vector containing the quantiy read. */ template void readVector(std::istream& is,std::vector& vec){ @@ -110,19 +112,44 @@ namespace OPM is >> vec[i]; } } - + /** + Function to write a vector of some type from a stream. + \param[in] os is is stream of the file. + \param[out] vag_grid is a resized and filled vector containing the quantiy read. + \param[in] n number of doubles on each line. + The function will only write full lines an potentially skip numbers at end of the vector. + */ + template + void writeVector(std::ostream& os,std::vector& vec,int n){ + using namespace std; + int lines = floor(vec.size()/n); + assert(vec.size()%n==0); + for(int j=0;j< lines;++j){ + for(int i=0;i< n;++i){ + os << vec[j*n+i]; + } + } + } + /** Read pos struct type mapping from a stream - \param[in] stream - \param[in] number of lines to read - \param[out] reference to PosStruct + \param[in] is is stream + \param[in] n number of lines to read + \param[out] pos_struct reference to PosStruct */ void readPosStruct(std::istream& is,int n,PosStruct& pos_struct); /** - Fill a UnstructuredGrid from a vag_grid. - \param[in] a valid vag_grid struct. - \param[out] a grid with have allocated correct size to each pointer. + Read pos struct type mapping from a stream + \param[in] os is stream to write to + \param[in] pos_struct to write */ + void writePosStruct(std::ostream& os,PosStruct& pos_struct); + /** + Fill a UnstructuredGrid from a vag_grid. + \param[out] vag_grid s is a valid vag_grid struct. + \param[in] grid is a grid with have allocated correct size to each pointer. + */ + void vagToUnstructuredGrid(OPM::VAG& vag_grid,UnstructuredGrid& grid); } #endif /* OPM_VAG_HPP_HEADER */ From 4f7f67801740c5ade666c430aa210ef22f915dbf Mon Sep 17 00:00:00 2001 From: "Halvor M. Nilsen" Date: Mon, 11 Jun 2012 15:52:10 +0200 Subject: [PATCH 2/9] Started on adding generation of other maps --- opm/core/vag_format/vag.cpp | 146 +++++++++++++++++++++++++++++++----- opm/core/vag_format/vag.hpp | 12 ++- tests/test_read_vag.cpp | 33 +++++--- 3 files changed, 163 insertions(+), 28 deletions(-) diff --git a/opm/core/vag_format/vag.cpp b/opm/core/vag_format/vag.cpp index 68483ec5..e157a611 100644 --- a/opm/core/vag_format/vag.cpp +++ b/opm/core/vag_format/vag.cpp @@ -41,6 +41,9 @@ #include #include #include +#include +#include +#include namespace OPM { void readPosStruct(std::istream& is,int n,PosStruct& pos_struct){ @@ -70,14 +73,17 @@ namespace OPM void writePosStruct(std::ostream& os,PosStruct& pos_struct){ using namespace std; //PosStruct pos_struct; - int n=pos_struct.pos.size()-1; + if(pos_struct.pos.size()==0){ + return; + } + int n=pos_struct.pos.size()-1; pos_struct.pos.resize(n+1); pos_struct.pos[0]=0; for(int i=0;i< n;++i){ int number=pos_struct.pos[i+1]-pos_struct.pos[i]; - os << number ; + os << number << " "; for(int j=0;j< number;++j){ - os << pos_struct.value[pos_struct.pos[i]+j]; + os << pos_struct.value[pos_struct.pos[i]+j] << " "; } os << endl; } @@ -193,7 +199,8 @@ namespace OPM grid.dimensions=3; grid.number_of_cells=vag_grid.number_of_volumes; grid.number_of_faces=vag_grid.number_of_faces; - grid.number_of_faces=vag_grid.number_of_faces; + grid.number_of_nodes=vag_grid.number_of_vertices; + // fill face_nodes for(int i=0;i< int(vag_grid.faces_to_vertices.pos.size());++i){ grid.face_nodepos[i] = vag_grid.faces_to_vertices.pos[i]; @@ -223,27 +230,132 @@ namespace OPM compute_geometry(&grid); } + + void unstructuredGridToVag(UnstructuredGrid& grid,OPM::VAG& vag_grid){ + using namespace std; + using namespace OPM; + cout << "Converting grid" << endl; + // grid.dimensions=3; + vag_grid.number_of_volumes=grid.number_of_cells; + vag_grid.number_of_faces=grid.number_of_faces; + vag_grid.number_of_vertices=grid.number_of_nodes; + + // resizing vectors + vag_grid.vertices.resize(grid.number_of_nodes*3); + vag_grid.faces_to_vertices.pos.resize(grid.number_of_faces+1); + vag_grid.faces_to_vertices.value.resize(grid.face_nodepos[grid.number_of_faces]); + vag_grid.faces_to_volumes.resize(2*grid.number_of_faces); + vag_grid.volumes_to_faces.pos.resize(grid.number_of_cells+1); + vag_grid.volumes_to_faces.value.resize(grid.cell_facepos[grid.number_of_cells]);//not known + + + + + // fill face_nodes + for(int i=0;i< int(vag_grid.faces_to_vertices.pos.size());++i){ + vag_grid.faces_to_vertices.pos[i] = grid.face_nodepos[i]; + } + + for(int i=0;i< int(vag_grid.faces_to_vertices.value.size());++i){ + vag_grid.faces_to_vertices.value[i] = grid.face_nodes[i] +1; + } + + // fill cell_face + for(int i=0;i< int(vag_grid.volumes_to_faces.pos.size());++i){ + vag_grid.volumes_to_faces.pos[i] = grid.cell_facepos[i]; + } + for(int i=0;i< int(vag_grid.volumes_to_faces.value.size());++i){ + vag_grid.volumes_to_faces.value[i] = grid.cell_faces[i] +1; + } + // fill face_cells + for(int i=0;i< int(vag_grid.faces_to_volumes.size());++i){ + vag_grid.faces_to_volumes[i] = grid.face_cells[i] +1; + } + + // fill node_cordinates. This is the only geometry given in the vag + for(int i=0;i< int(vag_grid.vertices.size());++i){ + vag_grid.vertices[i] = grid.node_coordinates[i]; + } + + + // The missing field need to be constructed + // gennerate volume to vertice mapping + std::vector< std::set > volumes_to_vertices(grid.number_of_cells); + for(int i=0;i < grid.number_of_cells; ++i){ + int nlf=grid.cell_facepos[i+1]-grid.cell_facepos[i]; + std::set nodes; + for(int j=0; j < nlf; ++j){ + int face = grid.cell_faces[grid.cell_faces[grid.cell_facepos[i]+j]]; + int nlv = grid.face_nodepos[face+1]-grid.face_nodepos[face]; + for(int k=0; k< nlv; ++k){ + int node = grid.face_nodes[grid.face_nodepos[face]+k]; + nodes.insert(node); + } + } + volumes_to_vertices.push_back(nodes); + } + vag_grid.volumes_to_vertices.pos.resize(grid.number_of_cells+1); + vag_grid.volumes_to_vertices.value.resize(0); + vag_grid.volumes_to_vertices.pos[0]=1; + for(int i=0;i < grid.number_of_cells;++i){ + int nv=volumes_to_vertices[i].size(); + vag_grid.volumes_to_vertices.pos[i+1]=vag_grid.volumes_to_vertices.pos[i]+nv; + std::set::iterator it; + for(it=volumes_to_vertices[i].begin();it!=volumes_to_vertices[i].end();++it){ + vag_grid.volumes_to_vertices.value.push_back(*it); + } + /* + for(int j=0;j < nv; ++j){ + vag_grid.volume_to_vertices.push_back(volume_to_vertices[i][j]); + } */ + } + std::set< std::set > edges; + std::map, int> edge_to_face; + for(int i=0;i < grid.number_of_faces;++i){ + int ne=grid.face_nodepos[i+1]-grid.face_nodepos[i]; + std::set spair; + for(int j=0; i < ne-1;++j){ + int node1=grid.face_nodepos[i]+j; + int node2=grid.face_nodepos[i]+j; + spair.insert(node1); + spair.insert(node2); + edges.insert(spair); + } + int node1=grid.face_nodepos[i]+ne-1; + int node2=grid.face_nodepos[i]; + spair.insert(node1); + spair.insert(node2); + edges.insert(spair); + edge_to_face.insert(std::pair< std::set , int >(spair,i)); + } + + // vag_grid.edges(0);//not known + //vag_grid.face_to_edges// not known + + //material // can not be extracted from the grid + } + void writeVagFormat(std::ostream& os,OPM::VAG& vag_grid){ using namespace std; - os << "File in the Vag grid format"; - os << "Number of vertices" << endl; - os << vag_grid.number_of_vertices; - os <<"Number of control volume " << endl; - os << vag_grid.number_of_volumes; - os <<"Number of faces" << endl; - os << vag_grid.number_of_faces; - os <<"Number of edges" << endl; - os << vag_grid.number_of_edges; + os << "File in the Vag grid format\n"; + os << "Number of vertices " ; + os << vag_grid.number_of_vertices << endl;; + os <<"Number of control volume "; + os << vag_grid.number_of_volumes << endl; + os <<"Number of faces " ; + os << vag_grid.number_of_faces << endl; + os <<"Number of edges " ; + os << vag_grid.number_of_edges << endl; os <<"Vertices " << vag_grid.vertices.size() << endl; writeVector(os, vag_grid.vertices,3); os << "Volumes->faces " << vag_grid.volumes_to_faces.pos.size()-1 << endl; - writePosStruct(os, vag_grid.volumes_to_faces); + writePosStruct(os, vag_grid.volumes_to_faces); os << "Volumes->Vertices " << vag_grid.volumes_to_vertices.pos.size()-1 << endl; - writePosStruct(os, vag_grid.volumes_to_vertices); + writePosStruct(os, vag_grid.volumes_to_vertices); os << "Faces->edges " << vag_grid.faces_to_edges.pos.size()-1 << endl; - writePosStruct(os, vag_grid.faces_to_edges); + writePosStruct(os, vag_grid.faces_to_edges); os << "Faces->Control volumes " << vag_grid.faces_to_volumes.size() << endl; - writeVector(os,vag_grid.faces_to_volumes,2); + writeVector(os,vag_grid.faces_to_volumes,2); os << "Edges " << vag_grid.edges.size() << endl; writeVector(os,vag_grid.edges,2); /* diff --git a/opm/core/vag_format/vag.hpp b/opm/core/vag_format/vag.hpp index 5a51b256..0e1c66de 100644 --- a/opm/core/vag_format/vag.hpp +++ b/opm/core/vag_format/vag.hpp @@ -126,8 +126,9 @@ namespace OPM assert(vec.size()%n==0); for(int j=0;j< lines;++j){ for(int i=0;i< n;++i){ - os << vec[j*n+i]; + os << vec[j*n+i] << " "; } + os << endl; } } @@ -144,13 +145,20 @@ namespace OPM \param[in] pos_struct to write */ void writePosStruct(std::ostream& os,PosStruct& pos_struct); + /** Fill a UnstructuredGrid from a vag_grid. \param[out] vag_grid s is a valid vag_grid struct. \param[in] grid is a grid with have allocated correct size to each pointer. */ - void vagToUnstructuredGrid(OPM::VAG& vag_grid,UnstructuredGrid& grid); + + /** + Fill a vag_grid from UnstructuredGrid + \param[out] vag_grid s is a valid vag_grid struct. + \param[in] grid is a grid with have allocated correct size to each pointer. + */ + void unstructuredGridToVag(UnstructuredGrid& grid, OPM::VAG& vag_grid); } #endif /* OPM_VAG_HPP_HEADER */ diff --git a/tests/test_read_vag.cpp b/tests/test_read_vag.cpp index c86b753e..7c1fba01 100644 --- a/tests/test_read_vag.cpp +++ b/tests/test_read_vag.cpp @@ -54,16 +54,31 @@ int main(int argc, char** argv) ifstream is(filename.c_str());//"/home/hnil/heim/SVN/simmatlab/projects/clastic/utils/unstructuredgrids/data/3x3_w_layered-vag.dat"); //ifstream is("/home/hnil/heim/SVN/simmatlab/projects/clastic/utils/unstructuredgrids/data/test.txt"); //std::ofstream is(""); - VAG vag_grid; - readVagGrid(is,vag_grid); UnstructuredGrid *grid;// make a pointer, can it be avoided?? - grid = allocate_grid(3, - vag_grid.number_of_volumes, - vag_grid.number_of_faces, - vag_grid.faces_to_vertices.value.size(), - vag_grid.volumes_to_faces.value.size(), - vag_grid.number_of_vertices); - vagToUnstructuredGrid(vag_grid,*grid); + //{ + VAG vag_grid; + readVagGrid(is,vag_grid); + // Size of mappings found + std::cout << " faces_to_vertices " << vag_grid.faces_to_vertices.value.size() << endl; + std::cout << " volumes_to_faces " << vag_grid.volumes_to_vertices.value.size() << endl; + + grid = allocate_grid(3, + vag_grid.number_of_volumes, + vag_grid.number_of_faces, + vag_grid.faces_to_vertices.value.size(), + vag_grid.volumes_to_faces.value.size(), + vag_grid.number_of_vertices); + vagToUnstructuredGrid(vag_grid,*grid); + + + + //} + // { + std::cout << "*************************************************************\n"; + VAG vag_grid_new; + unstructuredGridToVag(*grid,vag_grid_new); + writeVagFormat(std::cout,vag_grid_new); + // } destroy_grid(grid); } From 843163fb4b1de960b32ff94cc034263001b8ea83 Mon Sep 17 00:00:00 2001 From: "Halvor M. Nilsen" Date: Tue, 12 Jun 2012 12:35:35 +0200 Subject: [PATCH 3/9] Add genetion of edges. This maybe unsafe for general grids. There should be more testing --- opm/core/vag_format/vag.cpp | 91 ++++++++++++++++++++++++++----------- 1 file changed, 64 insertions(+), 27 deletions(-) diff --git a/opm/core/vag_format/vag.cpp b/opm/core/vag_format/vag.cpp index e157a611..77ad8b5e 100644 --- a/opm/core/vag_format/vag.cpp +++ b/opm/core/vag_format/vag.cpp @@ -196,6 +196,8 @@ namespace OPM using namespace std; using namespace OPM; cout << "Converting grid" << endl; + cout << "Warning:: orignial grid may not be edge confomal" << endl; + cout << " inverse mappings from edges will be wrong" << endl; grid.dimensions=3; grid.number_of_cells=vag_grid.number_of_volumes; grid.number_of_faces=vag_grid.number_of_faces; @@ -285,54 +287,87 @@ namespace OPM int nlf=grid.cell_facepos[i+1]-grid.cell_facepos[i]; std::set nodes; for(int j=0; j < nlf; ++j){ - int face = grid.cell_faces[grid.cell_faces[grid.cell_facepos[i]+j]]; + int face = grid.cell_faces[grid.cell_facepos[i]+j]; int nlv = grid.face_nodepos[face+1]-grid.face_nodepos[face]; for(int k=0; k< nlv; ++k){ - int node = grid.face_nodes[grid.face_nodepos[face]+k]; + int node = grid.face_nodes[grid.face_nodepos[face]+k]+1; nodes.insert(node); } } - volumes_to_vertices.push_back(nodes); + volumes_to_vertices[i]=nodes; } + + vag_grid.volumes_to_vertices.pos.resize(grid.number_of_cells+1); vag_grid.volumes_to_vertices.value.resize(0); - vag_grid.volumes_to_vertices.pos[0]=1; + vag_grid.volumes_to_vertices.pos[0]=0; for(int i=0;i < grid.number_of_cells;++i){ int nv=volumes_to_vertices[i].size(); vag_grid.volumes_to_vertices.pos[i+1]=vag_grid.volumes_to_vertices.pos[i]+nv; std::set::iterator it; for(it=volumes_to_vertices[i].begin();it!=volumes_to_vertices[i].end();++it){ - vag_grid.volumes_to_vertices.value.push_back(*it); + vag_grid.volumes_to_vertices.value.push_back(*it); } - /* - for(int j=0;j < nv; ++j){ - vag_grid.volume_to_vertices.push_back(volume_to_vertices[i][j]); - } */ } + std::set< std::set > edges; - std::map, int> edge_to_face; + std::vector< std::vector< std::set > > faces_spares; + //std::map, int> edge_to_face; + int nfe=0; + faces_spares.resize(grid.number_of_faces); for(int i=0;i < grid.number_of_faces;++i){ int ne=grid.face_nodepos[i+1]-grid.face_nodepos[i]; - std::set spair; - for(int j=0; i < ne-1;++j){ - int node1=grid.face_nodepos[i]+j; - int node2=grid.face_nodepos[i]+j; + nfe=nfe+ne; + + for(int j=0; j < ne-1;++j){ + int node1=grid.face_nodes[grid.face_nodepos[i]+j]+1; + int node2=grid.face_nodes[grid.face_nodepos[i]+j+1]+1; + std::set spair; spair.insert(node1); spair.insert(node2); edges.insert(spair); + faces_spares[i].push_back(spair); } - int node1=grid.face_nodepos[i]+ne-1; - int node2=grid.face_nodepos[i]; - spair.insert(node1); - spair.insert(node2); - edges.insert(spair); - edge_to_face.insert(std::pair< std::set , int >(spair,i)); + { + std::set spair; + int node1=grid.face_nodes[grid.face_nodepos[i]+ne-1]+1; + int node2=grid.face_nodes[grid.face_nodepos[i]]+1; + spair.insert(node1); + spair.insert(node2); + edges.insert(spair); + faces_spares[i].push_back(spair); + } + //edge_to_face.insert(std::pair< std::set , int >(spair,i)); } + // make edge numbering + std::map, int> edge_map; + std::set< std::set >::iterator it; + vag_grid.edges.resize(0); + int k=0; + for(it=edges.begin(); it!=edges.end();++it){ + edge_map.insert(std::pair< std::set , int >(*it,k)); + k=k+1; + std::set::iterator sit; + for(sit=(*it).begin();sit!=(*it).end();++sit){ + vag_grid.edges.push_back(*sit); + } + } + // make missing maps. + // std::map, int>::key_compare mycomp=edge_map.key_comp(); + vag_grid.number_of_edges=edges.size(); + vag_grid.faces_to_edges.pos.resize(vag_grid.number_of_faces+1); + for(int i=0;i < grid.number_of_faces;++i){ + int ne=grid.face_nodepos[i+1]-grid.face_nodepos[i]; + vag_grid.faces_to_edges.pos[i+1]=vag_grid.faces_to_edges.pos[i]+ne; + for(int j=0;jVertices " << vag_grid.volumes_to_vertices.pos.size()-1 << endl; writePosStruct(os, vag_grid.volumes_to_vertices); os << "Faces->edges " << vag_grid.faces_to_edges.pos.size()-1 << endl; - writePosStruct(os, vag_grid.faces_to_edges); - os << "Faces->Control volumes " << vag_grid.faces_to_volumes.size() << endl; + writePosStruct(os, vag_grid.faces_to_edges); + os << "Faces->vertices " << vag_grid.faces_to_vertices.pos.size()-1 << endl; + writePosStruct(os, vag_grid.faces_to_vertices); + os << "Faces->Control volumes " << floor(vag_grid.faces_to_volumes.size()/2) << endl; writeVector(os,vag_grid.faces_to_volumes,2); - os << "Edges " << vag_grid.edges.size() << endl; + os << "Edges " << floor(vag_grid.edges.size()/2) << endl; writeVector(os,vag_grid.edges,2); /* assert(vag_grid.material.size()%vag_grid.number_of_volumes==0); From c550e8b4a2dbe1e7127ede87dd7495c885fac259 Mon Sep 17 00:00:00 2001 From: "Halvor M. Nilsen" Date: Tue, 12 Jun 2012 12:46:19 +0200 Subject: [PATCH 4/9] Small cleanup in code. --- opm/core/vag_format/vag.cpp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/opm/core/vag_format/vag.cpp b/opm/core/vag_format/vag.cpp index 77ad8b5e..544f68d6 100644 --- a/opm/core/vag_format/vag.cpp +++ b/opm/core/vag_format/vag.cpp @@ -297,7 +297,7 @@ namespace OPM volumes_to_vertices[i]=nodes; } - + // fill volume to vertice map vag_grid.volumes_to_vertices.pos.resize(grid.number_of_cells+1); vag_grid.volumes_to_vertices.value.resize(0); vag_grid.volumes_to_vertices.pos[0]=0; @@ -312,13 +312,12 @@ namespace OPM std::set< std::set > edges; std::vector< std::vector< std::set > > faces_spares; - //std::map, int> edge_to_face; int nfe=0; faces_spares.resize(grid.number_of_faces); for(int i=0;i < grid.number_of_faces;++i){ int ne=grid.face_nodepos[i+1]-grid.face_nodepos[i]; nfe=nfe+ne; - + for(int j=0; j < ne-1;++j){ int node1=grid.face_nodes[grid.face_nodepos[i]+j]+1; int node2=grid.face_nodes[grid.face_nodepos[i]+j+1]+1; @@ -328,6 +327,7 @@ namespace OPM edges.insert(spair); faces_spares[i].push_back(spair); } + // add end segment { std::set spair; int node1=grid.face_nodes[grid.face_nodepos[i]+ne-1]+1; @@ -337,9 +337,9 @@ namespace OPM edges.insert(spair); faces_spares[i].push_back(spair); } - //edge_to_face.insert(std::pair< std::set , int >(spair,i)); } - // make edge numbering + + // make edge numbering and fill edges std::map, int> edge_map; std::set< std::set >::iterator it; vag_grid.edges.resize(0); @@ -352,8 +352,7 @@ namespace OPM vag_grid.edges.push_back(*sit); } } - // make missing maps. - // std::map, int>::key_compare mycomp=edge_map.key_comp(); + // fill face_to_egdes vag_grid.number_of_edges=edges.size(); vag_grid.faces_to_edges.pos.resize(vag_grid.number_of_faces+1); for(int i=0;i < grid.number_of_faces;++i){ From ed24f7d43d7566808d6b38f27c42e7b0c30b4d56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A5rd=20Skaflestad?= Date: Tue, 12 Jun 2012 23:05:04 +0200 Subject: [PATCH 5/9] Sort list of test executables (and _SOURCES). --- tests/Makefile.am | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/tests/Makefile.am b/tests/Makefile.am index a37cf4ae..d8a598a8 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -17,12 +17,13 @@ sparsevector_test \ test_cartgrid \ test_column_extract \ test_lapack \ +test_read_vag \ test_readpolymer \ test_readvector \ test_sf2p \ test_writeVtkData \ -unit_test \ -test_read_vag +unit_test + bo_resprop_test_SOURCES = bo_resprop_test.cpp monotcubicinterpolator_test_SOURCES = monotcubicinterpolator_test.cpp @@ -38,12 +39,13 @@ test_column_extract_LDADD = $(BOOST_UNIT_TEST_FRAMEWORK_LIB) $(LDADD) test_lapack_SOURCES = test_lapack.cpp test_lapack_LDADD = $(LAPACK_LIBS) $(LDADD) test_readpolymer_SOURCES = test_readpolymer.cpp +test_read_vag_SOURCES = test_read_vag.cpp +test_read_vag_LDADD = $(LDADD) test_readvector_SOURCES = test_readvector.cpp test_sf2p_SOURCES = test_sf2p.cpp test_writeVtkData_SOURCES = test_writeVtkData.cpp unit_test_SOURCES = unit_test.cpp -test_read_vag_SOURCES = test_read_vag.cpp -test_read_vag_LDADD = $(LDADD) + if UMFPACK noinst_PROGRAMS += test_cfs_tpfa From 833268a33f0561893e68b6364b2e3bfd1510da9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A5rd=20Skaflestad?= Date: Tue, 12 Jun 2012 23:05:33 +0200 Subject: [PATCH 6/9] Remove a per-target LDADD that's automatically satisfied. --- tests/Makefile.am | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/Makefile.am b/tests/Makefile.am index d8a598a8..4ed30bac 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -40,7 +40,6 @@ test_lapack_SOURCES = test_lapack.cpp test_lapack_LDADD = $(LAPACK_LIBS) $(LDADD) test_readpolymer_SOURCES = test_readpolymer.cpp test_read_vag_SOURCES = test_read_vag.cpp -test_read_vag_LDADD = $(LDADD) test_readvector_SOURCES = test_readvector.cpp test_sf2p_SOURCES = test_sf2p.cpp test_writeVtkData_SOURCES = test_writeVtkData.cpp From 91fb55af2ce21c7c93ec5028e8477e55dba83b6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A5rd=20Skaflestad?= Date: Tue, 12 Jun 2012 23:08:59 +0200 Subject: [PATCH 7/9] Libraries must follow the pertinent "-L" flags. --- tests/Makefile.am | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/Makefile.am b/tests/Makefile.am index 4ed30bac..5b2b6fcf 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -28,16 +28,16 @@ unit_test bo_resprop_test_SOURCES = bo_resprop_test.cpp monotcubicinterpolator_test_SOURCES = monotcubicinterpolator_test.cpp param_test_SOURCES = param_test.cpp -param_test_LDADD = $(BOOST_UNIT_TEST_FRAMEWORK_LIB) $(LDADD) +param_test_LDADD = $(LDADD) $(BOOST_UNIT_TEST_FRAMEWORK_LIB) sparsetable_test_SOURCES = sparsetable_test.cpp -sparsetable_test_LDADD = $(BOOST_UNIT_TEST_FRAMEWORK_LIB) $(LDADD) +sparsetable_test_LDADD = $(LDADD) $(BOOST_UNIT_TEST_FRAMEWORK_LIB) sparsevector_test_SOURCES = sparsevector_test.cpp -sparsevector_test_LDADD = $(BOOST_UNIT_TEST_FRAMEWORK_LIB) $(LDADD) +sparsevector_test_LDADD = $(LDADD) $(BOOST_UNIT_TEST_FRAMEWORK_LIB) test_cartgrid_SOURCES = test_cartgrid.cpp test_column_extract_SOURCES = test_column_extract.cpp -test_column_extract_LDADD = $(BOOST_UNIT_TEST_FRAMEWORK_LIB) $(LDADD) +test_column_extract_LDADD = $(LDADD) $(BOOST_UNIT_TEST_FRAMEWORK_LIB) test_lapack_SOURCES = test_lapack.cpp -test_lapack_LDADD = $(LAPACK_LIBS) $(LDADD) +test_lapack_LDADD = $(LDADD) $(LAPACK_LIBS) test_readpolymer_SOURCES = test_readpolymer.cpp test_read_vag_SOURCES = test_read_vag.cpp test_readvector_SOURCES = test_readvector.cpp From 37b49e31edd311ab419483b17643db6efac60639 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A5rd=20Skaflestad?= Date: Tue, 12 Jun 2012 23:09:55 +0200 Subject: [PATCH 8/9] Use canonical library set for LAPACK. --- tests/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Makefile.am b/tests/Makefile.am index 5b2b6fcf..aba10dff 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -37,7 +37,7 @@ test_cartgrid_SOURCES = test_cartgrid.cpp test_column_extract_SOURCES = test_column_extract.cpp test_column_extract_LDADD = $(LDADD) $(BOOST_UNIT_TEST_FRAMEWORK_LIB) test_lapack_SOURCES = test_lapack.cpp -test_lapack_LDADD = $(LDADD) $(LAPACK_LIBS) +test_lapack_LDADD = $(LAPACK_LIBS) $(BLAS_LIBS) $(LIBS) $(FLIBS) test_readpolymer_SOURCES = test_readpolymer.cpp test_read_vag_SOURCES = test_read_vag.cpp test_readvector_SOURCES = test_readvector.cpp From 2a1561a246675086d946c2ef74501c3f55d9a1f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A5rd=20Skaflestad?= Date: Tue, 12 Jun 2012 23:10:38 +0200 Subject: [PATCH 9/9] Insert a few blank lines for grouping purposes. --- tests/Makefile.am | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tests/Makefile.am b/tests/Makefile.am index aba10dff..99eb79d9 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -26,23 +26,35 @@ unit_test bo_resprop_test_SOURCES = bo_resprop_test.cpp + monotcubicinterpolator_test_SOURCES = monotcubicinterpolator_test.cpp + param_test_SOURCES = param_test.cpp param_test_LDADD = $(LDADD) $(BOOST_UNIT_TEST_FRAMEWORK_LIB) + sparsetable_test_SOURCES = sparsetable_test.cpp sparsetable_test_LDADD = $(LDADD) $(BOOST_UNIT_TEST_FRAMEWORK_LIB) + sparsevector_test_SOURCES = sparsevector_test.cpp sparsevector_test_LDADD = $(LDADD) $(BOOST_UNIT_TEST_FRAMEWORK_LIB) + test_cartgrid_SOURCES = test_cartgrid.cpp + test_column_extract_SOURCES = test_column_extract.cpp test_column_extract_LDADD = $(LDADD) $(BOOST_UNIT_TEST_FRAMEWORK_LIB) + test_lapack_SOURCES = test_lapack.cpp test_lapack_LDADD = $(LAPACK_LIBS) $(BLAS_LIBS) $(LIBS) $(FLIBS) + test_readpolymer_SOURCES = test_readpolymer.cpp test_read_vag_SOURCES = test_read_vag.cpp + test_readvector_SOURCES = test_readvector.cpp + test_sf2p_SOURCES = test_sf2p.cpp + test_writeVtkData_SOURCES = test_writeVtkData.cpp + unit_test_SOURCES = unit_test.cpp