diff +multiblock/Surface.m @ 542:febd750965c4 feature/grids

Add classes for easy plotting of functions on a multi block grid
author Jonatan Werpers <jonatan@werpers.com>
date Mon, 14 Aug 2017 16:46:58 +0200
parents
children 24b2487b01c2
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/+multiblock/Surface.m	Mon Aug 14 16:46:58 2017 +0200
@@ -0,0 +1,62 @@
+classdef Surface < handle
+    properties
+        grid
+        surfs
+
+        ZData
+        CData
+
+    end
+
+    methods
+        function obj = Surface(g, gf)
+            obj.grid = g;
+
+            coords = obj.grid.points();
+            X = obj.grid.funcToPlotMatrices(coords(:,1));
+            Y = obj.grid.funcToPlotMatrices(coords(:,2));
+
+            V = obj.grid.funcToPlotMatrices(gf);
+
+
+            holdState = ishold();
+            hold on
+
+            surfs = {1, obj.grid.nBlocks};
+            for i = 1:obj.grid.nBlocks
+                surfs{i} = surf(X{i}, Y{i}, V{i});
+            end
+
+            if holdState == false
+                hold off
+            end
+
+            obj.surfs = [surfs{:}];
+
+            obj.ZData = gf;
+            obj.CData = gf;
+        end
+
+        function set(obj, propertyName, propertyValue)
+            set(obj.surfs, propertyName, propertyValue);
+        end
+
+        function obj = set.ZData(obj, gf)
+            obj.ZData = gf;
+
+            V = obj.grid.funcToPlotMatrices(gf);
+            for i = 1:obj.grid.nBlocks
+                obj.surfs(i).ZData = V{i};
+            end
+        end
+
+        function obj = set.CData(obj, gf)
+            obj.CData = gf;
+
+            V = obj.grid.funcToPlotMatrices(gf);
+            for i = 1:obj.grid.nBlocks
+                obj.surfs(i).CData = V{i};
+            end
+        end
+    end
+end