Commit dc784651 authored by Ferdinand Fischer's avatar Ferdinand Fischer
Browse files

fixed a bug in the evaluation of quantity.Symbolic on numeric grids,

parent 7902191f
......@@ -427,7 +427,13 @@ classdef (InferiorClasses = {?quantity.Symbolic}) Discrete ...
myDomain = misc.ensureIsCell(myDomain);
newGrid = myDomain;
if obj(1).isConstant()
% Check if the object has a domain with a name:
% If there is no name, the object has an empty quantity.Domain, i.e., it is a
% constant. Then, the gridNames should be ''
% The check "isConstant" can not be used here, because it also returns true, if
% the constant value is defined over a domain. Then, the object has a domain
% with a name that should be used.
if isempty(obj(1).domain.name)
gridNames = repmat({''}, length(newGrid));
else
gridNames = {obj(1).domain.name};
......
......@@ -853,22 +853,32 @@ testCase.verifyEqual(on( - fDisc), on(-f));
end
function testConstantValues(testCase)
%%
%% evaluation of a constant on the same grid
syms z
myDomain = quantity.Domain.defaultDomain(4, "z");
q = quantity.Symbolic(magic(3), myDomain);
%%
magic7 = magic(3);
magic700 = zeros(4, 3, 3);
for k = 1:q(1).domain.gridLength()
magic700(k, :,:) = magic7;
end
%%
testCase.verifyEqual(magic700, q.on());
testCase.verifyTrue(q.isConstant());
%% evaluation of a constant on a different grid
myDomain2 = quantity.Domain.defaultDomain(7, "z");
magic7 = magic(3);
magic700 = zeros(myDomain2.n, 3, 3);
for k = 1:myDomain2.n
magic700(k, :,:) = magic7;
end
q.on(myDomain2);
testCase.verifyEqual(magic700, q.on(myDomain2));
%%
p = quantity.Symbolic([0 0 0 0 z], myDomain);
testCase.verifyFalse(p.isConstant());
......@@ -935,6 +945,9 @@ Q2D = quantity.Symbolic(magic(2), [Z, Zeta]);
%%
verifyEqual(testCase, shiftdim(Q.on(), 1), magic(2))
verifyEqual(testCase, shiftdim(Q2D.on(), 2), magic(2))
%% test the evaluation on numeric grids
verifyEqual(testCase, shiftdim(Q.on(1), 1), magic(2))
end
function testSize(testCase)
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment