Mercurial > repos > public > sbplib
annotate +grid/primalDual1D.m @ 1344:b4e5e45bd239 feature/D2_boundary_opt
Remove round off zeros from D2Nonequidistant operators
author | Vidar Stiernström <vidar.stiernstrom@it.uu.se> |
---|---|
date | Sat, 15 Oct 2022 15:48:20 +0200 |
parents | 99f92bfc1157 |
children |
rev | line source |
---|---|
1259
99f92bfc1157
Add staggered operators and 1D grids
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
1 % Creates a 1D staggered grid of dimension length(m). |
99f92bfc1157
Add staggered operators and 1D grids
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
2 % over the interval xlims |
99f92bfc1157
Add staggered operators and 1D grids
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
3 % Primal grid: equidistant with m points. |
99f92bfc1157
Add staggered operators and 1D grids
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
4 % Dual grid: m + 1 points, h/2 spacing first point. |
99f92bfc1157
Add staggered operators and 1D grids
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
5 % Examples |
99f92bfc1157
Add staggered operators and 1D grids
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
6 % g = grid.primal_dual_1D(m, xlim) |
99f92bfc1157
Add staggered operators and 1D grids
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
7 % g = grid.primal_dual_1D(11, {0,1}) |
99f92bfc1157
Add staggered operators and 1D grids
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
8 function [g_primal, g_dual] = primalDual1D(m, xlims) |
99f92bfc1157
Add staggered operators and 1D grids
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
9 |
99f92bfc1157
Add staggered operators and 1D grids
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
10 if ~iscell(xlims) || numel(xlims) ~= 2 |
99f92bfc1157
Add staggered operators and 1D grids
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
11 error('grid:primalDual1D:InvalidLimits','The limits should be cell arrays with 2 elements.'); |
99f92bfc1157
Add staggered operators and 1D grids
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
12 end |
99f92bfc1157
Add staggered operators and 1D grids
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
13 |
99f92bfc1157
Add staggered operators and 1D grids
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
14 if xlims{1} > xlims{2} |
99f92bfc1157
Add staggered operators and 1D grids
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
15 error('grid:primalDual1D:InvalidLimits','The elements of the limit must be increasing.'); |
99f92bfc1157
Add staggered operators and 1D grids
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
16 end |
99f92bfc1157
Add staggered operators and 1D grids
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
17 |
99f92bfc1157
Add staggered operators and 1D grids
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
18 xl = xlims{1}; |
99f92bfc1157
Add staggered operators and 1D grids
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
19 xr = xlims{2}; |
99f92bfc1157
Add staggered operators and 1D grids
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
20 h = (xr-xl)/(m-1); |
99f92bfc1157
Add staggered operators and 1D grids
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
21 |
99f92bfc1157
Add staggered operators and 1D grids
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
22 % Primal grid |
99f92bfc1157
Add staggered operators and 1D grids
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
23 g_primal = grid.equidistant(m, xlims); |
99f92bfc1157
Add staggered operators and 1D grids
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
24 g_primal.h = h; |
99f92bfc1157
Add staggered operators and 1D grids
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
25 |
99f92bfc1157
Add staggered operators and 1D grids
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
26 % Dual grid |
99f92bfc1157
Add staggered operators and 1D grids
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
27 x = [xl; linspace(xl+h/2, xr-h/2, m-1)'; xr]; |
99f92bfc1157
Add staggered operators and 1D grids
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
28 g_dual = grid.Cartesian(x); |
99f92bfc1157
Add staggered operators and 1D grids
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
29 g_dual.h = h; |
99f92bfc1157
Add staggered operators and 1D grids
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
30 end |