|
FEDEM Solver
R8.0
Source code of the dynamics solver
|
Module with a Lanczos-based eigenvalue solver. More...
Functions/Subroutines | |
| subroutine, public | felanczossolve (MsgA, structA, coeffA, factorA, MsgB, structB, coeffB, factorB, MPARB, MTREEB, MSIFB, valueB, diagB, TOL, EVL, EVC, MIP, MOP, N, NEVAL, NEVEC, MAXLAN, MSING, LPU, IPSW, INFO) |
| Solves a generalized symmetric eigenvalue problem. More... | |
| subroutine | felfac (INFO, LPU, KSA, KSB, KPD, N, NEVAL, EPS, NN, MSING, MsgA, structA, coeffA, factorA, MsgB, structB, coeffB, factorB, diagB, MPARB, MTREEB, MSIFB, valueB) |
| Administers the matrix factorizations for the Lanczos eigensolver. More... | |
| subroutine | fefindandfixzeropivots (struct, coeff, NZERO, MSING, INFO) |
| Repairs isolated zero pivot elements in the matrix. More... | |
| subroutine | fesmm (INFO, LPU, IFLAG, Ndim, AllInt, X, Y, MsgA, structA, factorA, structB, coeffB, factorB, diagB, MPARB, MTREEB, MSIFB, valueB) |
| Performs some linear algebra operations for the Lanczos eigensolver. More... | |
Variables | |
| real(wp), dimension(:,:), allocatable, save | work1 |
| Internal work array. More... | |
| real(wp), dimension(:,:), allocatable, save | work2 |
| Internal work array. More... | |
Module with a Lanczos-based eigenvalue solver.
This module contains subroutines implementing the Lanczos eigenvalue solver on top of the GSF linear equation solver.
| subroutine felanczosmodule::fefindandfixzeropivots | ( | type(sam), pointer | struct, |
| type(cam), pointer | coeff, | ||
| integer, intent(inout) | NZERO, | ||
| integer(ik), dimension(:), intent(inout) | MSING, | ||
| type(error_flag), pointer | INFO | ||
| ) |
Repairs isolated zero pivot elements in the matrix.
| struct | Symbolic assembly data for the matrix | |
| coeff | Coefficient assembly data for the matrix | |
| [out] | NZERO | Number of zero pivot elements in the matrix |
| [out] | MSING | Array of singular equations detected during factorization |
| [out] | INFO | Error handler object, nullified on success |


| subroutine, public felanczosmodule::felanczossolve | ( | type(messagelevel), pointer | MsgA, |
| type(sam), pointer | structA, | ||
| type(cam), pointer | coeffA, | ||
| type(gsfcolsup), pointer | factorA, | ||
| type(messagelevel), pointer | MsgB, | ||
| type(sam), pointer | structB, | ||
| type(cam), pointer | coeffB, | ||
| type(gsfcolsup), pointer | factorB, | ||
| integer(ik), dimension(:), intent(in), optional | MPARB, | ||
| integer(ik), dimension(:), intent(in), optional | MTREEB, | ||
| integer(ik), dimension(:), intent(in), optional | MSIFB, | ||
| real(wp), dimension(:), intent(inout), optional | valueB, | ||
| real(wp), dimension(:), intent(inout), optional | diagB, | ||
| real(wp), dimension(3), intent(inout) | TOL, | ||
| real(wp), dimension(:), intent(out) | EVL, | ||
| real(wp), dimension(:,:), intent(out) | EVC, | ||
| integer(ik), dimension(:), intent(in) | MIP, | ||
| integer(ik), dimension(:), intent(out) | MOP, | ||
| integer, intent(in) | N, | ||
| integer, intent(in) | NEVAL, | ||
| integer, intent(in) | NEVEC, | ||
| integer, intent(in) | MAXLAN, | ||
| integer(ik), dimension(:), intent(out) | MSING, | ||
| integer, intent(in) | LPU, | ||
| integer, intent(in) | IPSW, | ||
| type(error_flag), pointer | INFO | ||
| ) |
Solves a generalized symmetric eigenvalue problem.
| MsgA | GSF information for matrix A | |
| MsgB | GSF information for matrix B | |
| structA | Symbolic assembly data for matrix A | |
| structB | Symbolic assembly data for matrix B | |
| coeffA | Coefficient assembly data for matrix A | |
| coeffB | Coefficient assembly data for matrix B | |
| factorA | Factorization data for matrix A | |
| factorB | Factorization data for matrix B | |
| [in] | MPARB | Sparse PARameters for SPR-matrix B |
| [in] | MTREEB | Elimination assembly TREES for SPR-matrix B |
| [in] | MSIFB | Storage Information for SPR-matrix B |
| valueB | Matrix values for SPR-matrix B | |
| diagB | The diagonal values for SPR-matrix B | |
| TOL | Tolerances | |
| [out] | EVL | Computed eigenvalues |
| [out] | EVC | Computed eigenvectors |
| [in] | MIP | Input options |
| [in] | N | Dimension of the equation system |
| [in] | NEVAL | Number of eigenvalues to return |
| [in] | NEVEC | Number of eigenvectors to return |
| [in] | MAXLAN | Maximum number of Lanczos vectors |
| [in] | LPU | File unit number for res-file output |
| [in] | IPSW | Print switch for debug output |
| [out] | MOP | Output options |
| [out] | MSING | Array of singular equations detected during factorization |
| [out] | INFO | Error handler object, nullified on success |
This subroutine determines the NEVAL smallest eigenvalues λi of the generalized, symmetric eigenproblem
(A - λi*B) * qi = 0
The routine also returns NLV (=MOP(3)) ortogonal Lanczos vectors or, optionally, approximations to NEVEC eigenvectors (corresponding to the NEVEC first eigenvalues). The eigenvectors, which are B-orthonormal, are returned as the first NEVEC vectors in EVC.
A is a symmetric matrix stored in sparse (compressed) format. B is either a symmetric sparse (KSB=1) or a diagonal (KSB=2) matrix. For both A and B the original matrices or their appropriate factors are accepted as input (in coeffA/factorA and coeffB/factorB). A truncated Lanczos method is used to transform the problem to tridiagonal, special form. The reduced, tridiagonal eigenproblem is solved by implicit QL transformation. Various reorthogonalization schemes may be specified.
This is the GSF version of the SPRLAN subroutine of the SAM library. The matrix B may optionally be represented by an SPR data structure, when KSB = MIP(2) = 3.


