Mercurial > repos > public > sbplib
comparison +scheme/bcSetup.m @ 841:006defd0247b
Fix bug in +scheme.bcSetup
outputs of parseDate(...) were not set correctly which caused a chrash in the case when no data was provided for the BC
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Thu, 20 Sep 2018 11:45:40 +0200 |
parents | 5cf9fdf4c98f |
children | 93489ddb73e8 c70131daaa6e ba7e442ea639 |
comparison
equal
deleted
inserted
replaced
839:a4669d961d26 | 841:006defd0247b |
---|---|
26 % Collect closures, penalties and data | 26 % Collect closures, penalties and data |
27 for i = 1:length(bcs) | 27 for i = 1:length(bcs) |
28 [localClosure, penalty] = diffOp.boundary_condition(bcs{i}.boundary, bcs{i}.type); | 28 [localClosure, penalty] = diffOp.boundary_condition(bcs{i}.boundary, bcs{i}.type); |
29 closure = closure + localClosure; | 29 closure = closure + localClosure; |
30 | 30 |
31 [ok, isSym, data] = parseData(bcs{i}, penalty, diffOp.grid); | 31 [ok, isSymbolic, data] = parseData(bcs{i}, penalty, diffOp.grid); |
32 | 32 |
33 if ~ok | 33 if ~ok |
34 % There was no data | 34 % There was no data |
35 continue | 35 continue |
36 end | 36 end |
37 | 37 |
38 if isSym | 38 if isSymbolic |
39 symbolicData{end+1} = data; | 39 symbolicData{end+1} = data; |
40 else | 40 else |
41 gridData{end+1} = data; | 41 gridData{end+1} = data; |
42 end | 42 end |
43 end | 43 end |
83 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); | 83 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); |
84 end | 84 end |
85 end | 85 end |
86 end | 86 end |
87 | 87 |
88 function [ok, isSym, dataStruct] = parseData(bc, penalty, grid) | 88 function [ok, isSymbolic, dataStruct] = parseData(bc, penalty, grid) |
89 if ~isfield(bc,'data') || isempty(bc.data) | 89 if ~isfield(bc,'data') || isempty(bc.data) |
90 isSymbolic = []; | |
91 dataStruct = struct(); | |
90 ok = false; | 92 ok = false; |
91 return | 93 return |
92 end | 94 end |
93 ok = true; | 95 ok = true; |
94 | 96 |
95 nArg = nargin(bc.data); | 97 nArg = nargin(bc.data); |
96 | 98 |
97 if nArg > 1 | 99 if nArg > 1 |
98 % Symbolic data | 100 % Symbolic data |
99 isSym = true; | 101 isSymbolic = true; |
100 coord = grid.getBoundary(bc.boundary); | 102 coord = grid.getBoundary(bc.boundary); |
101 dataStruct.penalty = penalty; | 103 dataStruct.penalty = penalty; |
102 dataStruct.func = bc.data; | 104 dataStruct.func = bc.data; |
103 dataStruct.coords = num2cell(coord, 1); | 105 dataStruct.coords = num2cell(coord, 1); |
104 else | 106 else |
105 % Grid data | 107 % Grid data |
106 isSym = false; | 108 isSymbolic = false; |
107 dataStruct.penalty = penalty; | 109 dataStruct.penalty = penalty; |
108 dataStruct.func = bcs{i}.data; | 110 dataStruct.func = bcs{i}.data; |
109 end | 111 end |
110 end | 112 end |