That's what I did... but you can just SVN update to get my changes if you like.
Derek On Feb 9, 2010, at 12:52 PM, Rahul Sampath wrote: > Thank you. So to fix this is it sufficient to simply replace > > the line #227: > mesh.boundary_info->add_node(node_list[node], nodeset_id); > > with: > mesh.boundary_info->add_node((node_list[node] - 1), nodeset_id); > > in the file exodusII_io.C > > > Regards, > > Rahul > > > On Tue, Feb 9, 2010 at 2:21 PM, Derek Gaston <[email protected]> wrote: >> Whoops! Good catch!! I had fixed this in a local version... but it never >> made it back out to the main repo. It's committed now. >> >> Derek >> >> On Feb 9, 2010, at 11:38 AM, Rahul Sampath wrote: >> >>> Hi: >>> >>> I am sorry if I was not clear in my earlier e-mail. I generated a >>> simple HEX8 mesh using Cubit. The geometry is a simple cube and I >>> specify a simple node-based boundary condition on all surfaces (all >>> displacements are 0.0 on all surfaces). I have attached the sample >>> Cubit file, the mesh exported in ExodusII format and the ASCII form of >>> the Exodus file generated using the publicly available ncdump program. >>> The Exodus format uses a 1-based numbering for its nodes. Libmesh uses >>> a 0-based numbering. So in the Libmesh function ExodusII_IO::read() >>> you have to read the node ids (for element-to-node connectivities and >>> boundary sets) from the exodus file in 1-based numbering subtract 1 >>> from it and store it in the Libmesh data stuctures. The problem is >>> that you are subtracting 1 only when reading the element-to-node map >>> and not when reading node-based boundary conditions. >>> >>> The following is taken from the Libmesh source code: >>> >>> In the function ExodusII_IO::read() >>> >>> // Read nodeset info >>> 00215 { >>> 00216 exio_helper.read_nodeset_info(); >>> 00217 >>> 00218 for (int nodeset=0; nodeset<exio_helper.get_num_node_sets(); >>> nodeset++) >>> 00219 { >>> 00220 int nodeset_id = exio_helper.get_nodeset_id(nodeset); >>> 00221 >>> 00222 exio_helper.read_nodeset(nodeset); >>> 00223 >>> 00224 const std::vector<int>& node_list = >>> exio_helper.get_node_list(); >>> 00225 >>> 00226 for(unsigned int node=0; node<node_list.size(); node++) >>> 00227 mesh.boundary_info->add_node(node_list[node], nodeset_id); >>> 00228 } >>> 00229 } >>> 00230 >>> >>> In Line 222, exio_helper::node_list is populated from the input file >>> and this uses 1-based numbering. In line 227 this is passed to the >>> function boundary_info->add_node which expects 0-based numbering. >>> As a result, when boundary_info->add_node calls SerialMesh::node_ptr >>> the following assertion failed error is thrown: "i < this->n_nodes() " >>> at line 108 of serial_mesh.C >>> >>> Could you kindly take a look into this problem. >>> >>> Thanks. >>> >>> Regards, >>> >>> Rahul >>> >>> On Mon, Feb 8, 2010 at 3:26 PM, Derek Gaston <[email protected]> wrote: >>>> I don't think there is a bug with ExodusII_IO. Just make sure that your >>>> mesh doesn't contain any blocks, sidesets or nodesets that are _0_. >>>> >>>> This is done on purpose so the numbering matches what gets generated with >>>> Cubit. >>>> >>>> What are you using to generate your meshes? >>>> >>>> Derek >>>> >>>> This is >>>> On Feb 8, 2010, at 12:14 PM, Rahul Sampath wrote: >>>> >>>>> Hi: >>>>> >>>>> I believe that there is a bug in the function ExodusII_IO::read(). I >>>>> have attached a sample program and the input file to demonstrate this. >>>>> The ASCII version of the exodus file was generated using the tool >>>>> ncdump. You can see the ExodusII uses a 1-based numbering scheme. >>>>> However, when trying to add nodes to boundary_info using nodesets the >>>>> ExodusII_IO::read() function assumes a 0-based numbering scheme. As a >>>>> result an assertion error is thrown at line 108 in serial_mesh.C in >>>>> function SerialMesh::node_ptr, which is called from >>>>> BoundaryInfo::add_node, which is in turn called from >>>>> ExodusII_IO::read. >>>>> >>>>> Regards, >>>>> >>>>> Rahul >>>>> <cubeMesh.txt>------------------------------------------------------------------------------ >>>>> The Planet: dedicated and managed hosting, cloud storage, colocation >>>>> Stay online with enterprise data centers and the best network in the >>>>> business >>>>> Choose flexible plans and management services without long-term contracts >>>>> Personal 24x7 support from experience hosting pros just a phone call away. >>>>> http://p.sf.net/sfu/theplanet-com_______________________________________________ >>>>> Libmesh-users mailing list >>>>> [email protected] >>>>> https://lists.sourceforge.net/lists/listinfo/libmesh-users >>>> >>>> >>> <sampleCube.txt><sampleCube.e><testReadMesh.cc><sampleCube.cub> >> >> ------------------------------------------------------------------------------ SOLARIS 10 is the OS for Data Centers - provides features such as DTrace, Predictive Self Healing and Award Winning ZFS. Get Solaris 10 NOW http://p.sf.net/sfu/solaris-dev2dev _______________________________________________ Libmesh-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/libmesh-users
