gtkIOStream  1.7.0
GTK+ << C++ IOStream operators for GTK+. Now with ORBing, numerical computation, audio client and more ...
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
fcblok.f
Go to the documentation of this file.
1  subroutine fcblok ( bloks, integs, nbloks, ipivot, scrtch, iflag )
2 
3 c*********************************************************************72
4 c
5 cc FCBLOK supervises the PLU factorization of an almost block diagonal matrix.
6 c
7 calls subroutines f a c t r b and s h i f t b .
8 c
9 c f c b l o k supervises the plu factorization with pivoting of
10 c scaled rows of the almost block diagonal matrix stored in the arrays
11 c b l o k s and i n t e g s .
12 c
13 c factrb = subprogram which carries out steps 1,...,last of gauss
14 c elimination (with pivoting) for an individual block.
15 c shiftb = subprogram which shifts the remaining rows to the top of
16 c the next block
17 c
18 c parameters
19 c bloks an array that initially contains the almost block diagonal
20 c matrix a to be factored, and on return contains the com-
21 c puted factorization of a .
22 c integs an integer array describing the block structure of a .
23 c nbloks the number of blocks in a .
24 c ipivot an integer array of dimension sum (integs(1,n) ; n=1,
25 c ...,nbloks) which, on return, contains the pivoting stra-
26 c tegy used.
27 c scrtch work area required, of length max (integs(1,n) ; n=1,
28 c ...,nbloks).
29 c iflag output parameter;
30 c = 0 in case matrix was found to be singular.
31 c otherwise,
32 c = (-1)**(number of row interchanges during factorization)
33 c
34  implicit none
35 
36  integer nbloks
37 
38  integer integs(3,nbloks),ipivot(1),iflag, i,index,indexb,indexn,
39  & last,ncol,nrow
40  double precision bloks(1),scrtch(1)
41  iflag = 1
42  indexb = 1
43  indexn = 1
44  i = 1
45 c loop over the blocks. i is loop index
46  10 index = indexn
47  nrow = integs(1,i)
48  ncol = integs(2,i)
49  last = integs(3,i)
50 c carry out elimination on the i-th block until next block
51 c enters, i.e., for columns 1,...,last of i-th block.
52  call factrb(bloks(index),ipivot(indexb),scrtch,nrow,ncol,last,
53  & iflag)
54 c check for having reached a singular block or the last block
55  if (iflag .eq. 0 .or. i .eq. nbloks)
56  & return
57  i = i+1
58  indexn = nrow*ncol + index
59 c put the rest of the i-th block onto the next block
60  call shiftb(bloks(index),ipivot(indexb),nrow,ncol,last,
61  & bloks(indexn),integs(1,i),integs(2,i))
62  indexb = indexb + nrow
63  go to 10
64  end
subroutine fcblok(bloks, integs, nbloks, ipivot, scrtch, iflag)
Definition: fcblok.f:2
subroutine factrb(w, ipivot, d, nrow, ncol, last, iflag)
Definition: factrb.f:2
subroutine shiftb(ai, ipivot, nrowi, ncoli, last, ai1, nrowi1, ncoli1)
Definition: shiftb.f:3
gtkIOStream: /tmp/gtkiostream/src/deBoor/fcblok.f Source File
GTK+ IOStream  Beta