Mercurial > repos > public > sbplib
annotate +multiblock/InterfaceOptions.m @ 909:ab1759166a8c feature/utux2D
Bugfix in InterfaceOptions.setOption
author | Martin Almquist <malmquist@stanford.edu> |
---|---|
date | Fri, 23 Nov 2018 20:21:28 -0800 |
parents | c0652621bd69 |
children | f7306f03f77a |
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 |
c0652621bd69
Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
57 % i,j -- integers |
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 |
c0652621bd69
Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
96 % Constructs the union of two InterfaceOptions |
c0652621bd69
Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
97 function union(obj, obj2) |
c0652621bd69
Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
98 localOpts = obj.optsCell; |
c0652621bd69
Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
99 remoteOpts = obj2.optsCell; |
c0652621bd69
Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
100 |
c0652621bd69
Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
101 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
|
102 '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
|
103 |
c0652621bd69
Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
104 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
|
105 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
|
106 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
|
107 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
|
108 else |
c0652621bd69
Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
109 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
|
110 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
|
111 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
|
112 localFields = fieldnames(localStruct); |
c0652621bd69
Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
113 |
c0652621bd69
Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
114 % 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
|
115 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
|
116 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
|
117 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
|
118 end |
c0652621bd69
Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
119 end |
c0652621bd69
Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
120 |
c0652621bd69
Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
121 % 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
|
122 remoteFields = fieldnames(remoteStruct); |
c0652621bd69
Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
123 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
|
124 name = remoteFields{k}; |
c0652621bd69
Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
125 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
|
126 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
|
127 end |
c0652621bd69
Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
128 |
c0652621bd69
Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
129 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
|
130 end |
c0652621bd69
Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
131 end |
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 |
c0652621bd69
Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
135 obj.optsCell = localOpts; |
c0652621bd69
Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
136 end |
c0652621bd69
Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
137 |
c0652621bd69
Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
138 |
c0652621bd69
Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
139 end |
c0652621bd69
Add new class multiblock.InterfaceOptions whose instances are passed to multiblock.DiffOp.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
140 end |