annotate +scheme/+bc/verifyFormat.m @ 1198:2924b3a9b921 feature/d2_compatible

Add OpSet for fully compatible D2Variable, created from regular D2Variable by replacing d1 by first row of D1. Formal reduction by one order of accuracy at the boundary point.
author Martin Almquist <malmquist@stanford.edu>
date Fri, 16 Aug 2019 14:30:28 -0700
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