/*$Id: baijfact5.c,v 1.2 2001/01/15 21:45:50 bsmith Exp balay $*/
/*
Factorization code for BAIJ format.
*/
#include "src/mat/impls/baij/seq/baij.h"
#include "src/vec/vecimpl.h"
#include "src/inline/ilu.h"
/*
Version for when blocks are 7 by 7
*/
#undef __FUNC__
#define __FUNC__ /**/"MatLUFactorNumeric_SeqBAIJ_7"
int MatLUFactorNumeric_SeqBAIJ_7(Mat A,Mat *B)
{
Mat C = *B;
Mat_SeqBAIJ *a = (Mat_SeqBAIJ*)A->data,*b = (Mat_SeqBAIJ *)C->data;
IS isrow = b->row,isicol = b->icol;
int *r,*ic,ierr,i,j,n = a->mbs,*bi = b->i,*bj = b->j;
int *ajtmpold,*ajtmp,nz,row;
int *diag_offset = b->diag,idx,*ai=a->i,*aj=a->j,*pj;
MatScalar *pv,*v,*rtmp,*pc,*w,*x;
MatScalar p1,p2,p3,p4,m1,m2,m3,m4,m5,m6,m7,m8,m9,x1,x2,x3,x4;
MatScalar p5,p6,p7,p8,p9,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x15,x16;
MatScalar x17,x18,x19,x20,x21,x22,x23,x24,x25,p10,p11,p12,p13,p14;
MatScalar p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,m10,m11,m12;
MatScalar m13,m14,m15,m16,m17,m18,m19,m20,m21,m22,m23,m24,m25;
MatScalar p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36;
MatScalar p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49;
MatScalar x26,x27,x28,x29,x30,x31,x32,x33,x34,x35,x36;
MatScalar x37,x38,x39,x40,x41,x42,x43,x44,x45,x46,x47,x48,x49;
MatScalar m26,m27,m28,m29,m30,m31,m32,m33,m34,m35,m36;
MatScalar m37,m38,m39,m40,m41,m42,m43,m44,m45,m46,m47,m48,m49;
MatScalar *ba = b->a,*aa = a->a;
PetscFunctionBegin;
ierr = ISGetIndices(isrow,&r);CHKERRQ(ierr);
ierr = ISGetIndices(isicol,&ic);CHKERRQ(ierr);
ierr = PetscMalloc(49*(n+1)*sizeof(MatScalar),&rtmp);CHKERRQ(ierr);
for (i=0; ia */
pv = ba + 49*bi[i];
pj = bj + bi[i];
nz = bi[i+1] - bi[i];
for (j=0; jfactor = FACTOR_LU;
C->assembled = PETSC_TRUE;
PetscLogFlops(1.3333*343*b->mbs); /* from inverting diagonal blocks */
PetscFunctionReturn(0);
}