changeset 1167:66c0fbbc406f feature/rv

Make constructDiffOps return a struct with the operators
author Vidar Stiernström <vidar.stiernstrom@it.uu.se>
date Fri, 28 Jun 2019 12:53:47 +0200
parents 17bb3c46472c
children af3c4eb0cbbd
files +rv/+diffops/constructDiffOpsBdf.m +rv/+diffops/constructDiffOpsMultiGrid.m
diffstat 2 files changed, 26 insertions(+), 17 deletions(-) [+]
line wrap: on
line diff
--- a/+rv/+diffops/constructDiffOpsBdf.m	Thu Jun 27 17:15:11 2019 +0200
+++ b/+rv/+diffops/constructDiffOpsBdf.m	Fri Jun 28 12:53:47 2019 +0200
@@ -1,7 +1,10 @@
-function [D_scheme, D_flux, penalties_scheme] = constructDiffOpsBdf(scheme, g, schemeOrder, residualOrder, schemeParams, opSet, BCs)
+function diffOpsStruct = constructDiffOpsBdf(scheme, g, schemeOrder, residualOrder, schemeParams, opSet, BCs)
     %% DiffOps for solution vector
-    [D_scheme, penalties_scheme, ~] = rv.diffops.constructSchemeDiffOp(scheme, g, schemeOrder, schemeParams, opSet, BCs)
+    [D_scheme, penalties_scheme, ~] = rv.diffops.constructSchemeDiffOp(scheme, g, schemeOrder, schemeParams, opSet, BCs);
     %% DiffOps for residual viscosity
-    [D_flux, ~] = rv.diffops.constructFluxDiffOp(scheme, g, order, schemeParams, opSet, BCs)
+    [D_flux, ~] = rv.diffops.constructFluxDiffOp(scheme, g, residualOrder, schemeParams, opSet, BCs);
     D_flux = @(v) -D_flux(v);
+    diffOpsStruct = struct('D_scheme', D_scheme,...
+                 'D_flux', D_flux,...
+                 'penalties_scheme', penalties_scheme);
 end
\ No newline at end of file
--- a/+rv/+diffops/constructDiffOpsMultiGrid.m	Thu Jun 27 17:15:11 2019 +0200
+++ b/+rv/+diffops/constructDiffOpsMultiGrid.m	Fri Jun 28 12:53:47 2019 +0200
@@ -1,23 +1,29 @@
-function [D_scheme, D_coarse, D_flux, D_t, penalties_scheme, penalties_res] = constructDiffOpsMultiGrid(scheme, g, schemeOrder, residualOrder, schemeParams, opSet, BCs)
-    % DiffOps for solution vector
-    [D_scheme, penalties_scheme, ~] = rv.diffops.constructSchemeDiffOp(scheme, g, schemeOrder, schemeParams, opSet, BCs);
-    [D_coarse, penalties_coarse] = rv.diffops.constructFluxDiffOpWithClosures(scheme, g, schemeOrder, schemeParams, opSet, BCs);
+function diffOpsStruct = constructDiffOpsMultiGrid(scheme, g, schemeOrder, residualOrder, schemeParams, opSet, BCs)
+    % DiffOps for stabilized solution vector
+    [D_scheme, penalties_scheme] = rv.diffops.constructSchemeDiffOp(scheme, g, schemeOrder, schemeParams, opSet, BCs);
+    % DiffOp for unstabilized solution vector
+    D_unstable = rv.diffops.constructFluxDiffOpWithClosures(scheme, g, schemeOrder, schemeParams, opSet, BCs);
     %% DiffOps for residual viscosity
     [D_t, penalties_res] = rv.diffops.constructFluxDiffOpWithClosures(scheme, g, residualOrder, schemeParams, opSet, BCs);
     D_flux = @(v) -D_t(v);
-    rvOperators = {}
+    diffOpsStruct = struct('D_scheme', D_scheme,...
+                     'D_unstable', D_unstable,...
+                     'D_flux', D_flux,...
+                     'D_t', D_t,...
+                     'penalties_scheme', penalties_scheme,...
+                     'penalties_res', penalties_res);
 end
 
 % TODO: Not clear if this is needed
 % TODO: Only works for equidistant grids
 function [D_coarse, penalties_coarse] = constructCoarserGridDiffOp(scheme, g, schemeOrder, schemeParams, opSet, BCs)
-	m = g.m();
-	lim = g.lim();
-	m_coarse = (m-1)/2 + 1;
-	g_coarse = grid.equidistant(m_coarse, lim{1});
-	[D_coarse, penalties_coarse] = rv.diffops.constructFluxDiffOpWithClosures(scheme, g_coarse, schemeOrder, schemeParams, opSet, BCs);
-	x = g.x{1};
-	x_coarse = x(1:2:end);
-	% TODO: Fix interpolation
-	D_coarse = @(v) interp1(x_coarse,D_coarse(v(1:2:end)),x,'spline');
+    m = g.m();
+    lim = g.lim();
+    m_coarse = (m-1)/2 + 1;
+    g_coarse = grid.equidistant(m_coarse, lim{1});
+    [D_coarse, penalties_coarse] = rv.diffops.constructFluxDiffOpWithClosures(scheme, g_coarse, schemeOrder, schemeParams, opSet, BCs);
+    x = g.x{1};
+    x_coarse = x(1:2:end);
+    % TODO: Fix interpolation
+    D_coarse = @(v) interp1(x_coarse,D_coarse(v(1:2:end)),x,'spline');
 end
\ No newline at end of file