Mercurial > repos > public > sbplib
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 |
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 |