|
private |
Administers the matrix factorizations for the Lanczos eigensolver.
| [out] | INFO | Error handler object, nullified on success |
| [in] | LPU | File unit number for res-file output |
| [in] | KSA | Factorization option for matrix A |
| [in] | KSB | Factorization option for matrix B |
| [in] | KPD | Factorization option |
| [in] | N | Dimension of the equation system |
| [in] | NEVAL | Number of eigenvalues to return |
| [in] | EPS | Singularity tolerance |
| [in] | NN | Number of singular equations when B is diagonal |
| [out] | MSING | Array of singular equations detected during factorization |
| MsgA | GSF information for matrix A | |
| structA | Symbolic assembly data for matrix A | |
| coeffA | Coefficient assembly data for matrix A | |
| factorA | Factorization data for matrix A | |
| MsgB | GSF information for matrix B | |
| structB | Symbolic assembly data for matrix B | |
| coeffB | Coefficient assembly data for matrix B | |
| factorB | Factorization data for matrix B | |
| diagB | The diagonal values for SPR-matrix B | |
| [in] | MPARB | Sparse PARameters for SPR-matrix B |
| [in] | MTREEB | Elimination assembly TREES for SPR-matrix B |
| [in] | MSIFB | Storage Information for SPR-matrix B |
| valueB | Matrix values for SPR-matrix B |


|
private |
Performs some linear algebra operations for the Lanczos eigensolver.
| [out] | INFO | Error handler object, nullified on success |
| [in] | LPU | File unit number for res-file output |
| [in] | IFLAG | Option telling which operation to perform (see below) |
| [in] | Ndim | Dimension of the equation system |
| [in] | AllInt | If 'A', use full matrix, if 'I' use internal DOFs only |
| X | Vector of dimension Ndim | |
| [out] | Y | Vector of dimension Ndim |
| MsgA | GSF information for matrix A | |
| structA | Symbolic assembly data for matrix A | |
| factorA | Factorization data for matrix A | |
| structB | Symbolic assembly data for matrix B | |
| coeffB | Coefficient assembly data for matrix B | |
| factorB | Factorization data for matrix B | |
| [in] | diagB | The diagonal values for SPR-matrix B |
| [in] | MPARB | Sparse PARameters for SPR-matrix B |
| [in] | MTREEB | Elimination assembly TREES for SPR-matrix B |
| [in] | MSIFB | Storage Information for SPR-matrix B |
| [in] | valueB | Matrix values for SPR-matrix B |
This subroutine calculates one of the following:
where X and Y are vectors, A is a symmetric sparse matrix, represented by its factors La*Da*LaT, stored in structA and factorA, Ua is the Cholesky factor of A, also stored in structA,factorA, B is either a symmetric sparse matrix, stored in structB,coeffB, a symmetric sparse in-core matrix, stored in MPARB, ..., valueB, or a diagonal matrix, stored in diagB. Ub is the Cholesky factor of B, stored in structB,factorB or in MPARB, ..., valueB, or in diagB if B is just a diagonal matrix.


|
private |
Internal work array.
|
private |
Internal work array.