📄 mglab.m
字号:
'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 + -