I think my problem must be in my original mesh format. This simple code has
the same problem:
int main (int argc, char** argv)
{
// Initialize libraries.
LibMeshInit init (argc, argv);
// Skip adaptive examples on a non-adaptive libMesh build
#ifndef LIBMESH_ENABLE_AMR
libmesh_example_requires(false, "--enable-amr");
#endif
// Skip this default-2D example if libMesh was compiled as 1D-only.
libmesh_example_requires(2 <= LIBMESH_DIM, "2D support");
libMesh::out<< "Reading in and building the mesh" << std::endl;
const unsigned int dim = 2;
// Create a mesh, with dimension to be overridden later, on the
// default MPI communicator.
Mesh mesh(init.comm(),dim);
// Read in the mesh
mesh.read("cantilever.xda");
// Create a mesh refinement object to do the initial uniform
refinements
// on the coarse grid read in from lshaped.xda
MeshRefinement initial_uniform_refinements(mesh);
initial_uniform_refinements.uniformly_refine(1);
mesh.write("save.xda");
return 0;
}
My mesh cantilever.xda is
DEAL 003:003
2 # Num. Elements
6 # Num. Nodes
8 # Length of connectivity vector (Num elements * Num Nodes)
2 # Num. Boundary Conds.
65536 # String Size (ignore)
1 # Num. Element Types. We just have quads, no triangles
5 # Element types in each block. 5 Corresponds to QUAD4 in the
libMeshEnums::ElemType namespace
2 # Num. of elements in each block.
Id String
Title String
0 1 4 5
1 2 3 4
0. 0. 0.
50. 0. 0.
100. 0. 0.
100. 50. 0.
50. 50. 0.
0. 50. 0.
0 3 0
1 2 1
On Nov 18, 2015 15:35, "Miguel Angel Salazar de Troya" <
[email protected]> wrote:
> I realized that my nodes id's are not continuous. Having 15 nodes in my
> mesh, their id's are 0,1,2,3,4,5,6,8,10,12,14,16,18,20,22, hence why I get
> that assertion error, which assumes that the nodes' id are within the
> limits of the number of nodes I think. I'm going to try to get an example
> that I can send and that reproduces the error.
>
> Miguel
> On Nov 18, 2015 12:15, "Roy Stogner" <[email protected]> wrote:
>
>>
>> On Wed, 18 Nov 2015, Miguel Angel Salazar de Troya wrote:
>>
>> I'm trying to output my mesh into a file with Mesh::write ("mesh.xda").
>>> Because my mesh is parallel I call Mesh::allgather () first. Then I call
>>> Mesh::write("mesh.xda") which doesn't give me problems if I don't make
>>> any
>>> uniform refinement, however if I do, I obtain this assertion
>>>
>>> Assertion `(3*local_idx+2) < coords.size()' failed.
>>>
>>> (3*local_idx+2) = 38
>>>
>>> coords.size() = 33
>>>
>>> At the moment of the assertion, my mesh consists of eight elements in a
>>> 4x2
>>> grid, coming from a 2x1 mesh before one single uniform refinement. Any
>>> idea?
>>>
>>
>> Not a clue. Can you boil this down into an example you can share?
>>
>> I tried to follow adjoint_ex3 and added
>>> mesh.renumber_nodes_and_elements () before calling the write, but it
>>> didn't
>>> make a difference.
>>>
>>
>> I'm not sure why adjoints_ex3 is doing that, but it shouldn't be
>> necessary.
>> ---
>> Roy
>>
>
------------------------------------------------------------------------------
_______________________________________________
Libmesh-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/libmesh-users