Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions bindings/src/icon4py/bindings/common.py
Original file line number Diff line number Diff line change
Expand Up @@ -164,10 +164,10 @@ def impl(_name: str, domain: gtx.Domain, dtype: gt4py_definitions.DType) -> gtx.


def shrink_to_dimension(
sizes: dict[gtx.Dimension, int], tables: dict[gtx.FieldOffset, NDArray]
) -> dict[gtx.FieldOffset, NDArray]:
sizes: dict[gtx.Dimension, int], tables: dict[type[gtx.NeighborConnectivity], NDArray]
) -> dict[type[gtx.NeighborConnectivity], NDArray]:
"""Shrink the neighbor tables from nproma size to the actual size of the grid."""
return {k: v[: sizes[k.target[0]]] for k, v in tables.items()}
return {k: v[: sizes[k.domain]] for k, v in tables.items()}


def add_origin(xp: ModuleType, table: NDArray) -> NDArray:
Expand Down
3 changes: 2 additions & 1 deletion bindings/tests/bindings/test_icon4py_export.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,8 @@
},
)

SomeDim = gtx.Dimension("SomeDim")

class SomeDim(gtx.DimensionIndex): ...


def make_array_info(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
from gt4py.next.experimental import as_offset

from icon4py.model.common import dimension as dims, field_type_aliases as fa
from icon4py.model.common.dimension import C2E2C, Koff
from icon4py.model.common.dimension import C2E2C, KDim
from icon4py.model.common.type_alias import vpfloat, wpfloat


Expand All @@ -26,21 +26,21 @@ def _truly_horizontal_diffusion_nabla_of_theta_over_steep_points(
) -> fa.CellKField[vpfloat]:
z_temp_wp = astype(z_temp, wpfloat)

theta_v_0 = theta_v(C2E2C[0])(as_offset(Koff, zd_vertoffset[dims.C2E2CDim(0)]))
theta_v_1 = theta_v(C2E2C[1])(as_offset(Koff, zd_vertoffset[dims.C2E2CDim(1)]))
theta_v_2 = theta_v(C2E2C[2])(as_offset(Koff, zd_vertoffset[dims.C2E2CDim(2)]))
theta_v_0 = theta_v(C2E2C[0])(as_offset(KDim, zd_vertoffset[dims.C2E2CDim(0)]))
theta_v_1 = theta_v(C2E2C[1])(as_offset(KDim, zd_vertoffset[dims.C2E2CDim(1)]))
theta_v_2 = theta_v(C2E2C[2])(as_offset(KDim, zd_vertoffset[dims.C2E2CDim(2)]))

# `zd_vertoffset` is 0 where `zd_diffcoef` is 0, so there the `+ 1` target at the bottom level
# lies below the column; keep the read in range for backends that evaluate every point.
is_steep = zd_diffcoef != wpfloat("0.0")
theta_v_0_m1 = theta_v(C2E2C[0])(
as_offset(Koff, where(is_steep, zd_vertoffset[dims.C2E2CDim(0)] + 1, 0))
as_offset(KDim, where(is_steep, zd_vertoffset[dims.C2E2CDim(0)] + 1, 0))
)
theta_v_1_m1 = theta_v(C2E2C[1])(
as_offset(Koff, where(is_steep, zd_vertoffset[dims.C2E2CDim(1)] + 1, 0))
as_offset(KDim, where(is_steep, zd_vertoffset[dims.C2E2CDim(1)] + 1, 0))
)
theta_v_2_m1 = theta_v(C2E2C[2])(
as_offset(Koff, where(is_steep, zd_vertoffset[dims.C2E2CDim(2)] + 1, 0))
as_offset(KDim, where(is_steep, zd_vertoffset[dims.C2E2CDim(2)] + 1, 0))
)

sum_tmp = (
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@

def apply_nabla2_to_w_numpy(
*,
connectivities: Mapping[gtx.FieldOffset, np.ndarray],
connectivities: Mapping[type[gtx.NeighborConnectivity], np.ndarray],
area: np.ndarray,
z_nabla2_c: np.ndarray,
geofac_n2s: np.ndarray,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@


def calculate_horizontal_gradients_for_turbulence_numpy(
connectivities: Mapping[gtx.FieldOffset, np.ndarray],
connectivities: Mapping[type[gtx.NeighborConnectivity], np.ndarray],
w: np.ndarray,
geofac_grg_x: np.ndarray,
geofac_grg_y: np.ndarray,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,9 @@


def calculate_nabla2_for_w_numpy(
connectivities: Mapping[gtx.FieldOffset, np.ndarray], w: np.ndarray, geofac_n2s: np.ndarray
connectivities: Mapping[type[gtx.NeighborConnectivity], np.ndarray],
w: np.ndarray,
geofac_n2s: np.ndarray,
) -> np.ndarray:
c2e2cO = connectivities[dims.C2E2CO]
geofac_n2s = np.expand_dims(geofac_n2s, axis=-1)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@


def calculate_nabla2_for_z_numpy(
connectivities: Mapping[gtx.FieldOffset, np.ndarray],
connectivities: Mapping[type[gtx.NeighborConnectivity], np.ndarray],
kh_smag_e: np.ndarray,
inv_dual_edge_length: np.ndarray,
theta_v: np.ndarray,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@


def calculate_nabla2_of_theta_numpy(
connectivities: Mapping[gtx.FieldOffset, np.ndarray],
connectivities: Mapping[type[gtx.NeighborConnectivity], np.ndarray],
z_nabla2_e: np.ndarray,
geofac_div: np.ndarray,
) -> np.ndarray:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@

def calculate_nabla4_numpy(
*,
connectivities: Mapping[gtx.FieldOffset, np.ndarray],
connectivities: Mapping[type[gtx.NeighborConnectivity], np.ndarray],
u_vert: np.ndarray,
v_vert: np.ndarray,
primal_normal_vert_v1: np.ndarray,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@

def truly_horizontal_diffusion_nabla_of_theta_over_steep_points_numpy(
*,
connectivities: Mapping[gtx.FieldOffset, np.ndarray],
connectivities: Mapping[type[gtx.NeighborConnectivity], np.ndarray],
zd_vertoffset: np.ndarray,
zd_diffcoef: np.ndarray,
geofac_n2s_c: np.ndarray,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
from gt4py.next.experimental import as_offset

from icon4py.model.common import dimension as dims, field_type_aliases as fa
from icon4py.model.common.dimension import E2C, Koff
from icon4py.model.common.dimension import E2C, KDim
from icon4py.model.common.type_alias import vpfloat, wpfloat


Expand All @@ -24,14 +24,14 @@ def _compute_horizontal_gradient_of_exner_pressure_for_multiple_levels(
z_dexner_dz_c_2: fa.CellKField[vpfloat],
) -> fa.EdgeKField[vpfloat]:
"""Formerly known as _mo_solve_nonhydro_stencil_20."""
z_exner_ex_pr_0 = z_exner_ex_pr(E2C[0])(as_offset(Koff, ikoffset[dims.E2CDim(0)]))
z_exner_ex_pr_1 = z_exner_ex_pr(E2C[1])(as_offset(Koff, ikoffset[dims.E2CDim(1)]))
z_exner_ex_pr_0 = z_exner_ex_pr(E2C[0])(as_offset(KDim, ikoffset[dims.E2CDim(0)]))
z_exner_ex_pr_1 = z_exner_ex_pr(E2C[1])(as_offset(KDim, ikoffset[dims.E2CDim(1)]))

z_dexner_dz_c1_0 = z_dexner_dz_c_1(E2C[0])(as_offset(Koff, ikoffset[dims.E2CDim(0)]))
z_dexner_dz_c1_1 = z_dexner_dz_c_1(E2C[1])(as_offset(Koff, ikoffset[dims.E2CDim(1)]))
z_dexner_dz_c1_0 = z_dexner_dz_c_1(E2C[0])(as_offset(KDim, ikoffset[dims.E2CDim(0)]))
z_dexner_dz_c1_1 = z_dexner_dz_c_1(E2C[1])(as_offset(KDim, ikoffset[dims.E2CDim(1)]))

z_dexner_dz_c2_0 = z_dexner_dz_c_2(E2C[0])(as_offset(Koff, ikoffset[dims.E2CDim(0)]))
z_dexner_dz_c2_1 = z_dexner_dz_c_2(E2C[1])(as_offset(Koff, ikoffset[dims.E2CDim(1)]))
z_dexner_dz_c2_0 = z_dexner_dz_c_2(E2C[0])(as_offset(KDim, ikoffset[dims.E2CDim(0)]))
z_dexner_dz_c2_1 = z_dexner_dz_c_2(E2C[1])(as_offset(KDim, ikoffset[dims.E2CDim(1)]))

z_gradh_exner_wp = inv_dual_edge_length * (
astype(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
from gt4py.next.experimental import as_offset

from icon4py.model.common import dimension as dims, field_type_aliases as fa
from icon4py.model.common.dimension import E2C, Koff
from icon4py.model.common.dimension import E2C, KDim
from icon4py.model.common.type_alias import vpfloat, wpfloat


Expand All @@ -27,27 +27,27 @@ def _compute_hydrostatic_correction_term(
"""Formerly known as _mo_solve_nonhydro_stencil_21."""
zdiff_gradp_wp = zdiff_gradp # astype(zdiff_gradp, wpfloat) # TODO(): fix this cast

theta_v_0 = theta_v(E2C[0])(as_offset(Koff, ikoffset[dims.E2CDim(0)]))
theta_v_1 = theta_v(E2C[1])(as_offset(Koff, ikoffset[dims.E2CDim(1)]))
theta_v_0 = theta_v(E2C[0])(as_offset(KDim, ikoffset[dims.E2CDim(0)]))
theta_v_1 = theta_v(E2C[1])(as_offset(KDim, ikoffset[dims.E2CDim(1)]))

# Each `theta_v_ic` chain must stay written out. Binding the shifted access to a local
# emits a shared `let` that the dace lowering of `as_offset` cannot fuse, and the program
# then fails to compile.
theta_v_ic_0 = theta_v_ic(E2C[0])(dims.KDim - 0.5)(as_offset(Koff, ikoffset[dims.E2CDim(0)]))
theta_v_ic_1 = theta_v_ic(E2C[1])(dims.KDim - 0.5)(as_offset(Koff, ikoffset[dims.E2CDim(1)]))
theta_v_ic_0 = theta_v_ic(E2C[0])(dims.KDim - 0.5)(as_offset(KDim, ikoffset[dims.E2CDim(0)]))
theta_v_ic_1 = theta_v_ic(E2C[1])(dims.KDim - 0.5)(as_offset(KDim, ikoffset[dims.E2CDim(1)]))

theta_v_ic_p1_0 = theta_v_ic(E2C[0])(dims.KDim - 0.5)(
as_offset(Koff, ikoffset[dims.E2CDim(0)] + 1)
as_offset(KDim, ikoffset[dims.E2CDim(0)] + 1)
)
theta_v_ic_p1_1 = theta_v_ic(E2C[1])(dims.KDim - 0.5)(
as_offset(Koff, ikoffset[dims.E2CDim(1)] + 1)
as_offset(KDim, ikoffset[dims.E2CDim(1)] + 1)
)

inv_ddqz_z_full_0_wp = astype(
inv_ddqz_z_full(E2C[0])(as_offset(Koff, ikoffset[dims.E2CDim(0)])), wpfloat
inv_ddqz_z_full(E2C[0])(as_offset(KDim, ikoffset[dims.E2CDim(0)])), wpfloat
)
inv_ddqz_z_full_1_wp = astype(
inv_ddqz_z_full(E2C[1])(as_offset(Koff, ikoffset[dims.E2CDim(1)])), wpfloat
inv_ddqz_z_full(E2C[1])(as_offset(KDim, ikoffset[dims.E2CDim(1)])), wpfloat
)

z_theta_0 = (
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1353,7 +1353,7 @@ def test_compute_rho_theta_pgrad_and_update_vn( # noqa: PLR0917 [too-many-posit
vertical_start=icon_grid.num_levels - 1,
vertical_end=icon_grid.num_levels,
offset_provider={
"E2C": icon_grid.get_connectivity("E2C"),
dims.E2C: icon_grid.get_connectivity(dims.E2C),
},
)
lowest_level = icon_grid.num_levels - 1
Expand Down Expand Up @@ -1414,9 +1414,9 @@ def test_compute_rho_theta_pgrad_and_update_vn( # noqa: PLR0917 [too-many-posit
vertical_start=gtx.int32(0),
vertical_end=gtx.int32(icon_grid.num_levels),
offset_provider={
"C2E2CO": icon_grid.get_connectivity("C2E2CO"),
"E2C": icon_grid.get_connectivity("E2C"),
"E2C2EO": icon_grid.get_connectivity("E2C2EO"),
dims.C2E2CO: icon_grid.get_connectivity(dims.C2E2CO),
dims.E2C: icon_grid.get_connectivity(dims.E2C),
dims.E2C2EO: icon_grid.get_connectivity(dims.E2C2EO),
},
)

Expand Down Expand Up @@ -1575,9 +1575,9 @@ def test_apply_divergence_damping_and_update_vn( # noqa: PLR0917 [too-many-posi
vertical_start=gtx.int32(0),
vertical_end=gtx.int32(icon_grid.num_levels),
offset_provider={
"C2E2CO": icon_grid.get_connectivity("C2E2CO"),
"E2C": icon_grid.get_connectivity("E2C"),
"E2C2EO": icon_grid.get_connectivity("E2C2EO"),
dims.C2E2CO: icon_grid.get_connectivity(dims.C2E2CO),
dims.E2C: icon_grid.get_connectivity(dims.E2C),
dims.E2C2EO: icon_grid.get_connectivity(dims.E2C2EO),
},
)

Expand Down Expand Up @@ -1687,8 +1687,8 @@ def test_compute_horizontal_velocity_quantities_and_fluxes( # noqa: PLR0917 [to
vertical_start=0,
vertical_end=icon_grid.num_levels + 1,
offset_provider={
"E2C2EO": icon_grid.get_connectivity("E2C2EO"),
"E2C2E": icon_grid.get_connectivity("E2C2E"),
dims.E2C2EO: icon_grid.get_connectivity(dims.E2C2EO),
dims.E2C2E: icon_grid.get_connectivity(dims.E2C2E),
},
)

Expand Down Expand Up @@ -1825,7 +1825,7 @@ def test_compute_averaged_vn_and_fluxes( # noqa: PLR0917 [too-many-positional-a
vertical_start=0,
vertical_end=icon_grid.num_levels,
offset_provider={
"E2C2EO": icon_grid.get_connectivity("E2C2EO"),
dims.E2C2EO: icon_grid.get_connectivity(dims.E2C2EO),
},
)

Expand Down Expand Up @@ -1949,7 +1949,7 @@ def test_vertically_implicit_solver_at_predictor_step( # noqa: PLR0917 [too-man
end_cell_halo = icon_grid.end_index(cell_domain(h_grid.Zone.HALO))

offset_provider = {
"C2E": icon_grid.get_connectivity("C2E"),
dims.C2E: icon_grid.get_connectivity(dims.C2E),
}

vertically_implicit_dycore_solver.vertically_implicit_solver_at_predictor_step.with_backend(
Expand Down Expand Up @@ -2139,7 +2139,7 @@ def test_vertically_implicit_solver_at_corrector_step( # noqa: PLR0917 [too-man
end_cell_local = icon_grid.end_index(cell_domain(h_grid.Zone.LOCAL))

offset_provider = {
"C2E": icon_grid.get_connectivity("C2E"),
dims.C2E: icon_grid.get_connectivity(dims.C2E),
}

vertically_implicit_dycore_solver.vertically_implicit_solver_at_corrector_step.with_backend(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -231,14 +231,14 @@ def test_velocity_predictor_step( # noqa: PLR0917 [too-many-positional-argument
vertical_start=gtx.int32(0),
vertical_end=icon_grid.num_levels,
offset_provider={
"C2E": icon_grid.get_connectivity("C2E"),
"C2E2CO": icon_grid.get_connectivity("C2E2CO"),
"E2C": icon_grid.get_connectivity("E2C"),
"E2C2E": icon_grid.get_connectivity("E2C2E"),
"E2C2EO": icon_grid.get_connectivity("E2C2EO"),
"E2V": icon_grid.get_connectivity("E2V"),
"V2C": icon_grid.get_connectivity("V2C"),
"V2E": icon_grid.get_connectivity("V2E"),
dims.C2E: icon_grid.get_connectivity(dims.C2E),
dims.C2E2CO: icon_grid.get_connectivity(dims.C2E2CO),
dims.E2C: icon_grid.get_connectivity(dims.E2C),
dims.E2C2E: icon_grid.get_connectivity(dims.E2C2E),
dims.E2C2EO: icon_grid.get_connectivity(dims.E2C2EO),
dims.E2V: icon_grid.get_connectivity(dims.E2V),
dims.V2C: icon_grid.get_connectivity(dims.V2C),
dims.V2E: icon_grid.get_connectivity(dims.V2E),
},
)
solve_nonhydro._update_max_vertical_cfl(
Expand Down Expand Up @@ -458,13 +458,13 @@ def test_velocity_corrector_step( # noqa: PLR0917 [too-many-positional-argument
vertical_start=gtx.int32(0),
vertical_end=icon_grid.num_levels,
offset_provider={
"C2E": icon_grid.get_connectivity("C2E"),
"C2E2CO": icon_grid.get_connectivity("C2E2CO"),
"E2C": icon_grid.get_connectivity("E2C"),
"E2C2EO": icon_grid.get_connectivity("E2C2EO"),
"E2V": icon_grid.get_connectivity("E2V"),
"V2C": icon_grid.get_connectivity("V2C"),
"V2E": icon_grid.get_connectivity("V2E"),
dims.C2E: icon_grid.get_connectivity(dims.C2E),
dims.C2E2CO: icon_grid.get_connectivity(dims.C2E2CO),
dims.E2C: icon_grid.get_connectivity(dims.E2C),
dims.E2C2EO: icon_grid.get_connectivity(dims.E2C2EO),
dims.E2V: icon_grid.get_connectivity(dims.E2V),
dims.V2C: icon_grid.get_connectivity(dims.V2C),
dims.V2E: icon_grid.get_connectivity(dims.V2E),
},
)
solve_nonhydro._update_max_vertical_cfl(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@

def add_analysis_increments_from_data_assimilation_numpy(
*,
connectivities: Mapping[gtx.FieldOffset, np.ndarray],
connectivities: Mapping[type[gtx.NeighborConnectivity], np.ndarray],
z_rho_expl: np.ndarray,
rho_incr: np.ndarray,
z_exner_expl: np.ndarray,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@

def add_extra_diffusion_for_normal_wind_tendency_approaching_cfl_numpy(
*,
connectivities: Mapping[gtx.FieldOffset, np.ndarray],
connectivities: Mapping[type[gtx.NeighborConnectivity], np.ndarray],
levelmask: np.ndarray,
c_lin_e: np.ndarray,
z_w_con_c_full: np.ndarray,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@

def add_vertical_wind_derivative_to_divergence_damping_numpy(
*,
connectivities: Mapping[gtx.FieldOffset, np.ndarray],
connectivities: Mapping[type[gtx.NeighborConnectivity], np.ndarray],
hmask_dd3d: np.ndarray,
scalfac_dd3d: np.ndarray,
inv_dual_edge_length: np.ndarray,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@


def apply_rayleigh_damping_mechanism_numpy(
connectivities: Mapping[gtx.FieldOffset, np.ndarray],
connectivities: Mapping[type[gtx.NeighborConnectivity], np.ndarray],
z_raylfac: np.ndarray,
w: np.ndarray,
) -> np.ndarray:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@


def compute_avg_vn_and_graddiv_vn_and_vt_numpy(
connectivities: Mapping[gtx.FieldOffset, np.ndarray],
connectivities: Mapping[type[gtx.NeighborConnectivity], np.ndarray],
e_flx_avg: np.ndarray,
vn: np.ndarray,
geofac_grdiv: np.ndarray,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@


def compute_contravariant_correction_of_w_numpy(
connectivities: Mapping[gtx.FieldOffset, np.ndarray],
connectivities: Mapping[type[gtx.NeighborConnectivity], np.ndarray],
e_bln_c_s: np.ndarray,
z_w_concorr_me: np.ndarray,
wgtfac_c: np.ndarray,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@


def compute_contravariant_correction_of_w_for_lower_boundary_numpy(
connectivities: Mapping[gtx.FieldOffset, np.ndarray],
connectivities: Mapping[type[gtx.NeighborConnectivity], np.ndarray],
e_bln_c_s: np.ndarray,
z_w_concorr_me: np.ndarray,
wgtfacq_c: np.ndarray,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@


def compute_divergence_of_fluxes_of_rho_and_theta_numpy(
connectivities: Mapping[gtx.FieldOffset, np.ndarray],
connectivities: Mapping[type[gtx.NeighborConnectivity], np.ndarray],
geofac_div: np.ndarray,
mass_flux_at_edges_on_model_levels: np.ndarray,
theta_v_flux_at_edges_on_model_levels: np.ndarray,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@


def compute_dwdz_for_divergence_damping_numpy(
connectivities: Mapping[gtx.FieldOffset, np.ndarray],
connectivities: Mapping[type[gtx.NeighborConnectivity], np.ndarray],
inv_ddqz_z_full: np.ndarray,
w: np.ndarray,
w_concorr_c: np.ndarray,
Expand Down
Loading
Loading