Mercurial > repos > public > sbplib
annotate +grid/Staggered.m @ 1318:6650b111742d feature/poroelastic
Implement normal-tangential interface treatment in viscoElastic2d
author | Martin Almquist <malmquist@stanford.edu> |
---|---|
date | Sun, 26 Jul 2020 20:42:06 -0700 |
parents | dc0ef82e3ec7 |
children |
rev | line source |
---|---|
1262
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
1 classdef Staggered < grid.Structured |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
2 properties |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
3 gridGroups % Cell array of grid groups, each group is a cell array |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
4 nGroups % Number of grid groups |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
5 h % Interior grid spacing |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
6 d % Number of dimensions |
1274
8aa0909125a4
Add support for plotting and evaluating on curvilinear multiblock staggered grids
Martin Almquist <malmquist@stanford.edu>
parents:
1262
diff
changeset
|
7 logic % Grid in logical domain, if any. |
1262
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
8 end |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
9 |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
10 methods |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
11 |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
12 % Accepts multiple grids and combines them into a staggered grid |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
13 % Each grid entry is a cell array of grids that store the same field |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
14 function obj = Staggered(d, varargin) |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
15 default_arg('d', 2); |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
16 |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
17 obj.d = d; |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
18 |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
19 obj.nGroups = length(varargin); |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
20 obj.gridGroups = cell(obj.nGroups, 1); |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
21 for i = 1:obj.nGroups |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
22 obj.gridGroups{i} = varargin{i}; |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
23 end |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
24 |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
25 obj.h = []; |
1274
8aa0909125a4
Add support for plotting and evaluating on curvilinear multiblock staggered grids
Martin Almquist <malmquist@stanford.edu>
parents:
1262
diff
changeset
|
26 obj.logic = []; |
1262
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
27 end |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
28 |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
29 % N returns the number of points in the first grid group |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
30 function o = N(obj) |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
31 o = 0; |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
32 gs = obj.gridGroups{1}; |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
33 for i = 1:length(gs) |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
34 o = o+gs{i}.N(); |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
35 end |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
36 end |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
37 |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
38 % D returns the spatial dimension of the grid |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
39 function o = D(obj) |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
40 o = obj.d; |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
41 end |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
42 |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
43 % size returns a reference size |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
44 function m = size(obj) |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
45 m = obj.gridGroups{1}{1}; |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
46 end |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
47 |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
48 % points returns an n x 1 vector containing the coordinates for the first grid group. |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
49 function X = points(obj) |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
50 X = []; |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
51 gs = obj.gridGroups{1}; |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
52 for i = 1:length(gs) |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
53 X = [X; gs{i}.points()]; |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
54 end |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
55 end |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
56 |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
57 % matrices returns a cell array with coordinates in matrix form. |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
58 % For 2d case these will have to be transposed to work with plotting routines. |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
59 function X = matrices(obj) |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
60 error('grid:Staggered1d:matrices', 'Not implemented') |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
61 end |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
62 |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
63 function h = scaling(obj) |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
64 if isempty(obj.h) |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
65 error('grid:Staggered1d:NoScalingSet', 'No scaling set') |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
66 end |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
67 |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
68 h = obj.h; |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
69 end |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
70 |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
71 % Restricts the grid function gf on obj to the subgrid g. |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
72 % Only works for even multiples |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
73 function gf = restrictFunc(obj, gf, g) |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
74 error('grid:Staggered1d:NotImplemented','This method does not exist yet') |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
75 end |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
76 |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
77 % Projects the grid function gf on obj to the grid g. |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
78 function gf = projectFunc(obj, gf, g) |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
79 error('grid:Staggered1d:NotImplemented','This method does not exist yet') |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
80 end |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
81 |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
82 % Return the names of all boundaries in this grid. |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
83 function bs = getBoundaryNames(obj) |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
84 switch obj.d() |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
85 case 1 |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
86 bs = {'l', 'r'}; |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
87 case 2 |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
88 bs = {'w', 'e', 's', 'n'}; |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
89 case 3 |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
90 bs = {'w', 'e', 's', 'n', 'd', 'u'}; |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
91 otherwise |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
92 error('not implemented'); |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
93 end |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
94 end |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
95 |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
96 % Return coordinates for the given boundary |
1277
dc0ef82e3ec7
Add better getBoundary method in grid/Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
1274
diff
changeset
|
97 % gridGroup (scalar) - grid group to return coordinates for |
dc0ef82e3ec7
Add better getBoundary method in grid/Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
1274
diff
changeset
|
98 % subGrids (array) - specifies which grids in the grid group to include (default: all grids in the grid group) |
dc0ef82e3ec7
Add better getBoundary method in grid/Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
1274
diff
changeset
|
99 function X = getBoundary(obj, name, gridGroup, subGrids) |
dc0ef82e3ec7
Add better getBoundary method in grid/Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
1274
diff
changeset
|
100 |
dc0ef82e3ec7
Add better getBoundary method in grid/Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
1274
diff
changeset
|
101 default_arg('gridGroup' , 1); |
dc0ef82e3ec7
Add better getBoundary method in grid/Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
1274
diff
changeset
|
102 grids = obj.gridGroups{gridGroup}; |
dc0ef82e3ec7
Add better getBoundary method in grid/Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
1274
diff
changeset
|
103 default_arg('subGrids' , 1:numel(grids)); |
dc0ef82e3ec7
Add better getBoundary method in grid/Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
1274
diff
changeset
|
104 |
dc0ef82e3ec7
Add better getBoundary method in grid/Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
1274
diff
changeset
|
105 X = []; |
dc0ef82e3ec7
Add better getBoundary method in grid/Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
1274
diff
changeset
|
106 for i = subGrids |
dc0ef82e3ec7
Add better getBoundary method in grid/Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
1274
diff
changeset
|
107 X = [X; grids{i}.getBoundary(name)]; |
dc0ef82e3ec7
Add better getBoundary method in grid/Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
1274
diff
changeset
|
108 end |
1262
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
109 end |
1277
dc0ef82e3ec7
Add better getBoundary method in grid/Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
1274
diff
changeset
|
110 |
1262
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
111 end |
b673081db86b
Rename the Staggered1d grid class Staggered
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
112 end |