annotate copyWithDefault.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 499653b553b8
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
240
46256fffa329 Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
1 % Copy the struct src to dest with default values from default
46256fffa329 Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
2 % dest = copyWithDefault(src, default)
46256fffa329 Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
3 function dest = copyWithDefault(src, default)
46256fffa329 Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
4 % src does not have a value => use default
46256fffa329 Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
5 if isempty(src)
46256fffa329 Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
6 dest = default;
46256fffa329 Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
7 return
46256fffa329 Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
8 end
46256fffa329 Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
9
46256fffa329 Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
10 % src has a value and is not a struct => use src
304
499653b553b8 copyWithDefault: fixed bug.
Jonatan Werpers <jonatan@werpers.com>
parents: 240
diff changeset
11 % src has a value and default is not a struct => use src
499653b553b8 copyWithDefault: fixed bug.
Jonatan Werpers <jonatan@werpers.com>
parents: 240
diff changeset
12 if ~isstruct(src) || ~isstruct(default)
240
46256fffa329 Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
13 dest = src;
46256fffa329 Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
14 return
46256fffa329 Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
15 end
46256fffa329 Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
16
46256fffa329 Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
17
46256fffa329 Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
18 % src has a value and is a struct => add all default fields
46256fffa329 Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
19 dest = src;
46256fffa329 Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
20
46256fffa329 Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
21 fn = fieldnames(default);
46256fffa329 Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
22 for i = 1:length(fn)
46256fffa329 Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
23 if isfield(src, fn{i})
46256fffa329 Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
24 srcField = src.(fn{i});
46256fffa329 Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
25 else
46256fffa329 Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
26 srcField = [];
46256fffa329 Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
27 end
46256fffa329 Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
28
46256fffa329 Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
29 dest.(fn{i}) = copyWithDefault(srcField, default.(fn{i}));
46256fffa329 Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
30 end
46256fffa329 Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
31 end