<div dir="ltr"><br><div class="gmail_extra"><div class="gmail_quote">On Fri, Oct 11, 2013 at 2:07 PM, Jed Brown <span dir="ltr"><<a href="mailto:jedbrown@mcs.anl.gov" target="_blank">jedbrown@mcs.anl.gov</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">Anthony Scopatz <<a href="mailto:scopatz@gmail.com">scopatz@gmail.com</a>> writes:<br>
> Yes this is exactly what we want to do because the species that live on the<br>
> mesh will change as a function of time. There are ~4000 known nuclides, a<br>
> cell may start with 2 of them and may grow to 400 of them...or not.  Hard<br>
> coding an array of approved species is one of the great failings of many NE<br>
> codes, in my opinion.<br>
<br>
</div>So note that if on each time step/iteration you change the length of the<br>
species, you'll typically be reallocating.  It is in fact very fast to<br>
create a single new array of the size you need and then copy over<br>
(expanding some cells, contacting others, etc).  But if you prefer<br>
std::map, you're welcome to use that too.  (Use a custom allocator if<br>
that becomes a performance issue, which it probably won't from the<br>
sounds of your traversal.  std::map is pretty slow, but you can replace<br>
it with a sorted array or hash table.)<br></blockquote><div><br></div><div>std::map is super slow.  I have thought about changing it many times, </div><div>but it has never been the limiting factor so I have yet to actually do anything </div>

<div>about it.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im"><br>
>> > 2. Keep an external dictionary / map which is keyed by the entity and<br>
>> > valued by Material objects<br>
>><br>
>> Arrays work well for this.<br>
>><br>
><br>
> Wouldn't using arrays assume some nominal ordering of the cells?<br>
<br>
</div>Tag the cells you want to use with a sequential integer index, or even<br>
just use the cell index from your cell iterator if you never need<br>
neighbor access.<br></blockquote><div><br></div><div> That is a good idea.  I like that and will use it if the GLOBAL_ID doesn't pan out.</div></div><br></div></div>