📄 ex14.php
字号:
<B><FONT COLOR="#228B22">const</FONT></B> <B><FONT COLOR="#228B22">unsigned</FONT></B> <B><FONT COLOR="#228B22">int</FONT></B> max_r_level = input_file(<B><FONT COLOR="#BC8F8F">"max_r_level"</FONT></B>, 3); <B><FONT COLOR="#228B22">const</FONT></B> Real refine_percentage = input_file(<B><FONT COLOR="#BC8F8F">"refine_percentage"</FONT></B>, 0.5); <B><FONT COLOR="#228B22">const</FONT></B> Real coarsen_percentage = input_file(<B><FONT COLOR="#BC8F8F">"coarsen_percentage"</FONT></B>, 0.5); <B><FONT COLOR="#228B22">const</FONT></B> <B><FONT COLOR="#228B22">unsigned</FONT></B> <B><FONT COLOR="#228B22">int</FONT></B> uniform_refine = input_file(<B><FONT COLOR="#BC8F8F">"uniform_refine"</FONT></B>,0); <B><FONT COLOR="#228B22">const</FONT></B> std::string refine_type = input_file(<B><FONT COLOR="#BC8F8F">"refinement_type"</FONT></B>, <B><FONT COLOR="#BC8F8F">"h"</FONT></B>); <B><FONT COLOR="#228B22">const</FONT></B> std::string approx_type = input_file(<B><FONT COLOR="#BC8F8F">"approx_type"</FONT></B>, <B><FONT COLOR="#BC8F8F">"LAGRANGE"</FONT></B>); <B><FONT COLOR="#228B22">const</FONT></B> <B><FONT COLOR="#228B22">unsigned</FONT></B> <B><FONT COLOR="#228B22">int</FONT></B> approx_order = input_file(<B><FONT COLOR="#BC8F8F">"approx_order"</FONT></B>, 1); <B><FONT COLOR="#228B22">const</FONT></B> std::string element_type = input_file(<B><FONT COLOR="#BC8F8F">"element_type"</FONT></B>, <B><FONT COLOR="#BC8F8F">"tensor"</FONT></B>); <B><FONT COLOR="#228B22">const</FONT></B> <B><FONT COLOR="#228B22">int</FONT></B> extra_error_quadrature = input_file(<B><FONT COLOR="#BC8F8F">"extra_error_quadrature"</FONT></B>, 0); <B><FONT COLOR="#228B22">const</FONT></B> <B><FONT COLOR="#228B22">int</FONT></B> max_linear_iterations = input_file(<B><FONT COLOR="#BC8F8F">"max_linear_iterations"</FONT></B>, 5000); dim = input_file(<B><FONT COLOR="#BC8F8F">"dimension"</FONT></B>, 2); <B><FONT COLOR="#228B22">const</FONT></B> std::string indicator_type = input_file(<B><FONT COLOR="#BC8F8F">"indicator_type"</FONT></B>, <B><FONT COLOR="#BC8F8F">"kelly"</FONT></B>); singularity = input_file(<B><FONT COLOR="#BC8F8F">"singularity"</FONT></B>, true); <B><FONT COLOR="#5F9EA0">std</FONT></B>::string approx_name = <B><FONT COLOR="#BC8F8F">""</FONT></B>; <B><FONT COLOR="#A020F0">if</FONT></B> (element_type == <B><FONT COLOR="#BC8F8F">"tensor"</FONT></B>) approx_name += <B><FONT COLOR="#BC8F8F">"bi"</FONT></B>; <B><FONT COLOR="#A020F0">if</FONT></B> (approx_order == 1) approx_name += <B><FONT COLOR="#BC8F8F">"linear"</FONT></B>; <B><FONT COLOR="#A020F0">else</FONT></B> <B><FONT COLOR="#A020F0">if</FONT></B> (approx_order == 2) approx_name += <B><FONT COLOR="#BC8F8F">"quadratic"</FONT></B>; <B><FONT COLOR="#A020F0">else</FONT></B> <B><FONT COLOR="#A020F0">if</FONT></B> (approx_order == 3) approx_name += <B><FONT COLOR="#BC8F8F">"cubic"</FONT></B>; <B><FONT COLOR="#A020F0">else</FONT></B> <B><FONT COLOR="#A020F0">if</FONT></B> (approx_order == 4) approx_name += <B><FONT COLOR="#BC8F8F">"quartic"</FONT></B>; <B><FONT COLOR="#5F9EA0">std</FONT></B>::string output_file = approx_name; output_file += <B><FONT COLOR="#BC8F8F">"_"</FONT></B>; output_file += refine_type; <B><FONT COLOR="#A020F0">if</FONT></B> (uniform_refine == 0) output_file += <B><FONT COLOR="#BC8F8F">"_adaptive.m"</FONT></B>; <B><FONT COLOR="#A020F0">else</FONT></B> output_file += <B><FONT COLOR="#BC8F8F">"_uniform.m"</FONT></B>; <B><FONT COLOR="#5F9EA0">std</FONT></B>::ofstream out (output_file.c_str()); out << <B><FONT COLOR="#BC8F8F">"% dofs L2-error H1-error"</FONT></B> << std::endl; out << <B><FONT COLOR="#BC8F8F">"e = ["</FONT></B> << std::endl; Mesh mesh (dim); <B><FONT COLOR="#A020F0">if</FONT></B> (dim == 1) <B><FONT COLOR="#5F9EA0">MeshTools</FONT></B>::Generation::build_line(mesh,1,-1.,0.); <B><FONT COLOR="#A020F0">else</FONT></B> <B><FONT COLOR="#A020F0">if</FONT></B> (dim == 2) mesh.read(<B><FONT COLOR="#BC8F8F">"lshaped.xda"</FONT></B>); <B><FONT COLOR="#A020F0">else</FONT></B> mesh.read(<B><FONT COLOR="#BC8F8F">"lshaped3D.xda"</FONT></B>); <B><FONT COLOR="#A020F0">if</FONT></B> (element_type == <B><FONT COLOR="#BC8F8F">"simplex"</FONT></B>) <B><FONT COLOR="#5F9EA0">MeshTools</FONT></B>::Modification::all_tri(mesh); <B><FONT COLOR="#A020F0">if</FONT></B> (approx_order > 1 || refine_type != <B><FONT COLOR="#BC8F8F">"h"</FONT></B>) mesh.all_second_order(); MeshRefinement mesh_refinement(mesh); mesh_refinement.refine_fraction() = refine_percentage; mesh_refinement.coarsen_fraction() = coarsen_percentage; mesh_refinement.max_h_level() = max_r_level; EquationSystems equation_systems (mesh); { LinearImplicitSystem& system = equation_systems.add_system<LinearImplicitSystem> (<B><FONT COLOR="#BC8F8F">"Laplace"</FONT></B>); system.add_variable(<B><FONT COLOR="#BC8F8F">"u"</FONT></B>, static_cast<Order>(approx_order), <B><FONT COLOR="#5F9EA0">Utility</FONT></B>::string_to_enum<FEFamily>(approx_type)); system.attach_assemble_function (assemble_laplace); equation_systems.init(); equation_systems.parameters.set<<B><FONT COLOR="#228B22">unsigned</FONT></B> <B><FONT COLOR="#228B22">int</FONT></B>>(<B><FONT COLOR="#BC8F8F">"linear solver maximum iterations"</FONT></B>) = max_linear_iterations; equation_systems.parameters.set<Real>(<B><FONT COLOR="#BC8F8F">"linear solver tolerance"</FONT></B>) = TOLERANCE * TOLERANCE * TOLERANCE; equation_systems.print_info(); } ExactSolution exact_sol(equation_systems); exact_sol.attach_exact_value(exact_solution); exact_sol.attach_exact_deriv(exact_derivative); exact_sol.extra_quadrature_order(extra_error_quadrature); LinearImplicitSystem& system = equation_systems.get_system<LinearImplicitSystem>(<B><FONT COLOR="#BC8F8F">"Laplace"</FONT></B>); <B><FONT COLOR="#A020F0">for</FONT></B> (<B><FONT COLOR="#228B22">unsigned</FONT></B> <B><FONT COLOR="#228B22">int</FONT></B> r_step=0; r_step<max_r_steps; r_step++) { <B><FONT COLOR="#5F9EA0">std</FONT></B>::cout << <B><FONT COLOR="#BC8F8F">"Beginning Solve "</FONT></B> << r_step << std::endl; system.solve(); <B><FONT COLOR="#5F9EA0">std</FONT></B>::cout << <B><FONT COLOR="#BC8F8F">"System has: "</FONT></B> << equation_systems.n_active_dofs() << <B><FONT COLOR="#BC8F8F">" degrees of freedom."</FONT></B> << std::endl; <B><FONT COLOR="#5F9EA0">std</FONT></B>::cout << <B><FONT COLOR="#BC8F8F">"Linear solver converged at step: "</FONT></B> << system.n_linear_iterations() << <B><FONT COLOR="#BC8F8F">", final residual: "</FONT></B> << system.final_linear_residual() << std::endl; exact_sol.compute_error(<B><FONT COLOR="#BC8F8F">"Laplace"</FONT></B>, <B><FONT COLOR="#BC8F8F">"u"</FONT></B>); <B><FONT COLOR="#5F9EA0">std</FONT></B>::cout << <B><FONT COLOR="#BC8F8F">"L2-Error is: "</FONT></B> << exact_sol.l2_error(<B><FONT COLOR="#BC8F8F">"Laplace"</FONT></B>, <B><FONT COLOR="#BC8F8F">"u"</FONT></B>) << std::endl; <B><FONT COLOR="#5F9EA0">std</FONT></B>::cout << <B><FONT COLOR="#BC8F8F">"H1-Error is: "</FONT></B> << exact_sol.h1_error(<B><FONT COLOR="#BC8F8F">"Laplace"</FONT></B>, <B><FONT COLOR="#BC8F8F">"u"</FONT></B>) << std::endl; out << equation_systems.n_active_dofs() << <B><FONT COLOR="#BC8F8F">" "</FONT></B> << exact_sol.l2_error(<B><FONT COLOR="#BC8F8F">"Laplace"</FONT></B>, <B><FONT COLOR="#BC8F8F">"u"</FONT></B>) << <B><FONT COLOR="#BC8F8F">" "</FONT></B> << exact_sol.h1_error(<B><FONT COLOR="#BC8F8F">"Laplace"</FONT></B>, <B><FONT COLOR="#BC8F8F">"u"</FONT></B>) << std::endl; <B><FONT COLOR="#A020F0">if</FONT></B> (r_step+1 != max_r_steps) { <B><FONT COLOR="#5F9EA0">std</FONT></B>::cout << <B><FONT COLOR="#BC8F8F">" Refining the mesh..."</FONT></B> << std::endl; <B><FONT COLOR="#A020F0">if</FONT></B> (uniform_refine == 0) { ErrorVector error; <B><FONT COLOR="#A020F0">if</FONT></B> (indicator_type == <B><FONT COLOR="#BC8F8F">"exact"</FONT></B>) { ExactErrorEstimator error_estimator; error_estimator.attach_exact_value(exact_solution); error_estimator.attach_exact_deriv(exact_derivative); error_estimator.sobolev_order() = 1; error_estimator.estimate_error (system, error); } <B><FONT COLOR="#A020F0">else</FONT></B> <B><FONT COLOR="#A020F0">if</FONT></B> (indicator_type == <B><FONT COLOR="#BC8F8F">"patch"</FONT></B>) { PatchRecoveryErrorEstimator error_estimator; error_estimator.estimate_error (system, error); } <B><FONT COLOR="#A020F0">else</FONT></B> <B><FONT COLOR="#A020F0">if</FONT></B> (indicator_type == <B><FONT COLOR="#BC8F8F">"uniform"</FONT></B>) { UniformRefinementEstimator error_estimator; error_estimator.estimate_error (system, error); } <B><FONT COLOR="#A020F0">else</FONT></B> { assert (indicator_type == <B><FONT COLOR="#BC8F8F">"kelly"</FONT></B>); KellyErrorEstimator error_estimator; error_estimator.estimate_error (system, error); } mesh_refinement.flag_elements_by_error_fraction (error); <B><FONT COLOR="#A020F0">if</FONT></B> (refine_type == <B><FONT COLOR="#BC8F8F">"p"</FONT></B>) mesh_refinement.switch_h_to_p_refinement(); <B><FONT COLOR="#A020F0">if</FONT></B> (refine_type == <B><FONT COLOR="#BC8F8F">"matchedhp"</FONT></B>) mesh_refinement.add_p_to_h_refinement(); <B><FONT COLOR="#A020F0">if</FONT></B> (refine_type == <B><FONT COLOR="#BC8F8F">"hp"</FONT></B>) { HPCoarsenTest hpselector; hpselector.select_refinement(system); } <B><FONT COLOR="#A020F0">if</FONT></B> (refine_type == <B><FONT COLOR="#BC8F8F">"singularhp"</FONT></B>) { assert (singularity); HPSingularity hpselector; hpselector.singular_points.push_back(Point()); hpselector.select_refinement(system); } mesh_refinement.refine_and_coarsen_elements(); } <B><FONT COLOR="#A020F0">else</FONT></B> <B><FONT COLOR="#A020F0">if</FONT></B> (uniform_refine == 1) { <B><FONT COLOR="#A020F0">if</FONT></B> (refine_type == <B><FONT COLOR="#BC8F8F">"h"</FONT></B> || refine_type == <B><FONT COLOR="#BC8F8F">"hp"</FONT></B> || refine_type == <B><FONT COLOR="#BC8F8F">"matchedhp"</FONT></B>) mesh_refinement.uniformly_refine(1); <B><FONT COLOR="#A020F0">if</FONT></B> (refine_type == <B><FONT COLOR="#BC8F8F">"p"</FONT></B> || refine_type == <B><FONT COLOR="#BC8F8F">"hp"</FONT></B> || refine_type == <B><FONT COLOR="#BC8F8F">"matchedhp"</FONT></B>) mesh_refinement.uniformly_p_refine(1); } equation_systems.reinit (); } } GMVIO (mesh).write_equation_systems (<B><FONT COLOR="#BC8F8F">"lshaped.gmv"</FONT></B>, equation_systems); out << <B><FONT COLOR="#BC8F8F">"];"</FONT></B> << std::endl; out << <B><FONT COLOR="#BC8F8F">"hold on"</FONT></B> << std::endl; out << <B><FONT COLOR="#BC8F8F">"plot(e(:,1), e(:,2), 'bo-');"</FONT></B> << std::endl; out << <B><FONT COLOR="#BC8F8F">"plot(e(:,1), e(:,3), 'ro-');"</FONT></B> << std::endl; out << <B><FONT COLOR="#BC8F8F">"xlabel('dofs');"</FONT></B> << std::endl; out << <B><FONT COLOR="#BC8F8F">"title('"</FONT></B> << approx_name << <B><FONT COLOR="#BC8F8F">" elements');"</FONT></B> << std::endl; out << <B><FONT COLOR="#BC8F8F">"legend('L2-error', 'H1-error');"</FONT></B> << std::endl; } #endif <I><FONT COLOR="#B22222">// #ifndef ENABLE_AMR</FONT></I> <B><FONT COLOR="#A020F0">return</FONT></B> libMesh::close (); } Number exact_solution(<B><FONT COLOR="#228B22">const</FONT></B> Point& p, <B><FONT COLOR="#228B22">const</FONT></B> Parameters&, <I><FONT COLOR="#B22222">// parameters, not needed</FONT></I> <B><FONT COLOR="#228B22">const</FONT></B> std::string&, <I><FONT COLOR="#B22222">// sys_name, not needed</FONT></I> <B><FONT COLOR="#228B22">const</FONT></B> std::string&) <I><FONT COLOR="#B22222">// unk_name, not needed</FONT></I> { <B><FONT COLOR="#228B22">const</FONT></B> Real x = p(0); <B><FONT COLOR="#228B22">const</FONT></B> Real y = (dim > 1) ? p(1) : 0.; <B><FONT COLOR="#A020F0">if</FONT></B> (singularity) { Real theta = atan2(y,x); <B><FONT COLOR="#A020F0">if</FONT></B> (theta < 0) theta += 2. * libMesh::pi; <B><FONT COLOR="#228B22">const</FONT></B> Real z = (dim > 2) ? p(2) : 0; <B><FONT COLOR="#A020F0">return</FONT></B> pow(x*x + y*y, 1./3.)*sin(2./3.*theta) + z; } <B><FONT COLOR="#A020F0">else</FONT></B> { <B><FONT COLOR="#228B22">const</FONT></B> Real z = (dim > 2) ? p(2) : 0; <B><FONT COLOR="#A020F0">return</FONT></B> cos(x) * exp(y) * (1. - z); } } Gradient exact_derivative(<B><FONT COLOR="#228B22">const</FONT></B> Point& p, <B><FONT COLOR="#228B22">const</FONT></B> Parameters&, <I><FONT COLOR="#B22222">// parameters, not needed</FONT></I> <B><FONT COLOR="#228B22">const</FONT></B> std::string&, <I><FONT COLOR="#B22222">// sys_name, not needed</FONT></I> <B><FONT COLOR="#228B22">const</FONT></B> std::string&) <I><FONT COLOR="#B22222">// unk_name, not needed</FONT></I> { Gradient gradu; <B><FONT COLOR="#228B22">const</FONT></B> Real x = p(0); <B><FONT COLOR="#228B22">const</FONT></B> Real y = dim > 1 ? p(1) : 0.; <B><FONT COLOR="#A020F0">if</FONT></B> (singularity) { assert (x != 0.); <B><FONT COLOR="#228B22">const</FONT></B> Real tt = 2./3.; <B><FONT COLOR="#228B22">const</FONT></B> Real ot = 1./3.; <B><FONT COLOR="#228B22">const</FONT></B> Real r2 = x*x + y*y; Real theta = atan2(y,x); <B><FONT COLOR="#A020F0">if</FONT></B> (theta < 0) theta += 2. * libMesh::pi; gradu(0) = tt*x*pow(r2,-tt)*sin(tt*theta) - pow(r2,ot)*cos(tt*theta)*tt/(1.+y*y/x/x)*y/x/x; <B><FONT COLOR="#A020F0">if</FONT></B> (dim > 1) gradu(1) = tt*y*pow(r2,-tt)*sin(tt*theta) + pow(r2,ot)*cos(tt*theta)*tt/(1.+y*y/x/x)*1./x; <B><FONT COLOR="#A020F0">if</FONT></B> (dim > 2) gradu(2) = 1.; } <B><FONT COLOR="#A020F0">else</FONT></B> { <B><FONT COLOR="#228B22">const</FONT></B> Real z = (dim > 2) ? p(2) : 0; gradu(0) = -sin(x) * exp(y) * (1. - z); <B><FONT COLOR="#A020F0">if</FONT></B> (dim > 1) gradu(1) = cos(x) * exp(y) * (1. - z); <B><FONT COLOR="#A020F0">if</FONT></B> (dim > 2) gradu(2) = -cos(x) * exp(y); } <B><FONT COLOR="#A020F0">return</FONT></B> gradu; } <B><FONT COLOR="#228B22">void</FONT></B> assemble_laplace(EquationSystems& es, <B><FONT COLOR="#228B22">const</FONT></B> std::string& system_name) { #ifdef ENABLE_AMR assert (system_name == <B><FONT COLOR="#BC8F8F">"Laplace"</FONT></B>); PerfLog perf_log (<B><FONT COLOR="#BC8F8F">"Matrix Assembly"</FONT></B>,false); <B><FONT COLOR="#228B22">const</FONT></B> Mesh& mesh = es.get_mesh(); <B><FONT COLOR="#228B22">const</FONT></B> <B><FONT COLOR="#228B22">unsigned</FONT></B> <B><FONT COLOR="#228B22">int</FONT></B> dim = mesh.mesh_dimension(); LinearImplicitSystem& system = es.get_system<LinearImplicitSystem>(<B><FONT COLOR="#BC8F8F">"Laplace"</FONT></B>); <B><FONT COLOR="#228B22">const</FONT></B> DofMap& dof_map = system.get_dof_map(); FEType fe_type = dof_map.variable_type(0); AutoPtr<FEBase> fe (FEBase::build(dim, fe_type)); AutoPtr<FEBase> fe_face (FEBase::build(dim, fe_type)); AutoPtr<QBase> qrule(fe_type.default_quadrature_rule(dim)); AutoPtr<QBase> qface(fe_type.default_quadrature_rule(dim-1)); fe->attach_quadrature_rule (qrule.get()); fe_face->attach_quadrature_rule (qface.get()); <B><FONT COLOR="#228B22">const</FONT></B> std::vector<Real>& JxW = fe->get_JxW(); <B><FONT COLOR="#228B22">const</FONT></B> std::vector<Real>& JxW_face = fe_face->get_JxW(); <B><FONT COLOR="#228B22">const</FONT></B> std::vector<Point>& q_point = fe->get_xyz(); <B><FONT COLOR="#228B22">const</FONT></B> std::vector<std::vector<Real> >& phi = fe->get_phi(); <B><FONT COLOR="#228B22">const</FONT></B> std::vector<std::vector<Real> >& psi = fe_face->get_phi(); <B><FONT COLOR="#228B22">const</FONT></B> std::vector<std::vector<RealGradient> >& dphi = fe->get_dphi(); <B><FONT COLOR="#228B22">const</FONT></B> std::vector<Point>& qface_points = fe_face->get_xyz(); DenseMatrix<Number> Ke; DenseVector<Number> Fe; <B><FONT COLOR="#5F9EA0">std</FONT></B>::vector<<B><FONT COLOR="#228B22">unsigned</FONT></B> <B><FONT COLOR="#228B22">int</FONT></B>> dof_indices; <B><FONT COLOR="#5F9EA0">MeshBase</FONT></B>::const_element_iterator el = mesh.active_local_elements_begin(); <B><FONT COLOR="#228B22">const</FONT></B> MeshBase::const_element_iterator end_el = mesh.active_local_elements_end(); <B><FONT COLOR="#A020F0">for</FONT></B> ( ; el != end_el; ++el) { perf_log.start_event(<B><FONT COLOR="#BC8F8F">"elem init"</FONT></B>); <B><FONT COLOR="#228B22">const</FONT></B> Elem* elem = *el; dof_map.dof_indices (elem, dof_indices); fe->reinit (elem); Ke.resize (dof_indices.size(), dof_indices.size()); Fe.resize (dof_indices.size()); perf_log.stop_event(<B><FONT COLOR="#BC8F8F">"elem init"</FONT></B>); perf_log.start_event (<B><FONT COLOR="#BC8F8F">"Ke"</FONT></B>); <B><FONT COLOR="#A020F0">for</FONT></B> (<B><FONT COLOR="#228B22">unsigned</FONT></B> <B><FONT COLOR="#228B22">int</FONT></B> qp=0; qp<qrule->n_points(); qp++) <B><FONT COLOR="#A020F0">for</FONT></B> (<B><FONT COLOR="#228B22">unsigned</FONT></B> <B><FONT COLOR="#228B22">int</FONT></B> i=0; i<dphi.size(); i++) <B><FONT COLOR="#A020F0">for</FONT></B> (<B><FONT COLOR="#228B22">unsigned</FONT></B> <B><FONT COLOR="#228B22">int</FONT></B> j=0; j<dphi.size(); j++) Ke(i,j) += JxW[qp]*(dphi[i][qp]*dphi[j][qp]); <B><FONT COLOR="#A020F0">if</FONT></B> (dim == 1) <B><FONT COLOR="#A020F0">for</FONT></B> (<B><FONT COLOR="#228B22">unsigned</FONT></B> <B><FONT COLOR="#228B22">int</FONT></B> qp=0; qp<qrule->n_points(); qp++) { Real x = q_point[qp](0); Real f = singularity ? sqrt(3.)/9.*pow(-x, -4./3.) : cos(x); <B><FONT COLOR="#A020F0">for</FONT></B> (<B><FONT COLOR="#228B22">unsigned</FONT></B> <B><FONT COLOR="#228B22">int</FONT></B> i=0; i<dphi.size(); ++i) Fe(i) += JxW[qp]*phi[i][qp]*f; } perf_log.stop_event (<B><FONT COLOR="#BC8F8F">"Ke"</FONT></B>); { perf_log.start_event (<B><FONT COLOR="#BC8F8F">"BCs"</FONT></B>); <B><FONT COLOR="#228B22">const</FONT></B> Real penalty = 1.e10; <B><FONT COLOR="#A020F0">for</FONT></B> (<B><FONT COLOR="#228B22">unsigned</FONT></B> <B><FONT COLOR="#228B22">int</FONT></B> s=0; s<elem->n_sides(); s++) <B><FONT COLOR="#A020F0">if</FONT></B> (elem->neighbor(s) == NULL) { fe_face->reinit(elem,s); <B><FONT COLOR="#A020F0">for</FONT></B> (<B><FONT COLOR="#228B22">unsigned</FONT></B> <B><FONT COLOR="#228B22">int</FONT></B> qp=0; qp<qface->n_points(); qp++) { <B><FONT COLOR="#228B22">const</FONT></B> Number value = exact_solution (qface_points[qp],
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -