annotate +scheme/+bc/verifyFormat.m @ 1037:2d7ba44340d0 feature/burgers1d

Pass scheme specific parameters as cell array. This will enabale constructDiffOps to be more general. In addition, allow for schemes returning function handles as diffOps, which is currently how non-linear schemes such as Burgers1d are implemented.
author Vidar Stiernström <vidar.stiernstrom@it.uu.se>
date Fri, 18 Jan 2019 09:02:02 +0100
parents 51cc7b05b4ab
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
872
f190e35bb57a Clean up verifyFormat
Jonatan Werpers <jonatan@werpers.com>
parents: 869
diff changeset
1 % Errors with a more or less detailed error message if there is a problem with the bc specification
869
d356f1a22d4f Start organizing the code
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
2 function verifyBcFormat(bcs, diffOp)
872
f190e35bb57a Clean up verifyFormat
Jonatan Werpers <jonatan@werpers.com>
parents: 869
diff changeset
3 assertType(bcs, 'cell');
869
d356f1a22d4f Start organizing the code
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
4 for i = 1:length(bcs)
d356f1a22d4f Start organizing the code
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
5 assertType(bcs{i}, 'struct');
d356f1a22d4f Start organizing the code
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
6 assertStructFields(bcs{i}, {'type', 'boundary'});
d356f1a22d4f Start organizing the code
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
7
d356f1a22d4f Start organizing the code
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
8 if ~isfield(bcs{i}, 'data') || isempty(bcs{i}.data)
d356f1a22d4f Start organizing the code
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
9 continue
d356f1a22d4f Start organizing the code
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
10 end
d356f1a22d4f Start organizing the code
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
11
d356f1a22d4f Start organizing the code
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
12 if ~isa(bcs{i}.data, 'function_handle')
d356f1a22d4f Start organizing the code
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
13 error('bcs{%d}.data should be a function of time or a function of time and space',i);
d356f1a22d4f Start organizing the code
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
14 end
d356f1a22d4f Start organizing the code
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
15
872
f190e35bb57a Clean up verifyFormat
Jonatan Werpers <jonatan@werpers.com>
parents: 869
diff changeset
16 % Find dimension of boundary
869
d356f1a22d4f Start organizing the code
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
17 b = diffOp.grid.getBoundary(bcs{i}.boundary);
872
f190e35bb57a Clean up verifyFormat
Jonatan Werpers <jonatan@werpers.com>
parents: 869
diff changeset
18 dim = size(b,2);
869
d356f1a22d4f Start organizing the code
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
19
872
f190e35bb57a Clean up verifyFormat
Jonatan Werpers <jonatan@werpers.com>
parents: 869
diff changeset
20 % Assert that the data function has a valid number of input arguments
f190e35bb57a Clean up verifyFormat
Jonatan Werpers <jonatan@werpers.com>
parents: 869
diff changeset
21 if ~(nargin(bcs{i}.data) == 1 || nargin(bcs{i}.data) == 1 + dim)
f190e35bb57a Clean up verifyFormat
Jonatan Werpers <jonatan@werpers.com>
parents: 869
diff changeset
22 error('sbplib:scheme:bcSetup:DataWrongNumberOfArguments', 'bcs{%d}.data has the wrong number of input arguments. Must be either only time or time and space.', i);
f190e35bb57a Clean up verifyFormat
Jonatan Werpers <jonatan@werpers.com>
parents: 869
diff changeset
23 end
869
d356f1a22d4f Start organizing the code
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
24
d356f1a22d4f Start organizing the code
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
25 if nargin(bcs{i}.data) == 1
d356f1a22d4f Start organizing the code
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
26 % Grid data (only function of time)
872
f190e35bb57a Clean up verifyFormat
Jonatan Werpers <jonatan@werpers.com>
parents: 869
diff changeset
27 % Assert that the data has the correct dimension
878
51cc7b05b4ab Fix bugs in forcingSetup and verifyFormat
Jonatan Werpers <jonatan@werpers.com>
parents: 872
diff changeset
28 assertSize(bcs{i}.data(0), 1, size(b,1));
869
d356f1a22d4f Start organizing the code
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
29 end
d356f1a22d4f Start organizing the code
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
30 end
d356f1a22d4f Start organizing the code
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
31 end