[petsc-users] (Fast?) assembly of upper triangle and MatZeroRows

Hong Zhang hzhang at mcs.anl.gov
Mon Aug 8 09:24:59 CDT 2011


You can use petsc-dev AIJ matrix format for mumps' LDLt-decomp.
See http://www.mcs.anl.gov/petsc/petsc-as/developers/index.html on how
to get petsc-dev.

Hong

On Mon, Aug 8, 2011 at 9:10 AM, Jed Brown <jedbrown at mcs.anl.gov> wrote:
> On Mon, Aug 8, 2011 at 08:40, Clemens Domanig <clemens.domanig at uibk.ac.at>
> wrote:
>>
>> Hi,
>>
>> I want my FE-program to be able to use LU- and LDLt-decomp (MUMPS). LU
>> works fine and now I want to implement LDLt. My Questions:
>> 1.) How can I speed up the assembly of the upper triangle matrix?
>> * '-mat_ignore_lower_triangular' makes it terrible slow
>> (1000 elements -> 1s explode to 18s
>> * MatSetValues with Blocks of 6x6 and single values at the diagonal is
>> even worse.
>
> SBAIJ needs different preallocation. If you set it with
> Mat{Seq,MPI}SBAIJSetPreallocation(), assembly will be fast.
>
>>
>> 2.) SBAIJ doesn't like MatZeroRows. What are the alternatives to apply
>> boundary conditions to my matrix?
>
> That function would make the matrix nonsymmetric because the columns aren't
> also zeroed, so you couldn't use it with a symmetric solver anyway. I
> believe in imposing boundary conditions symmetrically at the local level
> (either by removing them or by imposing them while computing residuals for
> those nodes), but many people like to do it differently.
> To do boundary conditions by zeroing rows and columns after assembly, you
> would need to modify the right hand side in a compatible way. We could
> automate this by having the Mat "remember" the entries in the columns that
> it zeroed so that each right hand side could automatically be modified
> before starting the solve, but then solving A*x = b would either yield an x
> that doesn't satisfy this equation or modify b, both of which I think would
> be confusing.
> Suggestions for imposing boundary conditions globally without ruining
> symmetry or having confusing semantics would be welcome.


More information about the petsc-users mailing list