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

📄 mglab.m

📁 五点差分型多重网格方法:各种插值算子的比较)
💻 M
📖 第 1 页 / 共 2 页
字号:
             'precon_flag = SSOR');
         menu_item(f_solver_precon,'None','off','on',bgc,...
             'precon_flag = NONE;');

   f_solver_stop=menu_header(f_solver,'Stopping Criteria','off','on','w');
      f_stop_1=menu_header(f_solver_stop,'Residual Tolerance','on','off','w');
         menu_item(f_stop_1,'None','off','on',bgc,'rtol=0;');
         menu_item(f_stop_1,'1e-1','off','on',bgc,'rtol=1e-1;');
         menu_item(f_stop_1,'1e-2','off','on',bgc,'rtol=1e-2;');
         menu_item(f_stop_1,'1e-3','off','on',bgc,'rtol=1e-3;');
         menu_item(f_stop_1,'1e-4','off','on',bgc,'rtol=1e-4;');
         menu_item(f_stop_1,'1e-5','off','on',bgc,'rtol=1e-5;');
         menu_item(f_stop_1,'1e-6','off','on',bgc,'rtol=1e-6;');
         menu_item(f_stop_1,'1e-7','off','on',bgc,'rtol=1e-7;');
         menu_item(f_stop_1,'1e-8','off','on',bgc,'rtol=1e-8;');
         menu_item(f_stop_1,'1e-9','off','on',bgc,'rtol=1e-9;');
         menu_item(f_stop_1,'1e-10','off','on',bgc,'rtol=1e-10;');
         menu_item(f_stop_1,'1e-12','off','on',bgc,'rtol=1e-12;');
         menu_item(f_stop_1,'1e-14','off','on',bgc,'rtol=1e-14;');
         menu_item(f_stop_1,'1e-16','off','on',bgc,'rtol=1e-16;');
      f_stop_2=menu_header(f_solver_stop,'(Precon) Residual Tolerance',...
           'off','on','w');
         menu_item(f_stop_2,'None','off','on',bgc,'prtol=0;');
         menu_item(f_stop_2,'1e-1','off','on',bgc,'prtol=1e-1;');
         menu_item(f_stop_2,'1e-2','off','on',bgc,'prtol=1e-2;');
         menu_item(f_stop_2,'1e-3','off','on',bgc,'prtol=1e-3;');
         menu_item(f_stop_2,'1e-4','off','on',bgc,'prtol=1e-4;');
         menu_item(f_stop_2,'1e-5','off','on',bgc,'prtol=1e-5;');
         menu_item(f_stop_2,'1e-6','off','on',bgc,'prtol=1e-6;');
         menu_item(f_stop_2,'1e-7','off','on',bgc,'prtol=1e-7;');
         menu_item(f_stop_2,'1e-8','off','on',bgc,'prtol=1e-8;');
         menu_item(f_stop_2,'1e-9','off','on',bgc,'prtol=1e-9;');
         menu_item(f_stop_2,'1e-10','off','on',bgc,'prtol=1e-10;');
         menu_item(f_stop_2,'1e-12','off','on',bgc,'prtol=1e-12;');
         menu_item(f_stop_2,'1e-14','off','on',bgc,'prtol=1e-14;');
         menu_item(f_stop_2,'1e-16','off','on',bgc,'prtol=1e-16;');

      f_stop_3=menu_header(f_solver_stop,'Iteration Limit','off','on','w');
         menu_item(f_stop_3,' None','off','on',bgc,'max_it=0;');
         menu_item(f_stop_3,'    1','off','on',bgc,'max_it=1;');
         menu_item(f_stop_3,'    2','off','on',bgc,'max_it=2;');
         menu_item(f_stop_3,'    3','off','on',bgc,'max_it=3;');
         menu_item(f_stop_3,'    5','off','on',bgc,'max_it=5;');
         menu_item(f_stop_3,'   10','off','on',bgc,'max_it=10;');
         menu_item(f_stop_3,'   20','off','on',bgc,'max_it=20;');
         menu_item(f_stop_3,'   30','off','on',bgc,'max_it=30;');
         menu_item(f_stop_3,'   50','off','on',bgc,'max_it=50;');
         menu_item(f_stop_3,'  100','off','on',bgc,'max_it=100;');
         menu_item(f_stop_3,'  200','off','on',bgc,'max_it=200;');
         menu_item(f_stop_3,'  300','off','on',bgc,'max_it=300;');
         menu_item(f_stop_3,'  500','off','on',bgc,'max_it=500;');
         menu_item(f_stop_3,' 1000','off','on',bgc,'max_it=1000;');
      f_stop_4=menu_header(f_solver_stop,'Time Limit','off','off','w');
         menu_item(f_stop_4,'None','off','on',bgc,'max_time=0;');
         menu_item(f_stop_4,'1 sec','off','on',bgc,'max_time=1;');
         menu_item(f_stop_4,'5 sec','off','on',bgc,'max_time=5;');
         menu_item(f_stop_4,'10 sec','off','on',bgc,'max_time=10;');
         menu_item(f_stop_4,'30 sec','off','on',bgc,'max_time=30;');
         menu_item(f_stop_4,'1 min','off','on',bgc,'max_time=1*60;');
         menu_item(f_stop_4,'5 min','off','on',bgc,'max_time=5*60;');
         menu_item(f_stop_4,'10 min','off','on',bgc,'max_time=10*60;');
         menu_item(f_stop_4,'30 min','off','on',bgc,'max_time=30*60;');
         menu_item(f_stop_4,'1 hour','off','on',bgc,'max_time=60*60;');

