pure function dbnorm(n, a, nra, ml, mu, w)
This function computes the norm of a banded N by N matrix,
stored in the array A, that is consistent with the weighted max-norm
on vectors, with weights stored in the array W.
ML and MU are the lower and upper half-bandwidths of the matrix.
NRA is the first dimension of the A array, NRA .ge. ML+MU+1.
In terms of the matrix elements a(i,j), the norm is given by:
DBNORM = MAX(i=1,...,N) ( W(i) * Sum(j=1,...,N) ABS(a(i,j))/W(j) )
Arguments
Type |
Intent | Optional | Attributes |
|
Name |
|
integer,
|
intent(in) |
|
|
:: |
n |
|
real(kind=dp),
|
intent(in) |
|
|
:: |
a(nra,n) |
|
integer,
|
intent(in) |
|
|
:: |
nra |
|
integer,
|
intent(in) |
|
|
:: |
ml |
|
integer,
|
intent(in) |
|
|
:: |
mu |
|
real(kind=dp),
|
intent(in) |
|
|
:: |
w(n) |
|
Return Value
real(kind=dp)
Variables
Type |
Visibility | Attributes |
|
Name |
| Initial | |
real(kind=dp),
|
public |
|
:: |
an |
|
|
|
integer,
|
public |
|
:: |
i |
|
|
|
integer,
|
public |
|
:: |
i1 |
|
|
|
integer,
|
public |
|
:: |
j |
|
|
|
integer,
|
public |
|
:: |
jhi |
|
|
|
integer,
|
public |
|
:: |
jlo |
|
|
|
real(kind=dp),
|
public |
|
:: |
sum |
|
|
|
Source Code
pure function dbnorm (n, a, nra, ml, mu, w)
integer,intent(in) :: n
integer,intent(in) :: nra
real(kind=dp),intent(in) :: a(nra,n)
integer,intent(in) :: ml
integer,intent(in) :: mu
real(kind=dp),intent(in) :: w(n)
real(kind=dp) :: dbnorm
integer :: i, i1, jlo, jhi, j
real(kind=dp) :: an, sum
an = 0.0d0
do i = 1,n
sum = 0.0d0
i1 = i + mu + 1
jlo = max(i-ml,1)
jhi = min(i+mu,n)
do j = jlo,jhi
sum = sum + abs(a(i1-j,j))/w(j)
enddo
an = max(an,sum*w(i))
enddo
dbnorm = an
end function dbnorm