Dear Bruno,
I've used ARPACK and the computation time has dropped signifficantly. But I
have some strange results, I have following code:
IterationNumberControl arpack_control(30, 1e-8);
typename ArpackSolver::AdditionalData arpack_data_smallest(30,
ArpackSolver::
smallest_magnitude,
false);
typename ArpackSolver::AdditionalData arpack_data_largest(30,
ArpackSolver::
largest_magnitude,
false);
ArpackSolver arpack_smallest (arpack_control,arpack_data_smallest);
arpack_smallest.solve(shat,mass, s_hatS_inverse, eigenvalues,
eigenvectors_small, 1 );
pcout<<"\t Aparck small "<<"coverged in "
<<arpack_control.last_step()<<"\t "
<<" Residual: "
<< arpack_control.last_value()<< " \t eigenvalue: "<<
eigenvalues[0]<<std::endl;
std::vector< LevelVectorType > eigenvectors_large(2, rhs);
ArpackSolver arpack_largest (arpack_control,arpack_data_largest);
arpack_largest.solve(shat,mass, s_hatS_inverse, eigenvalues,
eigenvectors_large, 1 );
pcout<<"\t Aparck large "<<"coverged in "
<<arpack_control.last_step()<<"\t "
<<" Residual: "
<< arpack_control.last_value()<< " \t eigenvalue: "<<
eigenvalues[0]<<std::endl;
typename EigenPower<LevelVectorType>::AdditionalData data(0.);
EigenPower<LevelVectorType> eigen(solver_control_eigen,mem,data );
double l_max=1;
double l_min=0;
// rhs=1; //starting from 1 gives same results
rhs= eigenvectors_large[0];
internal::PreconditionChebyshevImplementation::set_initial_guess(rhs);
eigen.solve(l_max,shat, rhs );
sol=1;
pcout<<"\t Eigen power "<<"coverged in "
<<solver_control_eigen.last_step()<<"\t "
<<" Residual: "
<< solver_control_eigen.last_value()<<std::endl;
The output is:
Aparck small coverged in 4294967295 Residual: nan eigenvalue:
(1.17207,0)
Aparck large coverged in 4294967295 Residual: nan eigenvalue:
(0.714841,0)
Eigen power coverged in 29 Residual: 8.71076e-05
Eigen value:1.17147
1) The number of iterations and residual are obviously strange. I guess
that ARPACK solver does not update SlolverControl object
2) The largest eigenvalue is computed instead of the largest one, and, I
guess, the smallest eigenvalue is computed instead of the largest one.
3) I get complex eigenvalues in some cases and I am quite sure, that all
eigenvalues of the system are real.
Michał
--
The deal.II project is located at http://www.dealii.org/
For mailing list/forum options, see
https://groups.google.com/d/forum/dealii?hl=en
---
You received this message because you are subscribed to the Google Groups
"deal.II User Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.