[MOAB-dev] A PDE example with MOAB.
Vijay S. Mahadevan
vijay.m at gmail.com
Wed Apr 13 16:43:41 CDT 2011
> - 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).
As with any library, there is a steep learning curve here. But in the
coming weeks, I should have something concrete working. It could be
un-optimized but I hope that you can help me refine it better when it
is completed. And regarding the repo, I do not need write access
immediately but if I need one, I will definitely let you know.
Thanks,
Vijay
On Wed, Apr 13, 2011 at 4:29 PM, Tim Tautges <tautges at mcs.anl.gov> wrote:
> 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