% == MG Parameters ===========================================

   f_solver_mg=menu_header(main_fig,'MG-Parameters','on','on','w');
      f_mg_1 = menu_header(f_solver_mg,'Number of Levels','on','on','w');
         menu_item(f_mg_1,'1','off','on',bgc,...
            'coarse_level=min([1,max_level(nx1)]); generate_matrix=1;');
         menu_item(f_mg_1,'2','off','on',bgc,...
            'coarse_level=min([2,max_level(nx1)]); generate_matrix=1;');
         menu_item(f_mg_1,'3','off','on',bgc,...
            'coarse_level=min([3,max_level(nx1)]); generate_matrix=1;');
         menu_item(f_mg_1,'4','off','on',bgc,...
            'coarse_level=min([4,max_level(nx1)]); generate_matrix=1;');
         menu_item(f_mg_1,'5','off','on',bgc,...
            'coarse_level=min([5,max_level(nx1)]); generate_matrix=1;');
      f_mg_2=menu_header(f_solver_mg,'Smoother','off','on','w');
         f_mg_21=menu_item(f_mg_2,'Weighted Jacobi','on','on',bgc,...
              'smooth_flag=WEIGHTED_JACOBI;');
           f_mg_211=menu_header(f_mg_21,'Weight = ','on','on','w');
              menu_item(f_mg_211,'1.00','off','on',bgc,'wt=1.0;');
              menu_item(f_mg_211,'0.95','off','on',bgc,'wt=0.95;');
              menu_item(f_mg_211,'0.90','off','on',bgc,'wt=0.90;');
              menu_item(f_mg_211,'0.85','off','on',bgc,'wt=0.85;');
              menu_item(f_mg_211,'0.80','off','on',bgc,'wt=0.80;');
         menu_item(f_mg_2, 'Gauss-Seidel','off','on',bgc,...
              'smooth_flag=GAUSS_SEIDEL;');
         menu_item(f_mg_2, 'Red/Black Gauss-Seidel','off','off',bgc,...
              'smooth_flag=RB_GAUSS_SEIDEL;');
         f_mg_22=menu_header(f_mg_2,'Pre-smoothings','on','on','w');
            menu_item(f_mg_22,'0','off','on','w','nu1=0;');
            menu_item(f_mg_22,'1','off','on','w','nu1=1;');
            menu_item(f_mg_22,'2','off','on','w','nu1=2;');
            menu_item(f_mg_22,'3','off','on','w','nu1=3;');
            menu_item(f_mg_22,'4','off','on','w','nu1=4;');
            menu_item(f_mg_22,'5','off','on','w','nu1=5;');
         f_mg_23=menu_header(f_mg_2,'Post-smoothings','off','on','w');
            menu_item(f_mg_23,'0','off','on','w','nu2=0;');
            menu_item(f_mg_23,'1','off','on','w','nu2=1;');
            menu_item(f_mg_23,'2','off','on','w','nu2=2;');
            menu_item(f_mg_23,'3','off','on','w','nu2=3;');
            menu_item(f_mg_23,'4','off','on','w','nu2=4;');
            menu_item(f_mg_23,'5','off','on','w','nu2=5;');

      f_mg_3=menu_header(f_solver_mg,'Restriction','off','on','w');
         menu_item(f_mg_3, 'Injection','off','on',bgc,...
            'restrict_flag=INJECTION;');
         menu_item(f_mg_3, 'Half Weighting','off','on',bgc,...
            'restrict_flag=HALF_WEIGHTING;');
         menu_item(f_mg_3, 'Full Weighting','off','on',bgc,...
            'restrict_flag=FULL_WEIGHTING;');
         menu_item(f_mg_3, 'Bilinear Adjoint','off','off',bgc,...
            'restrict_flag=BILINEAR_ADJOINT;');

      f_mg_4=menu_header(f_solver_mg,'Prolongation','off','on','w');
         menu_item(f_mg_4, 'Linear','off','on',bgc,...
            'interp_flag=LINEAR;');
         menu_item(f_mg_4, 'Cubic','off','on',bgc,...
            'interp_flag=CUBIC;');
         menu_item(f_mg_4, 'Operator-based','off','off',bgc,...
            'interp_flag=OPERATOR_BASED;');
         menu_item(f_mg_4, 'Explicit/Bilinear','off','off',bgc,...
            'interp_flag=EXPLICIT_BILINEAR;');

      f_mg_5=menu_header(f_solver_mg,'Coarse-grid Solver','off','on','w');
         menu_item(f_mg_5,'Sparse GE','off','on',bgc,...
            'coarse_solver_flag=DIRECT_SOLVE;');
         menu_item(f_mg_5,'Smoother','off','on',bgc,...
            'coarse_solver_flag=SMOOTHER_SOLVE;');
         menu_item(f_mg_5,'PCG','off','off',bgc,...
            'coarse_solver_flag = PCG_SOLVE;');
         menu_item(f_mg_5,'BiCG-STAB','off','off',bgc,...
            'coarse_solver_flag = BICG_STAB_SOLVE;');
         f_mg_51=menu_item(f_mg_5,'GMRES(k)','off','off',bgc,...
             'coarse_solver_flag = GMRES_SOLVE;');
            f_mg_511=menu_header(f_mg_51,'k = ','on','on','w');
               menu_item(f_mg_511,'1','off','on',bgc,'restart=1;');
               menu_item(f_mg_511,'5','off','on',bgc,'restart=5;');
               menu_item(f_mg_511,'10','off','on',bgc,'restart=10;');
               menu_item(f_mg_511,'15','off','on',bgc,'restart=15;');
               menu_item(f_mg_511,'20','off','on',bgc,'restart=20;');

      f_mg_6=menu_header(f_solver_mg,'Coarse-grid Operator','off','on','w');
         menu_item(f_mg_6,'Standard 5pt','off','on',bgc,...
            'coarsening_flag=STANDARD;');
         menu_item(f_mg_6,'Galerkin coarsening','off','off',bgc,...
            'coarsening_flag=GALERKIN;');
         menu_item(f_mg_6,'Coeff. Averaging','off','off',bgc,...
            'coarsening_flag = AVERAGING;');

      f_mg_7=menu_header(f_solver_mg,'MG Cycle','off','on','w');
         menu_item(f_mg_7,'V-Cycle','off','on',bgc,...
            'cycle_flag=V_CYCLE;');
         menu_item(f_mg_7,'W-Cycle','off','on',bgc,...
            'cycle_flag=W_CYCLE;');
         menu_item(f_mg_7,'Half V-Cycle','off','off',bgc,...
            'cycle_flag=HALF_V_CYCLE;');

