Mercurial > repos > public > sbplib
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 |
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 |