changeset 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 d6100c4fe3b6 8e4b9a5d7c50
files +scheme/bcSetup.m
diffstat 1 files changed, 32 insertions(+), 12 deletions(-) [+]
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