[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