Mercurial > repos > public > sbplib
annotate +rv/ResidualViscosity.m @ 1021:cc61dde120cd feature/advectionRV
Add upwind dissipation to the operator inside Utux2d
author | Vidar Stiernström <vidar.stiernstrom@it.uu.se> |
---|---|
date | Wed, 19 Dec 2018 20:00:27 +0100 |
parents | 2d7c1333bd6c |
children | 2ef20d00b386 |
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 |
1017
2d7c1333bd6c
Add support for using the ODE to approximate the time derivative in the residual
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1016
diff
changeset
|
3 Df % Diff op approximating the gradient of the flux f(u) |
1012
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. |
4b42999874c0
Add lower level for boot-strapping to RungeKuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1015
diff
changeset
|
8 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
|
9 % shocks. |
1012
1e437c9e5132
Create residual viscosity package +rv and generalize the ResidualViscosity class
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
10 end |
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 methods |
1016
4b42999874c0
Add lower level for boot-strapping to RungeKuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1015
diff
changeset
|
13 % 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
|
14 % wrapping it in a function. |
1017
2d7c1333bd6c
Add support for using the ODE to approximate the time derivative in the residual
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1016
diff
changeset
|
15 function obj = ResidualViscosity(Df, waveSpeed, Cmax, Cres, h, normalization) |
1016
4b42999874c0
Add lower level for boot-strapping to RungeKuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1015
diff
changeset
|
16 default_arg('normalization',@(v)norm(v-mean(v),inf)); |
1017
2d7c1333bd6c
Add support for using the ODE to approximate the time derivative in the residual
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1016
diff
changeset
|
17 obj.Df = Df; |
1012
1e437c9e5132
Create residual viscosity package +rv and generalize the ResidualViscosity class
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
18 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
|
19 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
|
20 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
|
21 obj.Cres = Cres; |
1016
4b42999874c0
Add lower level for boot-strapping to RungeKuttaExteriorRV
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1015
diff
changeset
|
22 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
|
23 end |
1e437c9e5132
Create residual viscosity package +rv and generalize the ResidualViscosity class
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
24 |
1017
2d7c1333bd6c
Add support for using the ODE to approximate the time derivative in the residual
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1016
diff
changeset
|
25 function [viscosity, Df] = evaluate(obj, v, dvdt) |
2d7c1333bd6c
Add support for using the ODE to approximate the time derivative in the residual
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1016
diff
changeset
|
26 Df = obj.Df(v); |
2d7c1333bd6c
Add support for using the ODE to approximate the time derivative in the residual
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1016
diff
changeset
|
27 viscosity = min(obj.Cmax*obj.h*abs(obj.waveSpeed(v)), obj.Cres*obj.h^2*abs(dvdt + Df)/obj.normalization(v)); |
1012
1e437c9e5132
Create residual viscosity package +rv and generalize the ResidualViscosity class
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
28 end |
1e437c9e5132
Create residual viscosity package +rv and generalize the ResidualViscosity class
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
29 end |
1e437c9e5132
Create residual viscosity package +rv and generalize the ResidualViscosity class
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
30 end |