sparsity pattern setup

Fredrik Bengzon fredrik.bengzon at math.umu.se
Mon Sep 21 17:31:40 CDT 2009


Matt,
Clearly, I must be missing something. If I loop over the elements and 
record all edges between the nodes in a face by adding to the vectors 
"on" and "off" as the algorithm says, won't an edge be counted more than 
two times in general, thus giving a too big value in "on" and "off"?
/Fredrik


Matthew Knepley wrote:
> On Mon, Sep 21, 2009 at 4:53 PM, Fredrik Bengzon 
> <fredrik.bengzon at math.umu.se <mailto:fredrik.bengzon at math.umu.se>> wrote:
>
>     Hi,
>     Ryan, I'm aware of Barry's post
>
>     https://lists.mcs.anl.gov/mailman/htdig/petsc-users/2008-May/003020.html
>
>     and it workes fine for triangle meshes. However, I do not see how
>     this can be used for tetrahedral meshes.
>
>
> It is the same for tetrahedra. In fact, this algorithm can be 
> generalized to work
> for any topology:
>
> http://arxiv.org/abs/0908.4427
>
>    Matt
>  
>
>     /Fredrik
>
>
>     Ryan Yan wrote:
>
>         Hi Fredrik,
>         If I understand correctly, I have the same issue as what you
>         have here.
>
>         I do not have the code yet(It is also depends on how your
>         store your matrix data.).  But I can forward Barry's idea to
>         you.  Hope this is helpful to you.
>
>         Yan,
>
>            Simply read through the ASCII file(s) twice. The first time
>         count the number of blocks per row, then preallocate then read
>         through the ASCII file again reading and setting the values.
>         This will be very fast.
>
>          Barry
>         - Hide quoted text -
>
>
>         On Sep 20, 2009, at 10:20 AM, Ryan Yan wrote:
>
>            Hi All,
>            I have a large size application. Mesh size is 30000 nodes, with
>            dof 25 on each vertex. And it's 3d unstructured,  Tet, and Hex
>            mesh. In the following I will denote blksize=25
>
>            I am testing how to build up a PETSc matrix object quick
>         and fast.
>
>            The data I have is Block Compressed Sparse Row(BCSR) files.
>         And my
>            objective is to read BCSR files and generate PETSc Binaries
>
>            Firstly, I choose the MATMPIAIJ, I opened the BCSR data
>         files on
>            each processor, and set up the preallocation use
>          
>          MatMPIAIJSetPreallocation(A,blksize,PETSC_NULL,blksize,PETSC_NULL);
>            The reason why I choose 25 as the number for d_nz and o_nz
>         is that
>            I do not have access to the ordering of the vertices. So
>         it's the
>            worst case set up, and it takes about 7 minutes on 30 MIPS
>            node(180 processors) to write the output into PETSc binaries.
>
>            Secondly, I choose the MatMPIBAIJ, and same procedure as above,
>            but also set up
>          
>          MatMPIBAIJSetPreallocation(A,blksize,blksize,PETSC_NULL,blksize,PETSC_NULL),
>            here blksize = 25 and it's also the worst case; This
>         experiments
>            takes forever and could not generate the PETSc binaries.
>
>            I guess the reason why it takes so long in the MATMPIBAIJ
>         case is
>            that I did not set up the preallocation accurately. Alougth I
>            think the preallocation is also not accurate in the MATMPIAIJ
>            case, but it seems like the preallocation effect is not as
>         serious
>            as for the MPIBAIJ. Correct me please, if there are other
>         reasons.
>
>            Can I anyone please give a hint on how to set up the
>         preallocation
>            right for a unstructured mesh without knowing the mesh
>         ordering?
>
>            Thank you very much in advance,
>
>            Yan
>
>
>
>
>
>         On Mon, Sep 21, 2009 at 4:24 PM, Fredrik Bengzon
>         <fredrik.bengzon at math.umu.se
>         <mailto:fredrik.bengzon at math.umu.se>
>         <mailto:fredrik.bengzon at math.umu.se
>         <mailto:fredrik.bengzon at math.umu.se>>> wrote:
>
>            Hi,
>            This is probably the wrong forum to ask, but does anyone have a
>            piece of code for computing the correct ndnz and nodnz vectors
>            needed for assembly of the stiffness (MPIAIJ) matrix on an
>            unstructured tetrahedral mesh given the node-to-element
>         adjacency?
>            Thanks,
>            Fredrik
>
>
>
>
>
>
> -- 
> 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



More information about the petsc-users mailing list