[petsc-users] Preallocation (Unstructured FE)
Tabrez Ali
stali at geology.wisc.edu
Tue May 17 11:53:31 CDT 2011
Matt
Any linear 2/3d element would do. A linear tetrahedron would be good to
start with.
Thanks
Tabrez
On 05/17/2011 11:21 AM, Matthew Knepley wrote:
> On Tue, May 17, 2011 at 9:36 AM, Tabrez Ali <stali at geology.wisc.edu
> <mailto:stali at geology.wisc.edu>> wrote:
>
> Matt
>
> An example which reads an unstructured mesh (ascii or exodus),
> partitions it and sets up Mat (with the right preallocation) would
> be great. If it is in Fortran then that would be perfect. Btw my
> problem also has Lagrange multiplier constraints.
>
>
> Yes, I should have been more specific. What element?
>
> Thanks,
>
> Matt
>
> Thanks
> Tabrez
>
>
> On 05/17/2011 08:25 AM, Matthew Knepley wrote:
>> On Mon, May 2, 2011 at 8:16 AM, Tabrez Ali
>> <stali at geology.wisc.edu <mailto:stali at geology.wisc.edu>> wrote:
>>
>> Is there a way I can use this and other mesh routines from
>> Fortran? The manual doesn't say much on this.
>>
>>
>> Yes, but you are right that nothing is in the manual. DMMESH (in
>> petsc-dev) now obeys the full DM interface,
>> so that DMGetMatrix() will return you a properly allocated Mat.
>> So what is the problem? Of course, it is that
>> Petsc has no good way to specify what finite element you are
>> dealing with.
>>
>> The way I was doing this is to encode it using some C++ classes.
>> This turns out to be a bad way to do things.
>> I am currently reworking it so that this information is stored in
>> a simple C struct that you can produce. Should
>> have this done soon.
>>
>> Can you mail me a description of an example you would like to run?
>>
>> Thanks,
>>
>> Matt
>>
>>
>> Tabrez
>>
>>
>> On 05/01/2011 09:53 AM, Matthew Knepley wrote:
>>> On Sat, Apr 30, 2011 at 12:58 PM, Tabrez Ali
>>> <stali at geology.wisc.edu <mailto:stali at geology.wisc.edu>> wrote:
>>>
>>> Petsc Developers/Users
>>>
>>> I having some performance issues with preallocation in a
>>> fully unstructured FE code. It would be very helpful if
>>> those using FE codes can comment.
>>>
>>> For a problem of size 100K nodes and 600K tet elements
>>> (on 1 cpu)
>>>
>>> 1. If I calculate the _exact_ number of non-zeros per
>>> row (using a running list in Fortran) by looping over
>>> nodes & elements, the code takes 17 mins (to calculate
>>> nnz's/per row, assemble and solve).
>>> 2. If I dont use a running list and simply get the
>>> average of the max number of nodes a node might be
>>> connected to (again by looping over nodes & elements but
>>> not using a running list) then it takes 8 mins
>>> 3. If I just magically guess the right value calculated
>>> in 2 and use that as average nnz per row then it only
>>> takes 25 secs.
>>>
>>> Basically in all cases Assembly and Solve are very fast
>>> (few seconds) but the nnz calculation itself (in 2 and
>>> 3) takes a long time. How can this be cut down? Is there
>>> a heuristic way to estimate the number (as done in 3)
>>> even if it slightly overestimates the nnz's per row or
>>> are efficient ways to do step 1 or 2. Right now I have
>>> do i=1,num_nodes; do j=1,num_elements ... which
>>> obviously is slow for large number of nodes/elements.
>>>
>>>
>>> If you want to see my code doing this, look at
>>>
>>> include/petscdmmesh.hh:preallocateOperatorNew()
>>>
>>> which handles the determination of nonzero structure for a
>>> FEM operator. It should look mostly
>>> like your own code.
>>>
>>> Matt
>>>
>>> Thanks in advance
>>> Tabrez
>>>
>>>
>>>
>>>
>>> --
>>> What most experimenters take for granted before they begin
>>> their experiments is infinitely more interesting than any
>>> results to which their experiments lead.
>>> -- Norbert Wiener
>>
>>
>>
>>
>> --
>> What most experimenters take for granted before they begin their
>> experiments is infinitely more interesting than any results to
>> which their experiments lead.
>> -- Norbert Wiener
>
>
>
>
> --
> What most experimenters take for granted before they begin their
> experiments is infinitely more interesting than any results to which
> their experiments lead.
> -- Norbert Wiener
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20110517/7fe189ff/attachment.htm>
More information about the petsc-users
mailing list