Mercurial > repos > public > sbplib
changeset 789:1a6095bed6d6 bcSetupExperiment
Change to using structs for storing data functions and penalties
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Tue, 24 Jul 2018 16:53:35 -0700 |
parents | b3ea4cccaf15 |
children | 6afd3dd3ed96 |
files | +scheme/bcSetup.m |
diffstat | 1 files changed, 11 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/+scheme/bcSetup.m Tue Jul 24 16:30:15 2018 -0700 +++ b/+scheme/bcSetup.m Tue Jul 24 16:53:35 2018 -0700 @@ -20,11 +20,8 @@ % Setup storage arrays closure = spzeros(size(diffOp)); - gridDataPenalties = {}; - gridDataFunctions = {}; - symbolicDataPenalties = {}; - symbolicDataFunctions = {}; - symbolicDataCoords = {}; + gridData = {}; + symbolicData = {}; % Collect closures, penalties and data for i = 1:length(bcs) @@ -38,14 +35,14 @@ if nargin(bcs{i}.data) == 1 % Grid data - gridDataPenalties{end+1} = penalty; - gridDataFunctions{end+1} = bcs{i}.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); - symbolicDataPenalties{end+1} = penalty; - symbolicDataFunctions{end+1} = bcs{i}.data; - symbolicDataCoords{end+1} = num2cell(coord ,1); + symbolicData{end+1}.penalty = penalty; + symbolicData{end}.func = bcs{i}.data; + symbolicData{end}.coords = num2cell(coord ,1); end end @@ -53,12 +50,12 @@ O = spzeros(size(diffOp),1); function v = S_fun(t) v = O; - for i = 1:length(gridDataFunctions) - v = v + gridDataPenalties{i}*gridDataFunctions{i}(t); + for i = 1:length(gridData) + v = v + gridData{i}.penalty*gridData{i}.func(t); end - for i = 1:length(symbolicDataFunctions) - v = v + symbolicDataPenalties{i}*symbolicDataFunctions{i}(t, symbolicDataCoords{i}{:}); + for i = 1:length(symbolicData) + v = v + symbolicData{i}.penalty*symbolicData{i}.func(t, symbolicData{i}.coords{:}); end v = S_sign * v;