annotate surfSym.m @ 1031:2ef20d00b386 feature/advectionRV

For easier comparison, return both the first order and residual viscosity when evaluating the residual. Add the first order and residual viscosity to the state of the RungekuttaRV time steppers
author Vidar Stiernström <vidar.stiernstrom@it.uu.se>
date Thu, 17 Jan 2019 10:25:06 +0100
parents bcddbc2beef4
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
521
bcddbc2beef4 Add a symmetric surf
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
1 function h = surfSym(X,Y,Z)
bcddbc2beef4 Add a symmetric surf
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
2 if isvector(X) && isvector(Y)
bcddbc2beef4 Add a symmetric surf
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
3 [X,Y] = meshgrid(X,Y);
bcddbc2beef4 Add a symmetric surf
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
4 end
bcddbc2beef4 Add a symmetric surf
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
5
bcddbc2beef4 Add a symmetric surf
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
6 V_nodes = [X(:), Y(:), Z(:)];
bcddbc2beef4 Add a symmetric surf
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
7
bcddbc2beef4 Add a symmetric surf
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
8 X_centers = neighbourMean(X);
bcddbc2beef4 Add a symmetric surf
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
9 Y_centers = neighbourMean(Y);
bcddbc2beef4 Add a symmetric surf
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
10 Z_centers = neighbourMean(Z);
bcddbc2beef4 Add a symmetric surf
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
11 V_centers = [X_centers(:), Y_centers(:), Z_centers(:)];
bcddbc2beef4 Add a symmetric surf
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
12
bcddbc2beef4 Add a symmetric surf
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
13
bcddbc2beef4 Add a symmetric surf
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
14 N = prod(size(X));
bcddbc2beef4 Add a symmetric surf
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
15 nodeIndecies = reshape(1:N, size(X));
bcddbc2beef4 Add a symmetric surf
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
16 centerIndecies = reshape(N+(1:prod(size(X)-[1,1])), size(X) - [1,1]);
bcddbc2beef4 Add a symmetric surf
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
17
bcddbc2beef4 Add a symmetric surf
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
18 % figure()
bcddbc2beef4 Add a symmetric surf
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
19 % h = line(V_nodes(:,1),V_nodes(:,2),V_nodes(:,3));
bcddbc2beef4 Add a symmetric surf
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
20 % h.LineStyle = 'none';
bcddbc2beef4 Add a symmetric surf
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
21 % h.Marker = '.';
bcddbc2beef4 Add a symmetric surf
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
22 % h = line(V_centers(:,1),V_centers(:,2),V_centers(:,3));
bcddbc2beef4 Add a symmetric surf
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
23 % h.LineStyle = 'none';
bcddbc2beef4 Add a symmetric surf
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
24 % h.Marker = '.';
bcddbc2beef4 Add a symmetric surf
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
25 % h.Color = Color.red;
bcddbc2beef4 Add a symmetric surf
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
26 % axis equal
bcddbc2beef4 Add a symmetric surf
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
27
bcddbc2beef4 Add a symmetric surf
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
28
bcddbc2beef4 Add a symmetric surf
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
29 I_0 = nodeIndecies(1:end-1, 1:end-1);
bcddbc2beef4 Add a symmetric surf
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
30 I_1 = nodeIndecies(2:end, 1:end-1);
bcddbc2beef4 Add a symmetric surf
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
31 I_2 = nodeIndecies(2:end, 2:end);
bcddbc2beef4 Add a symmetric surf
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
32 I_3 = nodeIndecies(1:end-1, 2:end);
bcddbc2beef4 Add a symmetric surf
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
33 I_C = centerIndecies;
bcddbc2beef4 Add a symmetric surf
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
34
bcddbc2beef4 Add a symmetric surf
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
35 S.Vertices = [
bcddbc2beef4 Add a symmetric surf
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
36 V_nodes;
bcddbc2beef4 Add a symmetric surf
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
37 V_centers;
bcddbc2beef4 Add a symmetric surf
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
38 ];
bcddbc2beef4 Add a symmetric surf
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
39
bcddbc2beef4 Add a symmetric surf
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
40 S.Faces = [
bcddbc2beef4 Add a symmetric surf
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
41 I_0(:), I_1(:), I_C(:);
bcddbc2beef4 Add a symmetric surf
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
42 I_1(:), I_2(:), I_C(:);
bcddbc2beef4 Add a symmetric surf
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
43 I_2(:), I_3(:), I_C(:);
bcddbc2beef4 Add a symmetric surf
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
44 I_3(:), I_0(:), I_C(:);
bcddbc2beef4 Add a symmetric surf
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
45 ];
bcddbc2beef4 Add a symmetric surf
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
46
bcddbc2beef4 Add a symmetric surf
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
47 % figure()
bcddbc2beef4 Add a symmetric surf
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
48 h = patch(S, 'FaceVertexCData', S.Vertices(:,3),'FaceColor','flat');
bcddbc2beef4 Add a symmetric surf
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
49 end
bcddbc2beef4 Add a symmetric surf
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
50
bcddbc2beef4 Add a symmetric surf
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
51 % Calculate the mean of four neighbours around a patch
bcddbc2beef4 Add a symmetric surf
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
52 function M = neighbourMean(A)
bcddbc2beef4 Add a symmetric surf
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
53 M = (A(1:end-1, 1:end-1) + A(2:end, 1:end-1) + A(1:end-1, 2:end) + A(2:end, 2:end))/4;
bcddbc2beef4 Add a symmetric surf
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
54 end