annotate +grid/primalDual1D.m @ 753:44c46bd6913a feature/d1_staggered

Fix stage rate bug in RK4 discrete data
author Martin Almquist <malmquist@stanford.edu>
date Fri, 15 Jun 2018 13:02:29 -0700
parents 070d578997f6
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
641
070d578997f6 Add helper function for primal and dual 1D staggered grid, and a test for that function.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
1 % Creates a 1D staggered grid of dimension length(m).
070d578997f6 Add helper function for primal and dual 1D staggered grid, and a test for that function.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
2 % over the interval xlims
070d578997f6 Add helper function for primal and dual 1D staggered grid, and a test for that function.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
3 % Primal grid: equidistant with m points.
070d578997f6 Add helper function for primal and dual 1D staggered grid, and a test for that function.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
4 % Dual grid: m + 1 points, h/2 spacing first point.
070d578997f6 Add helper function for primal and dual 1D staggered grid, and a test for that function.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
5 % Examples
070d578997f6 Add helper function for primal and dual 1D staggered grid, and a test for that function.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
6 % g = grid.primal_dual_1D(m, xlim)
070d578997f6 Add helper function for primal and dual 1D staggered grid, and a test for that function.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
7 % g = grid.primal_dual_1D(11, {0,1})
070d578997f6 Add helper function for primal and dual 1D staggered grid, and a test for that function.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
8 function [g_primal, g_dual] = primalDual1D(m, xlims)
070d578997f6 Add helper function for primal and dual 1D staggered grid, and a test for that function.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
9
070d578997f6 Add helper function for primal and dual 1D staggered grid, and a test for that function.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
10 if ~iscell(xlims) || numel(xlims) ~= 2
070d578997f6 Add helper function for primal and dual 1D staggered grid, and a test for that function.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
11 error('grid:primalDual1D:InvalidLimits','The limits should be cell arrays with 2 elements.');
070d578997f6 Add helper function for primal and dual 1D staggered grid, and a test for that function.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
12 end
070d578997f6 Add helper function for primal and dual 1D staggered grid, and a test for that function.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
13
070d578997f6 Add helper function for primal and dual 1D staggered grid, and a test for that function.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
14 if xlims{1} > xlims{2}
070d578997f6 Add helper function for primal and dual 1D staggered grid, and a test for that function.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
15 error('grid:primalDual1D:InvalidLimits','The elements of the limit must be increasing.');
070d578997f6 Add helper function for primal and dual 1D staggered grid, and a test for that function.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
16 end
070d578997f6 Add helper function for primal and dual 1D staggered grid, and a test for that function.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
17
070d578997f6 Add helper function for primal and dual 1D staggered grid, and a test for that function.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
18 xl = xlims{1};
070d578997f6 Add helper function for primal and dual 1D staggered grid, and a test for that function.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
19 xr = xlims{2};
070d578997f6 Add helper function for primal and dual 1D staggered grid, and a test for that function.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
20 h = (xr-xl)/(m-1);
070d578997f6 Add helper function for primal and dual 1D staggered grid, and a test for that function.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
21
070d578997f6 Add helper function for primal and dual 1D staggered grid, and a test for that function.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
22 % Primal grid
070d578997f6 Add helper function for primal and dual 1D staggered grid, and a test for that function.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
23 g_primal = grid.equidistant(m, xlims);
070d578997f6 Add helper function for primal and dual 1D staggered grid, and a test for that function.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
24 g_primal.h = h;
070d578997f6 Add helper function for primal and dual 1D staggered grid, and a test for that function.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
25
070d578997f6 Add helper function for primal and dual 1D staggered grid, and a test for that function.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
26 % Dual grid
070d578997f6 Add helper function for primal and dual 1D staggered grid, and a test for that function.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
27 x = [xl; linspace(xl+h/2, xr-h/2, m-1)'; xr];
070d578997f6 Add helper function for primal and dual 1D staggered grid, and a test for that function.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
28 g_dual = grid.Cartesian(x);
070d578997f6 Add helper function for primal and dual 1D staggered grid, and a test for that function.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
29 g_dual.h = h;
070d578997f6 Add helper function for primal and dual 1D staggered grid, and a test for that function.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
30 end