SF_LINALG

Quick access

Variables:

operator(.px.), operator(.x.)

Routines:

build_tridiag(), check_tridiag(), cross_product(), det(), deye(), deye_tridiag(), diag(), diagonal(), eig(), eigh(), eigh_jacobi(), eigvals(), eigvalsh(), eye(), get_tridiag(), inv(), inv_gj(), inv_her(), inv_sym(), inv_triang(), inv_tridiag(), kron(), kronecker_product(), lstsq(), mat_product(), ones(), operator(.kx.)(), outerprod(), p_eigh(), p_inv(), p_mat_product(), s3_product(), solve(), svd(), svdvals(), trace(), zeros(), zeye(), zeye_tridiag()

Used modules

  • sf_blacs

Variables

  • sf_linalg/operator (.px.) [public]
  • sf_linalg/operator (.x.) [public]

Subroutines and functions

interface  sf_linalg/eig(a, eval, evec[, jobvl, jobvr])
Parameters:
  • a (*,*) [real, complex, in]

  • eval (*) [complex, out]

  • evec (*,*) [complex, out]

Options:
  • jobvl [character(len=1)]

  • jobvr [character(len=1)]

interface  sf_linalg/eigh(am, bm, lam, c, a, e, d, u[, method, jobz, uplo, vl, vu, il, iu, tol, ev, irange, vrange])
Parameters:
  • am (*,*) [real, complex, in] – LHS matrix: Am c = lam Bm c

  • bm (*,*) [real, complex, in] – Bmt temporaries overwritten by dsygvd

  • lam (*) [real, out] – eigenvalues: Am c = lam Bm c

  • c (*,*) [real, complex, out] – eigenvectors: Am c = lam Bm c; c(i,j) = ith component of jth vec.

  • a (*,*) [real, complex, inout/in,required] – M v = E v/v(i,j) = ith component of jth vec.

  • e (size(a, 2) [real, inout] – eigenvalues

  • d (*) [real, in,required]

  • u (max(1, -1 + size(d) [real]

Options:
  • method [character(len=*)]

  • jobz [character(len=1)]

  • uplo [character(len=1)]

  • vl [real]

  • vu [real]

  • il [integer]

  • iu [integer]

  • tol [real]

  • ev (*,*) [real]

  • irange (2) [integer]

  • vrange (2) [integer]

interface  sf_linalg/p_eigh(a, w, nblock[, method, jobz, uplo, vl, vu, il, iu, tol])
Parameters:
  • a (*,*) [real, complex, inout/in,required] – M v = E v/v(i,j) = ith component of jth vec.

  • w (size(a, 2) [real, inout] – eigenvalues

  • nblock [integer]

Options:
  • method [character(len=*)]

  • jobz [character(len=1)]

  • uplo [character(len=1)]

  • vl [real]

  • vu [real]

  • il [integer]

  • iu [integer]

  • tol [real]

interface  sf_linalg/eigh_jacobi(a, d, v, nrot, u, sweep)
Parameters:
  • a (*,*) [real, complex, inout]

  • d (size(a, 1) [real, out]

  • v (size(a, 1,size(a, 2) [real, out]

  • nrot [integer, out]

  • u (size(a, 1,size(a, 2) [complex, out]

  • sweep [integer]

interface  sf_linalg/eigvals(a)
Parameters:

a (*,*) [real, complex, in]

interface  sf_linalg/eigvalsh(a)
Parameters:

a (*,*) [real, complex, in]

interface  sf_linalg/svdvals(a)
Parameters:

a (*,*) [real, complex, in]

interface  sf_linalg/svd(a, s, u, vtransp)
Parameters:
  • a (*,*) [real, complex, in] – use a temporary as dgesvd destroys its input

  • s (*) [real, out] – has size min(m, n) –> sigma matrix is (n x m) with sigma_ii = s_i

  • u (*,*) [real, complex, out]

  • vtransp (*,*) [real, complex, out]

interface  sf_linalg/inv(am)
Parameters:

am (*,*) [real, complex, inout] – matrix to be inverted

interface  sf_linalg/p_inv(a, nblock)
Parameters:
  • a (*,*) [real, complex, inout]

  • nblock [integer]

interface  sf_linalg/inv_sym(a[, uplo])
Parameters:

a (*,*) [real, complex]

Options:

uplo [character(len=*)]

interface  sf_linalg/inv_her(a[, uplo])
Parameters:

a (*,*) [complex]

Options:

uplo [character(len=*)]

interface  sf_linalg/inv_triang(a[, uplo, diag])
Parameters:

a (*,*) [real, complex]

Options:
  • uplo [character(len=1)]

  • diag [character(len=1)] – not a unit triangular matrix

interface  sf_linalg/inv_gj(a)
Parameters:

a (*,*) [real, complex, inout] – cmplx

interface  sf_linalg/solve(a, b[, trans])
Parameters:
  • a (*,*) [real, complex, in]

  • b (various shapes) [real, complex, inout]

Options:

trans [character(len=1)]

interface  sf_linalg/lstsq(a, b)
Parameters:
  • a (*,*) [real, complex, in]

  • b (*) [real, complex, in] – only one right-hand side

interface  sf_linalg/inv_tridiag(sub_, diag_, over_, inv, ainv, amat, nb, n[, n, nb])
Options:
  • n [integer, optional/default=1 + shape(sub, 0)]

  • nb [integer, optional/default=1 + shape(sub, 0)]

Parameters:
  • sub_ (various shapes) [real, complex]

  • diag_ (various shapes) [real, complex]

  • over_ (various shapes) [real, complex]

  • inv (n) [real, complex]

  • ainv (nb,n,n) [real, complex]

  • amat (*,*) [real, complex, inout]

interface  sf_linalg/check_tridiag(amat, nblock, nsize)
Parameters:
  • amat (*,*) [real, complex]

  • nblock [integer, in,required]

  • nsize [integer, in,required]

interface  sf_linalg/get_tridiag(amat, sub, diag, nblock, nsize[, over])
Parameters:
  • amat (*,*) [real, complex, in,required]

  • sub (various shapes) [real, complex]

  • diag (various shapes) [real, complex]

  • nblock [integer, in,required/default=1 + shape(sub, 0)]

  • nsize [integer, in,required]

Options:

over (various shapes) [real, complex]

interface  sf_linalg/build_tridiag(sub, diag[, over, nblock, nsize])
Parameters:
  • sub (various shapes) [real, complex]

  • diag (various shapes) [real, complex, in,required]

Options:
  • over (various shapes) [real, complex]

  • nblock [integer, optional/default=1 + shape(sub, 0)]

  • nsize [integer]

interface  sf_linalg/det(a)
Parameters:

a (*,*) [real, complex, in]

interface  sf_linalg/deye(n, i, j)
Parameters:
  • n [integer, in]

  • i [integer, in]

  • j [integer, in]

interface  sf_linalg/zeye(n, i, j)
Parameters:
  • n [integer, in]

  • i [integer, in]

  • j [integer, in]

interface  sf_linalg/eye(n, i, j)
Parameters:
  • n [integer, in]

  • i [integer, in]

  • j [integer, in]

interface  sf_linalg/diag(x)
Parameters:

x (*) [real, complex, in]

interface  sf_linalg/diagonal(a)
Parameters:

a (*,*) [real, complex, in]

interface  sf_linalg/trace(a)
Parameters:

a (*,*) [real, complex, in]

interface  sf_linalg/zeros(n, n1, n2, n3, n4, n5, n6, n7)
Parameters:
  • n [integer, in]

  • n1 [integer, in]

  • n2 [integer, in]

  • n3 [integer, in]

  • n4 [integer, in]

  • n5 [integer, in]

  • n6 [integer, in]

  • n7 [integer, in]

interface  sf_linalg/ones(n, n1, n2, n3, n4, n5, n6, n7)
Parameters:
  • n [integer, in]

  • n1 [integer, in]

  • n2 [integer, in]

  • n3 [integer, in]

  • n4 [integer, in]

  • n5 [integer, in]

  • n6 [integer, in]

  • n7 [integer, in]

interface  sf_linalg/kron(a, b)
Parameters:
  • a (*,*) [integer, real, complex, in]

  • b (*,*) [integer, real, complex, in]

interface  sf_linalg/kronecker_product(a, b)
Parameters:
  • a (*,*) [integer, real, complex, in]

  • b (*,*) [integer, real, complex, in]

interface  sf_linalg/operator(.kx.)(a, b)
Parameters:
  • a (*,*) [integer, real, complex, in]

  • b (*,*) [integer, real, complex, in]

interface  sf_linalg/outerprod(a, b)
Parameters:
  • a (*) [real, complex, in]

  • b (*) [real, complex, in]

interface  sf_linalg/cross_product(a, b)
Parameters:
  • a (3) [real, complex]

  • b (3) [real, complex]

interface  sf_linalg/s3_product(a, b, c)
Parameters:
  • a (3) [real, complex, in]

  • b (3) [real, complex, in]

  • c (3) [real, complex, in]

interface  sf_linalg/mat_product(a, b, c[, alfa, beta])
Parameters:
  • a (*,*) [real, complex, inout] – [N,K]

  • b (*,*) [real, complex, inout] – [K,M]

  • c (*,*) [real, complex, inout] – [N,M]

Options:
  • alfa [real, complex]

  • beta [real, complex]

interface  sf_linalg/p_mat_product(a, b, c, nblock[, alfa, beta])
Parameters:
  • a (*,*) [real, complex, inout] – [N,K]

  • b (*,*) [real, complex, inout] – [K,M]

  • c (*,*) [real, complex, inout] – [N,M]

  • nblock [integer]

Options:
  • alfa [real]

  • beta [real]

function  sf_linalg/deye_tridiag(nblock, n)
Parameters:
  • nblock [integer]

  • n [integer]

Return:

eye_block (nblock,n,n) [real]

function  sf_linalg/zeye_tridiag(nblock, n)
Parameters:
  • nblock [integer]

  • n [integer]

Return:

eye_block (nblock,n,n) [complex]