17 integer(kind=kint) :: N, NP, NDOF, NDOF2, NNDOF, NPNDOF
18 integer(kind=kint) :: i, j
19 real(kind=
kreal) :: eigvec(:, :), p(:), beta, chk, sigma
20 real(kind=
kreal),
allocatable :: temp(:)
21 real(kind=
kreal),
pointer :: q(:), mass(:), filter(:)
32 filter => fstreig%filter
38 if(fstreig%is_free)
then
41 hecmat%D(ndof2*(i-1) + (ndof+1)*(j-1) + 1) = hecmat%D(ndof2*(i-1) + (ndof+1)*(j-1) + 1) + sigma * mass(ndof*(i-1) + j)
46 call urand1(nndof, temp, hecmesh%my_rank)
49 temp(i) = temp(i) * filter(i)
54 eigvec(i,1) = mass(i) * temp(i)
59 chk = chk + temp(i) * eigvec(i,1)
61 call hecmw_allreduce_r1(hecmesh, chk,
hecmw_sum)
66 stop
"Self-orthogonal"
83 integer(kind=kint) :: i, j, n, ip, minloc, NEIG, IBAF, NEW(NEIG)
84 real(kind=kreal) :: emin, eig(neig)
93 emin = dabs(eig(new(i)))
96 if(dabs(eig(new(j))).LT.emin)
then
98 emin = dabs(eig(new(j)))
110 real(kind=kreal) :: x(n), invm
111 integer(kind=kint),
parameter :: MM = 1664501
112 integer(kind=kint),
parameter :: LAMBDA = 1229
113 integer(kind=kint),
parameter :: MU = 351750
114 integer(kind=kint) :: i, N, IR, SHIFT
119 ir = mod( lambda * ir + mu, mm)
121 do i = shift+1, shift+n
122 ir = mod( lambda * ir + mu, mm)
123 x(i-shift) = invm * ir
integer(kind=kint), parameter hecmw_sum
integer(kind=4), parameter kreal
subroutine hecmw_finalize
subroutine lanczos_set_initial_value(hecMESH, hecMAT, fstrEIG, eigvec, p, q, beta)
Initialize Lanczos iterations.
subroutine evsort(EIG, NEW, NEIG)
Sort eigenvalues.
subroutine urand1(N, X, SHIFT)
This module defines common data and basic structures for analysis.
Package of data used by Lanczos eigenvalue solver.