Mercurial > repos > public > sbplib
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 |
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 |