⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fsdavidson.h

📁 An object-oriented C++ implementation of Davidson method for finding a few selected extreme eigenpai
💻 H
字号:
#ifndef  __FSDAVIDSON_H#define __FSDAVIDSON_H#define MAX(x,y) (((x)>(y))? (x) : (y))#define MIN(x,y) (((x)<(y))? (x) : (y))#define dlamc3(a,b) ((a)+(b))#include "../davidson/gridparam.h"#include "../davidson/defaulttd.h"#include "../davidson/matrixbase.h"//Description of data member and memeber function in fsdavidson.cppclass fsDavidson{	private:    	ntyp idamax(ntyp n, ftyp dx[], ntyp incx);		ntyp ieeeck(ntyp ispec, ftyp zero, ftyp one );		ntyp ilaenv(ntyp ispec, char name[], char opts[], ntyp n1, ntyp n2,            		ntyp n3, ntyp n4 );		ftyp dasum(ntyp n, ftyp dx[], ntyp incx);		ftyp ddot(ntyp n, ftyp dx[], ntyp incx, ftyp dy[], ntyp incy);        ftyp dnrm2(ntyp n, ftyp x[], ntyp incx );		ftyp dlamch(char cmach );		ftyp dlansp(char norm, char uplo, ntyp n, ftyp ap[], ftyp work[]);		ftyp dlanst(char norm, ntyp n, ftyp d[], ftyp e[]);		ftyp dlapy2(ftyp x, ftyp y);        ftyp sign(ftyp *a, ftyp *b);        bool lsame(char ca, char cb);		bool tstsel(ntyp kpass, ntyp nume, ntyp neig, ntyp iselec[], ftyp svec[],            			ftyp eigval[], ntyp icv[], ftyp crite, ftyp critc, ftyp rowlast[],            			ntyp ind[], ftyp oldval[], ntyp *nncv, ntyp incv[]);		void daxpy(ntyp n, ftyp da, ftyp dx[], ntyp incx, ftyp dy[], ntyp incy);		void dgemv(char trans, ntyp m, ntyp n, ftyp alpha, ftyp a[], ntyp lda, ftyp x[],           			ntyp incx, ftyp beta, ftyp y[], ntyp incy );		void dger(ntyp  m, ntyp n, ftyp alpha, ftyp x[], ntyp incx, ftyp y[], ntyp incy,          			ftyp a[], ntyp lda );		void dspmv(char uplo, ntyp n, ftyp alpha, ftyp ap[], ftyp x[], ntyp incx,           			ftyp beta, ftyp y[], ntyp incy );		void dspr2(char uplo, ntyp n, ftyp alpha, ftyp x[], ntyp incx, ftyp y[],           			ntyp incy, ftyp ap[]);		void dswap (ntyp n, ftyp dx[], ntyp incx, ftyp dy[], ntyp incy) ;		void xerbla(char srname[], ntyp info );		void dinit(ntyp n, ftyp a, ftyp x[], ntyp incx );		void gather(ntyp n, ftyp a[], ftyp b[], ntyp index[]);		void scatter(ntyp n, ftyp a[], ntyp index[], ftyp b[]);		void multbc(ntyp n, ntyp k, ntyp m, ftyp c[], ftyp temp[], ftyp b[]);		void ovflow(ntyp nume, ntyp lim, ftyp s[], ftyp svec[], ftyp eigval[]);		void newvec(ntyp n, ntyp nume, ntyp lim, ntyp mblock, ntyp kpass, ftyp critr,        			ftyp ortho, ntyp *nncv, ntyp incv[], ftyp diag[], ftyp svec[],                    ftyp eigval[], ftyp ab[], ftyp basis[], ntyp icv[], bool *restart,            		bool *done);		void orthnrm(ntyp n, ntyp lim, ftyp ortho, ntyp kpass, ntyp *nncv, ftyp scra1[],			 			ftyp basis[], bool *restart);		void dlae2(ftyp a, ftyp b, ftyp c, ftyp *rt1, ftyp *rt2 );		void dlaebz(ntyp ijob, ntyp nitmax, ntyp n, ntyp mmax, ntyp minp, ntyp nbmin,            		ftyp abstol, ftyp reltol, ftyp pivmin, ftyp d[], ftyp e[],            		ftyp e2[], ntyp nval[], ftyp ab[], ftyp c[], ntyp *mout, ntyp nab[],            		ftyp work[], ntyp iwork[], ntyp *info );		void dlaev2(ftyp a, ftyp b, ftyp c, ftyp *rt1, ftyp *rt2, 					ftyp *cs1, ftyp *sn1);        void dlagtf(ntyp n, ftyp a[], ftyp lambda, ftyp b[], ftyp c[],					ftyp tol, ftyp d[], ntyp in[], ntyp *info);		void dladtsf(ftyp *absak, ftyp *ak, ftyp *pert, ftyp *temp,			 			ftyp one, ftyp zero, ftyp sfmin, ftyp bignum);		void dlarf(char side, ntyp m, ntyp n, ftyp v[], ntyp incv, ftyp tau,  ftyp c[],           			ntyp ldc, ftyp work[]);		void dlarfg(ntyp n, ftyp *alpha, ftyp x[], ntyp incx, ftyp *tau );		void dlarnv(ntyp idist, ntyp iseed[], ntyp n, ftyp x[] );		void dlartg(ftyp f, ftyp g, ftyp *cs, ftyp *sn, ftyp *r );		void dlaruv(ntyp iseed[], ntyp n, ftyp x[] );		void dlascl(char type, ntyp kl, ntyp ku, ftyp cfrom, ftyp cto, ntyp m, ntyp n,            		ftyp a[], ntyp lda, ntyp *info );		void dlaset(char uplo, ntyp m, ntyp n, ftyp alpha, ftyp beta, ftyp a[],            		ntyp lda );		void dlasr(char side, char pivot, char direct, ntyp m, ntyp n, ftyp c[],           			ftyp s[], ftyp a[], ntyp lda );		void dlasrt(char id, ntyp n, ftyp d[], ntyp *info );		void dlassq(ntyp n, ftyp x[], ntyp incx, ftyp *scale, ftyp *sumsq);		void dopgtr(char uplo, ntyp n, ftyp ap[], ftyp tau[], ftyp q[], ntyp ldq,            		ftyp work[], ntyp *info );		void dopmtr(char side, char uplo, char trans, ntyp m, ntyp n, ftyp ap[],            		ftyp tau[], ftyp c[], ntyp ldc, ftyp work[], ntyp *info );		void dorg2l(ntyp m, ntyp n, ntyp k, ftyp a[], ntyp lda, ftyp tau[],        			ftyp work[], ntyp *info );		void dorg2r(ntyp m, ntyp n, ntyp k, ftyp a[], ntyp lda, ftyp tau[],        			ftyp work[], ntyp *info );		void dspevx(char jobz, char range, char uplo, ntyp n, ftyp ap[], ftyp vl,            		ftyp vu, ntyp il, ntyp iu, ftyp abstol, ntyp *m, ftyp w[], ftyp z[],            		ntyp ldz, ftyp work[], ntyp iwork[], ntyp ifail[], ntyp *info );		void dsptrd(char uplo, ntyp n, ftyp ap[], ftyp d[], ftyp e[], ftyp tau[],            		ntyp *info );		void dstebz(char range, char order, ntyp n, ftyp vl, ftyp vu, ntyp il, ntyp iu,            		ftyp abstol, ftyp d[], ftyp e[], ntyp *m, ntyp *nsplit, ftyp w[],            		ntyp iblock[], ntyp isplit[], ftyp work[], ntyp iwork[], ntyp *info);		void dstein(ntyp n, ftyp d[], ftyp e[], ntyp m, ftyp w[], ntyp iblock[],            		ntyp isplit[], ftyp z[], ntyp ldz, ftyp work[], ntyp iwork[],            		ntyp ifail[], ntyp *info);		void dsteqr(char compz, ntyp n, ftyp d[], ftyp e[], ftyp z[], ntyp ldz,            		ftyp work[], ntyp *info );		void dsterf(ntyp n, ftyp d[], ftyp e[], ntyp *info );		void dlagts(ntyp job, ntyp n, ftyp a[], ftyp b[], ftyp c[], ftyp d[],        			ntyp in[], ftyp y[], ftyp *tol, ntyp *info );		void addabs(ntyp n, ntyp lim, bool hiend, ntyp kpass, ntyp nncv, ftyp basis[],            		ftyp ab[], ftyp s[], const MatrixBase *const);		void wyswloop(ntyp silence, ntyp &nloop, ntyp maxiter, bool &userbreak,			  			ftyp oldval[], ftyp eigval[], ntyp nume);		void dsteqr_140(ntyp *jtot, ntyp *n, ntyp *iscale, ftyp *ssfmin,  ftyp *ssfmax,                		ftyp *anorm, ntyp *lendsv, ntyp *nmaxit, ntyp *lsv, ftyp d[],                		ftyp e[], ntyp *info);	public:		void dvdrvr(ntyp n, bool hiend, ntyp lim, ntyp mblock, ntyp nume,            ntyp niv, ntyp neig, ntyp iselec[], ftyp crite, ftyp critc,            ftyp critr, ftyp ortho, ntyp maxiter, ftyp eigval[], ftyp basis[],            ftyp ab[], ftyp s[], ftyp temps[], ftyp svec[], ftyp scra1[],            ntyp iscra2[], ntyp incv[], ntyp icv[], ftyp oldval[],            ntyp *nmv, ntyp *ierr, ntyp *loop,            const MatrixBase *const, bool silence, bool inf);		void setup(ntyp n, ntyp lim, ntyp nume, bool hiend, ftyp minelem[],           			ftyp basis[], ftyp ab[], ftyp s[], ntyp *niv,           			const MatrixBase *const);		void dscal(ntyp n, ftyp da, ftyp dx[], ntyp incx);		void dcopy(ntyp n, ftyp dx[], ntyp incx, ftyp dy[], ntyp incy);};#endif   //__FSDAVIDSON_H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -