[MOAB-dev] A PDE example with MOAB.

Tim Tautges tautges at mcs.anl.gov
Wed Apr 13 16:29:13 CDT 2011


Aha, now I understand better.  Some additional notes:

- MOAB is tuned first for minimizing memory; therefore, internal faces and edges in a 3d mesh won't necessarily be 
explicitly represented (i.e. you won't get a handle to them); if you do want them, and can afford the cost in terms of 
memory, call get_adjacencies with "true" for the create_if_missing parameter

- both up and down adjacencies use the get_adjacencies function, from any dimension to any other dimension; you don't 
need to go in steps from d to d-1 or d+1.  For getting vertices, you can also use get_connectivity; for the latter, if 
you're doing local traversal, I often use the version of that function that returns a const EntityHandle*, int 
num_entities; that just saves you a bit of memory and list handling.

- local ordering is available through the CN class (Canonical Numbering), or for specific entities through the 
side_number and side_element functions.  CN also supports permutations if you want to use a different ordering for a 
given entity type.

- I'd love to have more simple examples, so if/when you have one ready, I'll gladly take it and put it in the repo (or 
let me know if you want/need write access).

- tim

On 04/13/2011 04:10 PM, Vijay S. Mahadevan wrote:
>> Are you implementing in Fortran or C++ or something else?  In what way does
>> it seem complicated?
>
> C++. I tried to traverse the hierarchy by recursively querying the
> entities to get the data I needed. During the assembly, once I needed
> to get the information for a particular node, I could not figure out
> the reverse lookup to get a list of elements that the node belongs.
>
> Tim, I will look at the test program you suggested and the routines
> (query_elem_to_vert,..) to understand this. Being used to the elem,
> face, node hierarchy, I am still getting used to the idea of
> traversing through the mesh differently. I have been reading the
> source and am slowly learning the "right" way to do things. So forgive
> me for any other trivial questions that I might ask.
>
> I do plan to write a simple 1-d program that probably Jed's library
> already does. But hopefully it will be self contained so that it could
> serve as a good example for anyone looking for something like this in
> the future.
>
> Vijay
>
> On Wed, Apr 13, 2011 at 3:52 PM, Tim Tautges<tautges at mcs.anl.gov>  wrote:
>>
>>
>> On 04/13/2011 03:15 PM, Vijay S. Mahadevan wrote:
>>>
>>> Tim,
>>>
>>> I have used the example MOAB programs to read mesh files (gmsh mostly)
>>> and load the entities and tags. But the usage for traversing through
>>> the mesh and querying each node to obtain its neighbors and elements
>>> that they belong seems a little complicated. Since these operations
>>> are fundamental building blocks in writing a residual function for a
>>> PDE, I just wanted to look at how it could be done for a simple
>>> example.
>>>
>>
>> Are you implementing in Fortran or C++ or something else?  In what way does
>> it seem complicated?
>>
>> I just remembered one of the tests that shows basic mesh traversal, it's the
>> test/perf/perf.cpp (the equivalent code that uses the iMesh interface is in
>> tstt_perf.cpp in the same directory).  There are two functions in those
>> tests you'll want to look at:
>>
>> - query_elem_to_vert: gets all the elements in the mesh, then for each
>> element, gets the connectivity, the coordinates of those vertices, and
>> averages those coordinates.  That function is about 20 lines long, including
>> the averaging.
>>
>> - query_vert_to_elem: gets all the vertices, then for each queries the
>> adjacent hexes.  That function is about 12 lines long.
>>
>>> I will definitely look at NEK as per your suggestion but if they only
>>> use MOAB to read the mesh and convert it to their own mesh data
>>> structures, it beats the purpose of my question. Thanks for the
>>> pointer though.
>>
>> That's essentially what it does, so maybe not that helpful.
>>
>> - tim
>>
>>>
>>> Vijay
>>>
>>> On Wed, Apr 13, 2011 at 3:02 PM, Tim Tautges<tautges at mcs.anl.gov>    wrote:
>>>>
>>>> Hi Vijay,
>>>>   Yes, this is the right forum, but no, I don't know of a good example
>>>> that's
>>>> self-contained.  An alternative would be to look at the Nek code, which
>>>> has
>>>> a working MOAB reader.  That'll show how to pick up the mesh and bc's,
>>>> though I don't think it writes anything down to the mesh.  Other than
>>>> that,
>>>> the tutorial slides on the MOAB wiki have some coding examples, but
>>>> they're
>>>> pretty short.
>>>>
>>>> - tim
>>>>
>>>> On 04/13/2011 02:40 PM, Vijay S. Mahadevan wrote:
>>>>>
>>>>> All,
>>>>>
>>>>> I was wondering whether there is a simple example on the usage of MOAB
>>>>> or iMesh for solving a PDE. This could be as trivial as a finite
>>>>> differenced, 1-d poisson equation but I just wanted to have a look at
>>>>> a working example in action in order to extend the ideas to more
>>>>> practical problems. I could not find any such tutorial in the MOAB
>>>>> repository and so thought that maybe someone in the list can point me
>>>>> to one.
>>>>>
>>>>> Also, if there is a different forum for such questions, I would
>>>>> appreciate it if you can redirect me to it.
>>>>>
>>>>> Thanks,
>>>>> Vijay
>>>>>
>>>>
>>>> --
>>>> ================================================================
>>>> "You will keep in perfect peace him whose mind is
>>>>   steadfast, because he trusts in you."               Isaiah 26:3
>>>>
>>>>              Tim Tautges            Argonne National Laboratory
>>>>          (tautges at mcs.anl.gov)      (telecommuting from UW-Madison)
>>>>          phone: (608) 263-8485      1500 Engineering Dr.
>>>>            fax: (608) 263-4499      Madison, WI 53706
>>>>
>>>>
>>>
>>
>> --
>> ================================================================
>> "You will keep in perfect peace him whose mind is
>>   steadfast, because he trusts in you."               Isaiah 26:3
>>
>>              Tim Tautges            Argonne National Laboratory
>>          (tautges at mcs.anl.gov)      (telecommuting from UW-Madison)
>>          phone: (608) 263-8485      1500 Engineering Dr.
>>            fax: (608) 263-4499      Madison, WI 53706
>>
>>
>

-- 
================================================================
"You will keep in perfect peace him whose mind is
   steadfast, because he trusts in you."               Isaiah 26:3

              Tim Tautges            Argonne National Laboratory
          (tautges at mcs.anl.gov)      (telecommuting from UW-Madison)
          phone: (608) 263-8485      1500 Engineering Dr.
            fax: (608) 263-4499      Madison, WI 53706



More information about the moab-dev mailing list