40 #include "ac/arpack.h"
772 std::vector<doublereal> RESID;
774 std::vector<doublereal> V;
778 std::vector<doublereal> WORKD;
779 std::vector<doublereal> WORKL;
797 WORKD.resize(3*N, 0.);
798 LWORKL = 3*NCV*NCV + 6*NCV;
799 WORKL.resize(LWORKL, 0.);
804 std::cout <<
"before:" << std::endl
805 <<
"IDO=" << IDO << std::endl
806 <<
"BMAT=" << BMAT << std::endl
807 <<
"N=" << N << std::endl
808 <<
"WHICH=" << WHICH << std::endl
809 <<
"NEV=" << NEV << std::endl
810 <<
"TOL=" << TOL << std::endl
811 <<
"&RESID[0]=" << &RESID[0] << std::endl
812 <<
"NCV=" << NCV << std::endl
813 <<
"&V[0]=" << &V[0] << std::endl
814 <<
"LDV=" << LDV << std::endl
815 <<
"IPARAM=" << IPARAM[0]
827 <<
"IPNTR=" << IPNTR[0]
842 <<
"&WORKD[0]=" << &WORKD[0] << std::endl
843 <<
"&WORKL[0]=" << &WORKL[0] << std::endl
844 <<
"LWORKL=" << LWORKL << std::endl
845 <<
"INFO=" << INFO << std::endl
848 __FC_DECL__(dnaupd)(&IDO, &BMAT[0], &N, &WHICH[0], &NEV,
849 &TOL, &RESID[0], &NCV, &V[0], &LDV, &IPARAM[0], &IPNTR[0],
850 &WORKD[0], &WORKL[0], &LWORKL, &INFO);
852 std::cout <<
"after:" << std::endl
853 <<
"IDO=" << IDO << std::endl
854 <<
"BMAT=" << BMAT << std::endl
855 <<
"N=" << N << std::endl
856 <<
"WHICH=" << WHICH << std::endl
857 <<
"NEV=" << NEV << std::endl
858 <<
"TOL=" << TOL << std::endl
859 <<
"&RESID[0]=" << &RESID[0] << std::endl
860 <<
"NCV=" << NCV << std::endl
861 <<
"&V[0]=" << &V[0] << std::endl
862 <<
"LDV=" << LDV << std::endl
863 <<
"IPARAM=" << IPARAM[0]
875 <<
"IPNTR=" << IPNTR[0]
890 <<
"&WORKD[0]=" << &WORKD[0] << std::endl
891 <<
"&WORKL[0]=" << &WORKL[0] << std::endl
892 <<
"LWORKL=" << LWORKL << std::endl
893 <<
"INFO=" << INFO << std::endl
896 std::cout <<
"cnt=" << cnt <<
": IDO=" << IDO <<
", INFO=" << INFO << std::endl;
906 std::cout <<
"X:" << std::endl << X << std::endl;
907 std::cout <<
"Y:" << std::endl << Y << std::endl;
910 }
while (IDO == 1 || IDO == -1);
913 std::cerr <<
"error" << std::endl;
918 const char *HOWMNY =
"A";
919 std::vector<logical> SELECT(NCV);
920 std::vector<doublereal> DR(NEV + 1);
921 std::vector<doublereal> DI(NEV + 1);
922 std::vector<doublereal> Z(N*(NEV + 1));
924 std::vector<doublereal> WORKEV(3*NCV);
926 __FC_DECL__(dneupd)(&RVEC, &HOWMNY[0], &SELECT[0], &DR[0], &DI[0],
927 &Z[0], &LDZ, &SIGMAR, &SIGMAI, &WORKEV[0],
928 &BMAT[0], &N, &WHICH[0], &NEV,
929 &TOL, &RESID[0], &NCV, &V[0], &LDV, &IPARAM[0], &IPNTR[0],
930 &WORKD[0], &WORKL[0], &LWORKL, &INFO);
934 for (
integer nv = 0; nv < NEV; nv++) {
935 std::cout <<
"value " << std::setw(8) << nv <<
":"
936 << std::setw(16) << DR[nv] + SIGMA
937 << (DI[nv] >= 0. ?
" + " :
" - ")
938 << std::setw(16) << std::abs(DI[nv]) <<
" i" << std::endl;
940 std::cout <<
"vector " << std::setw(8) << nv <<
":"
950 for (
integer idx = 0; idx < N; idx++) {
952 << std::setw(8) << idx <<
":"
953 << std::setw(16) << Z[N*nv + idx]
960 for (
integer idx = 0; idx < N; idx++) {
963 << std::setw(8) << idx <<
":"
964 << std::setw(16) << Z[N*nv + idx]
965 << (d > 0. ?
" + " :
" - " )
966 << std::setw(16) << std::abs(d) <<
" i"
973 for (
integer idx = 0; idx < N; idx++) {
976 << std::setw(8) << idx <<
":"
977 << std::setw(16) << Z[N*(nv - 1) + idx]
978 << (d > 0. ?
" + " :
" - " )
979 << std::setw(16) << std::abs(d) <<
" i"
integer iGetNumRows(void) const
virtual VectorHandler & MatVecIncMul(VectorHandler &out, const VectorHandler &in) const