annotate +multiblock/InterfaceOptions.m @ 911:f7306f03f77a feature/utux2D

Improve comments and names. Change InterfaceOptions.union to merge.
author Martin Almquist <malmquist@stanford.edu>
date Sat, 24 Nov 2018 15:43:34 -0800
parents ab1759166a8c
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
907
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
1 % An object of class InterfaceOptions can be passed as argument to multiblock.Diffop
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
2 % to specify details of the interface couplings.
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
3 %
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
4 % An InterfaceOptions object is essentially a cell array of options,
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
5 % equipped with methods that make it easier to change options.
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
6 classdef InterfaceOptions < handle
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
7 properties
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
8 % optsCell -- nBlocks x nBlocks cell array (same size as grid.connections)
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
9 % Must have the same sparsity pattern as grid.connections
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
10 optsCell
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
11 end
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
12
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
13 methods
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
14
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
15 % grid -- mutliblock.grid
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
16 % intialOpts -- cell array of interface options
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
17 function obj = InterfaceOptions(grid, initialOpts)
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
18
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
19 default_arg('initialOpts', []);
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
20
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
21 % If no initialOpts are given, create empty options cell.
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
22 % The cell matrix is non-empty where connections is non-empty.
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
23 if isempty(initialOpts)
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
24 opts = grid.connections;
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
25 for i = 1:numel(grid.connections)
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
26 if ~isempty(grid.connections{i})
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
27 opts{i} = cell(1, 2);
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
28 opts{i}{1} = struct;
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
29 opts{i}{2} = struct;
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
30 end
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
31 end
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
32
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
33 % If no grid is given, assume that initialOpts is correct and use it.
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
34 elseif isempty(grid)
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
35 opts = initialOpts;
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
36
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
37 % Check that grid.connections and initialOpts match, and then use initialOpts.
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
38 else
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
39 assert(numel(grid.connections) == numel(initialOpts),...
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
40 'InterfaceOptions: grid.connections and initialOpts do not match');
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
41 opts = initialOpts;
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
42 end
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
43 obj.optsCell = opts;
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
44 end
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
45
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
46 % Returns the cell matrix that contains the options
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
47 function opts = getOptions(obj)
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
48 opts = obj.optsCell;
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
49 end
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
50
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
51
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
52 % Sets the option optStr to val, for the coupling berween blocks i and j
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
53 % If i and j are omitted, all couplings get optStr = val.
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
54 %
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
55 % optStr -- string
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
56 % val -- anything
911
f7306f03f77a Improve comments and names. Change InterfaceOptions.union to merge.
Martin Almquist <malmquist@stanford.edu>
parents: 909
diff changeset
57 % i,j -- integers (or empty)
907
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
58 function setOption(obj, optStr, val, i ,j)
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
59 default_arg('i',[]);
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
60 default_arg('j',[]);
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
61
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
62 opts = obj.optsCell;
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
63
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
64 if isempty(i) && ~isempty(j)
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
65 error('If i is empty, j must also be empty.');
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
66
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
67 elseif isempty(j) && ~isempty(i)
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
68 error('If j is empty, i must also be empty.');
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
69
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
70 % If i and j are empty, set the option for all interfaces
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
71 elseif isempty(i) && isempty(j)
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
72 for k = 1:numel(opts)
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
73 if ~isempty(opts{k})
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
74 opts{k}{1} = setfield(opts{k}{1}, optStr, val);
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
75 opts{k}{2} = setfield(opts{k}{2}, optStr, val);
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
76 end
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
77 end
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
78
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
79 % Both i and j are nonempty, set property only for that interface
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
80 else
909
ab1759166a8c Bugfix in InterfaceOptions.setOption
Martin Almquist <malmquist@stanford.edu>
parents: 907
diff changeset
81 if ~isempty(opts{i,j})
ab1759166a8c Bugfix in InterfaceOptions.setOption
Martin Almquist <malmquist@stanford.edu>
parents: 907
diff changeset
82 opts{i,j}{1} = setfield(opts{i,j}{1}, optStr, val);
ab1759166a8c Bugfix in InterfaceOptions.setOption
Martin Almquist <malmquist@stanford.edu>
parents: 907
diff changeset
83 opts{i,j}{2} = setfield(opts{i,j}{2}, optStr, val);
ab1759166a8c Bugfix in InterfaceOptions.setOption
Martin Almquist <malmquist@stanford.edu>
parents: 907
diff changeset
84 elseif ~isempty(opts{j,i})
ab1759166a8c Bugfix in InterfaceOptions.setOption
Martin Almquist <malmquist@stanford.edu>
parents: 907
diff changeset
85 opts{j,i}{1} = setfield(opts{j,i}{1}, optStr, val);
ab1759166a8c Bugfix in InterfaceOptions.setOption
Martin Almquist <malmquist@stanford.edu>
parents: 907
diff changeset
86 opts{j,i}{2} = setfield(opts{j,i}{2}, optStr, val);
ab1759166a8c Bugfix in InterfaceOptions.setOption
Martin Almquist <malmquist@stanford.edu>
parents: 907
diff changeset
87 else
ab1759166a8c Bugfix in InterfaceOptions.setOption
Martin Almquist <malmquist@stanford.edu>
parents: 907
diff changeset
88 error(sprintf('Blocks %d and %d do not seem to be coupled',i,j) );
ab1759166a8c Bugfix in InterfaceOptions.setOption
Martin Almquist <malmquist@stanford.edu>
parents: 907
diff changeset
89 end
907
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
90 end
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
91
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
92 obj.optsCell = opts;
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
93 end
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
94
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
95
911
f7306f03f77a Improve comments and names. Change InterfaceOptions.union to merge.
Martin Almquist <malmquist@stanford.edu>
parents: 909
diff changeset
96 % Merges with another InterfaceOptions-object.
f7306f03f77a Improve comments and names. Change InterfaceOptions.union to merge.
Martin Almquist <malmquist@stanford.edu>
parents: 909
diff changeset
97 % Errors if there are merge conflicts.
f7306f03f77a Improve comments and names. Change InterfaceOptions.union to merge.
Martin Almquist <malmquist@stanford.edu>
parents: 909
diff changeset
98 % TODO: merge with preference?
f7306f03f77a Improve comments and names. Change InterfaceOptions.union to merge.
Martin Almquist <malmquist@stanford.edu>
parents: 909
diff changeset
99 function merge(obj, obj2)
f7306f03f77a Improve comments and names. Change InterfaceOptions.union to merge.
Martin Almquist <malmquist@stanford.edu>
parents: 909
diff changeset
100 localOpts = obj.getOptions();
f7306f03f77a Improve comments and names. Change InterfaceOptions.union to merge.
Martin Almquist <malmquist@stanford.edu>
parents: 909
diff changeset
101 remoteOpts = obj2.getOptions();
907
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
102
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
103 assert( numel(localOpts) == numel(remoteOpts), ...
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
104 'multiblock.InterfaceOptions: The two InterfaceOptions do not have the same dimension.');
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
105
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
106 for i = 1:numel(localOpts)
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
107 if ~isempty(remoteOpts{i})
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
108 if isempty(localOpts{i})
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
109 error('multiblock.InterfaceOptions: The two InterfaceOptions must have the same interface connections');
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
110 else
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
111 for j = 1:2
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
112 remoteStruct = remoteOpts{i}{j};
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
113 localStruct = localOpts{i}{j};
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
114 localFields = fieldnames(localStruct);
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
115
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
116 % Assert the we don't have any identical field names, which would lead to overwriting
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
117 for k = 1:numel(localFields)
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
118 if isfield(remoteStruct, localFields{k})
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
119 error('multiblock.InterfaceOptions: Cannot perform union of InterfaceOptions with common options');
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
120 end
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
121 end
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
122
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
123 % Take fields from remote and deal to local
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
124 remoteFields = fieldnames(remoteStruct);
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
125 for k = 1:numel(remoteFields)
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
126 name = remoteFields{k};
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
127 val = getfield(remoteStruct, name);
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
128 localStruct = setfield(localStruct, name, val);
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
129 end
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
130
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
131 localOpts{i}{j} = localStruct;
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
132 end
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
133 end
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
134 end
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
135 end
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
136
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
137 obj.optsCell = localOpts;
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
138 end
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
139
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
140
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
141 end
c0652621bd69 Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
142 end