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.

Derek

Sent from my iPhone

On May 21, 2013, at 11:14 AM, Robert Blake <[email protected]> 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!
>>
>> Rob
>>
>>
>
>
> ------------------------------------------------------------------------------
> 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
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/libmesh-users

------------------------------------------------------------------------------
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/libmesh-users

Reply via email to