📄 eigvalsol.cpp
字号:
#include <string.h>#include "global.h"#include "eigvalsol.h"eigvalsol::eigvalsol (void){}eigvalsol::~eigvalsol (void){}/** function reads data from input file @param in - pointer to the input file @param mespr - message printing indicator JK, 20.8.2005*/void eigvalsol::read (XFILE *in){ long i; xfscanf (in,"%k%d","type_of_eig_solver",(int*)&teigsol); switch (teigsol){ case inv_iteration:{ if (Mespr==1) fprintf (stdout,"\n eigenvalue problem will be solved by inverse iteration method"); // number of eigenvectors nev=1; neigv=1; xfscanf (in,"%ld %lf",&nies,&erres); break; } case subspace_it_jacobi:{ if (Mespr==1){ fprintf (stdout,"\n eigenvalue problem will be solved by subspace"); fprintf (stdout,"\n iteration method with Jacobi method of rotations"); } xfscanf (in,"%ld %ld %ld %lf",&neigv,&nev,&nies,&erres); if (neigv>nev){ fprintf (stderr,"\n\n wrong number of vectors used in subspace iteration method"); fprintf (stderr,"\n nev must be greater or equal to neigv (file %s, line %d).\n",__FILE__,__LINE__); } xfscanf (in,"%ld %ld",&nijmr,&njacthr); jacthr = new double [njacthr]; for (i=0;i<njacthr;i++){ xfscanf (in,"%lf",jacthr+i); } break; } case subspace_it_gsortho:{ if (Mespr==1){ fprintf (stdout,"\n eigenvalue problem will be solved by subspace"); fprintf (stdout,"\n iteration method with Gram-Schmidt orthonormalization technique"); } xfscanf (in,"%ld %ld %ld %le",&neigv,&nev,&nies,&erres); if (neigv>nev){ fprintf (stderr,"\n\n wrong number of vectors used in subspace iteration method"); fprintf (stderr,"\n nev must be greater or equal to neigv (file %s, line %d).\n",__FILE__,__LINE__); } break; } default:{ fprintf (stderr,"\n\n wrong type of eigenvalue problem solver is required"); fprintf (stderr,"\n in function read (file %s, line %d).\n",__FILE__,__LINE__); } } }/** function prints data about solver of eigenvalues and eigenvectors @param out - pointer to output file JK, 20.8.2005*/void eigvalsol::print (FILE *out){ long i; fprintf (out,"%d\n",(int)teigsol); switch (teigsol){ case inv_iteration:{ fprintf (out, "%ld %e", nies, erres); break; } case subspace_it_jacobi:{ fprintf (out, "%ld %ld %ld %e", neigv, nev, nies, erres); fprintf (out," %ld %ld\n",nijmr,njacthr); for (i=0;i<njacthr;i++){ fprintf (out," %e",jacthr[i]); } break; } case subspace_it_gsortho:{ fprintf (out, "%ld %ld %ld %e", neigv, nev, nies, erres); break; } default:{ fprintf (stderr,"\n\n unknown type of solver of eigenvalues and eigenvectors is required in function print (file %s, line %d),\n", __FILE__,__LINE__); } } fprintf (out,"\n"); }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -