annotate +rv/ResidualViscosity.m @ 1016:4b42999874c0 feature/advectionRV

Add lower level for boot-strapping to RungeKuttaExteriorRV - Add a lower level to RungeKuttaExteriorRV for which bootstrapping starts, e.g start bootstrapping from time level 3 using a 3rd order BDF - Clean up ResidualViscosity
author Vidar Stiernström <vidar.stiernstrom@it.uu.se>
date Fri, 07 Dec 2018 13:11:53 +0100
parents 9b7fcd5e4480
children 2d7c1333bd6c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1012
1e437c9e5132 Create residual viscosity package +rv and generalize the ResidualViscosity class
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
1 classdef ResidualViscosity < handle
1e437c9e5132 Create residual viscosity package +rv and generalize the ResidualViscosity class
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
2 properties
1e437c9e5132 Create residual viscosity package +rv and generalize the ResidualViscosity class
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
3 D % Diff op approximating the gradient of the flux f(u)
1e437c9e5132 Create residual viscosity package +rv and generalize the ResidualViscosity class
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
4 waveSpeed % Wave speed at each grid point, e.g f'(u). %TBD: Better naming?
1016
4b42999874c0 Add lower level for boot-strapping to RungeKuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1015
diff changeset
5 Cmax % Constant controlling relative amount of upwind dissipation
4b42999874c0 Add lower level for boot-strapping to RungeKuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1015
diff changeset
6 Cres % Constant controling relative amount of upwind dissipation
4b42999874c0 Add lower level for boot-strapping to RungeKuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1015
diff changeset
7 h % Length scale used for scaling the viscosity. Typically grid spacing.
1012
1e437c9e5132 Create residual viscosity package +rv and generalize the ResidualViscosity class
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
8 viscosity % Stores the computed viscosity.
1016
4b42999874c0 Add lower level for boot-strapping to RungeKuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1015
diff changeset
9 normalization % Function used to normalize the residual such that it is amplified in the
4b42999874c0 Add lower level for boot-strapping to RungeKuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1015
diff changeset
10 % shocks.
1012
1e437c9e5132 Create residual viscosity package +rv and generalize the ResidualViscosity class
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
11
1e437c9e5132 Create residual viscosity package +rv and generalize the ResidualViscosity class
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
12 % Convenice (for verification and plotting) TBD: Decide on if it should be kept.
1e437c9e5132 Create residual viscosity package +rv and generalize the ResidualViscosity class
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
13 u_t % Stores the latest approximated time derivative of the solution.
1e437c9e5132 Create residual viscosity package +rv and generalize the ResidualViscosity class
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
14 grad_f % Stores the latest approximated gradient of the flux
1e437c9e5132 Create residual viscosity package +rv and generalize the ResidualViscosity class
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
15 residual % Stores the computed residual
1e437c9e5132 Create residual viscosity package +rv and generalize the ResidualViscosity class
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
16 end
1e437c9e5132 Create residual viscosity package +rv and generalize the ResidualViscosity class
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
17
1e437c9e5132 Create residual viscosity package +rv and generalize the ResidualViscosity class
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
18 methods
1016
4b42999874c0 Add lower level for boot-strapping to RungeKuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1015
diff changeset
19 % TBD: Decide on how to treat waveSpeed. It would be nice to just pass a constant value without
4b42999874c0 Add lower level for boot-strapping to RungeKuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1015
diff changeset
20 % wrapping it in a function.
4b42999874c0 Add lower level for boot-strapping to RungeKuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1015
diff changeset
21 function obj = ResidualViscosity(D, waveSpeed, Cmax, Cres, h, N, normalization)
4b42999874c0 Add lower level for boot-strapping to RungeKuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1015
diff changeset
22 default_arg('normalization',@(v)norm(v-mean(v),inf));
1012
1e437c9e5132 Create residual viscosity package +rv and generalize the ResidualViscosity class
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
23 obj.D = D;
1e437c9e5132 Create residual viscosity package +rv and generalize the ResidualViscosity class
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
24 obj.waveSpeed = waveSpeed;
1e437c9e5132 Create residual viscosity package +rv and generalize the ResidualViscosity class
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
25 obj.h = h;
1e437c9e5132 Create residual viscosity package +rv and generalize the ResidualViscosity class
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
26 obj.Cmax = Cmax;
1e437c9e5132 Create residual viscosity package +rv and generalize the ResidualViscosity class
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
27 obj.Cres = Cres;
1e437c9e5132 Create residual viscosity package +rv and generalize the ResidualViscosity class
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
28 obj.viscosity = zeros(N,1);
1e437c9e5132 Create residual viscosity package +rv and generalize the ResidualViscosity class
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
29 obj.u_t = zeros(N,1);
1e437c9e5132 Create residual viscosity package +rv and generalize the ResidualViscosity class
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
30 obj.grad_f = zeros(N,1);
1e437c9e5132 Create residual viscosity package +rv and generalize the ResidualViscosity class
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
31 obj.residual = zeros(N,1);
1016
4b42999874c0 Add lower level for boot-strapping to RungeKuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1015
diff changeset
32 obj.normalization = normalization;
1012
1e437c9e5132 Create residual viscosity package +rv and generalize the ResidualViscosity class
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
33 end
1e437c9e5132 Create residual viscosity package +rv and generalize the ResidualViscosity class
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
34
1e437c9e5132 Create residual viscosity package +rv and generalize the ResidualViscosity class
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
35 function obj = update(obj, v, dvdt)
1e437c9e5132 Create residual viscosity package +rv and generalize the ResidualViscosity class
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
36 obj.u_t = dvdt;
1e437c9e5132 Create residual viscosity package +rv and generalize the ResidualViscosity class
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
37 obj.grad_f = obj.D(v);
1e437c9e5132 Create residual viscosity package +rv and generalize the ResidualViscosity class
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
38 obj.residual = obj.u_t + obj.grad_f;
1016
4b42999874c0 Add lower level for boot-strapping to RungeKuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1015
diff changeset
39 obj.viscosity = min(obj.Cmax*obj.h*abs(obj.waveSpeed(v)), obj.Cres*obj.h^2*abs(obj.residual)/obj.normalization(v));
1014
e547794a9407 Add boot-strapping to RungeKuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1012
diff changeset
40 end
e547794a9407 Add boot-strapping to RungeKuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1012
diff changeset
41
1012
1e437c9e5132 Create residual viscosity package +rv and generalize the ResidualViscosity class
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
42 function [residual, u_t, grad_f] = getResidual(obj)
1e437c9e5132 Create residual viscosity package +rv and generalize the ResidualViscosity class
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
43 residual = obj.residual;
1e437c9e5132 Create residual viscosity package +rv and generalize the ResidualViscosity class
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
44 u_t = obj.u_t;
1e437c9e5132 Create residual viscosity package +rv and generalize the ResidualViscosity class
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
45 grad_f = obj.grad_f;
1e437c9e5132 Create residual viscosity package +rv and generalize the ResidualViscosity class
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
46 end
1e437c9e5132 Create residual viscosity package +rv and generalize the ResidualViscosity class
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
47
1e437c9e5132 Create residual viscosity package +rv and generalize the ResidualViscosity class
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
48 function viscosity = getViscosity(obj)
1e437c9e5132 Create residual viscosity package +rv and generalize the ResidualViscosity class
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
49 viscosity = obj.viscosity;
1e437c9e5132 Create residual viscosity package +rv and generalize the ResidualViscosity class
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
50 end
1e437c9e5132 Create residual viscosity package +rv and generalize the ResidualViscosity class
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
51 end
1e437c9e5132 Create residual viscosity package +rv and generalize the ResidualViscosity class
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
52 end