Skip to content

Commit 3d4cb22

Browse files
authored
Merge pull request #34 from ComputationalScienceLaboratory/size_validation
Add warnings when parameters are inconsistent with length of Y0
2 parents d03d094 + 5fbd0fb commit 3d4cb22

File tree

6 files changed

+79
-2
lines changed

6 files changed

+79
-2
lines changed

src/+otp/+allencahn/AllenCahnProblem.m

+14
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,20 @@
88
end
99

1010
methods (Access = protected)
11+
function validateNewState(obj, newTimeSpan, newY0, newParameters)
12+
[email protected](obj, newTimeSpan, newY0, ...
13+
newParameters);
14+
15+
y0Len = length(newY0);
16+
gridPts = newParameters.Size^2;
17+
18+
if y0Len ~= gridPts
19+
warning('OTP:inconsistentNumVars', ...
20+
'NumVars is %d, but there are %d grid points', ...
21+
y0Len, gridPts);
22+
end
23+
end
24+
1125
function onSettingsChanged(obj)
1226
n = obj.Parameters.Size;
1327
alpha = obj.Parameters.Alpha;

src/+otp/+cusp/CUSPProblem.m

+14
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,20 @@
1919
end
2020

2121
methods (Access = protected)
22+
function validateNewState(obj, newTimeSpan, newY0, newParameters)
23+
[email protected](obj, newTimeSpan, newY0, ...
24+
newParameters);
25+
26+
y0Len = length(newY0);
27+
gridPts = 3 * newParameters.Size;
28+
29+
if y0Len ~= gridPts
30+
warning('OTP:inconsistentNumVars', ...
31+
'NumVars is %d, but there are %d grid points', ...
32+
y0Len, gridPts);
33+
end
34+
end
35+
2236
function onSettingsChanged(obj)
2337
n = obj.Parameters.Size;
2438
epsilon = obj.Parameters.Epsilon;

src/+otp/+nbody/NBodyProblem.m

+15
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,21 @@
66
end
77

88
methods (Access = protected)
9+
function validateNewState(obj, newTimeSpan, newY0, newParameters)
10+
[email protected](obj, newTimeSpan, newY0, ...
11+
newParameters);
12+
13+
numMasses = length(newParameters.Masses);
14+
expectedLen = numMasses * 2^newParameters.SpatialDim;
15+
actualLen = length(newY0);
16+
17+
if expectedLen ~= actualLen
18+
warning('OTP:inconsistentNumVars', ...
19+
'With %d masses, NumVars should be %d but is %d', ...
20+
numMasses, expectedLen, actualLen);
21+
end
22+
end
23+
924
function onSettingsChanged(obj)
1025
spatialDim = obj.Parameters.SpatialDim;
1126
masses = obj.Parameters.Masses;

src/+otp/+pendulum/PendulumProblem.m

+21-2
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,29 @@
2424
end
2525

2626
methods (Access = protected)
27+
function validateNewState(obj, newTimeSpan, newY0, newParameters)
28+
[email protected](obj, newTimeSpan, newY0, ...
29+
newParameters);
30+
31+
y0Len = length(newY0);
32+
numMasses = length(newParameters.Masses);
33+
numLens = length(newParameters.Lengths);
34+
35+
if y0Len ~= 2 * numMasses
36+
warning('OTP:inconsistentNumVars', ...
37+
'With %d masses, NumVars should be %d but is %d', ...
38+
numMasses, 2 * numMasses, y0Len);
39+
elseif y0Len ~= 2 * numLens
40+
warning('OTP:inconsistentNumVars', ...
41+
'With %d lengths, NumVars should be %d but is %d', ...
42+
numLens, 2 * numLens, y0Len);
43+
end
44+
end
45+
2746
function onSettingsChanged(obj)
2847
g = obj.Parameters.Gravity;
29-
lengths = obj.Parameters.Lengths(:);
30-
masses = obj.Parameters.Masses(:);
48+
lengths = obj.Parameters.Lengths;
49+
masses = obj.Parameters.Masses;
3150

3251
numBobs = min(numel(lengths), numel(masses));
3352
lengths = lengths(1:numBobs);

src/+otp/+qg/QuasiGeostrophicProblem.m

+13
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,19 @@
100100
end
101101

102102
methods (Access = protected)
103+
function validateNewState(obj, newTimeSpan, newY0, newParameters)
104+
[email protected](obj, newTimeSpan, newY0, ...
105+
newParameters);
106+
107+
y0Len = length(newY0);
108+
gridPts = newParameters.Nx * newParameters.Ny;
109+
110+
if y0Len ~= gridPts
111+
warning('OTP:inconsistentNumVars', ...
112+
'NumVars is %d, but there are %d grid points', ...
113+
y0Len, gridPts);
114+
end
115+
end
103116

104117
function onSettingsChanged(obj)
105118

src/+otp/Problem.m

+2
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@
2929
end
3030
obj.Name = name;
3131
obj.ExpectedNumVars = expectedNumVars;
32+
33+
% IDEA: Make Settings a class with property validation
3234
obj.Settings = struct('timeSpan', timeSpan(:), 'y0', y0, 'parameters', parameters);
3335
end
3436

0 commit comments

Comments
 (0)