[MOAB-dev] Resolving shared entities on prisms

Lukasz Kaczmarczyk Lukasz.Kaczmarczyk at glasgow.ac.uk
Tue Apr 5 09:43:08 CDT 2016


Thanks, let me know when is done. 

I just try to take skin and then adjacencies for each part as you described below. It could be that is a mess with node numeration? 

I make a quick test, for each part, and edges are resolved, 

	int resolve_dim = 3;
        Range tmp_skin_ents[4];
        Range *skin_ents = NULL;

        Range proc_ents;
        moab.get_entities_by_type(0,MBPRISM,proc_ents);

        {
          // get the skin entities by dimension

          // get the entities to be skinned
          // find the skin
          int skin_dim = resolve_dim-1;
          if (1) {
            skin_ents = tmp_skin_ents;
            skin_ents[resolve_dim] = proc_ents;
            Skinner skinner(&moab);
            rval = skinner.find_skin(
              0, skin_ents[skin_dim+1], false, skin_ents[skin_dim],
              NULL, true, true, true);

            // get entities adjacent to skin ents from shared_dim down to zero
            for (int this_dim = skin_dim-1; this_dim >= 0; this_dim--) {
              rval = moab.get_adjacencies(
                skin_ents[skin_dim], this_dim,
                true, skin_ents[this_dim],
                Interface::UNION
              );
            }
          }

        }


> On 5 Apr 2016, at 15:20, Grindeanu, Iulian R. <iulian at mcs.anl.gov> wrote:
> 
> take that back; it is OK for hexas; so it may be related to prisms only
> ________________________________________
> From: moab-dev-bounces at mcs.anl.gov [moab-dev-bounces at mcs.anl.gov] on behalf of Grindeanu, Iulian R. [iulian at mcs.anl.gov]
> Sent: Tuesday, April 05, 2016 9:13 AM
> To: Lukasz Kaczmarczyk; moab-dev at mcs.anl.gov
> Subject: Re: [MOAB-dev] Resolving shared entities on prisms
> 
> Hi Lukasz,
> Thank you for your example;
> I think it is related to the way we look at the skin.
> It would show the same problem for other elements (hexas, with more than one layer)
> 
> So, when we collect potential shared entities at the interface, for edges we should just collect by adjacencies, from the skin formed by 2d elements; we look at the 1d skin, which I think is wrong
> 
> I will try to fix it soon
> 
> Iulian
> 
> 
> 
> ________________________________________
> From: moab-dev-bounces at mcs.anl.gov [moab-dev-bounces at mcs.anl.gov] on behalf of Lukasz Kaczmarczyk [Lukasz.Kaczmarczyk at glasgow.ac.uk]
> Sent: Tuesday, April 05, 2016 6:51 AM
> To: moab-dev at mcs.anl.gov
> Subject: [MOAB-dev] Resolving shared entities on prisms
> 
> Hello,
> 
> I have created muli-layered shell from prisms elements. For attached partitioned mesh (3 partitions) for I check output for shared own entities, however internal edges, on shared quads, between layers (internal edges) are not resolved as a shared. Everything else is ok.
> 
> This is what I don’t understand, it could be error on my side, however I don;t see where. Could you pleas look at this and point me to potential error. It could be related to prisms? It works perfectly for single layer of prisms elements.
> 
> PS.
> This is part of work on solid shell elements, for interested, pleas look here,
> https://www.dropbox.com/s/zml82aj027hfsbb/solid_shell.pptx?dl=0
> 
> 
> Kind regards,
> Lukasz
> 
> const char *option;
> option = “PARALLEL=BCAST_DELETE;"
>        "PARALLEL_RESOLVE_SHARED_ENTS;"
>        "PARTITION=PARALLEL_PARTITION;";
> rval = moab.load_file(“tmp.h5m", 0, option); CHKERRQ_MOAB(rval);
> 
>      {
> 
>        Range shared_ents;
>        // Get entities shared with all other processors
>        rval = pcomm->get_shared_entities(-1, shared_ents);
>        Range owned_entities;
>        rval = pcomm->filter_pstatus(shared_ents, PSTATUS_NOT_OWNED, PSTATUS_NOT, -1, &owned_entities);
>        EntityHandle meshset;
>        rval = moab.create_meshset(MESHSET_SET,meshset); CHKERRQ_MOAB(rval);
>        rval = moab.add_entities(meshset,owned_entities); CHKERRQ_MOAB(rval);
> 
>        ostringstream o1;
>        o1 << "owned_" << pcomm->rank() << ".vtk";
>        moab.write_file(o1.str().c_str(),"VTK","",&meshset,1);
> 
>        rval = moab.delete_entities(&meshset,1); CHKERRQ_MOAB(rval);
>      }
> 
> 



More information about the moab-dev mailing list