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

📄 bmo.hpp

📁 FreeFem++可以生成高质量的有限元网格。可以用于流体力学
💻 HPP
字号:
typedef int integer;class BijanMO    {  public:     typedef double R;    typedef KN<R> Vect;    typedef KNM<R> Mat;    int debug; //  niveau de print     bool diagrand;    int ndim;    int n100;    int nbsol;    Vect cstr, cstropt;    double finit,fseul, fseulopt;    integer ncstr;    double costsaveming, gnormsave, costsavemin;    integer nbeval, nbevalp;    Vect  feval,xoptg,xopt1;    Mat xfeval;    KN<double> xmin,xmax;    // data file     int nbrestart,nbext1,nbbvp,nbgrad,ifd;    double epsfd,rho000,epsloc,epsij;      int typealgo; //   1 CG       string * histpath;// 0 => no file      string * histcpath;// 0 => no file      BijanMO(int nndim,	    int wnbrestart=1,	    int wnbext1=1,	    int wnbbvp=5,	    int wnbgrad=5,	    double wepsfd=1e-5,	    double wrho000=100,	    double wepsloc=1e-4,	    double wepsij=1e-6,	    int nn100=100)      : debug(1),	diagrand(1), //  choix of diag rand vector or not. 	ndim(nndim),	n100(nn100),	nbsol(1000),	cstr(n100),cstropt(n100),	feval(nbsol),	xoptg(ndim),xopt1(ndim),xfeval(nbsol,ndim),	xmin(ndim),xmax(ndim),	nbrestart(wnbrestart),nbext1(wnbext1),	nbbvp(wnbbvp),nbgrad(wnbgrad),//ifd(wifd),	epsfd(wepsfd),rho000(wrho000),epsloc(wepsloc),epsij(wepsij),      typealgo(1),      histpath(0),      histcpath(0)    {      cout << nbrestart << " == " << wnbrestart << endl;            /*   1 1 1 10 rho =1 epsloc=1e4 (unused), epsglo=1, */      /*      open(1,file='DATA_BMO.txt',status='unknown') */      /*      read(1,*) nbrestart */      /*      read(1,*) nbext1 */      /*      read(1,*) nbbvp */      /*      read(1,*) nbgrad */      /*      read(1,*) ifd,epsfd */      /*      read(1,*) rho000,epsloc */      /*      read(1,*) epsij */      /*      read(1,*) ndim */      /*      close(1) */        /*<       call init(ndim,vinit,xmin,xmax)>*/}        double main(Vect & vinit,Vect & xxmim,Vect & xxmax);    double  funcapp(Vect & x, Vect &fpx);    void    funcp(Vect &x, Vect &fpx,double f);    double  fun(Vect & x,  Vect& temp, Vect& g, double ro);    double  ropt_dicho(Vect x, Vect temp, double & ro, Vect g, double ccout);    int     gradopt(Vect & x1, Vect & fpx, 		      Vect & temp, double &rho, double  &f,		      double &gnorm,  		      Vect & fpx0, Vect & hgc);    void     tir( Vect &v, Vect &fpx);    void     rand( Vect &v);          double func(Vect & x)     {      double f=J(x);      if(nbeval>=0) 	{	  int ieval=nbeval++%nbsol;	  xfeval(ieval,':')=x;	  feval(ieval)=f;	}      return f;    }    virtual ~BijanMO(){}    // les 4 functions utilisateur    // virtual void init(Vect & xinit) = 0;        virtual double J( Vect & x)=0;    virtual R * DJ(Vect & x, Vect &fpx){return 0;} // do not existe     virtual void result(Vect & xoptg,Vect &vinit){}  };

⌨️ 快捷键说明

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