annotate +rv/+time/getRvTimestepper.m @ 1179:cc2fd58989d1 feature/rv

Add getTimestepper for the RV time steppers
author Vidar Stiernström <vidar.stiernstrom@it.uu.se>
date Fri, 28 Jun 2019 17:24:01 +0200
parents
children 27f3b173dcfa
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
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
3 case 'rkRvBdf'
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
4 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
5 case 'rkRvMs'
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
6 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
7 case 'rkRvMg'
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
8 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
9 case 'rkRvInstage'
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
10 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
11 otherwise
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
12 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
13 end
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
14 end
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
15
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
16 function F = stabilizedRhs(D, data)
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
17 if isa(data, 'function_handle')
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
18 F = @(v, t, viscosity) D(v, viscosity) + data(v);
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
19 else
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
20 F = @(v, t, viscosity) D(v, viscosity) + data;
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
21 end
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
22 end
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
23
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
24 function F = unstabilizedRhs(D, data)
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
25 if isa(data, 'function_handle')
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
26 F = @(v, t) D(v) + data(v);
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
27 else
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
28 F = @(v, t) D(v) + data;
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
29 end
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
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
32 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
33 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
34 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
35 end
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
36
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
37 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
38 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
39 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
40 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
41 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
42 end
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
43
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
44 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
45 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
46 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
47 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
48 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
49 end
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
50
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
51 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
52 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
53 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
54 end
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
55
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
56
cc2fd58989d1 Add getTimestepper for the RV time steppers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
57