Skip to content

Commit 5ebbd64

Browse files
committed
Do not allow mismatch between dims and bcs
1 parent 6b8f4f2 commit 5ebbd64

File tree

3 files changed

+24
-6
lines changed

3 files changed

+24
-6
lines changed

ext/InterpolationsRegridderExt.jl

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,8 @@ function Regridders.InterpolationsRegridder(
5858
)
5959
coordinates = ClimaCore.Fields.coordinate_field(target_space)
6060

61+
num_dimensions = length(propertynames(coordinates))
62+
6163
if isnothing(extrapolation_bc)
6264
extrapolation_bc = ()
6365
if eltype(coordinates) <: ClimaCore.Geometry.LatLongPoint
@@ -69,7 +71,15 @@ function Regridders.InterpolationsRegridder(
6971
end
7072
end
7173

72-
return InterpolationsRegridder(target_space, coordinates, extrapolation_bc)
74+
num_dimensions == length(extrapolation_bc) || error(
75+
"Number of boundary conditions does not match the number of dimensions",
76+
)
77+
78+
return InterpolationsRegridder(
79+
target_space,
80+
coordinates,
81+
extrapolation_bc
82+
)
7383
end
7484

7585
"""

test/data_handling.jl

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -87,13 +87,10 @@ ClimaComms.init(context)
8787
target_space;
8888
regridder_type = :InterpolationsRegridder,
8989
file_reader_kwargs = (; preprocess_func = (data) -> 0.0 * data),
90-
regridder_kwargs = (;
91-
extrapolation_bc = (Intp.Flat(), Intp.Flat(), Intp.Flat())
92-
),
90+
regridder_kwargs = (; extrapolation_bc = (Intp.Flat(), Intp.Flat())),
9391
)
9492

95-
@test data_handler.regridder.extrapolation_bc ==
96-
(Intp.Flat(), Intp.Flat(), Intp.Flat())
93+
@test data_handler.regridder.extrapolation_bc == (Intp.Flat(), Intp.Flat())
9794
field = DataHandling.regridded_snapshot(data_handler)
9895
@test extrema(field) == (0.0, 0.0)
9996
end

test/regridders.jl

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,17 @@ end
9797
extrapolation_bc,
9898
)
9999

100+
# Test num_dimensions != length(extrapolation_bc)
101+
@test_throws ErrorException Regridders.InterpolationsRegridder(
102+
hv_center_space;
103+
extrapolation_bc = (
104+
Interpolations.Periodic(),
105+
Interpolations.Flat(),
106+
Interpolations.Flat(),
107+
Interpolations.Flat(),
108+
),
109+
)
110+
100111
regridded_lat = Regridders.regrid(reg_hv, data_lat3D, dimensions3D)
101112
regridded_lon = Regridders.regrid(reg_hv, data_lon3D, dimensions3D)
102113
regridded_z = Regridders.regrid(reg_hv, data_z3D, dimensions3D)

0 commit comments

Comments
 (0)