annotate +grid/lebedev2d.m @ 1336:0666629aa183 feature/D2_boundary_opt

Add methods for creating grids with different grid point distributions for each coordinate direction, and also supports constructing periodic grids
author Vidar Stiernström <vidar.stiernstrom@it.uu.se>
date Fri, 13 May 2022 13:26:16 +0200
parents cf542444f022
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1263
117bc4542b61 Add helper function for 2d Lebedev grid
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
1 % Creates a 2D staggered grid of Lebedev (checkerboard) type
117bc4542b61 Add helper function for 2d Lebedev grid
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
2 % Primal grid: equidistant with m points.
117bc4542b61 Add helper function for 2d Lebedev grid
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
3 % Dual grid: m + 1 points, h/2 spacing first point.
117bc4542b61 Add helper function for 2d Lebedev grid
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
4 % First grid line is "primal", 2nd is "dual", etc.
117bc4542b61 Add helper function for 2d Lebedev grid
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
5 %
117bc4542b61 Add helper function for 2d Lebedev grid
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
6 % Examples
117bc4542b61 Add helper function for 2d Lebedev grid
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
7 % g = grid.Lebedev2d(m, xlims, ylims)
117bc4542b61 Add helper function for 2d Lebedev grid
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
8 % g = grid.Lebedev2d([21, 31], {0,2}, {0,3})
117bc4542b61 Add helper function for 2d Lebedev grid
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
9 function g = lebedev2d(m, xlims, ylims, opSet)
117bc4542b61 Add helper function for 2d Lebedev grid
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
10
117bc4542b61 Add helper function for 2d Lebedev grid
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
11 default_arg('opSet', @(m,lim) sbp.D1StaggeredUpwind(m,lim,2));
117bc4542b61 Add helper function for 2d Lebedev grid
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
12
117bc4542b61 Add helper function for 2d Lebedev grid
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
13 if ~iscell(xlims) || numel(xlims) ~= 2
1273
cf542444f022 Correct error messages in lebedev2d
Martin Almquist <malmquist@stanford.edu>
parents: 1263
diff changeset
14 error('grid:lebedev2D:InvalidLimits','The limits should be cell arrays with 2 elements.');
1263
117bc4542b61 Add helper function for 2d Lebedev grid
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
15 end
117bc4542b61 Add helper function for 2d Lebedev grid
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
16
117bc4542b61 Add helper function for 2d Lebedev grid
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
17 if ~iscell(ylims) || numel(ylims) ~= 2
1273
cf542444f022 Correct error messages in lebedev2d
Martin Almquist <malmquist@stanford.edu>
parents: 1263
diff changeset
18 error('grid:lebedev2D:InvalidLimits','The limits should be cell arrays with 2 elements.');
1263
117bc4542b61 Add helper function for 2d Lebedev grid
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
19 end
117bc4542b61 Add helper function for 2d Lebedev grid
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
20
117bc4542b61 Add helper function for 2d Lebedev grid
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
21 if xlims{1} > xlims{2}
1273
cf542444f022 Correct error messages in lebedev2d
Martin Almquist <malmquist@stanford.edu>
parents: 1263
diff changeset
22 error('grid:lebedev2D:InvalidLimits','The elements of the limit must be increasing.');
1263
117bc4542b61 Add helper function for 2d Lebedev grid
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
23 end
117bc4542b61 Add helper function for 2d Lebedev grid
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
24
117bc4542b61 Add helper function for 2d Lebedev grid
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
25 if ylims{1} > ylims{2}
1273
cf542444f022 Correct error messages in lebedev2d
Martin Almquist <malmquist@stanford.edu>
parents: 1263
diff changeset
26 error('grid:lebedev2D:InvalidLimits','The elements of the limit must be increasing.');
1263
117bc4542b61 Add helper function for 2d Lebedev grid
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
27 end
117bc4542b61 Add helper function for 2d Lebedev grid
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
28
117bc4542b61 Add helper function for 2d Lebedev grid
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
29 opsX = opSet(m(1), xlims);
117bc4542b61 Add helper function for 2d Lebedev grid
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
30 xp = opsX.x_primal;
117bc4542b61 Add helper function for 2d Lebedev grid
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
31 xd = opsX.x_dual;
117bc4542b61 Add helper function for 2d Lebedev grid
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
32
117bc4542b61 Add helper function for 2d Lebedev grid
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
33 opsY = opSet(m(2), ylims);
117bc4542b61 Add helper function for 2d Lebedev grid
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
34 yp = opsY.x_primal;
117bc4542b61 Add helper function for 2d Lebedev grid
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
35 yd = opsY.x_dual;
117bc4542b61 Add helper function for 2d Lebedev grid
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
36
117bc4542b61 Add helper function for 2d Lebedev grid
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
37 % 4 Cartesian grids with spacing h
117bc4542b61 Add helper function for 2d Lebedev grid
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
38 % 2 grids for displacements (u)
117bc4542b61 Add helper function for 2d Lebedev grid
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
39 % 2 grids for stresses (sigma)
117bc4542b61 Add helper function for 2d Lebedev grid
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
40 % Density needs to be evaluated on the u grids
117bc4542b61 Add helper function for 2d Lebedev grid
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
41 % The stiffness tensor is evaluated on the sigma grids
117bc4542b61 Add helper function for 2d Lebedev grid
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
42
117bc4542b61 Add helper function for 2d Lebedev grid
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
43 gu1 = grid.Cartesian(xp, yp);
117bc4542b61 Add helper function for 2d Lebedev grid
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
44 gu2 = grid.Cartesian(xd, yd);
117bc4542b61 Add helper function for 2d Lebedev grid
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
45 gs1 = grid.Cartesian(xd, yp);
117bc4542b61 Add helper function for 2d Lebedev grid
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
46 gs2 = grid.Cartesian(xp, yd);
117bc4542b61 Add helper function for 2d Lebedev grid
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
47
117bc4542b61 Add helper function for 2d Lebedev grid
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
48 gu = {gu1, gu2};
117bc4542b61 Add helper function for 2d Lebedev grid
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
49 gs = {gs1, gs2};
117bc4542b61 Add helper function for 2d Lebedev grid
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
50
117bc4542b61 Add helper function for 2d Lebedev grid
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
51 dim = 2;
117bc4542b61 Add helper function for 2d Lebedev grid
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
52 g = grid.Staggered(dim, gu, gs);
117bc4542b61 Add helper function for 2d Lebedev grid
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
53
117bc4542b61 Add helper function for 2d Lebedev grid
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
54 end
117bc4542b61 Add helper function for 2d Lebedev grid
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
55
117bc4542b61 Add helper function for 2d Lebedev grid
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
56
117bc4542b61 Add helper function for 2d Lebedev grid
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
57