@Roy, do you have any suggestions how this should be fixed? If we have the
same node ids for submesh before renumbering, there will be gaps in the ids
(some ids not pointing to any  nodes). Is this acceptable before
renumbering?

On Wed, May 13, 2015 at 3:13 PM, Harshad Sahasrabudhe <[email protected]>
wrote:

> Not sure if this is the best way to send code, but since the mailing list
> eats attachments, I'll print the test code here:
>
> #include "libmesh/parallel_mesh.h"
> #include "libmesh/libmesh.h"
> #include "libmesh/mesh.h"
> #include "libmesh/mesh_generation.h"
> #include "libmesh/node.h"
> #include "libmesh/elem.h"
> #include "libmesh/multi_predicates.h"
>
> int main(int argc, char *argv[])
> {
>   MPI_Init(&argc, &argv);
>   LibMeshInit *libmeshhandle = new LibMeshInit(argc, argv, MPI_COMM_WORLD);
>
>   Mesh* parent_mesh = new  Mesh(libmeshhandle->comm());
>   Mesh* sub_mesh = new Mesh(libmeshhandle->comm());
>   double xmin, xmax, ymin, ymax, zmin, zmax;
>
>   libMesh::MeshTools::Generation::build_cube( *parent_mesh,
>       20, 20, 20,
>       0,20,
>       0,20,
>       0,20,
>       HEX8);
>
>   parent_mesh->print_info();
>
>   xmin = 5; xmax = 15;
>   ymin = 5; ymax = 15;
>   zmin = 5; zmax = 15;
>
>   mapvector<Elem*> submesh_elements;
>   MeshBase::element_iterator       it     =
> parent_mesh->active_local_elements_begin();
>   const MeshBase::element_iterator it_end =
> parent_mesh->active_local_elements_end();
>
>   for(;it != it_end; it++)
>   {
>     Elem* el = *it;
>     unsigned int n_nodes = el->n_nodes();
>     for(unsigned int i=0; i<n_nodes; i++)
>     {
>       Node &nd = *(el->get_node(i));
>       double nd_x = nd(0);
>       double nd_y = nd(1);
>       double nd_z = nd(2);
>       if(nd_x > xmin && nd_x < xmax &&
>           nd_y > ymin && nd_y < ymax &&
>           nd_z > zmin && nd_z < zmax)
>       {
>         submesh_elements[el->id()] = el;
>         break;
>       }
>     }
>   }
>
>   Predicates::Active<mapvector<Elem*>::const_veclike_iterator > p;
>   MeshBase::const_element_iterator submesh_begin(submesh_elements.begin(),
> submesh_elements.end(), p);
>   MeshBase::const_element_iterator submesh_end(submesh_elements.end(),
> submesh_elements.end(), p);
>
>   parent_mesh->create_submesh(*sub_mesh, submesh_begin, submesh_end);
>
>   sub_mesh->print_info();
>
>   delete sub_mesh;
>   delete parent_mesh;
>
>   delete libmeshhandle;
>   MPI_Finalize();
> }
>
> On Wed, May 13, 2015 at 2:02 PM, John Peterson <[email protected]>
> wrote:
>
>>
>>
>> On Wed, May 13, 2015 at 11:13 AM, Bhalla, Amneet Pal Singh <
>> [email protected]> wrote:
>>
>>> I have commented out  the line in src/base/libMesh.C which calls
>>> MPI_Abort(libMesh::GLOBAL_COMM_WORLD, 1) to get a backtrace…
>>>
>>
>> b MPI_Abort
>>
>> in the debugger is a good one, too.
>>
>> --
>> John
>>
>
>
------------------------------------------------------------------------------
One dashboard for servers and applications across Physical-Virtual-Cloud 
Widest out-of-the-box monitoring support with 50+ applications
Performance metrics, stats and reports that give you Actionable Insights
Deep dive visibility with transaction tracing using APM Insight.
http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
_______________________________________________
Libmesh-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/libmesh-users

Reply via email to