annotate +rv/+time/getRvTimestepper.m @ 1192:b3c47a716d57 feature/rv

Fix indentation
author Vidar Stiernström <vidar.stiernstrom@it.uu.se>
date Mon, 29 Jul 2019 16:43:39 +0200
parents 5aa3049a4212
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1179
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
1 function ts = getRvTimestepper(opt, diffOpStruct, residualViscosity, data, t0, v0)
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
2 switch opt.method
1183
27f3b173dcfa Add RungekuttaRv to getRvTimesteppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1179
diff changeset
3 case 'rkRv'
27f3b173dcfa Add RungekuttaRv to getRvTimesteppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1179
diff changeset
4 ts = rkRvTimestepper(opt, diffOpStruct, residualViscosity, data, t0, v0);
1179
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
5 case 'rkRvBdf'
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
6 ts = rkRvBdfTimestepper(opt, diffOpStruct, residualViscosity, data, t0, v0);
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
7 case 'rkRvMs'
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
8 ts = rkRvMsTimestepper(opt, diffOpStruct, residualViscosity, data, t0, v0);
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
9 case 'rkRvMg'
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
10 ts = rkRvMgTimestepper(opt, diffOpStruct, residualViscosity, data, t0, v0);
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
11 case 'rkRvInstage'
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
12 ts = rkRvInstageTimestepper(opt, diffOpStruct, residualViscosity, data, t0, v0);
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
13 otherwise
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
14 error('Timestepping method ''%s'' not supported',method);
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
15 end
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
16 end
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
17
1187
5aa3049a4212 Allow for time dependent data when construcing the ODE RHS
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1183
diff changeset
18 function fhData = dataFunctionHandle(data)
1179
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
19 if isa(data, 'function_handle')
1187
5aa3049a4212 Allow for time dependent data when construcing the ODE RHS
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1183
diff changeset
20 switch nargin(data)
5aa3049a4212 Allow for time dependent data when construcing the ODE RHS
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1183
diff changeset
21 case 1
5aa3049a4212 Allow for time dependent data when construcing the ODE RHS
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1183
diff changeset
22 fhData = @(v, t) data(v);
5aa3049a4212 Allow for time dependent data when construcing the ODE RHS
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1183
diff changeset
23 case 2
5aa3049a4212 Allow for time dependent data when construcing the ODE RHS
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1183
diff changeset
24 fhData = @(v, t) data(v,t);
5aa3049a4212 Allow for time dependent data when construcing the ODE RHS
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1183
diff changeset
25 otherwise
5aa3049a4212 Allow for time dependent data when construcing the ODE RHS
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1183
diff changeset
26 error('Incorrect number of input arguments');
5aa3049a4212 Allow for time dependent data when construcing the ODE RHS
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1183
diff changeset
27 end
1179
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
28 else
1187
5aa3049a4212 Allow for time dependent data when construcing the ODE RHS
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1183
diff changeset
29 fhData = @(v, t) data;
1179
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
30 end
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
31 end
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
32
1187
5aa3049a4212 Allow for time dependent data when construcing the ODE RHS
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1183
diff changeset
33 function F = stabilizedRhs(D, data)
1192
b3c47a716d57 Fix indentation
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1187
diff changeset
34 fhData = dataFunctionHandle(data);
b3c47a716d57 Fix indentation
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1187
diff changeset
35 F = @(v, t, viscosity) D(v, viscosity) + fhData(v,t);
1187
5aa3049a4212 Allow for time dependent data when construcing the ODE RHS
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1183
diff changeset
36 end
5aa3049a4212 Allow for time dependent data when construcing the ODE RHS
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1183
diff changeset
37
1179
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
38 function F = unstabilizedRhs(D, data)
1187
5aa3049a4212 Allow for time dependent data when construcing the ODE RHS
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1183
diff changeset
39 fhData = dataFunctionHandle(data);
5aa3049a4212 Allow for time dependent data when construcing the ODE RHS
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1183
diff changeset
40 F = @(v, t) D(v) + fhData(v,t);
1179
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
41 end
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
42
1183
27f3b173dcfa Add RungekuttaRv to getRvTimesteppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1179
diff changeset
43 function ts = rkRvTimestepper(opt, diffOpStruct, residualViscosity, data, t0, v0)
27f3b173dcfa Add RungekuttaRv to getRvTimesteppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1179
diff changeset
44 F = stabilizedRhs(diffOpStruct.D_scheme, data);
27f3b173dcfa Add RungekuttaRv to getRvTimesteppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1179
diff changeset
45 ts = rv.time.RungekuttaRv(F, opt.k, t0, v0, residualViscosity, diffOpStruct.D_t, opt.rkOrder);
27f3b173dcfa Add RungekuttaRv to getRvTimesteppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1179
diff changeset
46 end
27f3b173dcfa Add RungekuttaRv to getRvTimesteppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1179
diff changeset
47
1179
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
48 function ts = rkRvBdfTimestepper(opt, diffOpStruct, residualViscosity, data, t0, v0)
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
49 F = stabilizedRhs(diffOpStruct.D_scheme, data);
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
50 ts = rv.time.RungekuttaRvBdf(F, opt.k, t0, v0, residualViscosity, opt.rkOrder, opt.bdfOrders);
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
51 end
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
52
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
53 function ts = rkRvMsTimestepper(opt, diffOpStruct, residualViscosity, data, t0, v0)
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
54 F = stabilizedRhs(diffOpStruct.D_scheme, data);
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
55 F_unstab = unstabilizedRhs(diffOpStruct.D_unstable, data);
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
56 ts = rv.time.RungekuttaRvMultiStage(F, F_unstab, opt.k, t0, v0,...
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
57 residualViscosity, diffOpStruct.D_t, opt.rkOrder);
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
58 end
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
59
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
60 function ts = rkRvMgTimestepper(opt, diffOpStruct, residualViscosity, data, t0, v0)
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
61 F = stabilizedRhs(diffOpStruct.D_scheme, data);
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
62 F_coarse = unstabilizedRhs(diffOpStruct.D_coarse, data);
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
63 ts = rv.time.RungekuttaRvMultiGrid(F, F_coarse, opt.k, t0, v0,...
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
64 residualViscosity, diffOpStruct.D_t, opt.rkOrder);
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
65 end
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
66
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
67 function ts = rkRvInstageTimestepper(opt, diffOpStruct, residualViscosity, data, t0, v0)
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
68 F = stabilizedRhs(diffOpStruct.D_scheme, data);
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
69 ts = rv.time.RungekuttaRvInstage(F, opt.k, t0, v0, residualViscosity, diffOpStruct.D_t, opt.rkOrder);
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
70 end