annotate +rv/constructDiffOps.m @ 1146:52f59d27b40f feature/rv

Add missing semicolon
author Vidar Stiernström <vidar.stiernstrom@it.uu.se>
date Sat, 19 Jan 2019 17:20:14 +0100
parents 2d7ba44340d0
children 3108963cc42c 0c906f7ab8bf
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1037
2d7ba44340d0 Pass scheme specific parameters as cell array. This will enabale constructDiffOps to be more general. In addition, allow for schemes returning function handles as diffOps, which is currently how non-linear schemes such as Burgers1d are implemented.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1026
diff changeset
1 function [D_rv, D_flux, DvDt, solutionPenalties, residualPenalties] = constructDiffOps(scheme, g, order, schemeParams, opSet, BCs)
1020
5359a61cb4d9 Add utility for constructing the operators used by a discretization emplying RV-stabilization
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
2 %% DiffOps for solution vector
1037
2d7ba44340d0 Pass scheme specific parameters as cell array. This will enabale constructDiffOps to be more general. In addition, allow for schemes returning function handles as diffOps, which is currently how non-linear schemes such as Burgers1d are implemented.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1026
diff changeset
3 [D, solutionPenalties] = constructTotalFluxDiffOp(scheme, g, order, schemeParams, opSet, BCs);
2d7ba44340d0 Pass scheme specific parameters as cell array. This will enabale constructDiffOps to be more general. In addition, allow for schemes returning function handles as diffOps, which is currently how non-linear schemes such as Burgers1d are implemented.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1026
diff changeset
4 D2 = constructSymmetricD2Operator(g, order, opSet);
2d7ba44340d0 Pass scheme specific parameters as cell array. This will enabale constructDiffOps to be more general. In addition, allow for schemes returning function handles as diffOps, which is currently how non-linear schemes such as Burgers1d are implemented.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1026
diff changeset
5 D_rv = @(v,viscosity)(D(v) + D2(v, viscosity));
1020
5359a61cb4d9 Add utility for constructing the operators used by a discretization emplying RV-stabilization
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
6
5359a61cb4d9 Add utility for constructing the operators used by a discretization emplying RV-stabilization
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
7 %% DiffOps for residual viscosity
1037
2d7ba44340d0 Pass scheme specific parameters as cell array. This will enabale constructDiffOps to be more general. In addition, allow for schemes returning function handles as diffOps, which is currently how non-linear schemes such as Burgers1d are implemented.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1026
diff changeset
8 [D_flux, residualPenalties] = constructTotalFluxDiffOp(scheme, g, max(order-2,2), schemeParams, opSet, BCs);
1020
5359a61cb4d9 Add utility for constructing the operators used by a discretization emplying RV-stabilization
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
9 % DiffOp for flux in residual viscosity. Due to sign conventions of the implemnted schemes, we need to
5359a61cb4d9 Add utility for constructing the operators used by a discretization emplying RV-stabilization
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
10 % change the sign.
1037
2d7ba44340d0 Pass scheme specific parameters as cell array. This will enabale constructDiffOps to be more general. In addition, allow for schemes returning function handles as diffOps, which is currently how non-linear schemes such as Burgers1d are implemented.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1026
diff changeset
11 D_flux = @(v) -D_flux(v);
1020
5359a61cb4d9 Add utility for constructing the operators used by a discretization emplying RV-stabilization
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
12 % DiffOp for time derivative in residual viscosity
1037
2d7ba44340d0 Pass scheme specific parameters as cell array. This will enabale constructDiffOps to be more general. In addition, allow for schemes returning function handles as diffOps, which is currently how non-linear schemes such as Burgers1d are implemented.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1026
diff changeset
13 DvDt = D;
1020
5359a61cb4d9 Add utility for constructing the operators used by a discretization emplying RV-stabilization
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
14 end
5359a61cb4d9 Add utility for constructing the operators used by a discretization emplying RV-stabilization
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
15
1037
2d7ba44340d0 Pass scheme specific parameters as cell array. This will enabale constructDiffOps to be more general. In addition, allow for schemes returning function handles as diffOps, which is currently how non-linear schemes such as Burgers1d are implemented.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1026
diff changeset
16 function [D, penalties] = constructTotalFluxDiffOp(scheme, g, order, schemeParams, opSet, BCs)
2d7ba44340d0 Pass scheme specific parameters as cell array. This will enabale constructDiffOps to be more general. In addition, allow for schemes returning function handles as diffOps, which is currently how non-linear schemes such as Burgers1d are implemented.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1026
diff changeset
17 diffOp = scheme(g, order, schemeParams{:}, opSet);
1020
5359a61cb4d9 Add utility for constructing the operators used by a discretization emplying RV-stabilization
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
18 [D, penalties] = addClosuresToDiffOp(diffOp, BCs);
5359a61cb4d9 Add utility for constructing the operators used by a discretization emplying RV-stabilization
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
19 end
5359a61cb4d9 Add utility for constructing the operators used by a discretization emplying RV-stabilization
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
20
5359a61cb4d9 Add utility for constructing the operators used by a discretization emplying RV-stabilization
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
21 function [D, penalties] = addClosuresToDiffOp(diffOp, BCs)
1037
2d7ba44340d0 Pass scheme specific parameters as cell array. This will enabale constructDiffOps to be more general. In addition, allow for schemes returning function handles as diffOps, which is currently how non-linear schemes such as Burgers1d are implemented.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1026
diff changeset
22 if ~isa(diffOp.D, 'function_handle')
1146
52f59d27b40f Add missing semicolon
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1037
diff changeset
23 D = @(v) diffOp.D*v;
1037
2d7ba44340d0 Pass scheme specific parameters as cell array. This will enabale constructDiffOps to be more general. In addition, allow for schemes returning function handles as diffOps, which is currently how non-linear schemes such as Burgers1d are implemented.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1026
diff changeset
24 else
2d7ba44340d0 Pass scheme specific parameters as cell array. This will enabale constructDiffOps to be more general. In addition, allow for schemes returning function handles as diffOps, which is currently how non-linear schemes such as Burgers1d are implemented.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1026
diff changeset
25 D = diffOp.D;
2d7ba44340d0 Pass scheme specific parameters as cell array. This will enabale constructDiffOps to be more general. In addition, allow for schemes returning function handles as diffOps, which is currently how non-linear schemes such as Burgers1d are implemented.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1026
diff changeset
26 end
1020
5359a61cb4d9 Add utility for constructing the operators used by a discretization emplying RV-stabilization
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
27 penalties = cell(size(BCs));
5359a61cb4d9 Add utility for constructing the operators used by a discretization emplying RV-stabilization
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
28 for i = 1:size(BCs,1)
5359a61cb4d9 Add utility for constructing the operators used by a discretization emplying RV-stabilization
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
29 for j = 1:size(BCs,2)
5359a61cb4d9 Add utility for constructing the operators used by a discretization emplying RV-stabilization
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
30 [closure, penalties{i,j}] = diffOp.boundary_condition(BCs{i,j}.boundary, BCs{i,j}.type);
1037
2d7ba44340d0 Pass scheme specific parameters as cell array. This will enabale constructDiffOps to be more general. In addition, allow for schemes returning function handles as diffOps, which is currently how non-linear schemes such as Burgers1d are implemented.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1026
diff changeset
31 if ~isa(closure, 'function_handle')
2d7ba44340d0 Pass scheme specific parameters as cell array. This will enabale constructDiffOps to be more general. In addition, allow for schemes returning function handles as diffOps, which is currently how non-linear schemes such as Burgers1d are implemented.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1026
diff changeset
32 closure = @(v) closure*v;
2d7ba44340d0 Pass scheme specific parameters as cell array. This will enabale constructDiffOps to be more general. In addition, allow for schemes returning function handles as diffOps, which is currently how non-linear schemes such as Burgers1d are implemented.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1026
diff changeset
33 end
2d7ba44340d0 Pass scheme specific parameters as cell array. This will enabale constructDiffOps to be more general. In addition, allow for schemes returning function handles as diffOps, which is currently how non-linear schemes such as Burgers1d are implemented.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1026
diff changeset
34 D = @(v) D(v) + closure(v);
1020
5359a61cb4d9 Add utility for constructing the operators used by a discretization emplying RV-stabilization
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
35 end
5359a61cb4d9 Add utility for constructing the operators used by a discretization emplying RV-stabilization
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
36 end
5359a61cb4d9 Add utility for constructing the operators used by a discretization emplying RV-stabilization
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
37 end
5359a61cb4d9 Add utility for constructing the operators used by a discretization emplying RV-stabilization
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
38
1037
2d7ba44340d0 Pass scheme specific parameters as cell array. This will enabale constructDiffOps to be more general. In addition, allow for schemes returning function handles as diffOps, which is currently how non-linear schemes such as Burgers1d are implemented.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1026
diff changeset
39 function D2 = constructSymmetricD2Operator(g, order, opSet)
2d7ba44340d0 Pass scheme specific parameters as cell array. This will enabale constructDiffOps to be more general. In addition, allow for schemes returning function handles as diffOps, which is currently how non-linear schemes such as Burgers1d are implemented.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1026
diff changeset
40
1020
5359a61cb4d9 Add utility for constructing the operators used by a discretization emplying RV-stabilization
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
41
1037
2d7ba44340d0 Pass scheme specific parameters as cell array. This will enabale constructDiffOps to be more general. In addition, allow for schemes returning function handles as diffOps, which is currently how non-linear schemes such as Burgers1d are implemented.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1026
diff changeset
42 m = g.size();
2d7ba44340d0 Pass scheme specific parameters as cell array. This will enabale constructDiffOps to be more general. In addition, allow for schemes returning function handles as diffOps, which is currently how non-linear schemes such as Burgers1d are implemented.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1026
diff changeset
43 ops = cell(g.D(),1);
2d7ba44340d0 Pass scheme specific parameters as cell array. This will enabale constructDiffOps to be more general. In addition, allow for schemes returning function handles as diffOps, which is currently how non-linear schemes such as Burgers1d are implemented.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1026
diff changeset
44 I = cell(g.D(),1);
2d7ba44340d0 Pass scheme specific parameters as cell array. This will enabale constructDiffOps to be more general. In addition, allow for schemes returning function handles as diffOps, which is currently how non-linear schemes such as Burgers1d are implemented.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1026
diff changeset
45 for i = 1:g.D()
2d7ba44340d0 Pass scheme specific parameters as cell array. This will enabale constructDiffOps to be more general. In addition, allow for schemes returning function handles as diffOps, which is currently how non-linear schemes such as Burgers1d are implemented.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1026
diff changeset
46 lim = {g.x{i}(1), g.x{i}(end)};
1020
5359a61cb4d9 Add utility for constructing the operators used by a discretization emplying RV-stabilization
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
47 ops{i} = opSet(m(i), lim, order);
5359a61cb4d9 Add utility for constructing the operators used by a discretization emplying RV-stabilization
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
48 I{i} = speye(m(i));
5359a61cb4d9 Add utility for constructing the operators used by a discretization emplying RV-stabilization
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
49 end
5359a61cb4d9 Add utility for constructing the operators used by a discretization emplying RV-stabilization
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
50
5359a61cb4d9 Add utility for constructing the operators used by a discretization emplying RV-stabilization
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
51 % TBD: How is this generalized to a loop over dimensions or similar?
1037
2d7ba44340d0 Pass scheme specific parameters as cell array. This will enabale constructDiffOps to be more general. In addition, allow for schemes returning function handles as diffOps, which is currently how non-linear schemes such as Burgers1d are implemented.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1026
diff changeset
52 switch g.D()
1020
5359a61cb4d9 Add utility for constructing the operators used by a discretization emplying RV-stabilization
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
53 case 1
1037
2d7ba44340d0 Pass scheme specific parameters as cell array. This will enabale constructDiffOps to be more general. In addition, allow for schemes returning function handles as diffOps, which is currently how non-linear schemes such as Burgers1d are implemented.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1026
diff changeset
54
1020
5359a61cb4d9 Add utility for constructing the operators used by a discretization emplying RV-stabilization
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
55 e_r = ops{1}.e_r;
5359a61cb4d9 Add utility for constructing the operators used by a discretization emplying RV-stabilization
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
56 e_l = ops{1}.e_l;
5359a61cb4d9 Add utility for constructing the operators used by a discretization emplying RV-stabilization
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
57 Hi = ops{1}.HI;
5359a61cb4d9 Add utility for constructing the operators used by a discretization emplying RV-stabilization
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
58 B = e_r*e_r' - e_l*e_l';
1037
2d7ba44340d0 Pass scheme specific parameters as cell array. This will enabale constructDiffOps to be more general. In addition, allow for schemes returning function handles as diffOps, which is currently how non-linear schemes such as Burgers1d are implemented.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1026
diff changeset
59 if isequal(opSet,@sbp.D1Upwind)
2d7ba44340d0 Pass scheme specific parameters as cell array. This will enabale constructDiffOps to be more general. In addition, allow for schemes returning function handles as diffOps, which is currently how non-linear schemes such as Burgers1d are implemented.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1026
diff changeset
60 Dm = ops{1}.Dm;
2d7ba44340d0 Pass scheme specific parameters as cell array. This will enabale constructDiffOps to be more general. In addition, allow for schemes returning function handles as diffOps, which is currently how non-linear schemes such as Burgers1d are implemented.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1026
diff changeset
61 Dp = ops{1}.Dp;
2d7ba44340d0 Pass scheme specific parameters as cell array. This will enabale constructDiffOps to be more general. In addition, allow for schemes returning function handles as diffOps, which is currently how non-linear schemes such as Burgers1d are implemented.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1026
diff changeset
62 D2 = @(viscosity) Dm*spdiag(viscosity)*Dp-Hi*(B*spdiag(viscosity)*Dp);
2d7ba44340d0 Pass scheme specific parameters as cell array. This will enabale constructDiffOps to be more general. In addition, allow for schemes returning function handles as diffOps, which is currently how non-linear schemes such as Burgers1d are implemented.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1026
diff changeset
63 else
2d7ba44340d0 Pass scheme specific parameters as cell array. This will enabale constructDiffOps to be more general. In addition, allow for schemes returning function handles as diffOps, which is currently how non-linear schemes such as Burgers1d are implemented.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1026
diff changeset
64 D2 = @(viscosity)ops{1}.D2(viscosity);
2d7ba44340d0 Pass scheme specific parameters as cell array. This will enabale constructDiffOps to be more general. In addition, allow for schemes returning function handles as diffOps, which is currently how non-linear schemes such as Burgers1d are implemented.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1026
diff changeset
65 end
1020
5359a61cb4d9 Add utility for constructing the operators used by a discretization emplying RV-stabilization
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
66 case 2
1037
2d7ba44340d0 Pass scheme specific parameters as cell array. This will enabale constructDiffOps to be more general. In addition, allow for schemes returning function handles as diffOps, which is currently how non-linear schemes such as Burgers1d are implemented.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1026
diff changeset
67 % TODO:
2d7ba44340d0 Pass scheme specific parameters as cell array. This will enabale constructDiffOps to be more general. In addition, allow for schemes returning function handles as diffOps, which is currently how non-linear schemes such as Burgers1d are implemented.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1026
diff changeset
68 % Currently only implemented for upwind operators.
2d7ba44340d0 Pass scheme specific parameters as cell array. This will enabale constructDiffOps to be more general. In addition, allow for schemes returning function handles as diffOps, which is currently how non-linear schemes such as Burgers1d are implemented.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1026
diff changeset
69 % Remove this part once the time-dependent D2 operator is implemented for other opSets
2d7ba44340d0 Pass scheme specific parameters as cell array. This will enabale constructDiffOps to be more general. In addition, allow for schemes returning function handles as diffOps, which is currently how non-linear schemes such as Burgers1d are implemented.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1026
diff changeset
70 % or if it is decided that it should only be supported for upwind operators.
2d7ba44340d0 Pass scheme specific parameters as cell array. This will enabale constructDiffOps to be more general. In addition, allow for schemes returning function handles as diffOps, which is currently how non-linear schemes such as Burgers1d are implemented.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1026
diff changeset
71 assert(isequal(opSet,@sbp.D1Upwind))
1020
5359a61cb4d9 Add utility for constructing the operators used by a discretization emplying RV-stabilization
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
72 e_e = kron(ops{1}.e_r,I{2});
5359a61cb4d9 Add utility for constructing the operators used by a discretization emplying RV-stabilization
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
73 e_w = kron(ops{1}.e_l,I{2});
5359a61cb4d9 Add utility for constructing the operators used by a discretization emplying RV-stabilization
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
74 Dm_x = kron(ops{1}.Dm,I{2});
5359a61cb4d9 Add utility for constructing the operators used by a discretization emplying RV-stabilization
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
75 Dp_x = kron(ops{1}.Dp,I{2});
5359a61cb4d9 Add utility for constructing the operators used by a discretization emplying RV-stabilization
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
76 H_x = kron(ops{1}.HI,I{2});
5359a61cb4d9 Add utility for constructing the operators used by a discretization emplying RV-stabilization
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
77 B_x = e_e*e_e' - e_w*e_w';
5359a61cb4d9 Add utility for constructing the operators used by a discretization emplying RV-stabilization
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
78 D2_x = @(viscosity) Dm_x*spdiag(viscosity)*Dp_x-H_x*(B_x*spdiag(viscosity)*Dp_x);
5359a61cb4d9 Add utility for constructing the operators used by a discretization emplying RV-stabilization
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
79
5359a61cb4d9 Add utility for constructing the operators used by a discretization emplying RV-stabilization
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
80 e_n = kron(I{1},ops{2}.e_r);
5359a61cb4d9 Add utility for constructing the operators used by a discretization emplying RV-stabilization
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
81 e_s = kron(I{1},ops{2}.e_l);
5359a61cb4d9 Add utility for constructing the operators used by a discretization emplying RV-stabilization
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
82 Dm_y = kron(I{1},ops{2}.Dm);
5359a61cb4d9 Add utility for constructing the operators used by a discretization emplying RV-stabilization
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
83 Dp_y = kron(I{1},ops{2}.Dp);
5359a61cb4d9 Add utility for constructing the operators used by a discretization emplying RV-stabilization
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
84 H_y = kron(I{1},ops{2}.HI);
5359a61cb4d9 Add utility for constructing the operators used by a discretization emplying RV-stabilization
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
85 B_y = e_n*e_n' - e_s*e_s';
5359a61cb4d9 Add utility for constructing the operators used by a discretization emplying RV-stabilization
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
86 D2_y = @(viscosity) Dm_y*spdiag(viscosity)*Dp_y-H_y*(B_y*spdiag(viscosity)*Dp_y);
5359a61cb4d9 Add utility for constructing the operators used by a discretization emplying RV-stabilization
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
87 D2 = @(viscosity)D2_x(viscosity) + D2_y(viscosity);
5359a61cb4d9 Add utility for constructing the operators used by a discretization emplying RV-stabilization
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
88 otherwise
5359a61cb4d9 Add utility for constructing the operators used by a discretization emplying RV-stabilization
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
89 error('3D not yet implemented')
5359a61cb4d9 Add utility for constructing the operators used by a discretization emplying RV-stabilization
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
90 end
1037
2d7ba44340d0 Pass scheme specific parameters as cell array. This will enabale constructDiffOps to be more general. In addition, allow for schemes returning function handles as diffOps, which is currently how non-linear schemes such as Burgers1d are implemented.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1026
diff changeset
91 D2 = @(v, viscosity) D2(viscosity)*v;
1020
5359a61cb4d9 Add utility for constructing the operators used by a discretization emplying RV-stabilization
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
92 end