rbmatlab  1.16.09
 All Classes Namespaces Files Functions Variables Modules Pages
demo_edge_quad.m
Go to the documentation of this file.
1 function demo_edge_quad
2 %function demo_edge_quad
3 % demonstration of the edge-quadratures over a grid
4 %
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
8 %
9 % interestingly, a cubic velocity field is already integrated with
10 % 0 divergence by degree 2 Gaussian quadrature.
11 
12 % Bernard Haadonk 13.5.2007
13 
14 help demo_edge_quad
15 
16 grid = triagrid;
17 %grid = rectgrid;
18 
19 %params.xrange = [0,1];
20 %params.yrange = [0,1];
21 %params.xnumintervals = 5;
22 %params.ynumintervals = 5;
23 %grid = rectgrid(params);
24 
25 params.axis_equal = 1;
26 params.no_lines = 1;
27 
28 figure;
29 %title('Comparison of edge quadrature errors');
30 
31 % get all edges (even twice)
32 [elids, edgeids] = ind2sub(size(grid.VI),(1:length(grid.VI(:)))');
33 for degree = 1:3
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), ...
44 % 2)/grid.nneigh;
45 % subplot(2,3,degree),plot_element_data(grid,Vav,params);
46 % title(['deg = ',num2str(degree),...
47 % ', mean(|v|)']);
48  subplot(1,3,degree),plot_element_data(grid,D,params);
49  title(['qdeg = ',num2str(degree),...
50  ', max |div v| = ', num2str(max(abs(D)))]);
51 % keyboard;
52 end;
53 
54 set(gcf,'Position',[28 297 1210 317]);
55 
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;
62 
63 % TO BE ADJUSTED TO NEW SYNTAX
64 %| \docupdate
A triangular conforming grid in two dimensions.
Definition: triagrid.m:17
A cartesian rectangular grid in two dimensions with axis parallel elements.
Definition: rectgrid.m:17
function demo_edge_quad()
demonstration of the edge-quadratures over a grid