annotate +grid/evalOnScalar.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 3ea2ae2a3d15
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
275
3ea2ae2a3d15 Improvments to eval on grids. Added function to extrac components of a vector gf.
Jonatan Werpers <jonatan@werpers.com>
parents: 273
diff changeset
1 % WHAT KIND OF A FUNCTION NAME IS THIS?!
3ea2ae2a3d15 Improvments to eval on grids. Added function to extrac components of a vector gf.
Jonatan Werpers <jonatan@werpers.com>
parents: 273
diff changeset
2 % This functions send matrixa arguments to func unlike grid.evalOn()
273
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
3 % Takes a funciton and evaluates it on a grid to return a grid function in the
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
4 % form of a (n*k)x1 vector, where n is the number of grid points and k is the
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
5 % number of components of the function.
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
6 % g -- Grid to evaluate on.
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
7 % func -- Function to evaluate. May be a function handle or a constant. If
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
8 % it is a vector value it has to be provided as a column vector,
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
9 function gf = evalOn(g, func)
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
10 if ~isa(func, 'function_handle')
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
11 % We should have a constant.
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
12 if size(func,2) ~= 1
275
3ea2ae2a3d15 Improvments to eval on grids. Added function to extrac components of a vector gf.
Jonatan Werpers <jonatan@werpers.com>
parents: 273
diff changeset
13 error('grid:evalOnScalar:VectorValuedWrongDim', 'A vector valued function must be given as a column vector')
273
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
14 end
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
15
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
16 gf = repmat(func,[g.N, 1]);
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
17 return
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
18 end
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
19 % func should now be a function_handle
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
20
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
21 % Get coordinates and convert to cell array for easier use as a parameter
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
22 x = g.points();
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
23 X = {};
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
24 for i = 1:size(x, 2)
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
25 X{i} = x(:,i);
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
26 end
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
27
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
28 % Find the number of components
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
29 x0 = num2cell(x(1,:));
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
30 f0 = func(x0{:});
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
31 k = length(f0);
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
32
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
33 if size(f0,2) ~= 1
275
3ea2ae2a3d15 Improvments to eval on grids. Added function to extrac components of a vector gf.
Jonatan Werpers <jonatan@werpers.com>
parents: 273
diff changeset
34 error('grid:evalOnScalar:VectorValuedWrongDim', 'A vector valued function must be given as a column vector')
273
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
35 end
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
36
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
37 gf = func(X{:});
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
38 if k > 1 % Reorder so that componets sits together.
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
39 gf = reshape(reshape(gf, [g.N, k])', [g.N*k, 1]);
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
40 end
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
41 end