Mercurial > repos > public > sbplib
annotate +sbp/+util/minimalBoundaryOptimizedGrid.m @ 1287:38653d26225c feature/boundary_optimized_grids
Make accurate/minimalBoundaryOptimizedGrid take the domain limits as input
author | Vidar Stiernström <vidar.stiernstrom@it.uu.se> |
---|---|
date | Wed, 01 Jul 2020 14:54:21 +0200 |
parents | 6b68f939d023 |
children | e059a43bb675 |
rev | line source |
---|---|
1287
38653d26225c
Make accurate/minimalBoundaryOptimizedGrid take the domain limits as input
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1285
diff
changeset
|
1 function [x,h] = minimalBoundaryOptimizedGrid(lim,N,order) |
38653d26225c
Make accurate/minimalBoundaryOptimizedGrid take the domain limits as input
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1285
diff
changeset
|
2 L = lim{2} - lim{1}; |
38653d26225c
Make accurate/minimalBoundaryOptimizedGrid take the domain limits as input
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1285
diff
changeset
|
3 assert(L>0,'Limits must be given in increasing order.') |
1285
6b68f939d023
Add utility functions for constructing the grids used by the boundary optimized D1Nonequidistant opsets
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
4 %%%% Non-equidistant grid points %%%%% |
6b68f939d023
Add utility functions for constructing the grids used by the boundary optimized D1Nonequidistant opsets
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
5 xb = boundaryPoints(order); |
6b68f939d023
Add utility functions for constructing the grids used by the boundary optimized D1Nonequidistant opsets
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
6 m = length(xb)-1; % Number of non-equidistant points |
6b68f939d023
Add utility functions for constructing the grids used by the boundary optimized D1Nonequidistant opsets
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
7 assert(N-2*(m+1)>=0,'Not enough grid points to contain the boundary region. Requires at least %d points.',2*(m+1)); |
6b68f939d023
Add utility functions for constructing the grids used by the boundary optimized D1Nonequidistant opsets
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
8 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
6b68f939d023
Add utility functions for constructing the grids used by the boundary optimized D1Nonequidistant opsets
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
9 |
6b68f939d023
Add utility functions for constructing the grids used by the boundary optimized D1Nonequidistant opsets
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
10 %%%% Compute h %%%%%%%%%% |
6b68f939d023
Add utility functions for constructing the grids used by the boundary optimized D1Nonequidistant opsets
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
11 h = L/(2*xb(end) + N-1-2*m); |
6b68f939d023
Add utility functions for constructing the grids used by the boundary optimized D1Nonequidistant opsets
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
12 %%%%%%%%%%%%%%%%%%%%%%%%% |
6b68f939d023
Add utility functions for constructing the grids used by the boundary optimized D1Nonequidistant opsets
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
13 |
6b68f939d023
Add utility functions for constructing the grids used by the boundary optimized D1Nonequidistant opsets
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
14 %%%% Define grid %%%%%%%% |
6b68f939d023
Add utility functions for constructing the grids used by the boundary optimized D1Nonequidistant opsets
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
15 x = h*[xb; linspace(xb(end)+1,L/h-xb(end)-1,N-2*(m+1))'; L/h-flip(xb) ]; |
1287
38653d26225c
Make accurate/minimalBoundaryOptimizedGrid take the domain limits as input
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1285
diff
changeset
|
16 x = x + lim{1}; |
1285
6b68f939d023
Add utility functions for constructing the grids used by the boundary optimized D1Nonequidistant opsets
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
17 %%%%%%%%%%%%%%%%%%%%%%%%% |
6b68f939d023
Add utility functions for constructing the grids used by the boundary optimized D1Nonequidistant opsets
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
18 end |
6b68f939d023
Add utility functions for constructing the grids used by the boundary optimized D1Nonequidistant opsets
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
19 |
6b68f939d023
Add utility functions for constructing the grids used by the boundary optimized D1Nonequidistant opsets
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
20 function xb = boundaryPoints(order) |
6b68f939d023
Add utility functions for constructing the grids used by the boundary optimized D1Nonequidistant opsets
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
21 switch order |
6b68f939d023
Add utility functions for constructing the grids used by the boundary optimized D1Nonequidistant opsets
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
22 case 4 |
6b68f939d023
Add utility functions for constructing the grids used by the boundary optimized D1Nonequidistant opsets
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
23 x0 = 0.0000000000000e+00; |
6b68f939d023
Add utility functions for constructing the grids used by the boundary optimized D1Nonequidistant opsets
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
24 x1 = 7.7122987842562e-01; |
6b68f939d023
Add utility functions for constructing the grids used by the boundary optimized D1Nonequidistant opsets
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
25 xb = [x0 x1]'; |
6b68f939d023
Add utility functions for constructing the grids used by the boundary optimized D1Nonequidistant opsets
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
26 case 6 |
6b68f939d023
Add utility functions for constructing the grids used by the boundary optimized D1Nonequidistant opsets
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
27 x0 = 0.0000000000000e+00; |
6b68f939d023
Add utility functions for constructing the grids used by the boundary optimized D1Nonequidistant opsets
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
28 x1 = 4.0842950991998e-01; |
6b68f939d023
Add utility functions for constructing the grids used by the boundary optimized D1Nonequidistant opsets
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
29 x2 = 1.1968523189207e+00; |
6b68f939d023
Add utility functions for constructing the grids used by the boundary optimized D1Nonequidistant opsets
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
30 xb = [x0 x1 x2]'; |
6b68f939d023
Add utility functions for constructing the grids used by the boundary optimized D1Nonequidistant opsets
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
31 case 8 |
6b68f939d023
Add utility functions for constructing the grids used by the boundary optimized D1Nonequidistant opsets
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
32 x0 = 0.0000000000000e+00; |
6b68f939d023
Add utility functions for constructing the grids used by the boundary optimized D1Nonequidistant opsets
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
33 x1 = 4.9439570885261e-01; |
6b68f939d023
Add utility functions for constructing the grids used by the boundary optimized D1Nonequidistant opsets
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
34 x2 = 1.4051531374839e+00; |
6b68f939d023
Add utility functions for constructing the grids used by the boundary optimized D1Nonequidistant opsets
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
35 xb = [x0 x1 x2]'; |
6b68f939d023
Add utility functions for constructing the grids used by the boundary optimized D1Nonequidistant opsets
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
36 case 10 |
6b68f939d023
Add utility functions for constructing the grids used by the boundary optimized D1Nonequidistant opsets
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
37 x0 = 0.0000000000000e+00; |
6b68f939d023
Add utility functions for constructing the grids used by the boundary optimized D1Nonequidistant opsets
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
38 x1 = 5.8556160757529e-01; |
6b68f939d023
Add utility functions for constructing the grids used by the boundary optimized D1Nonequidistant opsets
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
39 x2 = 1.7473267488572e+00; |
6b68f939d023
Add utility functions for constructing the grids used by the boundary optimized D1Nonequidistant opsets
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
40 x3 = 3.0000000000000e+00; |
6b68f939d023
Add utility functions for constructing the grids used by the boundary optimized D1Nonequidistant opsets
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
41 xb = [x0 x1 x2 x3]'; |
6b68f939d023
Add utility functions for constructing the grids used by the boundary optimized D1Nonequidistant opsets
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
42 case 12 |
6b68f939d023
Add utility functions for constructing the grids used by the boundary optimized D1Nonequidistant opsets
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
43 x0 = 0.0000000000000e+00; |
6b68f939d023
Add utility functions for constructing the grids used by the boundary optimized D1Nonequidistant opsets
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
44 x1 = 4.6552112904489e-01; |
6b68f939d023
Add utility functions for constructing the grids used by the boundary optimized D1Nonequidistant opsets
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
45 x2 = 1.4647984306493e+00; |
6b68f939d023
Add utility functions for constructing the grids used by the boundary optimized D1Nonequidistant opsets
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
46 x3 = 2.7620429464763e+00; |
6b68f939d023
Add utility functions for constructing the grids used by the boundary optimized D1Nonequidistant opsets
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
47 x4 = 4.0000000000000e+00; |
6b68f939d023
Add utility functions for constructing the grids used by the boundary optimized D1Nonequidistant opsets
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
48 xb = [x0 x1 x2 x3 x4]'; |
6b68f939d023
Add utility functions for constructing the grids used by the boundary optimized D1Nonequidistant opsets
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
49 otherwise |
6b68f939d023
Add utility functions for constructing the grids used by the boundary optimized D1Nonequidistant opsets
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
50 error('Invalid operator order %d.',order); |
6b68f939d023
Add utility functions for constructing the grids used by the boundary optimized D1Nonequidistant opsets
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
51 end |
6b68f939d023
Add utility functions for constructing the grids used by the boundary optimized D1Nonequidistant opsets
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
52 end |