If you set the mesh to not renumber nodes and elements before reading
the mesh the element numbers will correspond to those from the file
(just remember that libmesh is 0 based whole your mesh format might
Sent from my iPhone
On May 21, 2013, at 12:09 PM, Robert Blake <rob.c.blake.3@...> wrote:
> Do you have any idea on how best to populate that constant monomial field?
> Ideally I'd like that constant monomial field to have the same value
> Elem->id() in a serial mesh. This would help when checkpointing said
> external data structure in parallel. However, I can't fill in the
> constant monomial term until the mesh has been partitioned, and once the
> mesh has been partitioned Elem->id() changes.
> This is not a problem for the subdomain_id() route, as I can set those
> ids serially then distribute them appropriately in parallel. However
> based on my amateur digging in the code base, certain mesh
> readers/writers will produce horribly inefficient outputs if
> n_subdomains = n_elem.
> On 05/21/2013 01:51 PM, Derek Gaston wrote:
>> If you don't want to go the subdomain_id route then I would create an
>> explicit system with ONE monomial that has it's value set to a key
>> value (ie just store an int per element) then use that to index into
>> your datastructure. That value will be prolonged to child elements
>> under refinement and work in parallel etc.
>> A float stores an int just fine. And constant monomial fields just
>> retain their values in AMR.
>> Sent from my iPhone
>> On May 21, 2013, at 11:14 AM, Robert Blake <rob.c.blake.3@...> wrote:
>>> Does anyone have any advice on this question? John, maybe?
>>> On 04/30/2013 11:29 AM, Robert Blake wrote:
>>>> I am trying to run a FEM simulation wherein every element has a
>>>> variable-length C data structure defined in an external non-libmesh file
>>>> format. What is the easiest way to get this data into libmesh and use
>>>> it in parallel?
>>>> I see only a couple of ways of doing this:
>>>> 1.) I can easily do this using MeshData and foreign_id_for_elem(). This
>>>> works serially, but MeshData is deprecated and doesn't work in parallel.
>>>> 2.) I can create my own data structure that indexes off of Elem->id().
>>>> Is this possible? Based on my cursory glance at the code, I fear that
>>>> Elem->id() will change after partitioning in parallel. If this happens,
>>>> this technique won't work. In addition, I'm not sure how this will work
>>>> if I decide to use AMR
>>>> 3.) I can give each mesh a unique subdomain_id(), and create my own data
>>>> structure that uses that subdomain_id() as an index. This should work
>>>> in parallel and for AMR, but it seems like a horrible abuse of the
>>>> subdomain_id() and might cause problems for parts of the code that
>>>> assume n_subdomains << n_elems.
>>>> 4.) I can create an ExplicitSystem with a (CONSTANT,MONOMIAL) term, fill
>>>> that data with an integer ID, and then use that ID to index into an
>>>> external data structure of my choosing. I know that this is now the
>>>> preferred way of storing element data, but
>>>> a.) It seems like a hack to use a floating point field to store integer data
>>>> b.) I'd have to take extra care to ensure the variable is NOT
>>>> interpolated when doing AMR
>>>> c.) I'm still not sure how to populate these data values. All the code
>>>> I've seen for populating variables for ExplicitSystems uses
>>>> FunctionBase<> which takes point data as it's argument. I'm not quite
>>>> sure how to easily access an element's data using (x,y,z) coordinates as
>>>> an argument.
>>>> Is there something I've missed? Help!
>>> Try New Relic Now & We'll Send You this Cool Shirt
>>> New Relic is the only SaaS-based application performance monitoring service
>>> that delivers powerful full stack analytics. Optimize and monitor your
>>> browser, app, & servers with just a few lines of code. Try New Relic
>>> and get this awesome Nerd Life shirt! http://p.sf.net/sfu/newrelic_d2d_may
>>> Libmesh-users mailing list