3 % demonstration of the edge-quadratures over a grid
5 % a quartic divergence free velocity field is put over an
6 % unstructured triangular grid. Is is shown, how increasing the
7 % quadrature degree improves the discrete divergence
9 % interestingly, a cubic velocity field is already integrated with
10 % 0 divergence by degree 2 Gaussian quadrature.
12 % Bernard Haadonk 13.5.2007
19 %params.xrange = [0,1];
20 %params.yrange = [0,1];
21 %params.xnumintervals = 5;
22 %params.ynumintervals = 5;
25 params.axis_equal = 1;
29 %title(
'Comparison of edge quadrature errors');
31 %
get all edges (even twice)
32 [elids, edgeids] = ind2sub(size(grid.VI),(1:length(grid.VI(:)))
');
34 PP = edge_quad_points(grid,elids,edgeids,degree);
35 VV = demo_velocity(PP);
36 VX = edge_quad_eval(grid,elids,edgeids,degree,VV(:,1));
37 VY = edge_quad_eval(grid,elids,edgeids,degree,VV(:,2));
38 % compute discrete divergence
39 VX = reshape(VX,size(grid.VI));
40 VY = reshape(VY,size(grid.VI));
41 D = sum(VX.*grid.NX + VY.*grid.NY,2);
42 % Vav = sum(sqrt( (VX.*(grid.EL.^(-1))).^2 + ...
43 % (VY.*(grid.EL.^(-1))).^2), ...
45 % subplot(2,3,degree),plot_element_data(grid,Vav,params);
46 % title(['deg =
',num2str(degree),...
48 subplot(1,3,degree),plot_element_data(grid,D,params);
49 title(['qdeg =
',num2str(degree),...
50 ', max |div v| =
', num2str(max(abs(D)))]);
54 set(gcf,'Position
',[28 297 1210 317]);
56 % demo function, evaluating a cubic velocity field in given points
57 % implements v(x,y)= (y^4,x^4)
58 function FF = demo_velocity(PP)
59 FF = zeros(size(PP,1),2);
60 FF(:,1) = (2*PP(:,2)-1).^4;
61 FF(:,2) = (2*PP(:,1)-1).^4;
63 % TO BE ADJUSTED TO NEW SYNTAX
A triangular conforming grid in two dimensions.
A cartesian rectangular grid in two dimensions with axis parallel elements.
function demo_edge_quad()
demonstration of the edge-quadratures over a grid