[petsc-users] BLOCK INVERSE FOR ILU

Barry Smith bsmith at petsc.dev
Thu Jun 5 09:08:37 CDT 2025


   I do urge you to run a test as Matt suggests to detect possible bugs in our code and satisfy yourself the code is correct or incorrect.

   The code that  begins

    l = ipvt[k - 1];
    if (l != k) {
      ax    = &a[k3 + 1];
      ay    = &a[6 * l + 1];

is attempting to take into account the pivoting. This chunk of code may be incorrect, of course. Note that there is similar code for block size 5 etc that may also be buggy I guess.

  Barry


> On Jun 5, 2025, at 7:49 AM, Matthew Knepley <knepley at gmail.com> wrote:
> 
> On Thu, Jun 5, 2025 at 2:27 AM Frank Bramkamp <bramkamp at nsc.liu.se <mailto:bramkamp at nsc.liu.se>> wrote:
>> Thanks for the response,
>> 
>> 
>> I refer to the routine  src/mat/impls/baij/seq/dgefa6.c
>> 
>> 
>> /*
>>       Inverts 6 by 6 matrix using gaussian elimination with partial pivoting.
>> 
>>        Used by the sparse factorization routines in
>>      src/mat/impls/baij/seq
>> 
>>        This is a combination of the Linpack routines
>>     dgefa() and dgedi() specialized for a size of 6.
>> 
>> */
>> 
>> 
>> which implements the the computation of an inverse for a dense 6x6 block.
>> I think this routine is used in the ILU numeric factorization to compute the inverse diagonal block
>> when we later apply ILU preconditioning where we need the inverse.
>> 
>> And there it looks we use a direct LU solve and not triangular solves ?!
>> 
>> In this context I am not sure if something is missing at the end or not regarding the inverse pivoting ?!
> 
> We do not think so, but there is a simple test for this. You can construct a small block diagonal matrix with
> blocksize 6, and apply it to the vector [1, 2, 3, 4, 5, 6 ...]. Use that vector as the RHS for a solve with
> preonly/ILU. That should get the exact inverse and output the original vector. If the vector is permuted, then
> we indeed have a bug.
> 
>   Thanks!
> 
>       Matt
>  
>> Greetings, Frank
>> 
>> 
>> 
>> 
> 
> 
> 
> --
> 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
> 
> https://urldefense.us/v3/__https://www.cse.buffalo.edu/*knepley/__;fg!!G_uCfscf7eWS!bMXreiYRM3eT86Jioq3IATcR2EVaQfLh4ml3pmh88QtCtsm-80eT25djN21OkkgGiBm1v8KIhRDmklo_cvaliCI$  <https://urldefense.us/v3/__http://www.cse.buffalo.edu/*knepley/__;fg!!G_uCfscf7eWS!d8vX5tFZOpXshlbVrdeXXKCaT9OQePsnBaR3YBpe5DEoej9o3r1ZB9Rs-RgRm4xVgXdw-FNm8ShhNTEksffZ$>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20250605/5fe55829/attachment-0001.html>


More information about the petsc-users mailing list