📄 estimate.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"><html><head> <title>Description of estimate</title> <meta name="keywords" content="estimate"> <meta name="description" content="ESTIMATE computes ZZ error estimator on each element"> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <meta name="generator" content="m2html © 2003 Guillaume Flandin"> <meta name="robots" content="index, follow"> <link type="text/css" rel="stylesheet" href="../../m2html.css"></head><body><a name="_top"></a><!-- # AFEM@matlab --><!-- menu.html 3_Estimate --><h1>estimate</h1><h2><a name="_name"></a>PURPOSE <a href="#_top"><img alt="^" border="0" src="../../up.png"></a></h2><div class="box"><strong>ESTIMATE computes ZZ error estimator on each element</strong></div><h2><a name="_synopsis"></a>SYNOPSIS <a href="#_top"><img alt="^" border="0" src="../../up.png"></a></h2><div class="box"><strong>function eta = estimate(mesh) </strong></div><h2><a name="_description"></a>DESCRIPTION <a href="#_top"><img alt="^" border="0" src="../../up.png"></a></h2><div class="fragment"><pre class="comment"> ESTIMATE computes ZZ error estimator on each element USAGE eta = estimate(mesh) INPUT mesh: current mesh u: finite element solution OUTPUT beta: error estimator on each element</pre></div><!-- crossreference --><h2><a name="_cross"></a>CROSS-REFERENCE INFORMATION <a href="#_top"><img alt="^" border="0" src="../../up.png"></a></h2>This function calls:<ul style="list-style-image:url(../../matlabicon.gif)"></ul>This function is called by:<ul style="list-style-image:url(../../matlabicon.gif)"><li><a href="../../AFEM@matlab/1_Example/Lbig.html" class="code" title="function Lbig">Lbig</a> LBIG solves Poisson equation in a L-shaped domain with FEM with</li><li><a href="../../AFEM@matlab/1_Example/Lshape.html" class="code" title="function Lshape">Lshape</a> LSHAPE solves Poisson equation in a L-shaped domain with FEM with</li><li><a href="../../AFEM@matlab/1_Example/circle.html" class="code" title="function circle">circle</a> CIRCLE simulates adaptive grids for a problem with moving circlular</li><li><a href="../../AFEM@matlab/1_Example/crack.html" class="code" title="function crack">crack</a> CRACK solves Poisson equation in a crack domain with AFEM.</li></ul><!-- crossreference --><h2><a name="_subfunctions"></a>SUBFUNCTIONS <a href="#_top"><img alt="^" border="0" src="../../up.png"></a></h2><ul style="list-style-image:url(../../matlabicon.gif)"><li><a href="#_sub1" class="code">function [dudx,dudy] = ZZ(mesh)</a></li><li><a href="#_sub2" class="code">function [sdudx,sdudy,area] = sgrad(mesh,u)</a></li></ul><h2><a name="_source"></a>SOURCE CODE <a href="#_top"><img alt="^" border="0" src="../../up.png"></a></h2><div class="fragment"><pre><a name="_sub0" href="#_subfunctions" class="code">function eta = estimate(mesh)</a><span class="comment">% ESTIMATE computes ZZ error estimator on each element</span><span class="comment">%</span><span class="comment">% USAGE</span><span class="comment">% eta = estimate(mesh)</span><span class="comment">%</span><span class="comment">% INPUT</span><span class="comment">% mesh: current mesh</span><span class="comment">% u: finite element solution</span><span class="comment">%</span><span class="comment">% OUTPUT</span><span class="comment">% beta: error estimator on each element</span><span class="comment">%</span><span class="comment">% L. Chen & C. Zhang 11-15-2006</span>[dudx,dudy] = <a href="#_sub1" class="code" title="subfunction [dudx,dudy] = ZZ(mesh)">ZZ</a>(mesh);[dudxx,dudxy] = <a href="#_sub2" class="code" title="subfunction [sdudx,sdudy,area] = sgrad(mesh,u)">sgrad</a>(mesh,dudx);[dudyx,dudyy] = <a href="#_sub2" class="code" title="subfunction [sdudx,sdudy,area] = sgrad(mesh,u)">sgrad</a>(mesh,dudy);eta = abs(dudxx) + abs(dudxy) + abs(dudyx) + abs(dudyy);<span class="comment">%--------------------------------------------------------------------------</span><span class="comment">% End of function ESTIMATE</span><span class="comment">%--------------------------------------------------------------------------</span><span class="comment">%--------------------------------------------------------------------------</span><span class="comment">% Sub functions called by ESTIMATE</span><span class="comment">%--------------------------------------------------------------------------</span><a name="_sub1" href="#_subfunctions" class="code">function [dudx,dudy] = ZZ(mesh)</a><span class="comment">% ZZ is the Z-Z recovery error estimator</span>N = size(mesh.node,1); NT = size(mesh.elem,1); activeNode = find(mesh.type~=0); nonActive = setdiff(1:N,activeNode);[sdudx,sdudy,area] = <a href="#_sub2" class="code" title="subfunction [sdudx,sdudy,area] = sgrad(mesh,u)">sgrad</a>(mesh,mesh.solu);patcharea = sparse(mesh.elem,ones(NT,3),area*[1,1,1],N,1); dudx = accumarray(mesh.elem(:),[sdudx;sdudx;sdudx],[N 1]);dudy = accumarray(mesh.elem(:),[sdudy;sdudy;sdudy],[N 1]);dudx(activeNode) = dudx(activeNode)./patcharea(activeNode);dudy(activeNode) = dudy(activeNode)./patcharea(activeNode);dudx(nonActive) = 0; dudy(nonActive) = 0;<span class="comment">%--------------------------------------------------------------------------</span><span class="comment">% End of function ZZ</span><span class="comment">%--------------------------------------------------------------------------</span><a name="_sub2" href="#_subfunctions" class="code">function [sdudx,sdudy,area] = sgrad(mesh,u)</a><span class="comment">% SGRAD compute the scaled grad of w on the mesh</span><span class="comment">% it is elementwise</span>ve(:,:,1) = mesh.node(mesh.elem(:,3),:)-mesh.node(mesh.elem(:,2),:);ve(:,:,2) = mesh.node(mesh.elem(:,1),:)-mesh.node(mesh.elem(:,3),:);ve(:,:,3) = mesh.node(mesh.elem(:,2),:)-mesh.node(mesh.elem(:,1),:);area = 0.5*abs(-ve(:,1,3).*ve(:,2,2)+ve(:,2,3).*ve(:,1,2));sdudx = -0.5*( u(mesh.elem(:,1)).*ve(:,2,1) <span class="keyword">...</span> + u(mesh.elem(:,2)).*ve(:,2,2) <span class="keyword">...</span> + u(mesh.elem(:,3)).*ve(:,2,3) );sdudy = 0.5*( u(mesh.elem(:,1)).*ve(:,1,1) <span class="keyword">...</span> + u(mesh.elem(:,2)).*ve(:,1,2) <span class="keyword">...</span> + u(mesh.elem(:,3)).*ve(:,1,3) );<span class="comment">%--------------------------------------------------------------------------</span><span class="comment">% End of function SGRAD</span><span class="comment">%--------------------------------------------------------------------------</span></pre></div><hr><address>Generated on Fri 17-Nov-2006 11:02:53 by <strong><a href="http://www.artefact.tk/software/matlab/m2html/" target="_parent">m2html</a></strong> © 2003</address></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -