[MOAB-dev] MOAB search tag range
Grindeanu, Iulian R.
iulian at mcs.anl.gov
Fri May 29 10:24:34 CDT 2015
typo, it should be
EntityHandle interesting_element = *(iter+j);
________________________________
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: Friday, May 29, 2015 10:21 AM
To: Steve Balderrama; moab-dev at mcs.anl.gov
Subject: Re: [MOAB-dev] MOAB search tag range
There is no mechanism for that. I assume you are talking about dense tags, not sparse tags.
If sparse tags, you will just have to retrieve one by one the tag values, with tag_get_data(()
I think the most efficient way is to use tag_iterate over your elements of interest (if dense)
By using tag_iterate, you will access tag values directly in memory, no copying involved
You should return either a range or a standard vector, depending on how broken your output sequence will be
(so if your output will be hex1-10, hex 101-120, it is better to have a range; if it is hex1, hex 5, hex 11, (very sparse), it is better to output a vector)
so your code could look like this (look in Interface.hpp comments)
Range output_range;
Range::iterator iter = ents.begin();
while (iter != ents.end()) {
int count;
// get contiguous block of tag dat
void* ptr;
err = mb.tag_iterate( tag, iter, ents.end(), count, ptr );
if (err) { ... }
// do something with tag data
// assume your tag is type double
double *dptr = ptr
for (int j=0; j<count; j++, dptr++)
if (*dptr<0.25 && *dptr > 0.75)
{
EntityHandle interesting_element = (*iter+j);
output_range.insert( interesting_element )
}
// advance to next block of data
iter += count;
}
________________________________
From: moab-dev-bounces at mcs.anl.gov [moab-dev-bounces at mcs.anl.gov] on behalf of Steve Balderrama [sbalderrama at eagle.org]
Sent: Friday, May 29, 2015 9:58 AM
To: moab-dev at mcs.anl.gov
Subject: [MOAB-dev] MOAB search tag range
Is there a direct function in MOAB for searching for a range of tag values, for example, looking for elements with a tag within a numeric range such as > .25 and < .75, or something similar?
If not, what is the most efficient mechanism to do this in MOAB?
Thanks.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/moab-dev/attachments/20150529/83bd0ff5/attachment.html>
More information about the moab-dev
mailing list