From 84fae0c50f3b203e72fa7f7b8eccd6d01162912e Mon Sep 17 00:00:00 2001
From: Jakob Gabriel <jakob.gabriel@fau.de>
Date: Thu, 27 Feb 2020 12:55:58 +0100
Subject: [PATCH] quantity.Discrete & Symbolic: use gridIndex and gridLength of
 domain now

---
 +quantity/Discrete.m                | 14 +++++++-------
 +quantity/Symbolic.m                |  4 ++--
 +unittests/+quantity/testDiscrete.m |  4 ++--
 +unittests/+quantity/testSymbolic.m |  4 ++--
 4 files changed, 13 insertions(+), 13 deletions(-)

diff --git a/+quantity/Discrete.m b/+quantity/Discrete.m
index 4d9a252..a672c5b 100644
--- a/+quantity/Discrete.m
+++ b/+quantity/Discrete.m
@@ -485,7 +485,7 @@ classdef  (InferiorClasses = {?quantity.Symbolic}) Discrete < handle & matlab.mi
 			else
 				referenceGridName = a(1).gridName;
 				referenceGrid = a(1).grid;
-				referenceGridSize = a(1).gridSize(referenceGridName);
+				referenceGridSize = [a(1).domain.n];
 			end
 			
 			for it = 1 : numel(varargin)
@@ -495,14 +495,14 @@ classdef  (InferiorClasses = {?quantity.Symbolic}) Discrete < handle & matlab.mi
 				assert(numel(referenceGridName) == numel(varargin{it}(1).gridName), ...
 					['For getFinestGrid, the gridName of all objects must be equal', ...
 					'. Maybe gridJoin() does what you want?']);
-				comparisonGridSize = varargin{it}(1).gridSize(referenceGridName);
 				for jt = 1 : numel(referenceGridName)
+					comparisonGridSize = varargin{it}(1).domain.find(referenceGridName{jt}).n;
 					comparisonGrid = varargin{it}.gridOf(referenceGridName{jt});
 					assert(referenceGrid{jt}(1) == comparisonGrid(1), 'Grids must have same domain for combining them')
 					assert(referenceGrid{jt}(end) == comparisonGrid(end), 'Grids must have same domain for combining them')
-					if comparisonGridSize(jt) > referenceGridSize(jt)
+					if comparisonGridSize > referenceGridSize(jt)
 						referenceGrid{jt} = comparisonGrid;
-						referenceGridSize(jt) = comparisonGridSize(jt);
+						referenceGridSize(jt) = comparisonGridSize;
 					end
 				end
 			end
@@ -1262,7 +1262,7 @@ classdef  (InferiorClasses = {?quantity.Symbolic}) Discrete < handle & matlab.mi
 			if ~iscell(myGridName)
 				myGridName = {myGridName};
 			end
-			gridIdx = a.gridIndex(myGridName);
+			gridIdx = a(1).domain.gridIndex(myGridName);
 			for it = 1 : numel(myGridName)
 				bMat = flip(bMat, gridIdx(it));
 			end
@@ -1452,7 +1452,7 @@ classdef  (InferiorClasses = {?quantity.Symbolic}) Discrete < handle & matlab.mi
 				permuteBack = [(1:x.nargin)+2, [1, 2]];
 				xPermuted = permute(xMat, permuteGridAndIdx);
 				yUnmuted = 0*xPermuted;
