diff +rv/+time/RungekuttaInteriorRv.m @ 1031:2ef20d00b386 feature/advectionRV

For easier comparison, return both the first order and residual viscosity when evaluating the residual. Add the first order and residual viscosity to the state of the RungekuttaRV time steppers
author Vidar Stiernström <vidar.stiernstrom@it.uu.se>
date Thu, 17 Jan 2019 10:25:06 +0100
parents 78c75c95b7dd
children 010bb2677230
line wrap: on
line diff
--- a/+rv/+time/RungekuttaInteriorRv.m	Fri Jan 11 15:52:48 2019 +0100
+++ b/+rv/+time/RungekuttaInteriorRv.m	Thu Jan 17 10:25:06 2019 +0100
@@ -7,12 +7,14 @@
         n       % Time level
         coeffs  % The coefficents used for the RK time integration
         RV      % Residual Viscosity
-        viscosity       % Viscosity vector
-        DvDt            % Function for computing the time deriative used for the RV evaluation
+        DvDt    % Function for computing the time deriative used for the RV evaluation
 
-        residual
-        dvdt
-        Df
+        % Convenience properties. Only for plotting
+        viscosity % Total viscosity
+        residualViscosity % Residual viscosity
+        firstOrderViscosity % first order viscosity
+        dvdt % Evaluated time derivative in residual
+        Df % Evaluated flux in residual
     end
 
     methods
@@ -29,8 +31,7 @@
             obj.RV = RV;
             obj.DvDt = DvDt;
             obj.dvdt = obj.DvDt(obj.v);
-            [obj.viscosity, obj.Df] = obj.RV.evaluate(obj.v,obj.dvdt);
-            obj.residual = obj.dvdt + obj.Df;
+            [obj.viscosity,  obj.Df, obj.firstOrderViscosity, obj.residualViscosity] = obj.RV.evaluate(obj.v,obj.dvdt);
         end
 
         function [v, t] = getV(obj)
@@ -39,7 +40,7 @@
         end
 
         function state = getState(obj)
-            state = struct('v', obj.v, 'residual', obj.residual, 'dvdt', obj.dvdt, 'Df', obj.Df, 'viscosity', obj.viscosity, 't', obj.t);
+            state = struct('v', obj.v, 'dvdt', obj.dvdt, 'Df', obj.Df, 'viscosity', obj.viscosity, 'residualViscosity', obj.residualViscosity, 'firstOrderViscosity', obj.firstOrderViscosity, 't', obj.t);
         end
 
         function obj = step(obj)
@@ -47,8 +48,7 @@
             obj.t = obj.t + obj.k;
             obj.n = obj.n + 1;
             obj.dvdt = obj.DvDt(obj.v);
-            [obj.viscosity, obj.Df] = obj.RV.evaluate(obj.v,obj.dvdt);
-            obj.residual = obj.dvdt + obj.Df;
+            [obj.viscosity,  obj.Df, obj.firstOrderViscosity, obj.residualViscosity] = obj.RV.evaluate(obj.v,obj.dvdt);
         end
     end
 end
\ No newline at end of file