[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