Mercurial > repos > public > sbplib
annotate +rv/constructDiffOps.m @ 1157:82315fa6adb1 feature/rv
Add residual order as an input argument to constructDiffOps
author | Vidar Stiernström <vidar.stiernstrom@it.uu.se> |
---|---|
date | Tue, 25 Jun 2019 13:24:01 +0200 |
parents | 3108963cc42c |
children | 76e3bb7836cf |
rev | line source |
---|---|
1157
82315fa6adb1
Add residual order as an input argument to constructDiffOps
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1154
diff
changeset
|
1 function [D_rv, D_flux, DvDt, solutionPenalties, residualPenalties] = constructDiffOps(scheme, g, schemeOrder, residualOrder, 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 |
1157
82315fa6adb1
Add residual order as an input argument to constructDiffOps
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1154
diff
changeset
|
3 [D, solutionPenalties] = constructFluxDiffOp(scheme, g, schemeOrder, schemeParams, opSet, BCs); |
82315fa6adb1
Add residual order as an input argument to constructDiffOps
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1154
diff
changeset
|
4 D2 = constructSymmetricD2Operator(g, schemeOrder, opSet); |
1154
3108963cc42c
Improve efficiency of diffOps in Burgers2d, the artificial diffusion operator in rv.constructDiffOps and the RungekuttaExteriorRv time-steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1146
diff
changeset
|
5 D_rv = @(v,Viscosity)(D(v) + 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
|
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 |
1157
82315fa6adb1
Add residual order as an input argument to constructDiffOps
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1154
diff
changeset
|
8 [D_flux, residualPenalties] = constructFluxDiffOp(scheme, g, residualOrder, schemeParams, opSet, BCs); |
82315fa6adb1
Add residual order as an input argument to constructDiffOps
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1154
diff
changeset
|
9 % TODO: Construct D_flux without closures when using bdfs. |
82315fa6adb1
Add residual order as an input argument to constructDiffOps
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1154
diff
changeset
|
10 % diffOp = scheme(g, residualOrder, schemeParams{:}, opSet); |
82315fa6adb1
Add residual order as an input argument to constructDiffOps
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1154
diff
changeset
|
11 % if ~isa(diffOp.D, 'function_handle') |
82315fa6adb1
Add residual order as an input argument to constructDiffOps
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1154
diff
changeset
|
12 % D_flux = @(v) diffOp.D*v; |
82315fa6adb1
Add residual order as an input argument to constructDiffOps
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1154
diff
changeset
|
13 % else |
82315fa6adb1
Add residual order as an input argument to constructDiffOps
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1154
diff
changeset
|
14 % D_flux = diffOp.D; |
82315fa6adb1
Add residual order as an input argument to constructDiffOps
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1154
diff
changeset
|
15 % end |
82315fa6adb1
Add residual order as an input argument to constructDiffOps
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1154
diff
changeset
|
16 |
82315fa6adb1
Add residual order as an input argument to constructDiffOps
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1154
diff
changeset
|
17 % DiffOp for flux in residual viscosity. Due to sign conventions of the implemented schemes, we need to |
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 % 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
|
19 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
|
20 % 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
|
21 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
|
22 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
|
23 |
1154
3108963cc42c
Improve efficiency of diffOps in Burgers2d, the artificial diffusion operator in rv.constructDiffOps and the RungekuttaExteriorRv time-steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1146
diff
changeset
|
24 function [D, penalties] = constructFluxDiffOp(scheme, g, order, schemeParams, opSet, 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
|
25 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
|
26 [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
|
27 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
|
28 |
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 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
|
30 if ~isa(diffOp.D, 'function_handle') |
1146
52f59d27b40f
Add missing semicolon
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1037
diff
changeset
|
31 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
|
32 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
|
33 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
|
34 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
|
35 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
|
36 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
|
37 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
|
38 [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
|
39 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
|
40 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
|
41 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
|
42 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
|
43 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
|
44 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
|
45 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
|
46 |
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
|
47 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
|
48 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
|
49 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
|
50 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
|
51 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
|
52 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
|
53 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
|
54 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
|
55 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
|
56 |
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
|
57 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
|
58 case 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
|
59 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
|
60 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
|
61 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
|
62 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
|
63 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
|
64 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
|
65 Dp = ops{1}.Dp; |
1154
3108963cc42c
Improve efficiency of diffOps in Burgers2d, the artificial diffusion operator in rv.constructDiffOps and the RungekuttaExteriorRv time-steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1146
diff
changeset
|
66 M = Dm - Hi*B; |
3108963cc42c
Improve efficiency of diffOps in Burgers2d, the artificial diffusion operator in rv.constructDiffOps and the RungekuttaExteriorRv time-steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1146
diff
changeset
|
67 D2 = @(Viscosity) M*Viscosity*Dp; |
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
|
68 else |
1154
3108963cc42c
Improve efficiency of diffOps in Burgers2d, the artificial diffusion operator in rv.constructDiffOps and the RungekuttaExteriorRv time-steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1146
diff
changeset
|
69 % TODO: Fix closure for D2Variable |
1157
82315fa6adb1
Add residual order as an input argument to constructDiffOps
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1154
diff
changeset
|
70 % TODO: Fix Viscosity not being vector |
82315fa6adb1
Add residual order as an input argument to constructDiffOps
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1154
diff
changeset
|
71 D2 = @(Viscosity)ops{1}.D2(diag(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
|
72 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
|
73 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
|
74 % 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
|
75 % 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
|
76 % 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
|
77 % 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
|
78 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
|
79 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
|
80 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
|
81 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
|
82 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
|
83 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
|
84 B_x = e_e*e_e' - e_w*e_w'; |
1154
3108963cc42c
Improve efficiency of diffOps in Burgers2d, the artificial diffusion operator in rv.constructDiffOps and the RungekuttaExteriorRv time-steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1146
diff
changeset
|
85 M_x = Dm_x-H_x*B_x; |
3108963cc42c
Improve efficiency of diffOps in Burgers2d, the artificial diffusion operator in rv.constructDiffOps and the RungekuttaExteriorRv time-steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1146
diff
changeset
|
86 D2_x = @(Viscosity) M_x*Viscosity*Dp_x; |
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
|
87 |
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 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
|
89 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
|
90 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
|
91 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
|
92 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
|
93 B_y = e_n*e_n' - e_s*e_s'; |
1154
3108963cc42c
Improve efficiency of diffOps in Burgers2d, the artificial diffusion operator in rv.constructDiffOps and the RungekuttaExteriorRv time-steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1146
diff
changeset
|
94 M_y = Dm_y-H_y*B_y; |
3108963cc42c
Improve efficiency of diffOps in Burgers2d, the artificial diffusion operator in rv.constructDiffOps and the RungekuttaExteriorRv time-steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1146
diff
changeset
|
95 D2_y = @(Viscosity) M_y*Viscosity*Dp_y; |
3108963cc42c
Improve efficiency of diffOps in Burgers2d, the artificial diffusion operator in rv.constructDiffOps and the RungekuttaExteriorRv time-steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1146
diff
changeset
|
96 D2 = @(Viscosity) D2_x(Viscosity) + D2_y(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
|
97 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
|
98 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
|
99 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
|
100 end |