-				for k = 1 : prod(x(1).gridSize)
+				for k = 1 : prod(x(1).domain.gridLength)
 					yUnmuted(:,:,k) = sqrt(xPermuted(:,:,k));
 				end
 				y = quantity.Discrete(permute(yUnmuted, permuteBack), ...
@@ -1707,7 +1707,7 @@ classdef  (InferiorClasses = {?quantity.Symbolic}) Discrete < handle & matlab.mi
 				permuteBack = [(1:x.nargin)+2, [1, 2]];
 				xPermuted = permute(xMat, permuteGridAndIdx);
 				yUnmuted = 0*xPermuted;
-				for k = 1 : prod(x(1).gridSize)
+				for k = 1 : prod(x(1).domain.gridLength)
 					yUnmuted(:,:,k) = expm(xPermuted(:,:,k));
 				end
 				y = quantity.Discrete(permute(yUnmuted, permuteBack), ...
diff --git a/+quantity/Symbolic.m b/+quantity/Symbolic.m
index e49270a..5d2718d 100644
--- a/+quantity/Symbolic.m
+++ b/+quantity/Symbolic.m
@@ -758,7 +758,7 @@ classdef Symbolic < quantity.Function
 				% create grid for result
 				gridI = cell(1, numel(gridNameI));
 				for it = 1 : numel(gridNameI)
-					gridIdx = obj.gridIndex(gridNameI{it});
+					gridIdx = obj(1).domain.gridIndex(gridNameI{it});
 					if (gridIdx ~= 0) && ~isempty(gridIdx)
 						gridI{it} = obj.gridOf(gridNameI{it});
 					else
@@ -801,7 +801,7 @@ classdef Symbolic < quantity.Function
 			
 			% input parser since some default values depend on intGridName.
 			myParser = misc.Parser;
-			myParser.addRequired('domain', @(d) obj.gridIndex(d) ~= 0);
+			myParser.addRequired('domain', @(d) obj(1).domain.gridIndex(d) ~= 0);
 			myParser.addRequired('lowerBound', ...
 				@(l) isnumeric(l) || ischar(l) );
 			myParser.addRequired('upperBound', ...
diff --git a/+unittests/+quantity/testDiscrete.m b/+unittests/+quantity/testDiscrete.m
index 65fb584..267ae7f 100644
--- a/+unittests/+quantity/testDiscrete.m
+++ b/+unittests/+quantity/testDiscrete.m
@@ -1270,8 +1270,8 @@ testCase.verifyEqual(quanZetaZeta.on(), quanZetaZetaReference);
 testCase.verifyEqual(quanEta(1).gridName, {'eta', 'zeta'})
 testCase.verifyEqual(quanPt.on(), shiftdim(quan.on({1, quan(1).grid{2}})));
 
-testCase.verifyEqual( gridSize( quanZetaZeta.subs( ...
-	quantity.Domain('zeta', linspace(0,1,3))) ), 3);
+myQuantity = quanZetaZeta.subs(quantity.Domain('zeta', linspace(0,1,3)));
+testCase.verifyEqual(myQuantity(1).domain.gridLength, 3);
 
 % 4d-case
 myTestArray4d = rand(11, 21, 31, 41, 1, 2);
diff --git a/+unittests/+quantity/testSymbolic.m b/+unittests/+quantity/testSymbolic.m
index 9d58191..f0e0b6e 100644
--- a/+unittests/+quantity/testSymbolic.m
+++ b/+unittests/+quantity/testSymbolic.m
@@ -197,7 +197,7 @@ testCase.verifyTrue(F(2,2) == f2);
 f3 = quantity.Symbolic(cos(z), 'grid', {linspace(0, 1, 13)}, 'gridName', {'z'}, 'name', 'f1');
 
 F = [f1, f3];
-testCase.verifyEqual(F(2).gridSize, f1.gridSize)
+testCase.verifyEqual(F(2).domain.gridLength, f1(1).domain.gridLength)
 
 % concatenate quantitySymbolics and other values
 F = [f1, 0];
@@ -663,7 +663,7 @@ q = quantity.Symbolic(magic(3), 'grid', {linspace(0, 1, 4)'}, 'gridName', 'z');
 %%
 magic7 = magic(3);
 magic700 = zeros(4, 3, 3);
-for k = 1:q.gridSize()
+for k = 1:q(1).domain.gridLength()
 	magic700(k, :,:) = magic7;
 end
 
-- 
GitLab