diff --git a/targetFunctions/common/callReflectivity/callReflectivity.m b/targetFunctions/common/callReflectivity/callReflectivity.m index 50811a12d..190f8e82f 100644 --- a/targetFunctions/common/callReflectivity/callReflectivity.m +++ b/targetFunctions/common/callReflectivity/callReflectivity.m @@ -54,7 +54,8 @@ end % Apply resolution correction - simulation(:,2) = resolutionPolly(simulationXData,simRef,resolution(:,2),length(simulationXData)); + resol = resolution(:,2) .* simulationXData; + simulation(:,2) = gaussianConvolution(simulationXData, simRef, simulationXData, resol); otherwise coderException(coderEnums.errorCodes.invalidOption, 'The reflectivity type "%s" is not supported', refType); diff --git a/targetFunctions/common/resolutionFunctions/simpleGaussian/gaussianConvolution.m b/targetFunctions/common/resolutionFunctions/simpleGaussian/gaussianConvolution.m new file mode 100644 index 000000000..16dfb654f --- /dev/null +++ b/targetFunctions/common/resolutionFunctions/simpleGaussian/gaussianConvolution.m @@ -0,0 +1,237 @@ +function y = gaussianConvolution(xin, yin, x, dx) + % Convolve the input function yin(xin) with a Gaussian resolution + % function. + % + % For each output point xo = x(kout), the calculation is + % + % y(xo) = integral[ yin(x) * G(xo-x; sigma) dx ] + % + % where + % + % G(xo-x; sigma) = 1/(sqrt(2*pi)*sigma) + % * exp(-(xo-x)^2/(2*sigma^2)) + % + % The input function yin(xin) is assumed to be piecewise linear + % between the supplied xin points. The convolution integral over + % each linear segment can then be evaluated analytically. + % + % sigma = dx(kout) is the Gaussian resolution width associated + % with each output point. + + y = zeros(size(x)); + Nin = numel(xin); + Nout = numel(x); + + % log(0.001). This is used to truncate the Gaussian when its + % amplitude has fallen to 0.1% of its maximum. + LOGRESLIMIT = -6.90775527898213703123; + + % Index of the input point near the left-hand edge of the + % Gaussian integration range. This is carried between output + % points to avoid repeatedly searching from the beginning. + kin = 1; + + for kout = 1:Nout + + % Gaussian resolution width for this output point. + sigma = dx(kout); + + % Output coordinate at which we want the convolved value. + xo = x(kout); + + % Truncate the Gaussian when it has fallen to 0.1% of + % its peak value. + % + % exp(-limit^2/(2*sigma^2)) = 0.001 + % + % Therefore + % + % limit = sqrt(-2*sigma^2*log(0.001)) + % ~= 3.717*sigma + % + % so the convolution only needs to consider approximately + % + % xo - 3.717*sigma <= x <= xo + 3.717*sigma. + limit = sqrt(-2.0 * sigma * sigma * LOGRESLIMIT); + + + % Find the first input point at or just after the left-hand + % edge of the Gaussian integration range. + while kin < Nin && xin(kin) < xo - limit + kin = kin + 1; + end + + % Move back one point if necessary so that kin is the input + % point immediately before (or near) xo-limit. + while kin > 1 && xin(kin) > xo - limit + kin = kin - 1; + end + + + if sigma > 0 + + % Perform the actual Gaussian convolution at xo. + % + % convolveGaussianPoint treats yin(xin) as a piecewise + % linear function and integrates each linear segment + % analytically against the Gaussian resolution function. + y(kout) = convolveGaussianPoint( ... + xin, yin, kin, Nin, xo, limit, sigma); + + elseif kin < Nin + + % If sigma = 0 there is no resolution broadening. + % Simply linearly interpolate yin at xo. + + m = (yin(kin + 1) - yin(kin)) / ... + (xin(kin + 1) - xin(kin)); + + b = yin(kin) - m * xin(kin); + + y(kout) = m * xo + b; + + elseif kin > 1 + + % If sigma = 0 and xo lies beyond the final input point, + % linearly extrapolate from the final two points. + + m = (yin(kin) - yin(kin - 1)) / ... + (xin(kin) - xin(kin - 1)); + + b = yin(kin) - m * xin(kin); + + y(kout) = m * xo + b; + end + end +end + + +function out = convolveGaussianPoint(xin, yin, k, n, xo, limit, sigma) + + SQRT2 = 1.41421356237309504880; + SQRT2PI = 2.50662827463100050241; + + % Precompute quantities that are constant for this output point. + % + % These would otherwise be recalculated for every input interval. + invSqrt2Sigma = 1.0 / (SQRT2 * sigma); + sigmaOverSqrt2Pi = sigma / SQRT2PI; + + % 2*sigma^2, used in the Gaussian exponent. + twoSigmaSq = 2.0 * sigma * sigma; + + + % --------------------------------------------------------------- + % Initialise at the first input point. + % --------------------------------------------------------------- + + % Distance from the input point to the output position. + z = xo - xin(k); + + % Unnormalised Gaussian at this point: + % + % G = exp(-(xo-x)^2/(2*sigma^2)) + % + Glo = exp(-z * z / twoSigmaSq); + + % The integral of the Gaussian is expressed in terms of erf: + % + % erf(-(xo-x)/(sqrt(2)*sigma)) + % + erfmin = erf(-z * invSqrt2Sigma); + erflo = erfmin; + + % Accumulate the convolution integral here. + y = 0; + + + % --------------------------------------------------------------- + % Integrate over the piecewise-linear input function. + % --------------------------------------------------------------- + + while k < n + + k = k + 1; + + % Ignore duplicate input points. + if xin(k) ~= xin(k - 1) + + % Distance from the new input point to xo. + zhi = xo - xin(k); + + % Dimensionless distance in units of sigma: + % + % u = -(xo-x)/(sqrt(2)*sigma) + % + u = -zhi * invSqrt2Sigma; + + % Unnormalised Gaussian at the new endpoint. + Ghi = exp(-u * u); + + % Error-function value at the new endpoint. + erfhi = erf(u); + + + % ------------------------------------------------------- + % Linear interpolation between the two input points. + % + % yin(x) = m*x + b + % ------------------------------------------------------- + + m = (yin(k) - yin(k - 1)) / ... + (xin(k) - xin(k - 1)); + + b = yin(k) - m * xin(k); + + + % ------------------------------------------------------- + % Analytically integrate + % + % (m*x + b) * Gaussian(x) + % + % over this input interval. + % + % The first term comes from the integral of the + % Gaussian and therefore contains erf(). + % + % The second term comes from the integral of + % (x-xo)*Gaussian and therefore contains Ghi-Glo. + % ------------------------------------------------------- + + y = y ... + + 0.5 * (m * xo + b) * (erfhi - erflo) ... + - sigmaOverSqrt2Pi * m * (Ghi - Glo); + + + % Current endpoint becomes the lower endpoint for + % the next interval. + Glo = Ghi; + erflo = erfhi; + + + % Stop once we have reached the upper Gaussian limit. + % + % limit ~= 3.717*sigma, corresponding to a Gaussian + % amplitude of approximately 0.1% of its peak. + if xin(k) >= xo + limit + break + end + end + end + + + % --------------------------------------------------------------- + % Normalisation + % --------------------------------------------------------------- + % + % The Gaussian has been truncated to approximately +/-3.717*sigma, + % so its integrated area is slightly less than one. + % + % The erf difference gives the area of this truncated Gaussian. + % Renormalising ensures that a constant input function remains + % constant after convolution. + % --------------------------------------------------------------- + + out = 2 * y / (erflo - erfmin); + +end diff --git a/targetFunctions/common/resolutionFunctions/simpleGaussian/resolutionPolly.m b/targetFunctions/common/resolutionFunctions/simpleGaussian/resolutionPolly.m deleted file mode 100644 index c93986f58..000000000 --- a/targetFunctions/common/resolutionFunctions/simpleGaussian/resolutionPolly.m +++ /dev/null @@ -1,22 +0,0 @@ -function simulation = resolutionPolly(xdata,rawSimulation,resolutionValues,points) -% Apply resolution correction - -simulation = zeros(points,1); - -for j = 1:points - - sumg = 0; - ilow = max(-10, -j + 1); - ihi = min(10, points - j); - - for i = ilow:ihi - g = exp(-1*((xdata(j+i)-xdata(j))/(resolutionValues(j)*xdata(j)))^2); - sumg = sumg + g; - simulation(j) = simulation(j) + rawSimulation(i+j) * g; - end - - simulation(j) = simulation(j) / sumg; - -end - -end diff --git a/tests/ORSO/allClose.m b/tests/ORSO/allClose.m new file mode 100644 index 000000000..a6f465789 --- /dev/null +++ b/tests/ORSO/allClose.m @@ -0,0 +1,10 @@ +function out = allClose(x, y, options) +% This is the equivalent implementation of numpy.testing.assert_allclose +arguments + x {isscalar, mustBeNumeric} + y {isscalar, mustBeNumeric} + options.atol {isscalar, mustBeNumeric} = 0.0 + options.rtol {isscalar, mustBeNumeric} = 1e-05 +end +out = all(abs(x - y) <= options.atol + options.rtol * abs(y)); +end \ No newline at end of file diff --git a/tests/ORSO/orsoTest4.m b/tests/ORSO/orsoTest4.m index e11b81a01..85b97d51e 100644 --- a/tests/ORSO/orsoTest4.m +++ b/tests/ORSO/orsoTest4.m @@ -9,7 +9,6 @@ % Read in the data..... data = dlmread('test4.dat'); -datResol = data(:,4); % Group the Layers thick = layers(:,1); @@ -17,14 +16,18 @@ rough = layers(:,4); % Calculate reflectivity.... -q = data(:,1); +[~,argmin] = min(data(:, 1)); +[~, argmax] = max(data(:, 1)); +q = linspace(data(argmin, 1) - 3.5 * data(argmin, 4),... + data(argmax, 1) + 3.5 * data(argmax, 4),... + 10001); N = size(layers,1); ref = abelesSingle(q,N,thick,sld,rough); -% Apply resolution.... -%resol = 0.035; -%ref = resolutionPolly(q,ref,resol,length(q)); -ref = dataResolutionPolly(q,ref,datResol,length(q)); +% Apply resolution... +sigma = 0.021233045007200; +resol = q * sigma; +ref = gaussianConvolution(q, ref, q, resol); % Plot the comparison.... figure(1); clf @@ -33,5 +36,5 @@ plot(data(:,1),data(:,2),'ro') % Calculate the output.... -out = sum(sum((data(:,2) - ref).^2)); - +ref = interp1(q, ref, data(:, 1)); +out = allClose(ref, data(:, 2), rtol=0.033); diff --git a/tests/ORSO/orsoTest5.m b/tests/ORSO/orsoTest5.m index 1ca1c6582..6f93e2990 100644 --- a/tests/ORSO/orsoTest5.m +++ b/tests/ORSO/orsoTest5.m @@ -1,5 +1,5 @@ function out = orsoTest5() -% ORSO validation Test4 - Reflectivity plus resolution... +% ORSO validation Test5 - Reflectivity plus resolution... layers = dlmread('test1.layers'); @@ -16,15 +16,18 @@ rough = layers(:,4); % Calculate reflectivity.... -q = data(:,1); +[~,argmin] = min(data(:, 1)); +[~, argmax] = max(data(:, 1)); +q = linspace(data(argmin, 1) - 3.5 * data(argmin, 4),... + data(argmax, 1) + 3.5 * data(argmax, 4),... + 10001); N = size(layers,1); ref = abelesSingle(q,N,thick,sld,rough); % Apply resolution.... FWHM = 2 * sqrt(2 * log(2)); % FWHM for Gaussian function -resol = 0.05 / FWHM; -ref = resolutionPolly(q,ref,resol,length(q)); -%ref = smeared_abeles_constant(q,ref,resol); +resol = (0.05 / FWHM) .* q; +ref = gaussianConvolution(q, ref, q, resol); % Plot the comparison.... figure(1); clf @@ -33,5 +36,5 @@ plot(data(:,1),data(:,2),'r.') % Calculate the output.... -out = sum(sum((data(:,2) - ref).^2)); - +ref = interp1(q, ref, data(:, 1)); +out = allClose(ref, data(:, 2), rtol=0.033); diff --git a/tests/domainsTFReflectivityCalculation/domainsCustomLayersInputs.mat b/tests/domainsTFReflectivityCalculation/domainsCustomLayersInputs.mat index 1c337c598..caf4700b6 100644 Binary files a/tests/domainsTFReflectivityCalculation/domainsCustomLayersInputs.mat and b/tests/domainsTFReflectivityCalculation/domainsCustomLayersInputs.mat differ diff --git a/tests/domainsTFReflectivityCalculation/domainsCustomLayersOutputs.mat b/tests/domainsTFReflectivityCalculation/domainsCustomLayersOutputs.mat index c8ac29f11..5abf26956 100644 Binary files a/tests/domainsTFReflectivityCalculation/domainsCustomLayersOutputs.mat and b/tests/domainsTFReflectivityCalculation/domainsCustomLayersOutputs.mat differ diff --git a/tests/domainsTFReflectivityCalculation/domainsCustomLayersTFParams.mat b/tests/domainsTFReflectivityCalculation/domainsCustomLayersTFParams.mat index 0ae3eed35..bcf1e5fa2 100644 Binary files a/tests/domainsTFReflectivityCalculation/domainsCustomLayersTFParams.mat and b/tests/domainsTFReflectivityCalculation/domainsCustomLayersTFParams.mat differ diff --git a/tests/domainsTFReflectivityCalculation/domainsCustomXYInputs.mat b/tests/domainsTFReflectivityCalculation/domainsCustomXYInputs.mat index 0e9dfa804..7c4bd7e2c 100644 Binary files a/tests/domainsTFReflectivityCalculation/domainsCustomXYInputs.mat and b/tests/domainsTFReflectivityCalculation/domainsCustomXYInputs.mat differ diff --git a/tests/domainsTFReflectivityCalculation/domainsCustomXYOutputs.mat b/tests/domainsTFReflectivityCalculation/domainsCustomXYOutputs.mat index 27fca9462..1d93df1f5 100644 Binary files a/tests/domainsTFReflectivityCalculation/domainsCustomXYOutputs.mat and b/tests/domainsTFReflectivityCalculation/domainsCustomXYOutputs.mat differ diff --git a/tests/domainsTFReflectivityCalculation/domainsCustomXYTFParams.mat b/tests/domainsTFReflectivityCalculation/domainsCustomXYTFParams.mat index 71e7a5e8c..25e0e5359 100644 Binary files a/tests/domainsTFReflectivityCalculation/domainsCustomXYTFParams.mat and b/tests/domainsTFReflectivityCalculation/domainsCustomXYTFParams.mat differ diff --git a/tests/domainsTFReflectivityCalculation/domainsStandardLayersInputs.mat b/tests/domainsTFReflectivityCalculation/domainsStandardLayersInputs.mat index 44c5e15fe..a22f39ec6 100644 Binary files a/tests/domainsTFReflectivityCalculation/domainsStandardLayersInputs.mat and b/tests/domainsTFReflectivityCalculation/domainsStandardLayersInputs.mat differ diff --git a/tests/domainsTFReflectivityCalculation/domainsStandardLayersOutputs.mat b/tests/domainsTFReflectivityCalculation/domainsStandardLayersOutputs.mat index a43eed4eb..8afe2aaea 100644 Binary files a/tests/domainsTFReflectivityCalculation/domainsStandardLayersOutputs.mat and b/tests/domainsTFReflectivityCalculation/domainsStandardLayersOutputs.mat differ diff --git a/tests/domainsTFReflectivityCalculation/domainsStandardLayersTFParams.mat b/tests/domainsTFReflectivityCalculation/domainsStandardLayersTFParams.mat index 60d6f3705..65e82b655 100644 Binary files a/tests/domainsTFReflectivityCalculation/domainsStandardLayersTFParams.mat and b/tests/domainsTFReflectivityCalculation/domainsStandardLayersTFParams.mat differ diff --git a/tests/normalTFReflectivityCalculation/absorptionInputs.mat b/tests/normalTFReflectivityCalculation/absorptionInputs.mat index f8e617e5f..261cc67b5 100644 Binary files a/tests/normalTFReflectivityCalculation/absorptionInputs.mat and b/tests/normalTFReflectivityCalculation/absorptionInputs.mat differ diff --git a/tests/normalTFReflectivityCalculation/absorptionOutputs.mat b/tests/normalTFReflectivityCalculation/absorptionOutputs.mat index 1918a407c..63b3dd03e 100644 Binary files a/tests/normalTFReflectivityCalculation/absorptionOutputs.mat and b/tests/normalTFReflectivityCalculation/absorptionOutputs.mat differ diff --git a/tests/normalTFReflectivityCalculation/absorptionTFParams.mat b/tests/normalTFReflectivityCalculation/absorptionTFParams.mat index b16dc880f..db6a924c3 100644 Binary files a/tests/normalTFReflectivityCalculation/absorptionTFParams.mat and b/tests/normalTFReflectivityCalculation/absorptionTFParams.mat differ diff --git a/tests/normalTFReflectivityCalculation/customLayersInputs.mat b/tests/normalTFReflectivityCalculation/customLayersInputs.mat index 1ad786562..0ec1ca724 100644 Binary files a/tests/normalTFReflectivityCalculation/customLayersInputs.mat and b/tests/normalTFReflectivityCalculation/customLayersInputs.mat differ diff --git a/tests/normalTFReflectivityCalculation/customLayersOutputs.mat b/tests/normalTFReflectivityCalculation/customLayersOutputs.mat index a9ef3e179..68a1693a5 100644 Binary files a/tests/normalTFReflectivityCalculation/customLayersOutputs.mat and b/tests/normalTFReflectivityCalculation/customLayersOutputs.mat differ diff --git a/tests/normalTFReflectivityCalculation/customLayersTFParams.mat b/tests/normalTFReflectivityCalculation/customLayersTFParams.mat index d2b880115..49162e105 100644 Binary files a/tests/normalTFReflectivityCalculation/customLayersTFParams.mat and b/tests/normalTFReflectivityCalculation/customLayersTFParams.mat differ diff --git a/tests/normalTFReflectivityCalculation/customXYInputs.mat b/tests/normalTFReflectivityCalculation/customXYInputs.mat index 82f8879c9..b6b67ee64 100644 Binary files a/tests/normalTFReflectivityCalculation/customXYInputs.mat and b/tests/normalTFReflectivityCalculation/customXYInputs.mat differ diff --git a/tests/normalTFReflectivityCalculation/customXYOutputs.mat b/tests/normalTFReflectivityCalculation/customXYOutputs.mat index dcd13aecd..53b466ced 100644 Binary files a/tests/normalTFReflectivityCalculation/customXYOutputs.mat and b/tests/normalTFReflectivityCalculation/customXYOutputs.mat differ diff --git a/tests/normalTFReflectivityCalculation/customXYTFParams.mat b/tests/normalTFReflectivityCalculation/customXYTFParams.mat index a42078cd5..598755b29 100644 Binary files a/tests/normalTFReflectivityCalculation/customXYTFParams.mat and b/tests/normalTFReflectivityCalculation/customXYTFParams.mat differ diff --git a/tests/normalTFReflectivityCalculation/standardLayersInputs.mat b/tests/normalTFReflectivityCalculation/standardLayersInputs.mat index 71501cc64..c325b69a2 100644 Binary files a/tests/normalTFReflectivityCalculation/standardLayersInputs.mat and b/tests/normalTFReflectivityCalculation/standardLayersInputs.mat differ diff --git a/tests/normalTFReflectivityCalculation/standardLayersOutputs.mat b/tests/normalTFReflectivityCalculation/standardLayersOutputs.mat index 817cae1e7..1c1d37eb2 100644 Binary files a/tests/normalTFReflectivityCalculation/standardLayersOutputs.mat and b/tests/normalTFReflectivityCalculation/standardLayersOutputs.mat differ diff --git a/tests/normalTFReflectivityCalculation/standardLayersTFParams.mat b/tests/normalTFReflectivityCalculation/standardLayersTFParams.mat index 71d67aa14..642b1aab1 100644 Binary files a/tests/normalTFReflectivityCalculation/standardLayersTFParams.mat and b/tests/normalTFReflectivityCalculation/standardLayersTFParams.mat differ diff --git a/tests/testCommonFunctions/callReflectivityOutputs.mat b/tests/testCommonFunctions/callReflectivityOutputs.mat index f7b9a3b60..0de1c579b 100644 Binary files a/tests/testCommonFunctions/callReflectivityOutputs.mat and b/tests/testCommonFunctions/callReflectivityOutputs.mat differ diff --git a/tests/testCommonFunctions/gaussianConvInputs.mat b/tests/testCommonFunctions/gaussianConvInputs.mat new file mode 100644 index 000000000..691cef1ac Binary files /dev/null and b/tests/testCommonFunctions/gaussianConvInputs.mat differ diff --git a/tests/testCommonFunctions/gaussianConvOutputs.mat b/tests/testCommonFunctions/gaussianConvOutputs.mat new file mode 100644 index 000000000..e03f9f4c7 Binary files /dev/null and b/tests/testCommonFunctions/gaussianConvOutputs.mat differ diff --git a/tests/testCommonFunctions/resolutionPollyInputs.mat b/tests/testCommonFunctions/resolutionPollyInputs.mat deleted file mode 100644 index f8e0a5a80..000000000 Binary files a/tests/testCommonFunctions/resolutionPollyInputs.mat and /dev/null differ diff --git a/tests/testCommonFunctions/resolutionPollyOutputs.mat b/tests/testCommonFunctions/resolutionPollyOutputs.mat deleted file mode 100644 index 41e035d69..000000000 Binary files a/tests/testCommonFunctions/resolutionPollyOutputs.mat and /dev/null differ diff --git a/tests/testCommonFunctions/testCommonFunctions.m b/tests/testCommonFunctions/testCommonFunctions.m index 2b996c61b..5b4167531 100644 --- a/tests/testCommonFunctions/testCommonFunctions.m +++ b/tests/testCommonFunctions/testCommonFunctions.m @@ -45,17 +45,8 @@ SLDFunctionInputs; SLDFunctionOutputs; - dataResolutionPollyParallelPointsInputs; - dataResolutionPollyParallelPointsOutputs; - - dataResolutionPollyInputs; - dataResolutionPollyOutputs; - - resolutionPollyParallelPointsInputs; - resolutionPollyParallelPointsOutputs; - - resolutionPollyInputs; - resolutionPollyOutputs; + gaussianConvInputs + gaussianConvOutputs tolerance = 1.0e-12; % Relative tolerance for equality of floats abs_tolerance = 1.0e-5; % Absolute tolerance for equality of floats @@ -185,14 +176,14 @@ function loadSLDFunction(testCase) testCase.SLDFunctionInputs = inputs.inputs; testCase.SLDFunctionOutputs = outputs.outputs; end - - function loadResolutionPolly(testCase) - inputs = load('resolutionPollyInputs.mat'); - outputs = load('resolutionPollyOutputs.mat'); - testCase.resolutionPollyInputs = inputs.inputs; - testCase.resolutionPollyOutputs = outputs.outputs; - end + function loadGaussianConv(testCase) + inputs = load('gaussianConvInputs.mat'); + outputs = load('gaussianConvOutputs.mat'); + testCase.gaussianConvInputs = inputs.inputs; + testCase.gaussianConvOutputs = outputs.outputs; + end + end %% @@ -300,12 +291,11 @@ function testSLDFunction(testCase) end - function testResolutionPolly(testCase) - out1 = resolutionPolly(testCase.resolutionPollyInputs{1:end}); + function testGaussianConv(testCase) + out1 = gaussianConvolution(testCase.gaussianConvInputs{1:end}); outputs = {out1}; - testCase.verifyEqual(testCase.resolutionPollyOutputs,outputs, 'RelTol', testCase.tolerance, 'AbsTol', testCase.abs_tolerance); - - end + testCase.verifyEqual(testCase.gaussianConvOutputs,outputs, 'RelTol', testCase.tolerance, 'AbsTol', testCase.abs_tolerance); + end end end diff --git a/tests/testProjectConversion/DSPCBilayerProjectClass.mat b/tests/testProjectConversion/DSPCBilayerProjectClass.mat index c9e9439f3..dcce7c0b0 100644 Binary files a/tests/testProjectConversion/DSPCBilayerProjectClass.mat and b/tests/testProjectConversion/DSPCBilayerProjectClass.mat differ diff --git a/tests/testProjectConversion/DSPCBilayerStructOutput.mat b/tests/testProjectConversion/DSPCBilayerStructOutput.mat index 48928fc10..50c63984e 100644 Binary files a/tests/testProjectConversion/DSPCBilayerStructOutput.mat and b/tests/testProjectConversion/DSPCBilayerStructOutput.mat differ diff --git a/tests/testProjectConversion/DSPCBilayerStructOutputWithR1Input.mat b/tests/testProjectConversion/DSPCBilayerStructOutputWithR1Input.mat index 34f1e1e45..2c8d9e1d5 100644 Binary files a/tests/testProjectConversion/DSPCBilayerStructOutputWithR1Input.mat and b/tests/testProjectConversion/DSPCBilayerStructOutputWithR1Input.mat differ diff --git a/tests/testProjectConversion/monolayerVolumeModelProjectClass.mat b/tests/testProjectConversion/monolayerVolumeModelProjectClass.mat index a0c820d88..00e2d0299 100644 Binary files a/tests/testProjectConversion/monolayerVolumeModelProjectClass.mat and b/tests/testProjectConversion/monolayerVolumeModelProjectClass.mat differ