diff +multiblock/evalOn.m @ 832:5573913a0949 feature/burgers1d

Merged with default, and updated +scheme/Burgers1D accordingly
author Vidar Stiernström <vidar.stiernstrom@it.uu.se>
date Tue, 11 Sep 2018 15:58:35 +0200
parents 442ec6c77c3f
children 92dc0a3b5d5d
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/+multiblock/evalOn.m	Tue Sep 11 15:58:35 2018 +0200
@@ -0,0 +1,27 @@
+% Evaluate different function handle for each block in a multiblock.Grid
+% Function handles may optionaly take a time argument
+% f -- cell array of function handles
+%       f{i} = f_i(t,x,y,...)
+% t -- optional time point. If not specified, it is assumed that the functions take only spatial arguments.
+function gf = evalOn(g, f, t)
+    assertType(g, 'multiblock.Grid');
+    assertType(f, 'cell');
+
+    default_arg('t', []);
+
+    grids = g.grids;
+    nBlocks = length(grids);
+    gf = cell(nBlocks, 1);
+
+    if isempty(t)
+        for i = 1:nBlocks
+            gf{i} = grid.evalOn(grids{i}, f{i});
+        end
+    else
+        for i = 1:nBlocks
+            gf{i} = grid.evalOn(grids{i}, @(varargin)f{i}(t,varargin{:}));
+        end
+    end
+
+    gf = blockmatrix.toMatrix(gf);
+end