Mercurial > repos > public > sbplib
diff +scheme/bcSetup.m @ 790:6afd3dd3ed96 bcSetupExperiment
Add function for parsing each entry in bcs to a struct
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Wed, 25 Jul 2018 09:34:19 -0700 |
parents | 1a6095bed6d6 |
children | 8e4b9a5d7c50 5cf9fdf4c98f |
line wrap: on
line diff
--- a/+scheme/bcSetup.m Tue Jul 24 16:53:35 2018 -0700 +++ b/+scheme/bcSetup.m Wed Jul 25 09:34:19 2018 -0700 @@ -28,21 +28,17 @@ [localClosure, penalty] = diffOp.boundary_condition(bcs{i}.boundary, bcs{i}.type); closure = closure + localClosure; - if ~isfield(bcs{i},'data') || isempty(bcs{i}.data) - % Skip to next loop if there is no data + [ok, isSym, data] = parseData(bcs{i}, penalty, diffOp.grid) + + if ~ok + % There was no data continue end - if nargin(bcs{i}.data) == 1 - % Grid data - gridData{end+1}.penalty = penalty; - gridData{end}.func = bcs{i}.data; - elseif nargin(bcs{i}.data) > 1 - % Symbolic data - coord = diffOp.grid.getBoundary(bcs{i}.boundary); - symbolicData{end+1}.penalty = penalty; - symbolicData{end}.func = bcs{i}.data; - symbolicData{end}.coords = num2cell(coord ,1); + if isSym + gridData{end+1} = data; + else + symbolicData{end+1} = data; end end @@ -88,3 +84,27 @@ end end end + +function [ok, isSym, dataStruct] = parseData(bc, penalty, grid) + if ~isfield(bc,'data') || isempty(bc.data) + ok = false; + return + end + ok = true; + + nArg = nargin(bc.data); + + if nArg > 1 + % Symbolic data + isSym = true; + coord = grid.getBoundary(bc.boundary); + dataStruct.penalty = penalty; + dataStruct.func = bc.data; + dataStruct.coords = num2cell(coord, 1); + else + % Grid data + isSym = false; + dataStruct.penalty = penalty; + dataStruct.func = bcs{i}.data; + end +end