annotate +rv/+time/RungekuttaRvBdf.m @ 1195:a4c00628a39d feature/rv

Add higher order approximations to BDFDerivative
author Vidar Stiernström <vidar.stiernstrom@it.uu.se>
date Wed, 07 Aug 2019 13:27:36 +0200
parents d02e5b8a0b24
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1169
d02e5b8a0b24 Rename RungekuttaRV time steppers. Add RungekuttaRVMultiStage time stepper
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1154
diff changeset
1 classdef RungekuttaRvBdf < time.Timestepper
1029
dce08a74e0ad Create a separate class of RungekuttaExteriorRV which uses BDFs for computing the time derivative. Remove BDFs from RungekuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
2 properties
dce08a74e0ad Create a separate class of RungekuttaExteriorRV which uses BDFs for computing the time derivative. Remove BDFs from RungekuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
3 F % RHS of the ODE
dce08a74e0ad Create a separate class of RungekuttaExteriorRV which uses BDFs for computing the time derivative. Remove BDFs from RungekuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
4 k % Time step
dce08a74e0ad Create a separate class of RungekuttaExteriorRV which uses BDFs for computing the time derivative. Remove BDFs from RungekuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
5 t % Time point
dce08a74e0ad Create a separate class of RungekuttaExteriorRV which uses BDFs for computing the time derivative. Remove BDFs from RungekuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
6 v % Solution vector
dce08a74e0ad Create a separate class of RungekuttaExteriorRV which uses BDFs for computing the time derivative. Remove BDFs from RungekuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
7 n % Time level
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: 1152
diff changeset
8 rkScheme % The particular RK scheme used for time integration
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: 1152
diff changeset
9
1029
dce08a74e0ad Create a separate class of RungekuttaExteriorRV which uses BDFs for computing the time derivative. Remove BDFs from RungekuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
10
dce08a74e0ad Create a separate class of RungekuttaExteriorRV which uses BDFs for computing the time derivative. Remove BDFs from RungekuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
11 % Properties related to the residual viscositys
dce08a74e0ad Create a separate class of RungekuttaExteriorRV which uses BDFs for computing the time derivative. Remove BDFs from RungekuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
12 RV % Residual Viscosity operator
dce08a74e0ad Create a separate class of RungekuttaExteriorRV which uses BDFs for computing the time derivative. Remove BDFs from RungekuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
13 v_prev % Solution vector at previous time levels, used for the RV evaluation
dce08a74e0ad Create a separate class of RungekuttaExteriorRV which uses BDFs for computing the time derivative. Remove BDFs from RungekuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
14 DvDt % Function for computing the time deriative used for the RV evaluation
dce08a74e0ad Create a separate class of RungekuttaExteriorRV which uses BDFs for computing the time derivative. Remove BDFs from RungekuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
15 lowerBdfOrder % Orders of the approximation of the time deriative, used for the RV evaluation.
dce08a74e0ad Create a separate class of RungekuttaExteriorRV which uses BDFs for computing the time derivative. Remove BDFs from RungekuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
16 % dictates which accuracy the boot-strapping should start from.
dce08a74e0ad Create a separate class of RungekuttaExteriorRV which uses BDFs for computing the time derivative. Remove BDFs from RungekuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
17 upperBdfOrder % Orders of the approximation of the time deriative, used for the RV evaluation.
dce08a74e0ad Create a separate class of RungekuttaExteriorRV which uses BDFs for computing the time derivative. Remove BDFs from RungekuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
18 % Dictates the order of accuracy used once the boot-strapping is complete.
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: 1152
diff changeset
19
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: 1152
diff changeset
20
1029
dce08a74e0ad Create a separate class of RungekuttaExteriorRV which uses BDFs for computing the time derivative. Remove BDFs from RungekuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
21 end
dce08a74e0ad Create a separate class of RungekuttaExteriorRV which uses BDFs for computing the time derivative. Remove BDFs from RungekuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
22 methods
1169
d02e5b8a0b24 Rename RungekuttaRV time steppers. Add RungekuttaRVMultiStage time stepper
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1154
diff changeset
23 function obj = RungekuttaRvBdf(F, k, t0, v0, RV, rkOrder, bdfOrders)
1029
dce08a74e0ad Create a separate class of RungekuttaExteriorRV which uses BDFs for computing the time derivative. Remove BDFs from RungekuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
24 obj.F = F;
dce08a74e0ad Create a separate class of RungekuttaExteriorRV which uses BDFs for computing the time derivative. Remove BDFs from RungekuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
25 obj.k = k;
dce08a74e0ad Create a separate class of RungekuttaExteriorRV which uses BDFs for computing the time derivative. Remove BDFs from RungekuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
26 obj.t = t0;
dce08a74e0ad Create a separate class of RungekuttaExteriorRV which uses BDFs for computing the time derivative. Remove BDFs from RungekuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
27 obj.v = v0;
dce08a74e0ad Create a separate class of RungekuttaExteriorRV which uses BDFs for computing the time derivative. Remove BDFs from RungekuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
28 obj.n = 0;
dce08a74e0ad Create a separate class of RungekuttaExteriorRV which uses BDFs for computing the time derivative. Remove BDFs from RungekuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
29 obj.RV = RV;
dce08a74e0ad Create a separate class of RungekuttaExteriorRV which uses BDFs for computing the time derivative. Remove BDFs from RungekuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
30 obj.lowerBdfOrder = bdfOrders.lowerBdfOrder;
dce08a74e0ad Create a separate class of RungekuttaExteriorRV which uses BDFs for computing the time derivative. Remove BDFs from RungekuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
31 obj.upperBdfOrder = bdfOrders.upperBdfOrder;
1195
a4c00628a39d Add higher order approximations to BDFDerivative
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1169
diff changeset
32 assert((obj.lowerBdfOrder >= 1) && (obj.upperBdfOrder <= 9));
1029
dce08a74e0ad Create a separate class of RungekuttaExteriorRV which uses BDFs for computing the time derivative. Remove BDFs from RungekuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
33 obj.v_prev = [];
dce08a74e0ad Create a separate class of RungekuttaExteriorRV which uses BDFs for computing the time derivative. Remove BDFs from RungekuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
34 obj.DvDt = rv.time.BdfDerivative();
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: 1152
diff changeset
35
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: 1152
diff changeset
36 if (rkOrder == 4) % Use specialized RK4 scheme
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: 1152
diff changeset
37 obj.rkScheme = @time.rk.rungekutta_4;
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: 1152
diff changeset
38 else
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: 1152
diff changeset
39 % Extract the coefficients for the specified order
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: 1152
diff changeset
40 % used for the RK updates from the Butcher tableua.
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: 1152
diff changeset
41 [s,a,b,c] = time.rk.butcherTableau(rkOrder);
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: 1152
diff changeset
42 coeffs = struct('s',s,'a',a,'b',b,'c',c);
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: 1152
diff changeset
43 obj.rkScheme = @(v,t,dt,F) time.rk.rungekutta(v, t , dt, F, coeffs);
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: 1152
diff changeset
44 end
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: 1152
diff changeset
45
1029
dce08a74e0ad Create a separate class of RungekuttaExteriorRV which uses BDFs for computing the time derivative. Remove BDFs from RungekuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
46 end
dce08a74e0ad Create a separate class of RungekuttaExteriorRV which uses BDFs for computing the time derivative. Remove BDFs from RungekuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
47
dce08a74e0ad Create a separate class of RungekuttaExteriorRV which uses BDFs for computing the time derivative. Remove BDFs from RungekuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
48 function [v, t] = getV(obj)
dce08a74e0ad Create a separate class of RungekuttaExteriorRV which uses BDFs for computing the time derivative. Remove BDFs from RungekuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
49 v = obj.v;
dce08a74e0ad Create a separate class of RungekuttaExteriorRV which uses BDFs for computing the time derivative. Remove BDFs from RungekuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
50 t = obj.t;
dce08a74e0ad Create a separate class of RungekuttaExteriorRV which uses BDFs for computing the time derivative. Remove BDFs from RungekuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
51 end
dce08a74e0ad Create a separate class of RungekuttaExteriorRV which uses BDFs for computing the time derivative. Remove BDFs from RungekuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
52
dce08a74e0ad Create a separate class of RungekuttaExteriorRV which uses BDFs for computing the time derivative. Remove BDFs from RungekuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
53 function state = getState(obj)
1152
010bb2677230 Clean up in +rv/+time. Make the time stepping more efficient by not storing unnessecary properties in the RK-RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1031
diff changeset
54 if (size(obj.v_prev,2) >= obj.lowerBdfOrder)
010bb2677230 Clean up in +rv/+time. Make the time stepping more efficient by not storing unnessecary properties in the RK-RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1031
diff changeset
55 dvdt = obj.DvDt.evaluate(obj.v, obj.v_prev, obj.k);
010bb2677230 Clean up in +rv/+time. Make the time stepping more efficient by not storing unnessecary properties in the RK-RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1031
diff changeset
56 [viscosity, Df, firstOrderViscosity, residualViscosity] = obj.RV.evaluate(obj.v, dvdt);
010bb2677230 Clean up in +rv/+time. Make the time stepping more efficient by not storing unnessecary properties in the RK-RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1031
diff changeset
57 else
010bb2677230 Clean up in +rv/+time. Make the time stepping more efficient by not storing unnessecary properties in the RK-RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1031
diff changeset
58 viscosity = zeros(size(obj.v));
010bb2677230 Clean up in +rv/+time. Make the time stepping more efficient by not storing unnessecary properties in the RK-RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1031
diff changeset
59 dvdt = zeros(size(obj.v));
010bb2677230 Clean up in +rv/+time. Make the time stepping more efficient by not storing unnessecary properties in the RK-RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1031
diff changeset
60 Df = zeros(size(obj.v));
010bb2677230 Clean up in +rv/+time. Make the time stepping more efficient by not storing unnessecary properties in the RK-RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1031
diff changeset
61 firstOrderViscosity = zeros(size(obj.v));
010bb2677230 Clean up in +rv/+time. Make the time stepping more efficient by not storing unnessecary properties in the RK-RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1031
diff changeset
62 residualViscosity = zeros(size(obj.v));
010bb2677230 Clean up in +rv/+time. Make the time stepping more efficient by not storing unnessecary properties in the RK-RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1031
diff changeset
63 end
010bb2677230 Clean up in +rv/+time. Make the time stepping more efficient by not storing unnessecary properties in the RK-RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1031
diff changeset
64 state = struct('v', obj.v, 'dvdt', dvdt, 'Df', Df, 'viscosity', viscosity, 'residualViscosity', residualViscosity, 'firstOrderViscosity', firstOrderViscosity, 't', obj.t);
1029
dce08a74e0ad Create a separate class of RungekuttaExteriorRV which uses BDFs for computing the time derivative. Remove BDFs from RungekuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
65 end
dce08a74e0ad Create a separate class of RungekuttaExteriorRV which uses BDFs for computing the time derivative. Remove BDFs from RungekuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
66
dce08a74e0ad Create a separate class of RungekuttaExteriorRV which uses BDFs for computing the time derivative. Remove BDFs from RungekuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
67 function obj = step(obj)
1152
010bb2677230 Clean up in +rv/+time. Make the time stepping more efficient by not storing unnessecary properties in the RK-RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1031
diff changeset
68 nStoredStages = size(obj.v_prev,2);
010bb2677230 Clean up in +rv/+time. Make the time stepping more efficient by not storing unnessecary properties in the RK-RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1031
diff changeset
69
010bb2677230 Clean up in +rv/+time. Make the time stepping more efficient by not storing unnessecary properties in the RK-RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1031
diff changeset
70 %Calculate viscosity for the new time level
010bb2677230 Clean up in +rv/+time. Make the time stepping more efficient by not storing unnessecary properties in the RK-RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1031
diff changeset
71 if (nStoredStages >= obj.lowerBdfOrder)
010bb2677230 Clean up in +rv/+time. Make the time stepping more efficient by not storing unnessecary properties in the RK-RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1031
diff changeset
72 viscosity = obj.RV.evaluateViscosity(obj.v, obj.DvDt.evaluate(obj.v, obj.v_prev, obj.k));
010bb2677230 Clean up in +rv/+time. Make the time stepping more efficient by not storing unnessecary properties in the RK-RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1031
diff changeset
73 else
010bb2677230 Clean up in +rv/+time. Make the time stepping more efficient by not storing unnessecary properties in the RK-RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1031
diff changeset
74 viscosity = zeros(size(obj.v));
010bb2677230 Clean up in +rv/+time. Make the time stepping more efficient by not storing unnessecary properties in the RK-RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1031
diff changeset
75 end
010bb2677230 Clean up in +rv/+time. Make the time stepping more efficient by not storing unnessecary properties in the RK-RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1031
diff changeset
76
010bb2677230 Clean up in +rv/+time. Make the time stepping more efficient by not storing unnessecary properties in the RK-RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1031
diff changeset
77 % Store current time level and update v_prev
010bb2677230 Clean up in +rv/+time. Make the time stepping more efficient by not storing unnessecary properties in the RK-RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1031
diff changeset
78 if (nStoredStages < obj.upperBdfOrder)
1029
dce08a74e0ad Create a separate class of RungekuttaExteriorRV which uses BDFs for computing the time derivative. Remove BDFs from RungekuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
79 obj.v_prev = [obj.v, obj.v_prev];
dce08a74e0ad Create a separate class of RungekuttaExteriorRV which uses BDFs for computing the time derivative. Remove BDFs from RungekuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
80 else
dce08a74e0ad Create a separate class of RungekuttaExteriorRV which uses BDFs for computing the time derivative. Remove BDFs from RungekuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
81 obj.v_prev(:,2:end) = obj.v_prev(:,1:end-1);
dce08a74e0ad Create a separate class of RungekuttaExteriorRV which uses BDFs for computing the time derivative. Remove BDFs from RungekuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
82 obj.v_prev(:,1) = obj.v;
dce08a74e0ad Create a separate class of RungekuttaExteriorRV which uses BDFs for computing the time derivative. Remove BDFs from RungekuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
83 end
dce08a74e0ad Create a separate class of RungekuttaExteriorRV which uses BDFs for computing the time derivative. Remove BDFs from RungekuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
84
dce08a74e0ad Create a separate class of RungekuttaExteriorRV which uses BDFs for computing the time derivative. Remove BDFs from RungekuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
85 % Fix the viscosity of the RHS function F
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: 1152
diff changeset
86 m = length(viscosity);
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: 1152
diff changeset
87 F_visc = @(v,t) obj.F(v, t, spdiags(viscosity,0,m,m));
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: 1152
diff changeset
88 obj.v = obj.rkScheme(obj.v, obj.t, obj.k, F_visc);
1029
dce08a74e0ad Create a separate class of RungekuttaExteriorRV which uses BDFs for computing the time derivative. Remove BDFs from RungekuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
89 obj.t = obj.t + obj.k;
dce08a74e0ad Create a separate class of RungekuttaExteriorRV which uses BDFs for computing the time derivative. Remove BDFs from RungekuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
90 obj.n = obj.n + 1;
dce08a74e0ad Create a separate class of RungekuttaExteriorRV which uses BDFs for computing the time derivative. Remove BDFs from RungekuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
91 end
dce08a74e0ad Create a separate class of RungekuttaExteriorRV which uses BDFs for computing the time derivative. Remove BDFs from RungekuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
92 end
dce08a74e0ad Create a separate class of RungekuttaExteriorRV which uses BDFs for computing the time derivative. Remove BDFs from RungekuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
93 end