% == Results Menu Item ===========================================

f_results=menu_header(main_fig,'Visualize','on','on','w');

   menu_item(f_results,'Convergence History','off','on',bgc,...
      ' subplot(1,1,1);semilogy(its1,resids1,''r-'',its1,resids1,''wo'')');
   menu_item(f_results,'Computed Solution (surf)','off','on',bgc,...
      ' subplot(1,1,1);surf(reshape(sol1,nx1,ny1));shading interp;');
   menu_item(f_results,'Computed Solution (pcolor)','off','on',bgc,...
      ' subplot(1,1,1);pcolor(reshape(sol1,nx1,ny1));shading interp;');
   f_results_1=menu_header(f_results,'X-Axis','off','on','w');
       menu_item(f_results_1,'Iterations','off','on',bgc,...
          'x_axis_flag=ITERATIONS;');
       menu_item(f_results_1,'Time','off','off',bgc,...
          'x_axis_flag=TIME;');
   f_results_2=menu_header(f_results,'Y-Axis','off','on','w');
       menu_item(f_results_2,'Residual','off','on',bgc,...
          'y_axis_flag=ITERATIONS;');
       menu_item(f_results_2,'Precon. Residual','off','off',bgc,...
          'y_axis_flag=RESIDUAL;');
      
f_demos=menu_header(main_fig,'Demos','on','on','w');
   menu_item(f_demos,'Smoothers','off','on',bgc,'demo1;');
   menu_item(f_demos,'Fourier analysis','off','on',bgc,'demo2;');
   menu_item(f_demos,'Truncation error','off','on',bgc,'demo3;');

⌨️ 快捷键说明

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