elmtrans Subroutine

public subroutine elmtrans(n, low, high, mat, perm, h)

Elmtrans copies the Hessenberg matrix stored in mat to h

Arguments

Type IntentOptional AttributesName
integer, intent(in) :: n

Dimension of mat

integer, intent(in) :: low

First nonzero row

integer, intent(in) :: high

Last nonzero row

real(kind=double), intent(in) :: mat(0:n-1,0:n-1)

nxn input matrix

integer, intent(in) :: perm(0:n-1)

Permutation data from elmhes

real(kind=double), intent(out) :: h(0:n-1,0:n-1)

Hessenberg matrix


Called by

proc~~elmtrans~~CalledByGraph proc~elmtrans elmtrans proc~eigen eigen proc~eigen->proc~elmtrans proc~colrad colrad proc~colrad->proc~eigen proc~fida_weights_los fida_weights_los proc~fida_weights_los->proc~colrad proc~read_equilibrium read_equilibrium proc~read_equilibrium->proc~colrad proc~attenuate attenuate proc~attenuate->proc~colrad proc~pnpa_f pnpa_f proc~pnpa_f->proc~attenuate proc~pnpa_mc pnpa_mc proc~pnpa_mc->proc~attenuate proc~npa_f npa_f proc~npa_f->proc~attenuate program~fidasim fidasim program~fidasim->proc~fida_weights_los program~fidasim->proc~read_equilibrium program~fidasim->proc~pnpa_f program~fidasim->proc~pnpa_mc program~fidasim->proc~npa_f proc~npa_mc npa_mc program~fidasim->proc~npa_mc proc~npa_weights npa_weights program~fidasim->proc~npa_weights proc~npa_mc->proc~attenuate proc~npa_weights->proc~attenuate

Contents

Source Code


Source Code

  Subroutine elmtrans(n, low, high, mat, perm, h  )
    !+  Elmtrans copies the Hessenberg matrix stored in `mat` to `h`
    integer,intent(in)         :: n
      !+ Dimension of mat
    integer,intent(in)         :: low
      !+ First nonzero row
    integer,intent(in)         :: high
      !+ Last nonzero row
    real(double), intent(in)   :: mat(0:n-1,0:n-1)
      !+ `n`x`n` input matrix
    integer,intent(in)         :: perm(0:n-1)
      !+ Permutation data from elmhes
    real(double),intent(out)   :: h(0:n-1,0:n-1)
      !+ Hessenberg matrix
    integer                    :: i, j, k
    do i = 0, n-1
       do k = 0, n-1
      h(i,k) = ZERO
       enddo
       h(i,i) = ONE
    enddo
    do i = high - 1, low+1, -1
       j = perm(i)
       do k = i + 1, high
      h(k,i) = mat(k,i-1)
       enddo
       if (i.ne.j) then
          do k = i, high
             h(i,k) = h(j,k)
             h(j,k) = ZERO
          enddo
          h(j,i) = ONE
       endif
    enddo
  end subroutine elmtrans