comparison +rv/ResidualViscosity.m @ 1039:a8ee5eca0e6c feature/burgers1d

Allow for the residual normalization function to return a vector. Also change the default normalization from normalizing on norm(u-mean(u),inf) to norm(u/2), since this proved to be better for 1d burgers
author Vidar Stiernström <vidar.stiernstrom@it.uu.se>
date Fri, 18 Jan 2019 09:06:20 +0100
parents 2ef20d00b386
children 922996695952
comparison
equal deleted inserted replaced
1038:8537fdd6830a 1039:a8ee5eca0e6c
11 11
12 methods 12 methods
13 % TBD: Decide on how to treat waveSpeed. It would be nice to just pass a constant value without 13 % TBD: Decide on how to treat waveSpeed. It would be nice to just pass a constant value without
14 % wrapping it in a function. 14 % wrapping it in a function.
15 function obj = ResidualViscosity(Df, waveSpeed, Cmax, Cres, h, normalization) 15 function obj = ResidualViscosity(Df, waveSpeed, Cmax, Cres, h, normalization)
16 default_arg('normalization',@(v)norm(v-mean(v),inf)); 16 default_arg('normalization',@(v)norm(v/2,inf));
17 obj.Df = Df; 17 obj.Df = Df;
18 obj.waveSpeed = waveSpeed; 18 obj.waveSpeed = waveSpeed;
19 obj.h = h; 19 obj.h = h;
20 obj.Cmax = Cmax; 20 obj.Cmax = Cmax;
21 obj.Cres = Cres; 21 obj.Cres = Cres;
23 end 23 end
24 24
25 function [viscosity, Df, firstOrderViscosity, residualViscosity] = evaluate(obj, v, dvdt) 25 function [viscosity, Df, firstOrderViscosity, residualViscosity] = evaluate(obj, v, dvdt)
26 Df = obj.Df(v); 26 Df = obj.Df(v);
27 firstOrderViscosity = obj.Cmax*obj.h*abs(obj.waveSpeed(v)); 27 firstOrderViscosity = obj.Cmax*obj.h*abs(obj.waveSpeed(v));
28 residualViscosity = obj.Cres*obj.h^2*abs(dvdt + Df)/obj.normalization(v); 28 residualViscosity = obj.Cres*obj.h^2*abs(dvdt + Df)./obj.normalization(v);
29 viscosity = min(firstOrderViscosity, residualViscosity); 29 viscosity = min(firstOrderViscosity, residualViscosity);
30 %viscosity = obj.Cmax*obj.h*abs(obj.waveSpeed(v));
31 end 30 end
32 end 31 end
33 end 32 end