diff +scheme/bcSetup.m @ 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
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;