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(:)
33 filter => fstreig%filter
39 if(fstreig%is_free)
then
42 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)
47 call urand1(nndof, temp, hecmesh%my_rank)
50 temp(i) = temp(i) * filter(i)
55 eigvec(i,1) = mass(i) * temp(i)
60 chk = chk + temp(i) * eigvec(i,1)
62 call hecmw_allreduce_r1(hecmesh, chk,
hecmw_sum)
67 stop
"Self-orthogonal"
84 integer(kind=kint) :: i, j, n, ip, minloc, NEIG, IBAF, NEW(NEIG)
85 real(kind=kreal) :: emin, eig(neig)
94 emin = dabs(eig(new(i)))
97 if(dabs(eig(new(j))).LT.emin)
then
99 emin = dabs(eig(new(j)))
111 real(kind=kreal) :: x(n), invm
112 integer(kind=kint),
parameter :: MM = 1664501
113 integer(kind=kint),
parameter :: LAMBDA = 1229
114 integer(kind=kint),
parameter :: MU = 351750
115 integer(kind=kint) :: i, N, IR, SHIFT
120 ir = mod( lambda * ir + mu, mm)
122 do i = shift+1, shift+n
123 ir = mod( lambda * ir + mu, mm)
124 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.