From 4635ec6ca37230e4bb287e66142ae619b8298907 Mon Sep 17 00:00:00 2001 From: Jacopo Date: Fri, 27 Feb 2026 13:07:17 +0100 Subject: [PATCH 1/9] reminder --- scripts/run_serialization.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/scripts/run_serialization.py b/scripts/run_serialization.py index d776723b51..78e113028b 100644 --- a/scripts/run_serialization.py +++ b/scripts/run_serialization.py @@ -14,6 +14,7 @@ import re import shutil import subprocess +import sys import tarfile import time from concurrent.futures import ThreadPoolExecutor @@ -359,6 +360,9 @@ def copy_ser_data(experiment, comm_size: int, job_id: str | None = None) -> Path if src_file.is_file(): shutil.copy2(src_file, dest_dir / src_file.name) + # Translate and include NAMELIST_ICON_atm + # f90nml NAMELIST_ICON_output_atm NAMELIST_ICON_output_atm.json + # Copy LOG file if available if job_id is not None: log_file = RUNSCRIPTS_DIR / f"LOG.{get_slurmscript_name(experiment)}.{job_id}.o" @@ -431,9 +435,18 @@ def run_experiment(experiment: definitions.Experiment, comm_size: int) -> None: raise +def require_cli(command_name): + if shutil.which(command_name) is None: + print(f"Error: '{command_name}' is not installed or not on PATH.") + sys.exit(1) + + @cli.command() def run_experiment_series() -> None: """Run the serialization experiment series.""" + + require_cli("f90nml") + OUTPUT_ROOT.mkdir(parents=True, exist_ok=True) total_tasks = len(EXPERIMENTS) * len(COMM_SIZES) From b471187e17a6c7666fd14a6a4523a9056312cc53 Mon Sep 17 00:00:00 2001 From: Jacopo Date: Fri, 27 Feb 2026 14:07:42 +0100 Subject: [PATCH 2/9] this should save stuff --- model/testing/src/icon4py/model/testing/definitions.py | 1 + scripts/run_serialization.py | 9 +++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/model/testing/src/icon4py/model/testing/definitions.py b/model/testing/src/icon4py/model/testing/definitions.py index 3f43a826f6..9112119b5f 100644 --- a/model/testing/src/icon4py/model/testing/definitions.py +++ b/model/testing/src/icon4py/model/testing/definitions.py @@ -24,6 +24,7 @@ SERIALIZED_DATA_DIR: Final = "ser_icondata" SERIALIZED_DATA_SUBDIR: Final = "ser_data" GRID_DATA_DIR: Final = "grids" +NAMELIST_ICON_FNAME: Final = "NAMELIST_ICON_output_atm" def serialized_data_path() -> pathlib.Path: diff --git a/scripts/run_serialization.py b/scripts/run_serialization.py index 78e113028b..aeb1cc0776 100644 --- a/scripts/run_serialization.py +++ b/scripts/run_serialization.py @@ -360,8 +360,13 @@ def copy_ser_data(experiment, comm_size: int, job_id: str | None = None) -> Path if src_file.is_file(): shutil.copy2(src_file, dest_dir / src_file.name) - # Translate and include NAMELIST_ICON_atm - # f90nml NAMELIST_ICON_output_atm NAMELIST_ICON_output_atm.json + # Translate to json and copy NAMELIST_ICON_output_atm + cmd = [ + "f90nml", + str(exp_dir / definitions.NAMELIST_ICON_FNAME), + str(dest_dir / (definitions.NAMELIST_ICON_FNAME + ".json")), + ] + _ = run_command(cmd) # Copy LOG file if available if job_id is not None: From e0064f016f9c24d01a0b298e7d07b158830454f4 Mon Sep 17 00:00:00 2001 From: Jacopo Date: Fri, 27 Feb 2026 15:21:56 +0100 Subject: [PATCH 3/9] wip on nml_reader --- .../icon4py/model/testing/datatest_utils.py | 239 ++++++++++++++++++ 1 file changed, 239 insertions(+) diff --git a/model/testing/src/icon4py/model/testing/datatest_utils.py b/model/testing/src/icon4py/model/testing/datatest_utils.py index b8741cbaa1..5a0e0045fd 100644 --- a/model/testing/src/icon4py/model/testing/datatest_utils.py +++ b/model/testing/src/icon4py/model/testing/datatest_utils.py @@ -8,6 +8,8 @@ from __future__ import annotations +import functools +import json import pathlib import urllib.parse @@ -72,3 +74,240 @@ def create_icon_serial_data_provider( mpi_rank=rank, do_print=True, ) + + +@functools.cache +def _read_namelist_json(json_file_path: pathlib.Path) -> dict: + """ + Read and cache the namelist JSON file. + + Args: + json_file_path: Path to the NAMELIST_ICON_output_atm.json file + + Returns: + Dictionary containing the parsed JSON data + """ + with json_file_path.open() as f: + return json.load(f) + + +def create_experiment_configuration( + experiment: definitions.Experiment, + processor_props: decomposition.ProcessProperties, +) -> tuple: + """ + Create configuration objects from the experiment's namelist JSON file. + + This function reads the NAMELIST_ICON_output_atm.json file that comes with + the serialized experiment data and constructs configuration objects for: + - DriverConfig + - VerticalGridConfig + - NonHydrostaticConfig + - DiffusionConfig + + The JSON file is cached so it's only read once per unique path. + + Args: + experiment: The experiment definition + processor_props: Processor properties containing comm_size + + Returns: + Tuple of (DriverConfig, VerticalGridConfig, NonHydrostaticConfig, DiffusionConfig) + """ + from icon4py.model.atmosphere.diffusion import diffusion + from icon4py.model.atmosphere.dycore import dycore_states, solve_nonhydro as solve_nh + from icon4py.model.common.constants import RayleighType + from icon4py.model.common.grid import vertical as v_grid + from icon4py.model.standalone_driver import config as driver_config + + # Construct path to JSON file + experiment_dir = get_ranked_experiment_name_with_version( + experiment, + processor_props.comm_size, + ) + json_file_path = ( + definitions.serialized_data_path() + / experiment_dir + / f"{definitions.NAMELIST_ICON_FNAME}.json" + ) + + # Read the JSON file (cached) + nml_data = _read_namelist_json(json_file_path) + + # Extract relevant namelist sections + sleve_nml = nml_data.get("sleve_nml", {}) + nonhydrostatic_nml = nml_data.get("nonhydrostatic_nml", {}) + diffusion_nml = nml_data.get("diffusion_nml", {}) + run_nml = nml_data.get("run_nml", {}) + + # Create VerticalGridConfig + vertical_config = v_grid.VerticalGridConfig( + num_levels=experiment.num_levels, + lowest_layer_thickness=sleve_nml.get("min_lay_thckn", 50.0), + model_top_height=sleve_nml.get("top_height", 23500.0), + maximal_layer_thickness=sleve_nml.get("max_lay_thckn", 25000.0), + top_height_limit_for_maximal_layer_thickness=sleve_nml.get("htop_thcknlimit", 15000.0), + flat_height=sleve_nml.get("flat_height", 16000.0), + stretch_factor=sleve_nml.get("stretch_fac", 1.0), + rayleigh_damping_height=( + nonhydrostatic_nml.get("damp_height", [45000.0])[0] + if isinstance(nonhydrostatic_nml.get("damp_height"), list) + else nonhydrostatic_nml.get("damp_height", 45000.0) + ), + ) + + # Create NonHydrostaticConfig + # Map divdamp_order from JSON to enum + divdamp_order_value = nonhydrostatic_nml.get("divdamp_order", 24) + divdamp_order_map = { + 4: dycore_states.DivergenceDampingOrder.FOURTH_ORDER, + 24: dycore_states.DivergenceDampingOrder.COMBINED, + } + divdamp_order = divdamp_order_map.get(divdamp_order_value, dycore_states.DivergenceDampingOrder.COMBINED) + + # Map divdamp_type from JSON to enum + divdamp_type_value = nonhydrostatic_nml.get("divdamp_type", 3) + divdamp_type_map = { + 3: dycore_states.DivergenceDampingType.THREE_DIMENSIONAL, + 32: dycore_states.DivergenceDampingType.COMBINED, + } + divdamp_type = divdamp_type_map.get(divdamp_type_value, dycore_states.DivergenceDampingType.THREE_DIMENSIONAL) + + # Map itime_scheme from JSON to enum + itime_scheme_value = nonhydrostatic_nml.get("itime_scheme", 4) + itime_scheme_map = { + 4: dycore_states.TimeSteppingScheme.MOST_EFFICIENT, + 5: dycore_states.TimeSteppingScheme.STABLE, + 6: dycore_states.TimeSteppingScheme.EXPENSIVE, + } + itime_scheme = itime_scheme_map.get(itime_scheme_value, dycore_states.TimeSteppingScheme.MOST_EFFICIENT) + + # Map iadv_rhotheta from JSON to enum + iadv_rhotheta_value = nonhydrostatic_nml.get("iadv_rhotheta", 2) + iadv_rhotheta_map = { + 2: dycore_states.RhoThetaAdvectionType.MIURA, + } + iadv_rhotheta = iadv_rhotheta_map.get(iadv_rhotheta_value, dycore_states.RhoThetaAdvectionType.MIURA) + + # Map igradp_method from JSON to enum + igradp_method_value = nonhydrostatic_nml.get("igradp_method", 3) + igradp_method_map = { + 1: dycore_states.HorizontalPressureDiscretizationType.CONVENTIONAL, + 2: dycore_states.HorizontalPressureDiscretizationType.TAYLOR, + 3: dycore_states.HorizontalPressureDiscretizationType.TAYLOR_HYDRO, + 4: dycore_states.HorizontalPressureDiscretizationType.POLYNOMIAL, + 5: dycore_states.HorizontalPressureDiscretizationType.POLYNOMIAL_HYDRO, + } + igradp_method = igradp_method_map.get( + igradp_method_value, dycore_states.HorizontalPressureDiscretizationType.TAYLOR_HYDRO + ) + + # Map rayleigh_type from JSON to enum + rayleigh_type_value = nonhydrostatic_nml.get("rayleigh_type", 2) + rayleigh_type_map = { + 2: RayleighType.KLEMP, + } + rayleigh_type = rayleigh_type_map.get(rayleigh_type_value, RayleighType.KLEMP) + + # Extract rayleigh_coeff (can be a list or single value) + rayleigh_coeff = nonhydrostatic_nml.get("rayleigh_coeff", 0.05) + if isinstance(rayleigh_coeff, list): + rayleigh_coeff = rayleigh_coeff[0] + + nonhydro_config = solve_nh.NonHydrostaticConfig( + itime_scheme=itime_scheme, # type: ignore[arg-type] + iadv_rhotheta=iadv_rhotheta, # type: ignore[arg-type] + igradp_method=igradp_method, # type: ignore[arg-type] + rayleigh_type=rayleigh_type, # type: ignore[arg-type] + rayleigh_coeff=rayleigh_coeff, + divdamp_order=divdamp_order, # type: ignore[arg-type] + divdamp_type=divdamp_type, + divdamp_trans_start=nonhydrostatic_nml.get("divdamp_trans_start", 12500.0), + divdamp_trans_end=nonhydrostatic_nml.get("divdamp_trans_end", 17500.0), + rhotheta_offctr=nonhydrostatic_nml.get("rhotheta_offctr", -0.1), + veladv_offctr=nonhydrostatic_nml.get("veladv_offctr", 0.25), + fourth_order_divdamp_factor=nonhydrostatic_nml.get("divdamp_fac", 0.0025), + fourth_order_divdamp_factor2=nonhydrostatic_nml.get("divdamp_fac2", 0.004), + fourth_order_divdamp_factor3=nonhydrostatic_nml.get("divdamp_fac3", 0.004), + fourth_order_divdamp_factor4=nonhydrostatic_nml.get("divdamp_fac4", 0.004), + fourth_order_divdamp_z=nonhydrostatic_nml.get("divdamp_z", 32500.0), + fourth_order_divdamp_z2=nonhydrostatic_nml.get("divdamp_z2", 40000.0), + fourth_order_divdamp_z3=nonhydrostatic_nml.get("divdamp_z3", 60000.0), + fourth_order_divdamp_z4=nonhydrostatic_nml.get("divdamp_z4", 80000.0), + ) + + # Create DiffusionConfig + # Map diffusion_type from hdiff_order + hdiff_order_value = diffusion_nml.get("hdiff_order", 5) + diffusion_type_map = { + -1: diffusion.DiffusionType.NO_DIFFUSION, + 2: diffusion.DiffusionType.LINEAR_2ND_ORDER, + 3: diffusion.DiffusionType.SMAGORINSKY_NO_BACKGROUND, + 4: diffusion.DiffusionType.LINEAR_4TH_ORDER, + 5: diffusion.DiffusionType.SMAGORINSKY_4TH_ORDER, + } + diffusion_type = diffusion_type_map.get(hdiff_order_value, diffusion.DiffusionType.SMAGORINSKY_4TH_ORDER) + + # Map type_vn_diffu from itype_vn_diffu + type_vn_diffu_value = diffusion_nml.get("itype_vn_diffu", 1) + type_vn_diffu_map = { + 1: diffusion.SmagorinskyStencilType.DIAMOND_VERTICES, + 2: diffusion.SmagorinskyStencilType.CELLS_AND_VERTICES, + } + type_vn_diffu = type_vn_diffu_map.get(type_vn_diffu_value, diffusion.SmagorinskyStencilType.DIAMOND_VERTICES) + + # Map type_t_diffu from itype_t_diffu + type_t_diffu_value = diffusion_nml.get("itype_t_diffu", 2) + type_t_diffu_map = { + 1: diffusion.TemperatureDiscretizationType.HOMOGENEOUS, + 2: diffusion.TemperatureDiscretizationType.HETEROGENOUS, + } + type_t_diffu = type_t_diffu_map.get(type_t_diffu_value, diffusion.TemperatureDiscretizationType.HETEROGENOUS) + + # Extract hdiff_smag_w (can be a list or single value) + lhdiff_smag_w = diffusion_nml.get("lhdiff_smag_w", [False]) + hdiff_smag_w = lhdiff_smag_w[0] if isinstance(lhdiff_smag_w, list) else lhdiff_smag_w + + # Extract lsmag_3d (can be a list or single value) + lsmag_3d = diffusion_nml.get("lsmag_3d", [False]) + smag_3d = lsmag_3d[0] if isinstance(lsmag_3d, list) else lsmag_3d + + # Get ndyn_substeps from either nonhydrostatic_nml or run_nml + ndyn_substeps = nonhydrostatic_nml.get("ndyn_substeps", run_nml.get("ndyn_substeps", 5)) + + diffusion_config = diffusion.DiffusionConfig( + diffusion_type=diffusion_type, # type: ignore[arg-type] + hdiff_w=diffusion_nml.get("lhdiff_w", True), + hdiff_vn=diffusion_nml.get("lhdiff_vn", True), + hdiff_temp=diffusion_nml.get("lhdiff_temp", True), + hdiff_smag_w=hdiff_smag_w, + type_vn_diffu=type_vn_diffu, # type: ignore[arg-type] + smag_3d=smag_3d, + type_t_diffu=type_t_diffu, # type: ignore[arg-type] + hdiff_efdt_ratio=diffusion_nml.get("hdiff_efdt_ratio", 36.0), + hdiff_w_efdt_ratio=diffusion_nml.get("hdiff_w_efdt_ratio", 15.0), + smagorinski_scaling_factor=diffusion_nml.get("hdiff_smag_fac", 0.015), + n_substeps=ndyn_substeps, + zdiffu_t=nonhydrostatic_nml.get("l_zdiffu_t", True), + thslp_zdiffu=nonhydrostatic_nml.get("thslp_zdiffu", 0.025), + thhgtd_zdiffu=nonhydrostatic_nml.get("thhgtd_zdiffu", 200.0), + ) + + # Create DriverConfig (using defaults for now, as these are not in the JSON) + # TODO(jcanton): Extract these from the JSON when available + import datetime + + driver_cfg = driver_config.DriverConfig( + experiment_name=experiment.name, + output_path=pathlib.Path(), # Placeholder + profiling_stats=None, + dtime=datetime.timedelta(seconds=run_nml.get("dtime", 600.0)), + start_date=datetime.datetime(1, 1, 1, 0, 0, 0), # Placeholder + end_date=datetime.datetime(1, 1, 1, 1, 0, 0), # Placeholder + apply_extra_second_order_divdamp=nonhydrostatic_nml.get("lextra_diffu", False), + vertical_cfl_threshold=nonhydrostatic_nml.get("vcfl_threshold", 0.85), + ndyn_substeps=ndyn_substeps, + enable_statistics_output=False, + ) + + return driver_cfg, vertical_config, nonhydro_config, diffusion_config From 3834cfd9c3240d056318fcace303c5e891adecfb Mon Sep 17 00:00:00 2001 From: Jacopo Date: Wed, 18 Mar 2026 14:38:01 +0100 Subject: [PATCH 4/9] remove defaults from namelist reads (we want failures) --- .../icon4py/model/testing/datatest_utils.py | 123 +++++++++--------- 1 file changed, 59 insertions(+), 64 deletions(-) diff --git a/model/testing/src/icon4py/model/testing/datatest_utils.py b/model/testing/src/icon4py/model/testing/datatest_utils.py index 5a0e0045fd..0f84e212c6 100644 --- a/model/testing/src/icon4py/model/testing/datatest_utils.py +++ b/model/testing/src/icon4py/model/testing/datatest_utils.py @@ -120,7 +120,6 @@ def create_experiment_configuration( from icon4py.model.common.grid import vertical as v_grid from icon4py.model.standalone_driver import config as driver_config - # Construct path to JSON file experiment_dir = get_ranked_experiment_name_with_version( experiment, processor_props.comm_size, @@ -131,66 +130,64 @@ def create_experiment_configuration( / f"{definitions.NAMELIST_ICON_FNAME}.json" ) - # Read the JSON file (cached) nml_data = _read_namelist_json(json_file_path) - # Extract relevant namelist sections - sleve_nml = nml_data.get("sleve_nml", {}) - nonhydrostatic_nml = nml_data.get("nonhydrostatic_nml", {}) - diffusion_nml = nml_data.get("diffusion_nml", {}) - run_nml = nml_data.get("run_nml", {}) + sleve_nml = nml_data["sleve_nml"] + nonhydrostatic_nml = nml_data["nonhydrostatic_nml"] + diffusion_nml = nml_data["diffusion_nml"] + run_nml = nml_data["run_nml"] # Create VerticalGridConfig vertical_config = v_grid.VerticalGridConfig( num_levels=experiment.num_levels, - lowest_layer_thickness=sleve_nml.get("min_lay_thckn", 50.0), - model_top_height=sleve_nml.get("top_height", 23500.0), - maximal_layer_thickness=sleve_nml.get("max_lay_thckn", 25000.0), - top_height_limit_for_maximal_layer_thickness=sleve_nml.get("htop_thcknlimit", 15000.0), - flat_height=sleve_nml.get("flat_height", 16000.0), - stretch_factor=sleve_nml.get("stretch_fac", 1.0), + lowest_layer_thickness=sleve_nml["min_lay_thckn"], + model_top_height=sleve_nml["top_height"], + maximal_layer_thickness=sleve_nml["max_lay_thckn"], + top_height_limit_for_maximal_layer_thickness=sleve_nml["htop_thcknlimit"], + flat_height=sleve_nml["flat_height"], + stretch_factor=sleve_nml["stretch_fac"], rayleigh_damping_height=( - nonhydrostatic_nml.get("damp_height", [45000.0])[0] - if isinstance(nonhydrostatic_nml.get("damp_height"), list) - else nonhydrostatic_nml.get("damp_height", 45000.0) + nonhydrostatic_nml["damp_height"][0] + if isinstance(nonhydrostatic_nml["damp_height"], list) + else nonhydrostatic_nml["damp_height"] ), ) # Create NonHydrostaticConfig # Map divdamp_order from JSON to enum - divdamp_order_value = nonhydrostatic_nml.get("divdamp_order", 24) + divdamp_order_value = nonhydrostatic_nml["divdamp_order"] divdamp_order_map = { 4: dycore_states.DivergenceDampingOrder.FOURTH_ORDER, 24: dycore_states.DivergenceDampingOrder.COMBINED, } - divdamp_order = divdamp_order_map.get(divdamp_order_value, dycore_states.DivergenceDampingOrder.COMBINED) + divdamp_order = divdamp_order_map[divdamp_order_value] # Map divdamp_type from JSON to enum - divdamp_type_value = nonhydrostatic_nml.get("divdamp_type", 3) + divdamp_type_value = nonhydrostatic_nml["divdamp_type"] divdamp_type_map = { 3: dycore_states.DivergenceDampingType.THREE_DIMENSIONAL, 32: dycore_states.DivergenceDampingType.COMBINED, } - divdamp_type = divdamp_type_map.get(divdamp_type_value, dycore_states.DivergenceDampingType.THREE_DIMENSIONAL) + divdamp_type = divdamp_type_map[divdamp_type_value] # Map itime_scheme from JSON to enum - itime_scheme_value = nonhydrostatic_nml.get("itime_scheme", 4) + itime_scheme_value = nonhydrostatic_nml["itime_scheme"] itime_scheme_map = { 4: dycore_states.TimeSteppingScheme.MOST_EFFICIENT, 5: dycore_states.TimeSteppingScheme.STABLE, 6: dycore_states.TimeSteppingScheme.EXPENSIVE, } - itime_scheme = itime_scheme_map.get(itime_scheme_value, dycore_states.TimeSteppingScheme.MOST_EFFICIENT) + itime_scheme = itime_scheme_map[itime_scheme_value] # Map iadv_rhotheta from JSON to enum - iadv_rhotheta_value = nonhydrostatic_nml.get("iadv_rhotheta", 2) + iadv_rhotheta_value = nonhydrostatic_nml["iadv_rhotheta"] iadv_rhotheta_map = { 2: dycore_states.RhoThetaAdvectionType.MIURA, } - iadv_rhotheta = iadv_rhotheta_map.get(iadv_rhotheta_value, dycore_states.RhoThetaAdvectionType.MIURA) + iadv_rhotheta = iadv_rhotheta_map[iadv_rhotheta_value] # Map igradp_method from JSON to enum - igradp_method_value = nonhydrostatic_nml.get("igradp_method", 3) + igradp_method_value = nonhydrostatic_nml["igradp_method"] igradp_method_map = { 1: dycore_states.HorizontalPressureDiscretizationType.CONVENTIONAL, 2: dycore_states.HorizontalPressureDiscretizationType.TAYLOR, @@ -198,19 +195,17 @@ def create_experiment_configuration( 4: dycore_states.HorizontalPressureDiscretizationType.POLYNOMIAL, 5: dycore_states.HorizontalPressureDiscretizationType.POLYNOMIAL_HYDRO, } - igradp_method = igradp_method_map.get( - igradp_method_value, dycore_states.HorizontalPressureDiscretizationType.TAYLOR_HYDRO - ) + igradp_method = igradp_method_map[igradp_method_value] # Map rayleigh_type from JSON to enum - rayleigh_type_value = nonhydrostatic_nml.get("rayleigh_type", 2) + rayleigh_type_value = nonhydrostatic_nml["rayleigh_type"] rayleigh_type_map = { 2: RayleighType.KLEMP, } - rayleigh_type = rayleigh_type_map.get(rayleigh_type_value, RayleighType.KLEMP) + rayleigh_type = rayleigh_type_map[rayleigh_type_value] # Extract rayleigh_coeff (can be a list or single value) - rayleigh_coeff = nonhydrostatic_nml.get("rayleigh_coeff", 0.05) + rayleigh_coeff = nonhydrostatic_nml["rayleigh_coeff"] if isinstance(rayleigh_coeff, list): rayleigh_coeff = rayleigh_coeff[0] @@ -222,23 +217,23 @@ def create_experiment_configuration( rayleigh_coeff=rayleigh_coeff, divdamp_order=divdamp_order, # type: ignore[arg-type] divdamp_type=divdamp_type, - divdamp_trans_start=nonhydrostatic_nml.get("divdamp_trans_start", 12500.0), - divdamp_trans_end=nonhydrostatic_nml.get("divdamp_trans_end", 17500.0), - rhotheta_offctr=nonhydrostatic_nml.get("rhotheta_offctr", -0.1), - veladv_offctr=nonhydrostatic_nml.get("veladv_offctr", 0.25), - fourth_order_divdamp_factor=nonhydrostatic_nml.get("divdamp_fac", 0.0025), - fourth_order_divdamp_factor2=nonhydrostatic_nml.get("divdamp_fac2", 0.004), - fourth_order_divdamp_factor3=nonhydrostatic_nml.get("divdamp_fac3", 0.004), - fourth_order_divdamp_factor4=nonhydrostatic_nml.get("divdamp_fac4", 0.004), - fourth_order_divdamp_z=nonhydrostatic_nml.get("divdamp_z", 32500.0), - fourth_order_divdamp_z2=nonhydrostatic_nml.get("divdamp_z2", 40000.0), - fourth_order_divdamp_z3=nonhydrostatic_nml.get("divdamp_z3", 60000.0), - fourth_order_divdamp_z4=nonhydrostatic_nml.get("divdamp_z4", 80000.0), + divdamp_trans_start=nonhydrostatic_nml["divdamp_trans_start"], + divdamp_trans_end=nonhydrostatic_nml["divdamp_trans_end"], + rhotheta_offctr=nonhydrostatic_nml["rhotheta_offctr"], + veladv_offctr=nonhydrostatic_nml["veladv_offctr"], + fourth_order_divdamp_factor=nonhydrostatic_nml["divdamp_fac"], + fourth_order_divdamp_factor2=nonhydrostatic_nml["divdamp_fac2"], + fourth_order_divdamp_factor3=nonhydrostatic_nml["divdamp_fac3"], + fourth_order_divdamp_factor4=nonhydrostatic_nml["divdamp_fac4"], + fourth_order_divdamp_z=nonhydrostatic_nml["divdamp_z"], + fourth_order_divdamp_z2=nonhydrostatic_nml["divdamp_z2"], + fourth_order_divdamp_z3=nonhydrostatic_nml["divdamp_z3"], + fourth_order_divdamp_z4=nonhydrostatic_nml["divdamp_z4"], ) # Create DiffusionConfig # Map diffusion_type from hdiff_order - hdiff_order_value = diffusion_nml.get("hdiff_order", 5) + hdiff_order_value = diffusion_nml["hdiff_order"] diffusion_type_map = { -1: diffusion.DiffusionType.NO_DIFFUSION, 2: diffusion.DiffusionType.LINEAR_2ND_ORDER, @@ -246,51 +241,51 @@ def create_experiment_configuration( 4: diffusion.DiffusionType.LINEAR_4TH_ORDER, 5: diffusion.DiffusionType.SMAGORINSKY_4TH_ORDER, } - diffusion_type = diffusion_type_map.get(hdiff_order_value, diffusion.DiffusionType.SMAGORINSKY_4TH_ORDER) + diffusion_type = diffusion_type_map[hdiff_order_value] # Map type_vn_diffu from itype_vn_diffu - type_vn_diffu_value = diffusion_nml.get("itype_vn_diffu", 1) + type_vn_diffu_value = diffusion_nml["itype_vn_diffu"] type_vn_diffu_map = { 1: diffusion.SmagorinskyStencilType.DIAMOND_VERTICES, 2: diffusion.SmagorinskyStencilType.CELLS_AND_VERTICES, } - type_vn_diffu = type_vn_diffu_map.get(type_vn_diffu_value, diffusion.SmagorinskyStencilType.DIAMOND_VERTICES) + type_vn_diffu = type_vn_diffu_map[type_vn_diffu_value] # Map type_t_diffu from itype_t_diffu - type_t_diffu_value = diffusion_nml.get("itype_t_diffu", 2) + type_t_diffu_value = diffusion_nml["itype_t_diffu"] type_t_diffu_map = { 1: diffusion.TemperatureDiscretizationType.HOMOGENEOUS, 2: diffusion.TemperatureDiscretizationType.HETEROGENOUS, } - type_t_diffu = type_t_diffu_map.get(type_t_diffu_value, diffusion.TemperatureDiscretizationType.HETEROGENOUS) + type_t_diffu = type_t_diffu_map[type_t_diffu_value] # Extract hdiff_smag_w (can be a list or single value) - lhdiff_smag_w = diffusion_nml.get("lhdiff_smag_w", [False]) + lhdiff_smag_w = diffusion_nml["lhdiff_smag_w"] hdiff_smag_w = lhdiff_smag_w[0] if isinstance(lhdiff_smag_w, list) else lhdiff_smag_w # Extract lsmag_3d (can be a list or single value) - lsmag_3d = diffusion_nml.get("lsmag_3d", [False]) + lsmag_3d = diffusion_nml["lsmag_3d"] smag_3d = lsmag_3d[0] if isinstance(lsmag_3d, list) else lsmag_3d # Get ndyn_substeps from either nonhydrostatic_nml or run_nml - ndyn_substeps = nonhydrostatic_nml.get("ndyn_substeps", run_nml.get("ndyn_substeps", 5)) + ndyn_substeps = nonhydrostatic_nml["ndyn_substeps"] diffusion_config = diffusion.DiffusionConfig( diffusion_type=diffusion_type, # type: ignore[arg-type] - hdiff_w=diffusion_nml.get("lhdiff_w", True), - hdiff_vn=diffusion_nml.get("lhdiff_vn", True), - hdiff_temp=diffusion_nml.get("lhdiff_temp", True), + hdiff_w=diffusion_nml["lhdiff_w"], + hdiff_vn=diffusion_nml["lhdiff_vn"], + hdiff_temp=diffusion_nml["lhdiff_temp"], hdiff_smag_w=hdiff_smag_w, type_vn_diffu=type_vn_diffu, # type: ignore[arg-type] smag_3d=smag_3d, type_t_diffu=type_t_diffu, # type: ignore[arg-type] - hdiff_efdt_ratio=diffusion_nml.get("hdiff_efdt_ratio", 36.0), - hdiff_w_efdt_ratio=diffusion_nml.get("hdiff_w_efdt_ratio", 15.0), - smagorinski_scaling_factor=diffusion_nml.get("hdiff_smag_fac", 0.015), + hdiff_efdt_ratio=diffusion_nml["hdiff_efdt_ratio"], + hdiff_w_efdt_ratio=diffusion_nml["hdiff_w_efdt_ratio"], + smagorinski_scaling_factor=diffusion_nml["hdiff_smag_fac"], n_substeps=ndyn_substeps, - zdiffu_t=nonhydrostatic_nml.get("l_zdiffu_t", True), - thslp_zdiffu=nonhydrostatic_nml.get("thslp_zdiffu", 0.025), - thhgtd_zdiffu=nonhydrostatic_nml.get("thhgtd_zdiffu", 200.0), + zdiffu_t=nonhydrostatic_nml["l_zdiffu_t"], + thslp_zdiffu=nonhydrostatic_nml["thslp_zdiffu"], + thhgtd_zdiffu=nonhydrostatic_nml["thhgtd_zdiffu"], ) # Create DriverConfig (using defaults for now, as these are not in the JSON) @@ -301,11 +296,11 @@ def create_experiment_configuration( experiment_name=experiment.name, output_path=pathlib.Path(), # Placeholder profiling_stats=None, - dtime=datetime.timedelta(seconds=run_nml.get("dtime", 600.0)), + dtime=datetime.timedelta(seconds=run_nml["dtime"]), start_date=datetime.datetime(1, 1, 1, 0, 0, 0), # Placeholder end_date=datetime.datetime(1, 1, 1, 1, 0, 0), # Placeholder - apply_extra_second_order_divdamp=nonhydrostatic_nml.get("lextra_diffu", False), - vertical_cfl_threshold=nonhydrostatic_nml.get("vcfl_threshold", 0.85), + apply_extra_second_order_divdamp=nonhydrostatic_nml["lextra_diffu"], + vertical_cfl_threshold=nonhydrostatic_nml["vcfl_threshold"], ndyn_substeps=ndyn_substeps, enable_statistics_output=False, ) From f077e43eed5302b7b4edfd1cc495420838736425 Mon Sep 17 00:00:00 2001 From: Jacopo Date: Wed, 18 Mar 2026 14:44:25 +0100 Subject: [PATCH 5/9] one more ignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index ee47a0e04a..060afac5bf 100644 --- a/.gitignore +++ b/.gitignore @@ -12,6 +12,7 @@ testdata simple_mesh*.nc /prof .profile +pyrightconfig.json ### Sphinx ### **/docs/_source/*.rst From d10fc358c686b4c98f779d14b34a7741daa4d4f0 Mon Sep 17 00:00:00 2001 From: Jacopo Date: Wed, 18 Mar 2026 14:45:25 +0100 Subject: [PATCH 6/9] Experiment -> ExperimentDescription --- .../integration_tests/test_advection.py | 4 +- .../integration_tests/test_diffusion.py | 8 +-- .../mpi_tests/test_parallel_diffusion.py | 4 +- .../test_velocity_advection.py | 2 +- .../mpi_tests/test_parallel_solve_nonhydro.py | 2 +- .../mpi_tests/test_mpi_decomposition.py | 6 +-- model/common/tests/common/fixtures.py | 2 +- .../grid/integration_tests/test_horizontal.py | 2 +- .../grid/mpi_tests/test_parallel_icon.py | 4 +- .../common/grid/unit_tests/test_geometry.py | 42 +++++++-------- .../grid/unit_tests/test_grid_manager.py | 42 +++++++-------- .../common/grid/unit_tests/test_gridfile.py | 2 +- .../tests/common/grid/unit_tests/test_icon.py | 2 +- .../common/grid/unit_tests/test_vertical.py | 10 ++-- .../mpi_tests/test_parallel_interpolation.py | 12 ++--- .../unit_tests/test_interpolation_factory.py | 34 ++++++------ .../unit_tests/test_interpolation_fields.py | 4 +- .../unit_tests/test_rbf_interpolation.py | 12 ++--- .../mpi_tests/test_parallel_metrics.py | 10 ++-- .../test_compute_diffusion_metrics.py | 4 +- .../metrics/unit_tests/test_metric_fields.py | 6 +-- .../unit_tests/test_metrics_factory.py | 52 +++++++++---------- .../common/states/unit_tests/test_factory.py | 2 +- .../test_jablonowski_williamson_topography.py | 2 +- .../driver/integration_tests/test_gauss3d.py | 2 +- .../driver/integration_tests/test_icon4py.py | 2 +- .../test_jablonowski_williamson.py | 2 +- model/driver/tests/driver/utils.py | 2 +- .../icon4py/model/testing/datatest_utils.py | 10 ++-- .../src/icon4py/model/testing/definitions.py | 18 +++---- .../model/testing/fixtures/datatest.py | 28 +++++----- .../src/icon4py/model/testing/grid_utils.py | 4 +- scripts/run_serialization.py | 20 +++---- 33 files changed, 179 insertions(+), 179 deletions(-) diff --git a/model/atmosphere/advection/tests/advection/integration_tests/test_advection.py b/model/atmosphere/advection/tests/advection/integration_tests/test_advection.py index 16931b41ad..b8f037bc12 100644 --- a/model/atmosphere/advection/tests/advection/integration_tests/test_advection.py +++ b/model/atmosphere/advection/tests/advection/integration_tests/test_advection.py @@ -124,7 +124,7 @@ def test_advection_run_single_step( backend, advection_init_savepoint, advection_exit_savepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, ): # TODO(OngChia): the last datatest fails on GPU (or even CPU) backend when there is no advection because the horizontal flux is not zero. Further check required. if ( @@ -221,7 +221,7 @@ def test_compute_lsq_coeffs( grid_savepoint: sb.IconGridSavepoint, backend: gtx_typing.Backend, interpolation_savepoint: sb.InterpolationSavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, ) -> None: gm = grid_utils.get_grid_manager_from_identifier( experiment.grid, diff --git a/model/atmosphere/diffusion/tests/diffusion/integration_tests/test_diffusion.py b/model/atmosphere/diffusion/tests/diffusion/integration_tests/test_diffusion.py index 630c560ff5..bf13f822fc 100644 --- a/model/atmosphere/diffusion/tests/diffusion/integration_tests/test_diffusion.py +++ b/model/atmosphere/diffusion/tests/diffusion/integration_tests/test_diffusion.py @@ -38,23 +38,23 @@ grid_functionality = collections.defaultdict(dict) -def get_grid_for_experiment(experiment: definitions.Experiment, backend: gtx_typing.Backend): +def get_grid_for_experiment(experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend): return _get_or_initialize(experiment, backend, "grid") def get_edge_geometry_for_experiment( - experiment: definitions.Experiment, backend: gtx_typing.Backend + experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend ): return _get_or_initialize(experiment, backend, "edge_geometry") def get_cell_geometry_for_experiment( - experiment: definitions.Experiment, backend: gtx_typing.Backend + experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend ): return _get_or_initialize(experiment, backend, "cell_geometry") -def _get_or_initialize(experiment: definitions.Experiment, backend: gtx_typing.Backend, name: str): +def _get_or_initialize(experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend, name: str): if not grid_functionality[experiment.name].get(name): geometry_ = grid_utils.get_grid_geometry(backend, experiment) grid = geometry_.grid diff --git a/model/atmosphere/diffusion/tests/diffusion/mpi_tests/test_parallel_diffusion.py b/model/atmosphere/diffusion/tests/diffusion/mpi_tests/test_parallel_diffusion.py index bdc594a64b..64b18f53b5 100644 --- a/model/atmosphere/diffusion/tests/diffusion/mpi_tests/test_parallel_diffusion.py +++ b/model/atmosphere/diffusion/tests/diffusion/mpi_tests/test_parallel_diffusion.py @@ -38,7 +38,7 @@ @pytest.mark.parametrize("orchestration", [False]) @pytest.mark.parametrize("processor_props", [True], indirect=True) def test_parallel_diffusion( - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, step_date_init: str, step_date_exit: str, linit: bool, @@ -164,7 +164,7 @@ def test_parallel_diffusion( @pytest.mark.parametrize("ndyn_substeps", [2]) @pytest.mark.parametrize("processor_props", [True], indirect=True) def test_parallel_diffusion_multiple_steps( - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, step_date_init: str, step_date_exit: str, linit: bool, diff --git a/model/atmosphere/dycore/tests/dycore/integration_tests/test_velocity_advection.py b/model/atmosphere/dycore/tests/dycore/integration_tests/test_velocity_advection.py index d9529e32b7..061c18ae19 100644 --- a/model/atmosphere/dycore/tests/dycore/integration_tests/test_velocity_advection.py +++ b/model/atmosphere/dycore/tests/dycore/integration_tests/test_velocity_advection.py @@ -86,7 +86,7 @@ def test_verify_velocity_init_against_savepoint( model_top_height: ta.wpfloat, stretch_factor: ta.wpfloat, damping_height: ta.wpfloat, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: interpolation_state = utils.construct_interpolation_state(interpolation_savepoint) diff --git a/model/atmosphere/dycore/tests/dycore/mpi_tests/test_parallel_solve_nonhydro.py b/model/atmosphere/dycore/tests/dycore/mpi_tests/test_parallel_solve_nonhydro.py index ea57fde4c1..514c03714e 100644 --- a/model/atmosphere/dycore/tests/dycore/mpi_tests/test_parallel_solve_nonhydro.py +++ b/model/atmosphere/dycore/tests/dycore/mpi_tests/test_parallel_solve_nonhydro.py @@ -45,7 +45,7 @@ def test_run_solve_nonhydro_single_step( step_date_init: str, step_date_exit: str, substep_init: int, - experiment: test_defs.Experiment, + experiment: test_defs.ExperimentDescription, ndyn_substeps: int, icon_grid: icon.IconGrid, savepoint_nonhydro_init: serialbox.IconNonHydroInitSavepoint, diff --git a/model/common/tests/common/decomposition/mpi_tests/test_mpi_decomposition.py b/model/common/tests/common/decomposition/mpi_tests/test_mpi_decomposition.py index 0f0d4c59f1..d3e5933d4a 100644 --- a/model/common/tests/common/decomposition/mpi_tests/test_mpi_decomposition.py +++ b/model/common/tests/common/decomposition/mpi_tests/test_mpi_decomposition.py @@ -76,7 +76,7 @@ def test_decomposition_info_masked( download_ser_data: Any, decomposition_info: definitions.DecompositionInfo, processor_props: definitions.ProcessProperties, - experiment: test_defs.Experiment, + experiment: test_defs.ExperimentDescription, ) -> None: check_comm_size(processor_props, sizes=(2,)) my_rank = processor_props.rank @@ -131,7 +131,7 @@ def test_decomposition_info_local_index( caplog: Any, decomposition_info: definitions.DecompositionInfo, processor_props: definitions.ProcessProperties, - experiment: test_defs.Experiment, + experiment: test_defs.ExperimentDescription, ): check_comm_size(processor_props, sizes=(2,)) my_rank = processor_props.rank @@ -282,7 +282,7 @@ def test_exchange_on_dummy_data( @pytest.mark.parametrize("processor_props", [False], indirect=True) def test_halo_exchange_for_sparse_field( interpolation_savepoint: serialbox.InterpolationSavepoint, - experiment: test_defs.Experiment, + experiment: test_defs.ExperimentDescription, processor_props: definitions.ProcessProperties, grid_savepoint: serialbox.IconGridSavepoint, icon_grid: icon.IconGrid, diff --git a/model/common/tests/common/fixtures.py b/model/common/tests/common/fixtures.py index 01b113e551..2488b327e7 100644 --- a/model/common/tests/common/fixtures.py +++ b/model/common/tests/common/fixtures.py @@ -128,7 +128,7 @@ def metrics_factory_from_savepoint( backend: gtx_typing.Backend, grid_savepoint: serialbox.IconGridSavepoint, topography_savepoint: serialbox.TopographySavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, decomposition_info: decomposition.DecompositionInfo, processor_props: decomposition.ProcessProperties, geometry_from_savepoint: geometry.GridGeometry, diff --git a/model/common/tests/common/grid/integration_tests/test_horizontal.py b/model/common/tests/common/grid/integration_tests/test_horizontal.py index b37d42eedd..651aaefee9 100644 --- a/model/common/tests/common/grid/integration_tests/test_horizontal.py +++ b/model/common/tests/common/grid/integration_tests/test_horizontal.py @@ -29,7 +29,7 @@ @pytest.mark.datatest @pytest.mark.parametrize("dim", utils.main_horizontal_dims()) def test_map_icon_start_end_index( - experiment: definitions.Experiment, dim: gtx.Dimension, grid_savepoint: sb.IconGridSavepoint + experiment: definitions.ExperimentDescription, dim: gtx.Dimension, grid_savepoint: sb.IconGridSavepoint ) -> None: end_indices = grid_savepoint.end_index() start_indices = grid_savepoint.start_index() diff --git a/model/common/tests/common/grid/mpi_tests/test_parallel_icon.py b/model/common/tests/common/grid/mpi_tests/test_parallel_icon.py index 01b31899ea..e507c6ae5b 100644 --- a/model/common/tests/common/grid/mpi_tests/test_parallel_icon.py +++ b/model/common/tests/common/grid/mpi_tests/test_parallel_icon.py @@ -85,7 +85,7 @@ def test_distributed_local( processor_props: decomp_defs.ProcessProperties, dim: gtx.Dimension, icon_grid: base_grid.Grid, - experiment: test_defs.Experiment, + experiment: test_defs.ExperimentDescription, ) -> None: parallel_helpers.check_comm_size(processor_props) domain = h_grid.domain(dim)(h_grid.Zone.LOCAL) @@ -157,7 +157,7 @@ def test_distributed_halo( dim: gtx.Dimension, zone: h_grid.Zone, icon_grid: base_grid.Grid, - experiment: test_defs.Experiment, + experiment: test_defs.ExperimentDescription, level: int, ) -> None: parallel_helpers.check_comm_size(processor_props) diff --git a/model/common/tests/common/grid/unit_tests/test_geometry.py b/model/common/tests/common/grid/unit_tests/test_geometry.py index f918de9210..9af90bd366 100644 --- a/model/common/tests/common/grid/unit_tests/test_geometry.py +++ b/model/common/tests/common/grid/unit_tests/test_geometry.py @@ -45,7 +45,7 @@ @pytest.mark.datatest def test_geometry_raises_for_unknown_field( - backend: gtx_typing.Backend, experiment: definitions.Experiment + backend: gtx_typing.Backend, experiment: definitions.ExperimentDescription ) -> None: geometry = grid_utils.get_grid_geometry(backend, experiment) with pytest.raises(ValueError) as e: @@ -66,7 +66,7 @@ def test_geometry_raises_for_unknown_field( def test_edge_control_area( backend: gtx_typing.Backend, grid_savepoint: sb.IconGridSavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, rtol: float, ) -> None: expected = grid_savepoint.edge_areas() @@ -79,7 +79,7 @@ def test_edge_control_area( def test_coriolis_parameter( backend: gtx_typing.Backend, grid_savepoint: sb.IconGridSavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, ) -> None: geometry_source = grid_utils.get_grid_geometry(backend, experiment) expected = grid_savepoint.f_e() @@ -92,7 +92,7 @@ def test_coriolis_parameter( def test_compute_edge_length( backend: gtx_typing.Backend, grid_savepoint: sb.IconGridSavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, ) -> None: geometry_source = grid_utils.get_grid_geometry(backend, experiment) expected = grid_savepoint.primal_edge_length() @@ -104,7 +104,7 @@ def test_compute_edge_length( def test_compute_inverse_edge_length( backend: gtx_typing.Backend, grid_savepoint: sb.IconGridSavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, ) -> None: expected = grid_savepoint.inverse_primal_edge_lengths() geometry_source = grid_utils.get_grid_geometry(backend, experiment) @@ -117,7 +117,7 @@ def test_compute_inverse_edge_length( def test_compute_dual_edge_length( backend: gtx_typing.Backend, grid_savepoint: sb.IconGridSavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, ) -> None: grid_geometry = grid_utils.get_grid_geometry(backend, experiment) @@ -130,7 +130,7 @@ def test_compute_dual_edge_length( def test_compute_inverse_dual_edge_length( backend: gtx_typing.Backend, grid_savepoint: sb.IconGridSavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, ) -> None: grid_geometry = grid_utils.get_grid_geometry(backend, experiment) expected = grid_savepoint.inv_dual_edge_length() @@ -154,7 +154,7 @@ def test_compute_inverse_dual_edge_length( def test_compute_inverse_vertex_vertex_length( backend: gtx_typing.Backend, grid_savepoint: sb.IconGridSavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, rtol: float, ) -> None: grid_geometry = grid_utils.get_grid_geometry(backend, experiment) @@ -175,7 +175,7 @@ def test_compute_inverse_vertex_vertex_length( def test_compute_coordinates_of_edge_tangent_and_normal( backend: gtx_typing.Backend, grid_savepoint: sb.IconGridSavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, ) -> None: grid_geometry = grid_utils.get_grid_geometry(backend, experiment) x_normal = grid_geometry.get(attrs.EDGE_NORMAL_X) @@ -203,7 +203,7 @@ def test_compute_coordinates_of_edge_tangent_and_normal( def test_compute_primal_normals( backend: gtx_typing.Backend, grid_savepoint: sb.IconGridSavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, ) -> None: grid_geometry = grid_utils.get_grid_geometry(backend, experiment) primal_normal_u = grid_geometry.get(attrs.EDGE_NORMAL_U) @@ -224,7 +224,7 @@ def test_compute_primal_normals( def test_tangent_orientation( backend: gtx_typing.Backend, grid_savepoint: sb.IconGridSavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, ) -> None: grid_geometry = grid_utils.get_grid_geometry(backend, experiment) result = grid_geometry.get(attrs.TANGENT_ORIENTATION) @@ -237,7 +237,7 @@ def test_tangent_orientation( def test_cell_area( backend: gtx_typing.Backend, grid_savepoint: sb.IconGridSavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, ) -> None: grid_geometry = grid_utils.get_grid_geometry(backend, experiment) result = grid_geometry.get(attrs.CELL_AREA) @@ -250,7 +250,7 @@ def test_cell_area( def test_primal_normal_cell( backend: gtx_typing.Backend, grid_savepoint: sb.IconGridSavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, ) -> None: grid_geometry = grid_utils.get_grid_geometry(backend, experiment) primal_normal_cell_u_ref = grid_savepoint.primal_normal_cell_x().asnumpy() @@ -270,7 +270,7 @@ def test_primal_normal_cell( def test_dual_normal_cell( backend: gtx_typing.Backend, grid_savepoint: sb.IconGridSavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, ) -> None: grid_geometry = grid_utils.get_grid_geometry(backend, experiment) dual_normal_cell_u_ref = grid_savepoint.dual_normal_cell_x().asnumpy() @@ -286,7 +286,7 @@ def test_dual_normal_cell( def test_primal_normal_vert( backend: gtx_typing.Backend, grid_savepoint: sb.IconGridSavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, ) -> None: grid_geometry = grid_utils.get_grid_geometry(backend, experiment) primal_normal_vert_u_ref = grid_savepoint.primal_normal_vert_x().asnumpy() @@ -306,7 +306,7 @@ def test_primal_normal_vert( def test_dual_normal_vert( backend: gtx_typing.Backend, grid_savepoint: sb.IconGridSavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, ) -> None: grid_geometry = grid_utils.get_grid_geometry(backend, experiment) dual_normal_vert_u_ref = grid_savepoint.dual_normal_vert_x().asnumpy() @@ -322,7 +322,7 @@ def test_dual_normal_vert( def test_cartesian_centers_edge( backend: gtx_typing.Backend, grid_savepoint: sb.IconGridSavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, ) -> None: grid_geometry = grid_utils.get_grid_geometry(backend, experiment) grid = grid_geometry.grid @@ -361,7 +361,7 @@ def test_cartesian_centers_edge( def test_cartesian_centers_cell( backend: gtx_typing.Backend, grid_savepoint: sb.IconGridSavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, ) -> None: grid_geometry = grid_utils.get_grid_geometry(backend, experiment) grid = grid_geometry.grid @@ -400,7 +400,7 @@ def test_cartesian_centers_cell( def test_vertex( backend: gtx_typing.Backend, grid_savepoint: sb.IconGridSavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, ) -> None: grid_geometry = grid_utils.get_grid_geometry(backend, experiment) grid = grid_geometry.grid @@ -452,7 +452,7 @@ def test_sparse_fields_creator() -> None: @pytest.mark.datatest def test_create_auxiliary_orientation_coordinates( - backend: gtx_typing.Backend, experiment: definitions.Experiment + backend: gtx_typing.Backend, experiment: definitions.ExperimentDescription ) -> None: gm = grid_utils.get_grid_manager_from_identifier( experiment.grid, @@ -517,7 +517,7 @@ def test_create_auxiliary_orientation_coordinates( def test_geometry_mean_fields( backend: gtx_typing.Backend, grid_savepoint: sb.IconGridSavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, attr_name: str, ) -> None: assert hasattr(experiment, "name") diff --git a/model/common/tests/common/grid/unit_tests/test_grid_manager.py b/model/common/tests/common/grid/unit_tests/test_grid_manager.py index 41cfb9b238..24ffbaab3b 100644 --- a/model/common/tests/common/grid/unit_tests/test_grid_manager.py +++ b/model/common/tests/common/grid/unit_tests/test_grid_manager.py @@ -66,7 +66,7 @@ @pytest.mark.with_netcdf def test_grid_manager_eval_v2e( grid_savepoint: serialbox.IconGridSavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend, ) -> None: grid = utils.run_grid_manager(experiment.grid, keep_skip_values=True, backend=backend).grid @@ -93,7 +93,7 @@ def test_grid_manager_eval_v2e( @pytest.mark.parametrize("dim", [dims.CellDim, dims.EdgeDim, dims.VertexDim]) def test_grid_manager_refin_ctrl( grid_savepoint: serialbox.IconGridSavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, dim: gtx.Dimension, backend: gtx_typing.Backend, ) -> None: @@ -112,7 +112,7 @@ def test_grid_manager_refin_ctrl( @pytest.mark.with_netcdf def test_grid_manager_eval_v2c( grid_savepoint: serialbox.IconGridSavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend, ) -> None: grid = utils.run_grid_manager(experiment.grid, keep_skip_values=True, backend=backend).grid @@ -167,7 +167,7 @@ def _reset_invalid_index(index_array: np.ndarray) -> None: @pytest.mark.with_netcdf def test_grid_manager_eval_e2v( grid_savepoint: serialbox.IconGridSavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend, ) -> None: grid = utils.run_grid_manager(experiment.grid, keep_skip_values=True, backend=backend).grid @@ -190,7 +190,7 @@ def has_invalid_index(ar: np.ndarray) -> np.bool_: @pytest.mark.with_netcdf def test_grid_manager_eval_e2c( grid_savepoint: serialbox.IconGridSavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend, ) -> None: grid = utils.run_grid_manager(experiment.grid, keep_skip_values=True, backend=backend).grid @@ -207,7 +207,7 @@ def test_grid_manager_eval_e2c( @pytest.mark.with_netcdf def test_grid_manager_eval_c2e( grid_savepoint: serialbox.IconGridSavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend, ) -> None: grid = utils.run_grid_manager(experiment.grid, keep_skip_values=True, backend=backend).grid @@ -227,7 +227,7 @@ def test_grid_manager_eval_c2e( @pytest.mark.with_netcdf def test_grid_manager_eval_c2e2c( grid_savepoint: serialbox.IconGridSavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend, ) -> None: grid = utils.run_grid_manager(experiment.grid, keep_skip_values=True, backend=backend).grid @@ -241,7 +241,7 @@ def test_grid_manager_eval_c2e2c( @pytest.mark.with_netcdf def test_grid_manager_eval_c2e2cO( grid_savepoint: serialbox.IconGridSavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend, ) -> None: grid = utils.run_grid_manager(experiment.grid, keep_skip_values=True, backend=backend).grid @@ -257,7 +257,7 @@ def test_grid_manager_eval_c2e2cO( @pytest.mark.with_netcdf def test_grid_manager_eval_e2c2e( grid_savepoint: serialbox.IconGridSavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend, ) -> None: grid = utils.run_grid_manager(experiment.grid, keep_skip_values=True, backend=backend).grid @@ -282,7 +282,7 @@ def test_grid_manager_eval_e2c2e( @pytest.mark.with_netcdf def test_grid_manager_eval_e2c2v( grid_savepoint: serialbox.IconGridSavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend, ) -> None: grid = utils.run_grid_manager(experiment.grid, keep_skip_values=True, backend=backend).grid @@ -302,7 +302,7 @@ def test_grid_manager_eval_e2c2v( @pytest.mark.with_netcdf def test_grid_manager_eval_c2v( grid_savepoint: serialbox.IconGridSavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend, ) -> None: grid = utils.run_grid_manager(experiment.grid, keep_skip_values=True, backend=backend).grid @@ -387,7 +387,7 @@ def test_grid_manager_grid_level_and_root( ) def test_grid_manager_eval_c2e2c2e( grid_savepoint: serialbox.IconGridSavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend, ) -> None: grid = utils.run_grid_manager(experiment.grid, keep_skip_values=True, backend=backend).grid @@ -405,7 +405,7 @@ def test_grid_manager_eval_c2e2c2e( @pytest.mark.parametrize("dim", utils.main_horizontal_dims()) def test_grid_manager_start_end_index_compare_with_serialized_data( grid_savepoint: serialbox.IconGridSavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, dim: gtx.Dimension, backend: gtx_typing.Backend, ) -> None: @@ -429,7 +429,7 @@ def test_grid_manager_start_end_index_compare_with_serialized_data( @pytest.mark.datatest def test_read_geometry_fields( grid_savepoint: serialbox.IconGridSavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend, ) -> None: manager = utils.run_grid_manager(experiment.grid, keep_skip_values=True, backend=backend) @@ -446,7 +446,7 @@ def test_read_geometry_fields( @pytest.mark.parametrize("dim", (dims.CellDim, dims.EdgeDim, dims.VertexDim)) def test_coordinates( grid_savepoint: serialbox.IconGridSavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, dim: gtx.Dimension, backend: gtx_typing.Backend, ) -> None: @@ -460,7 +460,7 @@ def test_coordinates( @pytest.mark.datatest def test_tangent_orientation( grid_savepoint: serialbox.IconGridSavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend, ) -> None: expected = grid_savepoint.tangent_orientation() @@ -474,7 +474,7 @@ def test_tangent_orientation( @pytest.mark.datatest def test_edge_orientation_on_vertex( grid_savepoint: serialbox.IconGridSavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend, ) -> None: expected = grid_savepoint.vertex_edge_orientation() @@ -488,7 +488,7 @@ def test_edge_orientation_on_vertex( @pytest.mark.datatest def test_dual_area( grid_savepoint: serialbox.IconGridSavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend, ) -> None: expected = grid_savepoint.vertex_dual_area() @@ -501,7 +501,7 @@ def test_dual_area( @pytest.mark.datatest def test_edge_cell_distance( grid_savepoint: serialbox.IconGridSavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend, ) -> None: expected = grid_savepoint.edge_cell_length() @@ -517,7 +517,7 @@ def test_edge_cell_distance( @pytest.mark.datatest def test_cell_normal_orientation( grid_savepoint: serialbox.IconGridSavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend, ) -> None: expected = grid_savepoint.edge_orientation() @@ -531,7 +531,7 @@ def test_cell_normal_orientation( @pytest.mark.datatest def test_edge_vertex_distance( grid_savepoint: serialbox.IconGridSavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend, ) -> None: expected = grid_savepoint.edge_vert_length() diff --git a/model/common/tests/common/grid/unit_tests/test_gridfile.py b/model/common/tests/common/grid/unit_tests/test_gridfile.py index a5514810a2..e5964e3370 100644 --- a/model/common/tests/common/grid/unit_tests/test_gridfile.py +++ b/model/common/tests/common/grid/unit_tests/test_gridfile.py @@ -54,7 +54,7 @@ def test_grid_file_dimension() -> None: @pytest.mark.datatest @pytest.mark.with_netcdf def test_grid_file_vertex_cell_edge_dimensions( - experiment: definitions.Experiment, grid_savepoint: serialbox.IconGridSavepoint + experiment: definitions.ExperimentDescription, grid_savepoint: serialbox.IconGridSavepoint ) -> None: file = gridtest_utils.resolve_full_grid_file_name(experiment.grid) parser = gridfile.GridFile(str(file)) diff --git a/model/common/tests/common/grid/unit_tests/test_icon.py b/model/common/tests/common/grid/unit_tests/test_icon.py index 0099f0725a..aa961e2fae 100644 --- a/model/common/tests/common/grid/unit_tests/test_icon.py +++ b/model/common/tests/common/grid/unit_tests/test_icon.py @@ -42,7 +42,7 @@ @pytest.fixture(scope="module") -def experiment() -> definitions.Experiment: +def experiment() -> definitions.ExperimentDescription: """The module uses hard-coded references for the MCH_CH_R04B09 experiment.""" return definitions.Experiments.MCH_CH_R04B09 diff --git a/model/common/tests/common/grid/unit_tests/test_vertical.py b/model/common/tests/common/grid/unit_tests/test_vertical.py index b9df2e773d..ec937db242 100644 --- a/model/common/tests/common/grid/unit_tests/test_vertical.py +++ b/model/common/tests/common/grid/unit_tests/test_vertical.py @@ -103,7 +103,7 @@ def test_damping_layer_calculation_from_icon_input( @pytest.mark.datatest def test_grid_size( - experiment: definitions.Experiment, grid_savepoint: sb.IconGridSavepoint + experiment: definitions.ExperimentDescription, grid_savepoint: sb.IconGridSavepoint ) -> None: config = v_grid.VerticalGridConfig(num_levels=grid_savepoint.num(dims.KDim)) vertical_grid = v_grid.VerticalGrid( @@ -269,7 +269,7 @@ def test_grid_index_flat( @pytest.mark.parametrize("offset", offsets()) def test_grid_index_bottom( grid_savepoint: sb.IconGridSavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, dim: gtx.Dimension, offset: int, ) -> None: @@ -287,7 +287,7 @@ def test_grid_index_bottom( @pytest.mark.parametrize("offset", offsets()) def test_grid_index_raises_if_index_above_num_levels( grid_savepoint: sb.IconGridSavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, zone: v_grid.Zone, dim: gtx.Dimension, offset: int, @@ -307,7 +307,7 @@ def test_grid_index_raises_if_index_above_num_levels( @pytest.mark.parametrize("offset", offsets()) def test_grid_index_raises_if_index_below_zero( grid_savepoint: sb.IconGridSavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, zone: v_grid.Zone, dim: gtx.Dimension, offset: int, @@ -366,7 +366,7 @@ def test_compute_vertical_coordinate( topography_savepoint: sb.TopographySavepoint, interpolation_savepoint: sb.InterpolationSavepoint, icon_grid: base_grid.Grid, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, model_top_height: float, backend: gtx_typing.Backend, ) -> None: diff --git a/model/common/tests/common/interpolation/mpi_tests/test_parallel_interpolation.py b/model/common/tests/common/interpolation/mpi_tests/test_parallel_interpolation.py index e605ee4cad..d241059b8c 100644 --- a/model/common/tests/common/interpolation/mpi_tests/test_parallel_interpolation.py +++ b/model/common/tests/common/interpolation/mpi_tests/test_parallel_interpolation.py @@ -65,7 +65,7 @@ def test_distributed_interpolation_with_custom_tolerance( backend: gtx_typing.Backend, interpolation_savepoint: sb.InterpolationSavepoint, grid_savepoint: sb.IconGridSavepoint, - experiment: test_defs.Experiment, + experiment: test_defs.ExperimentDescription, processor_props: decomposition.ProcessProperties, decomposition_info: decomposition.DecompositionInfo, interpolation_factory_from_savepoint: interpolation_factory.InterpolationFieldsFactory, @@ -104,7 +104,7 @@ def test_distributed_interpolation_fields( backend: gtx_typing.Backend, interpolation_savepoint: sb.InterpolationSavepoint, grid_savepoint: sb.IconGridSavepoint, - experiment: test_defs.Experiment, + experiment: test_defs.ExperimentDescription, processor_props: decomposition.ProcessProperties, decomposition_info: decomposition.DecompositionInfo, interpolation_factory_from_savepoint: interpolation_factory.InterpolationFieldsFactory, @@ -127,7 +127,7 @@ def test_distributed_interpolation_grg( backend: gtx_typing.Backend, interpolation_savepoint: sb.InterpolationSavepoint, grid_savepoint: sb.IconGridSavepoint, - experiment: test_defs.Experiment, + experiment: test_defs.ExperimentDescription, processor_props: decomposition.ProcessProperties, decomposition_info: decomposition.DecompositionInfo, interpolation_factory_from_savepoint: interpolation_factory.InterpolationFieldsFactory, @@ -161,7 +161,7 @@ def test_distributed_interpolation_geofac_rot( backend: gtx_typing.Backend, interpolation_savepoint: sb.InterpolationSavepoint, grid_savepoint: sb.IconGridSavepoint, - experiment: test_defs.Experiment, + experiment: test_defs.ExperimentDescription, processor_props: decomposition.ProcessProperties, decomposition_info: decomposition.DecompositionInfo, interpolation_factory_from_savepoint: interpolation_factory.InterpolationFieldsFactory, @@ -197,7 +197,7 @@ def test_distributed_interpolation_rbf( backend: gtx_typing.Backend, interpolation_savepoint: sb.InterpolationSavepoint, grid_savepoint: sb.IconGridSavepoint, - experiment: test_defs.Experiment, + experiment: test_defs.ExperimentDescription, processor_props: decomposition.ProcessProperties, decomposition_info: decomposition.DecompositionInfo, interpolation_factory_from_savepoint: interpolation_factory.InterpolationFieldsFactory, @@ -223,7 +223,7 @@ def test_distributed_interpolation_lsq_pseudoinv( backend: gtx_typing.Backend, interpolation_savepoint: sb.InterpolationSavepoint, grid_savepoint: sb.IconGridSavepoint, - experiment: test_defs.Experiment, + experiment: test_defs.ExperimentDescription, processor_props: decomposition.ProcessProperties, decomposition_info: decomposition.DecompositionInfo, interpolation_factory_from_savepoint: interpolation_factory.InterpolationFieldsFactory, diff --git a/model/common/tests/common/interpolation/unit_tests/test_interpolation_factory.py b/model/common/tests/common/interpolation/unit_tests/test_interpolation_factory.py index d62ccb3b52..f69a6d0aae 100644 --- a/model/common/tests/common/interpolation/unit_tests/test_interpolation_factory.py +++ b/model/common/tests/common/interpolation/unit_tests/test_interpolation_factory.py @@ -64,7 +64,7 @@ def _get_interpolation_factory( backend: gtx_typing.Backend | None, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, ) -> interpolation_factory.InterpolationFieldsFactory: registry_key = "_".join((experiment.name, data_alloc.backend_name(backend))) factory = interpolation_factories.get(registry_key) @@ -84,7 +84,7 @@ def _get_interpolation_factory( @pytest.mark.datatest def test_factory_raises_error_on_unknown_field( - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend | None, decomposition_info: decomposition.DecompositionInfo, ) -> None: @@ -105,7 +105,7 @@ def test_factory_raises_error_on_unknown_field( @pytest.mark.datatest def test_get_c_lin_e( interpolation_savepoint: serialbox.InterpolationSavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: field_ref = interpolation_savepoint.c_lin_e() @@ -120,7 +120,7 @@ def test_get_c_lin_e( @pytest.mark.datatest def test_get_geofac_div( interpolation_savepoint: serialbox.InterpolationSavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: field_ref = interpolation_savepoint.geofac_div() @@ -134,7 +134,7 @@ def test_get_geofac_div( @pytest.mark.datatest def test_get_geofac_grdiv( interpolation_savepoint: serialbox.InterpolationSavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: field_ref = interpolation_savepoint.geofac_grdiv() @@ -148,7 +148,7 @@ def test_get_geofac_grdiv( @pytest.mark.datatest def test_get_geofac_rot( interpolation_savepoint: serialbox.InterpolationSavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: field_ref = interpolation_savepoint.geofac_rot() @@ -166,7 +166,7 @@ def test_get_geofac_rot( @pytest.mark.datatest def test_get_geofac_n2s( interpolation_savepoint: serialbox.InterpolationSavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: field_ref = interpolation_savepoint.geofac_n2s() @@ -181,7 +181,7 @@ def test_get_geofac_n2s( @pytest.mark.datatest def test_get_geofac_grg( interpolation_savepoint: serialbox.InterpolationSavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: field_ref = interpolation_savepoint.geofac_grg() @@ -200,7 +200,7 @@ def test_get_geofac_grg( @pytest.mark.datatest def test_get_mass_conserving_cell_average_weight( interpolation_savepoint: serialbox.InterpolationSavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: field_ref = interpolation_savepoint.c_bln_avg() @@ -216,7 +216,7 @@ def test_get_mass_conserving_cell_average_weight( @pytest.mark.datatest def test_e_flx_avg( interpolation_savepoint: serialbox.InterpolationSavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: field_ref = interpolation_savepoint.e_flx_avg() @@ -239,7 +239,7 @@ def test_e_flx_avg( @pytest.mark.datatest def test_e_bln_c_s( interpolation_savepoint: serialbox.InterpolationSavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend | None, rtol: float, ) -> None: @@ -255,7 +255,7 @@ def test_e_bln_c_s( @pytest.mark.datatest def test_pos_on_tplane_e_x_y( interpolation_savepoint: serialbox.InterpolationSavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: field_ref_1 = interpolation_savepoint.pos_on_tplane_e_x() @@ -271,7 +271,7 @@ def test_pos_on_tplane_e_x_y( @pytest.mark.datatest def test_cells_aw_verts( interpolation_savepoint: serialbox.InterpolationSavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: field_ref = interpolation_savepoint.c_intp() @@ -287,7 +287,7 @@ def test_cells_aw_verts( @pytest.mark.datatest def test_nudgecoeffs( interpolation_savepoint: serialbox.InterpolationSavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: field_ref = interpolation_savepoint.nudgecoeff_e() @@ -301,7 +301,7 @@ def test_nudgecoeffs( @pytest.mark.datatest def test_rbf_interpolation_coeffs_cell( interpolation_savepoint: serialbox.InterpolationSavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: field_ref_c1 = interpolation_savepoint.rbf_vec_coeff_c1() @@ -330,7 +330,7 @@ def test_rbf_interpolation_coeffs_cell( @pytest.mark.datatest def test_rbf_interpolation_coeffs_edge( interpolation_savepoint: serialbox.InterpolationSavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: field_ref_e = interpolation_savepoint.rbf_vec_coeff_e() @@ -351,7 +351,7 @@ def test_rbf_interpolation_coeffs_edge( @pytest.mark.datatest def test_rbf_interpolation_coeffs_vertex( interpolation_savepoint: serialbox.InterpolationSavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: field_ref_v1 = interpolation_savepoint.rbf_vec_coeff_v1() diff --git a/model/common/tests/common/interpolation/unit_tests/test_interpolation_fields.py b/model/common/tests/common/interpolation/unit_tests/test_interpolation_fields.py index e33277a4bb..9cd190fe76 100644 --- a/model/common/tests/common/interpolation/unit_tests/test_interpolation_fields.py +++ b/model/common/tests/common/interpolation/unit_tests/test_interpolation_fields.py @@ -92,7 +92,7 @@ def test_compute_c_lin_e( @pytest.mark.embedded_only @pytest.mark.datatest def test_compute_geofac_div( - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, grid_savepoint: sb.IconGridSavepoint, interpolation_savepoint: sb.InterpolationSavepoint, icon_grid: base_grid.Grid, @@ -117,7 +117,7 @@ def test_compute_geofac_div( @pytest.mark.embedded_only @pytest.mark.datatest def test_compute_geofac_rot( - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, grid_savepoint: sb.IconGridSavepoint, interpolation_savepoint: sb.InterpolationSavepoint, icon_grid: base_grid.Grid, diff --git a/model/common/tests/common/interpolation/unit_tests/test_rbf_interpolation.py b/model/common/tests/common/interpolation/unit_tests/test_rbf_interpolation.py index c6bfb0000b..453d16fefe 100644 --- a/model/common/tests/common/interpolation/unit_tests/test_rbf_interpolation.py +++ b/model/common/tests/common/interpolation/unit_tests/test_rbf_interpolation.py @@ -64,7 +64,7 @@ @pytest.mark.level("unit") @pytest.mark.datatest def test_construct_rbf_matrix_offsets_tables_for_cells( - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, grid_savepoint: serialbox.IconGridSavepoint, backend: gtx_typing.Backend | None, ) -> None: @@ -96,7 +96,7 @@ def test_construct_rbf_matrix_offsets_tables_for_cells( @pytest.mark.level("unit") @pytest.mark.datatest def test_construct_rbf_matrix_offsets_tables_for_edges( - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, grid_savepoint: serialbox.IconGridSavepoint, backend: gtx_typing.Backend | None, ) -> None: @@ -126,7 +126,7 @@ def test_construct_rbf_matrix_offsets_tables_for_edges( @pytest.mark.level("unit") @pytest.mark.datatest def test_construct_rbf_matrix_offsets_tables_for_vertices( - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, grid_savepoint: serialbox.IconGridSavepoint, backend: gtx_typing.Backend | None, ) -> None: @@ -163,7 +163,7 @@ def test_rbf_interpolation_coeffs_cell( grid_savepoint: serialbox.IconGridSavepoint, interpolation_savepoint: serialbox.IconGridSavepoint, backend: gtx_typing.Backend | None, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, ) -> None: geometry = gridtest_utils.get_grid_geometry(backend, experiment) grid = geometry.grid @@ -240,7 +240,7 @@ def test_rbf_interpolation_coeffs_vertex( grid_savepoint: serialbox.IconGridSavepoint, interpolation_savepoint: serialbox.IconGridSavepoint, backend: gtx_typing.Backend | None, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, ) -> None: geometry = gridtest_utils.get_grid_geometry(backend, experiment) grid = geometry.grid @@ -317,7 +317,7 @@ def test_rbf_interpolation_coeffs_edge( grid_savepoint: serialbox.IconGridSavepoint, interpolation_savepoint: serialbox.IconGridSavepoint, backend: gtx_typing.Backend | None, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, ) -> None: geometry = gridtest_utils.get_grid_geometry(backend, experiment) grid = geometry.grid diff --git a/model/common/tests/common/metrics/mpi_tests/test_parallel_metrics.py b/model/common/tests/common/metrics/mpi_tests/test_parallel_metrics.py index a3c37dfdc9..779fa8374a 100644 --- a/model/common/tests/common/metrics/mpi_tests/test_parallel_metrics.py +++ b/model/common/tests/common/metrics/mpi_tests/test_parallel_metrics.py @@ -65,7 +65,7 @@ def test_distributed_metrics_attrs( metrics_factory_from_savepoint: metrics_factory.MetricsFieldsFactory, attrs_name: str, metrics_name: str, - experiment: test_defs.Experiment, + experiment: test_defs.ExperimentDescription, ) -> None: if test_utils.is_embedded(backend) and metrics_name == "ddqz_z_half": pytest.xfail("Embedded backend does not support concat_where") @@ -118,7 +118,7 @@ def test_distributed_metrics_attrs_no_halo( metrics_factory_from_savepoint: metrics_factory.MetricsFieldsFactory, attrs_name: str, metrics_name: str, - experiment: test_defs.Experiment, + experiment: test_defs.ExperimentDescription, ) -> None: parallel_helpers.check_comm_size(processor_props) parallel_helpers.log_process_properties(processor_props) @@ -151,7 +151,7 @@ def test_distributed_metrics_attrs_no_halo_regional( metrics_factory_from_savepoint: metrics_factory.MetricsFieldsFactory, attrs_name: str, metrics_name: str, - experiment: test_defs.Experiment, + experiment: test_defs.ExperimentDescription, ) -> None: if test_utils.is_embedded(backend): # https://github.com/GridTools/gt4py/issues/1583 @@ -178,7 +178,7 @@ def test_distributed_metrics_wgtfacq_e( processor_props: decomposition.ProcessProperties, decomposition_info: decomposition.DecompositionInfo, metrics_factory_from_savepoint: metrics_factory.MetricsFieldsFactory, - experiment: test_defs.Experiment, + experiment: test_defs.ExperimentDescription, ) -> None: parallel_helpers.check_comm_size(processor_props) parallel_helpers.log_process_properties(processor_props) @@ -199,7 +199,7 @@ def test_distributed_metrics_nflat_gradp( processor_props: decomposition.ProcessProperties, decomposition_info: decomposition.DecompositionInfo, metrics_factory_from_savepoint: metrics_factory.MetricsFieldsFactory, - experiment: test_defs.Experiment, + experiment: test_defs.ExperimentDescription, ) -> None: parallel_helpers.check_comm_size(processor_props) parallel_helpers.log_process_properties(processor_props) diff --git a/model/common/tests/common/metrics/unit_tests/test_compute_diffusion_metrics.py b/model/common/tests/common/metrics/unit_tests/test_compute_diffusion_metrics.py index 943a844aac..0c13e081d4 100644 --- a/model/common/tests/common/metrics/unit_tests/test_compute_diffusion_metrics.py +++ b/model/common/tests/common/metrics/unit_tests/test_compute_diffusion_metrics.py @@ -50,7 +50,7 @@ @pytest.mark.datatest def test_compute_diffusion_mask_and_coeff( metrics_savepoint: sb.MetricSavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, interpolation_savepoint: sb.InterpolationSavepoint, icon_grid: base_grid.Grid, grid_savepoint: sb.IconGridSavepoint, @@ -134,7 +134,7 @@ def test_compute_diffusion_mask_and_coeff( @pytest.mark.datatest def test_compute_diffusion_intcoef_and_vertoffset( metrics_savepoint: sb.MetricSavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, interpolation_savepoint: sb.InterpolationSavepoint, icon_grid: base_grid.Grid, grid_savepoint: sb.IconGridSavepoint, diff --git a/model/common/tests/common/metrics/unit_tests/test_metric_fields.py b/model/common/tests/common/metrics/unit_tests/test_metric_fields.py index 70c4fe16af..67e6daf17a 100644 --- a/model/common/tests/common/metrics/unit_tests/test_metric_fields.py +++ b/model/common/tests/common/metrics/unit_tests/test_metric_fields.py @@ -137,7 +137,7 @@ def test_compute_scaling_factor_for_3d_divdamp( @pytest.mark.datatest def test_compute_rayleigh_w( icon_grid: base_grid.Grid, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, metrics_savepoint: sb.MetricSavepoint, grid_savepoint: sb.IconGridSavepoint, backend: gtx_typing.Backend, @@ -238,7 +238,7 @@ def test_compute_exner_exfac( grid_savepoint: sb.IconGridSavepoint, icon_grid: base_grid.Grid, metrics_savepoint: sb.MetricSavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend, ) -> None: horizontal_start = icon_grid.start_index(cell_domain(horizontal.Zone.LATERAL_BOUNDARY_LEVEL_2)) @@ -288,7 +288,7 @@ def test_compute_exner_w_implicit_weight_parameter( grid_savepoint: sb.IconGridSavepoint, metrics_savepoint: sb.MetricSavepoint, interpolation_savepoint: sb.InterpolationSavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend, ) -> None: z_ifc = metrics_savepoint.z_ifc() diff --git a/model/common/tests/common/metrics/unit_tests/test_metrics_factory.py b/model/common/tests/common/metrics/unit_tests/test_metrics_factory.py index d86d24008d..69cd9a13de 100644 --- a/model/common/tests/common/metrics/unit_tests/test_metrics_factory.py +++ b/model/common/tests/common/metrics/unit_tests/test_metrics_factory.py @@ -44,7 +44,7 @@ def _get_metrics_factory( backend: gtx_typing.Backend | None, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, grid_savepoint: serialbox.IconGridSavepoint, topography_savepoint: serialbox.TopographySavepoint, exchange: decomposition.ExchangeRuntime = decomposition.single_node_default, @@ -113,7 +113,7 @@ def _get_metrics_factory( def test_factory_nflat_gradp( grid_savepoint: serialbox.IconGridSavepoint, topography_savepoint: serialbox.TopographySavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: value_ref = grid_savepoint.nflat_gradp() @@ -133,7 +133,7 @@ def test_factory_z_mc( grid_savepoint: serialbox.IconGridSavepoint, metrics_savepoint: serialbox.MetricSavepoint, topography_savepoint: serialbox.TopographySavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: field_ref = metrics_savepoint.z_mc() @@ -153,7 +153,7 @@ def test_factory_ddqz_z_and_inverse( grid_savepoint: serialbox.IconGridSavepoint, metrics_savepoint: serialbox.MetricSavepoint, topography_savepoint: serialbox.TopographySavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: inverse_field_ref = metrics_savepoint.inv_ddqz_z_full() @@ -175,7 +175,7 @@ def test_factory_ddqz_full_e( grid_savepoint: serialbox.IconGridSavepoint, metrics_savepoint: serialbox.MetricSavepoint, topography_savepoint: serialbox.TopographySavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: field_ref = metrics_savepoint.ddqz_z_full_e().asnumpy() @@ -196,7 +196,7 @@ def test_factory_ddqz_z_half( grid_savepoint: serialbox.IconGridSavepoint, metrics_savepoint: serialbox.MetricSavepoint, topography_savepoint: serialbox.TopographySavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: field_ref = metrics_savepoint.ddqz_z_half() @@ -216,7 +216,7 @@ def test_factory_scaling_factor_for_3d_divdamp( grid_savepoint: serialbox.IconGridSavepoint, metrics_savepoint: serialbox.MetricSavepoint, topography_savepoint: serialbox.TopographySavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: field_ref = metrics_savepoint.scalfac_dd3d() @@ -236,7 +236,7 @@ def test_factory_rayleigh_w( grid_savepoint: serialbox.IconGridSavepoint, metrics_savepoint: serialbox.MetricSavepoint, topography_savepoint: serialbox.TopographySavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: field_ref = metrics_savepoint.rayleigh_w() @@ -256,7 +256,7 @@ def test_factory_coeffs_dwdz( grid_savepoint: serialbox.IconGridSavepoint, metrics_savepoint: serialbox.MetricSavepoint, topography_savepoint: serialbox.TopographySavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: field_ref_1 = metrics_savepoint.coeff1_dwdz() @@ -279,7 +279,7 @@ def test_factory_ref_mc( grid_savepoint: serialbox.IconGridSavepoint, metrics_savepoint: serialbox.MetricSavepoint, topography_savepoint: serialbox.TopographySavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: field_ref_1 = metrics_savepoint.theta_ref_mc() @@ -302,7 +302,7 @@ def test_factory_d2dexdz2_facs_mc( grid_savepoint: serialbox.IconGridSavepoint, metrics_savepoint: serialbox.MetricSavepoint, topography_savepoint: serialbox.TopographySavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: field_ref_1 = metrics_savepoint.d2dexdz2_fac1_mc() @@ -324,7 +324,7 @@ def test_factory_ddxn_z_full( grid_savepoint: serialbox.IconGridSavepoint, metrics_savepoint: serialbox.MetricSavepoint, topography_savepoint: serialbox.TopographySavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: field_ref = metrics_savepoint.ddxn_z_full() @@ -344,7 +344,7 @@ def test_factory_ddxt_z_full( grid_savepoint: serialbox.IconGridSavepoint, metrics_savepoint: serialbox.MetricSavepoint, topography_savepoint: serialbox.TopographySavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: field_ref = metrics_savepoint.ddxt_z_full().asnumpy() @@ -365,7 +365,7 @@ def test_factory_exner_w_implicit_weight_parameter( grid_savepoint: serialbox.IconGridSavepoint, metrics_savepoint: serialbox.MetricSavepoint, topography_savepoint: serialbox.TopographySavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: field_ref = metrics_savepoint.vwind_impl_wgt() @@ -385,7 +385,7 @@ def test_factory_exner_w_explicit_weight_parameter( grid_savepoint: serialbox.IconGridSavepoint, metrics_savepoint: serialbox.MetricSavepoint, topography_savepoint: serialbox.TopographySavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: field_ref = metrics_savepoint.vwind_expl_wgt() @@ -406,7 +406,7 @@ def test_factory_exner_exfac( grid_savepoint: serialbox.IconGridSavepoint, metrics_savepoint: serialbox.MetricSavepoint, topography_savepoint: serialbox.TopographySavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: field_ref = metrics_savepoint.exner_exfac() @@ -427,7 +427,7 @@ def test_factory_pressure_gradient_fields( grid_savepoint: serialbox.IconGridSavepoint, metrics_savepoint: serialbox.MetricSavepoint, topography_savepoint: serialbox.TopographySavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: field_1_ref = metrics_savepoint.pg_exdist() @@ -449,7 +449,7 @@ def test_factory_mask_prog_halo_c( grid_savepoint: serialbox.IconGridSavepoint, metrics_savepoint: serialbox.MetricSavepoint, topography_savepoint: serialbox.TopographySavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: field_ref = metrics_savepoint.mask_prog_halo_c() @@ -469,7 +469,7 @@ def test_factory_horizontal_mask_for_3d_divdamp( grid_savepoint: serialbox.IconGridSavepoint, metrics_savepoint: serialbox.MetricSavepoint, topography_savepoint: serialbox.TopographySavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: field_ref = metrics_savepoint.hmask_dd3d() @@ -491,7 +491,7 @@ def test_factory_zdiff_gradp( grid_savepoint: serialbox.IconGridSavepoint, metrics_savepoint: serialbox.MetricSavepoint, topography_savepoint: serialbox.TopographySavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: zdiff_gradp_ref = metrics_savepoint.zdiff_gradp() @@ -518,7 +518,7 @@ def test_factory_coeff_gradekin( grid_savepoint: serialbox.IconGridSavepoint, metrics_savepoint: serialbox.MetricSavepoint, topography_savepoint: serialbox.TopographySavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: field_ref = metrics_savepoint.coeff_gradekin() @@ -538,7 +538,7 @@ def test_factory_wgtfacq_e( grid_savepoint: serialbox.IconGridSavepoint, metrics_savepoint: serialbox.MetricSavepoint, topography_savepoint: serialbox.TopographySavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: factory = _get_metrics_factory( @@ -558,7 +558,7 @@ def test_vertical_coordinates_on_half_levels( grid_savepoint: serialbox.IconGridSavepoint, metrics_savepoint: serialbox.MetricSavepoint, topography_savepoint: serialbox.TopographySavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: factory = _get_metrics_factory( @@ -579,7 +579,7 @@ def test_compute_wgtfac_c( grid_savepoint: serialbox.IconGridSavepoint, metrics_savepoint: serialbox.MetricSavepoint, topography_savepoint: serialbox.TopographySavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: factory = _get_metrics_factory( @@ -600,7 +600,7 @@ def test_factory_compute_diffusion_mask_and_coef( grid_savepoint: serialbox.IconGridSavepoint, metrics_savepoint: serialbox.MetricSavepoint, topography_savepoint: serialbox.TopographySavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: field_ref_1 = metrics_savepoint.mask_hdiff() @@ -625,7 +625,7 @@ def test_factory_compute_diffusion_intcoeff_and_vertoffset( grid_savepoint: serialbox.IconGridSavepoint, metrics_savepoint: serialbox.MetricSavepoint, topography_savepoint: serialbox.TopographySavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: field_ref_1 = metrics_savepoint.zd_intcoef() diff --git a/model/common/tests/common/states/unit_tests/test_factory.py b/model/common/tests/common/states/unit_tests/test_factory.py index 12067e9818..19b779b22a 100644 --- a/model/common/tests/common/states/unit_tests/test_factory.py +++ b/model/common/tests/common/states/unit_tests/test_factory.py @@ -132,7 +132,7 @@ def cell_coordinate_source( def height_coordinate_source( metrics_savepoint: sb.MetricSavepoint, grid_savepoint: sb.IconGridSavepoint, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend, ) -> Generator[SimpleFieldSource, None, None]: grid = grid_savepoint.construct_icon_grid(backend=backend) diff --git a/model/common/tests/common/topography/test_jablonowski_williamson_topography.py b/model/common/tests/common/topography/test_jablonowski_williamson_topography.py index 86bc5c3282..af5aa6e950 100644 --- a/model/common/tests/common/topography/test_jablonowski_williamson_topography.py +++ b/model/common/tests/common/topography/test_jablonowski_williamson_topography.py @@ -30,7 +30,7 @@ @pytest.mark.embedded_remap_error @pytest.mark.parametrize("experiment", [definitions.Experiments.JW]) def test_jablonowski_williamson_topography( - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend | None, grid_savepoint: sb.IconGridSavepoint, topography_savepoint: sb.TopographySavepoint, diff --git a/model/driver/tests/driver/integration_tests/test_gauss3d.py b/model/driver/tests/driver/integration_tests/test_gauss3d.py index 443edb8c86..d4b47bb5dc 100644 --- a/model/driver/tests/driver/integration_tests/test_gauss3d.py +++ b/model/driver/tests/driver/integration_tests/test_gauss3d.py @@ -36,7 +36,7 @@ ], ) def test_gauss3d_initial_condition( - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, processor_props: decomposition.ProcessProperties, backend: gtx_typing.Backend, rank: int, diff --git a/model/driver/tests/driver/integration_tests/test_icon4py.py b/model/driver/tests/driver/integration_tests/test_icon4py.py index 32dbcf8bf5..78e8584c98 100644 --- a/model/driver/tests/driver/integration_tests/test_icon4py.py +++ b/model/driver/tests/driver/integration_tests/test_icon4py.py @@ -85,7 +85,7 @@ ], ) def test_run_timeloop_single_step( - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, timeloop_date_init: str, timeloop_date_exit: str, timeloop_diffusion_linit_init: bool, diff --git a/model/driver/tests/driver/integration_tests/test_jablonowski_williamson.py b/model/driver/tests/driver/integration_tests/test_jablonowski_williamson.py index 1a9b11519e..a3b9738491 100644 --- a/model/driver/tests/driver/integration_tests/test_jablonowski_williamson.py +++ b/model/driver/tests/driver/integration_tests/test_jablonowski_williamson.py @@ -33,7 +33,7 @@ @pytest.mark.datatest @pytest.mark.parametrize("experiment, rank", [(definitions.Experiments.JW, 0)]) def test_jabw_initial_condition( - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, processor_props: decomposition.ProcessProperties, backend: gtx_typing.Backend, rank: int, diff --git a/model/driver/tests/driver/utils.py b/model/driver/tests/driver/utils.py index ffd0b9dbad..38d63eeaf9 100644 --- a/model/driver/tests/driver/utils.py +++ b/model/driver/tests/driver/utils.py @@ -63,7 +63,7 @@ def exclaim_ape_icon4pyrun_config( def construct_icon4pyrun_config( - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, date_init: str, date_exit: str, diffusion_linit_init: bool, diff --git a/model/testing/src/icon4py/model/testing/datatest_utils.py b/model/testing/src/icon4py/model/testing/datatest_utils.py index 0f84e212c6..0f9e0b5c15 100644 --- a/model/testing/src/icon4py/model/testing/datatest_utils.py +++ b/model/testing/src/icon4py/model/testing/datatest_utils.py @@ -25,19 +25,19 @@ def get_processor_properties_for_run( return decomposition.get_processor_properties(run_instance) -def get_experiment_name_with_version(experiment: definitions.Experiment) -> str: +def get_experiment_name_with_version(experiment: definitions.ExperimentDescription) -> str: """Generate experiment name with version suffix.""" return f"{experiment.name}_v{experiment.version:02d}" def get_ranked_experiment_name_with_version( - experiment: definitions.Experiment, comm_size: int + experiment: definitions.ExperimentDescription, comm_size: int ) -> str: """Generate ranked experiment name with version suffix.""" return f"mpitask{comm_size}_{get_experiment_name_with_version(experiment)}" -def get_experiment_archive_filename(experiment: definitions.Experiment, comm_size: int) -> str: +def get_experiment_archive_filename(experiment: definitions.ExperimentDescription, comm_size: int) -> str: """Generate ranked archive filename for an experiment.""" return f"{get_ranked_experiment_name_with_version(experiment, comm_size)}.tar.gz" @@ -48,7 +48,7 @@ def get_serialized_data_url(root_url: str, filepath: str) -> str: def get_datapath_for_experiment( - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, processor_props: decomposition.ProcessProperties, ) -> pathlib.Path: """Get the path to serialized data for an experiment.""" @@ -92,7 +92,7 @@ def _read_namelist_json(json_file_path: pathlib.Path) -> dict: def create_experiment_configuration( - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, processor_props: decomposition.ProcessProperties, ) -> tuple: """ diff --git a/model/testing/src/icon4py/model/testing/definitions.py b/model/testing/src/icon4py/model/testing/definitions.py index 9112119b5f..2d72a43f34 100644 --- a/model/testing/src/icon4py/model/testing/definitions.py +++ b/model/testing/src/icon4py/model/testing/definitions.py @@ -190,7 +190,7 @@ class Grids: @dataclasses.dataclass -class Experiment: +class ExperimentDescription: name: str description: str grid: GridDescription @@ -199,31 +199,31 @@ class Experiment: class Experiments: - EXCLAIM_APE: Final = Experiment( + EXCLAIM_APE: Final = ExperimentDescription( name="exclaim_ape_R02B04", description="EXCLAIM Aquaplanet experiment", grid=Grids.R02B04_GLOBAL, num_levels=60, ) - MCH_CH_R04B09: Final = Experiment( + MCH_CH_R04B09: Final = ExperimentDescription( name="exclaim_ch_r04b09_dsl", description="Regional setup used by EXCLAIM to validate the icon-exclaim.", grid=Grids.MCH_CH_R04B09_DSL, num_levels=65, ) - JW: Final = Experiment( + JW: Final = ExperimentDescription( name="exclaim_nh35_tri_jws", description="Jablonowski Williamson atmospheric test case", grid=Grids.R02B04_GLOBAL, num_levels=35, ) - GAUSS3D: Final = Experiment( + GAUSS3D: Final = ExperimentDescription( name="exclaim_gauss3d", description="Gauss 3d test case", grid=Grids.TORUS_50000x5000, num_levels=35, ) - WEISMAN_KLEMP_TORUS: Final = Experiment( + WEISMAN_KLEMP_TORUS: Final = ExperimentDescription( name="exclaim_nh_weisman_klemp", description="Weisman-Klemp experiment on Torus Grid", grid=Grids.TORUS_50000x5000, @@ -233,7 +233,7 @@ class Experiments: # TODO(havogt): the following configs should be part of the serialized experiment def construct_diffusion_config( - experiment: Experiment, ndyn_substeps: int = 5 + experiment: ExperimentDescription, ndyn_substeps: int = 5 ) -> diffusion.DiffusionConfig: from icon4py.model.atmosphere.diffusion import diffusion @@ -278,7 +278,7 @@ def construct_diffusion_config( ) -def construct_nonhydrostatic_config(experiment: Experiment) -> solve_nh.NonHydrostaticConfig: +def construct_nonhydrostatic_config(experiment: ExperimentDescription) -> solve_nh.NonHydrostaticConfig: from icon4py.model.atmosphere.dycore import dycore_states, solve_nonhydro as solve_nh if experiment == Experiments.MCH_CH_R04B09: @@ -303,7 +303,7 @@ def construct_nonhydrostatic_config(experiment: Experiment) -> solve_nh.NonHydro ) -def construct_metrics_config(experiment: Experiment) -> tuple: +def construct_metrics_config(experiment: ExperimentDescription) -> tuple: match experiment: case Experiments.MCH_CH_R04B09: lowest_layer_thickness = 20.0 diff --git a/model/testing/src/icon4py/model/testing/fixtures/datatest.py b/model/testing/src/icon4py/model/testing/fixtures/datatest.py index 72a9c934bf..7eef6d044a 100644 --- a/model/testing/src/icon4py/model/testing/fixtures/datatest.py +++ b/model/testing/src/icon4py/model/testing/fixtures/datatest.py @@ -87,7 +87,7 @@ def cpu_allocator() -> gtx_typing.Allocator: ], ids=lambda r: r.name, ) -def experiment(request: pytest.FixtureRequest) -> definitions.Experiment: +def experiment(request: pytest.FixtureRequest) -> definitions.ExperimentDescription: """Default parametrization for experiments. The default parametrization is often overwritten for specific tests.""" @@ -102,7 +102,7 @@ def processor_props(request: pytest.FixtureRequest) -> decomposition.ProcessProp def _download_ser_data( - _experiment: definitions.Experiment, + _experiment: definitions.ExperimentDescription, processor_props: decomposition.ProcessProperties, ) -> None: # not a fixture to be able to use this function outside of pytest @@ -124,7 +124,7 @@ def _download_ser_data( def download_ser_data( request: pytest.FixtureRequest, processor_props: decomposition.ProcessProperties, - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, pytestconfig: pytest.Config, ) -> None: """ @@ -142,7 +142,7 @@ def download_ser_data( @pytest.fixture def data_provider( download_ser_data: None, # downloads data as side-effect - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, processor_props: decomposition.ProcessProperties, backend: gtx_typing.Backend, ) -> serialbox.IconSerialDataProvider: @@ -152,7 +152,7 @@ def data_provider( @pytest.fixture def grid_savepoint( - data_provider: serialbox.IconSerialDataProvider, experiment: definitions.Experiment + data_provider: serialbox.IconSerialDataProvider, experiment: definitions.ExperimentDescription ) -> serialbox.IconGridSavepoint: return data_provider.from_savepoint_grid(experiment.name, experiment.grid.params) @@ -171,7 +171,7 @@ def icon_grid( @pytest.fixture def decomposition_info( - data_provider: serialbox.IconSerialDataProvider, experiment: definitions.Experiment + data_provider: serialbox.IconSerialDataProvider, experiment: definitions.ExperimentDescription ) -> decomposition.DecompositionInfo: return data_provider.from_savepoint_grid( grid_id=experiment.name, global_grid_params=experiment.grid.params @@ -179,7 +179,7 @@ def decomposition_info( @pytest.fixture -def ndyn_substeps(experiment: definitions.Experiment) -> int: +def ndyn_substeps(experiment: definitions.ExperimentDescription) -> int: """ Return number of dynamical substeps. @@ -500,7 +500,7 @@ def istep_exit() -> int: @pytest.fixture -def lowest_layer_thickness(experiment: definitions.Experiment) -> float: +def lowest_layer_thickness(experiment: definitions.ExperimentDescription) -> float: if experiment == definitions.Experiments.MCH_CH_R04B09: return 20.0 else: @@ -508,7 +508,7 @@ def lowest_layer_thickness(experiment: definitions.Experiment) -> float: @pytest.fixture -def model_top_height(experiment: definitions.Experiment) -> float: +def model_top_height(experiment: definitions.ExperimentDescription) -> float: if experiment == definitions.Experiments.MCH_CH_R04B09: return 23000.0 elif experiment == definitions.Experiments.EXCLAIM_APE: @@ -523,7 +523,7 @@ def flat_height() -> float: @pytest.fixture -def stretch_factor(experiment: definitions.Experiment) -> float: +def stretch_factor(experiment: definitions.ExperimentDescription) -> float: if experiment == definitions.Experiments.MCH_CH_R04B09: return 0.65 elif experiment == definitions.Experiments.EXCLAIM_APE: @@ -533,7 +533,7 @@ def stretch_factor(experiment: definitions.Experiment) -> float: @pytest.fixture -def damping_height(experiment: definitions.Experiment) -> float: +def damping_height(experiment: definitions.ExperimentDescription) -> float: if experiment == definitions.Experiments.MCH_CH_R04B09: return 12500.0 elif experiment == definitions.Experiments.EXCLAIM_APE: @@ -553,7 +553,7 @@ def maximal_layer_thickness() -> float: @pytest.fixture -def rayleigh_coeff(experiment: definitions.Experiment) -> float: +def rayleigh_coeff(experiment: definitions.ExperimentDescription) -> float: if experiment == definitions.Experiments.EXCLAIM_APE: return 0.1 else: @@ -561,7 +561,7 @@ def rayleigh_coeff(experiment: definitions.Experiment) -> float: @pytest.fixture -def exner_expol(experiment: definitions.Experiment) -> float: +def exner_expol(experiment: definitions.ExperimentDescription) -> float: if experiment == definitions.Experiments.EXCLAIM_APE: return 0.3333333333333 else: @@ -569,7 +569,7 @@ def exner_expol(experiment: definitions.Experiment) -> float: @pytest.fixture -def vwind_offctr(experiment: definitions.Experiment) -> float: +def vwind_offctr(experiment: definitions.ExperimentDescription) -> float: if experiment == definitions.Experiments.EXCLAIM_APE: return 0.15 else: diff --git a/model/testing/src/icon4py/model/testing/grid_utils.py b/model/testing/src/icon4py/model/testing/grid_utils.py index 653167a775..02a994d1ce 100644 --- a/model/testing/src/icon4py/model/testing/grid_utils.py +++ b/model/testing/src/icon4py/model/testing/grid_utils.py @@ -27,7 +27,7 @@ def get_grid_manager_from_experiment( - experiment: definitions.Experiment, + experiment: definitions.ExperimentDescription, keep_skip_values: bool, allocator: gtx_typing.Allocator, ) -> gm.GridManager: @@ -120,7 +120,7 @@ def _add_dimension(dim: gtx.Dimension) -> None: def get_grid_geometry( - backend: gtx_typing.Backend | None, experiment: definitions.Experiment + backend: gtx_typing.Backend | None, experiment: definitions.ExperimentDescription ) -> geometry.GridGeometry: register_name = "_".join((experiment.name, data_alloc.backend_name(backend))) diff --git a/scripts/run_serialization.py b/scripts/run_serialization.py index aeb1cc0776..c427d6d9ac 100644 --- a/scripts/run_serialization.py +++ b/scripts/run_serialization.py @@ -71,33 +71,33 @@ # ====================================== -def get_f90exp_name(experiment: definitions.Experiment) -> str: +def get_f90exp_name(experiment: definitions.ExperimentDescription) -> str: return f"{experiment.name}_sb" -def get_f90exp_dir(experiment: definitions.Experiment) -> Path: +def get_f90exp_dir(experiment: definitions.ExperimentDescription) -> Path: return EXPERIMENTS_DIR / get_f90exp_name(experiment) -def get_nmlfile_name(experiment: definitions.Experiment) -> str: +def get_nmlfile_name(experiment: definitions.ExperimentDescription) -> str: return f"exp.{get_f90exp_name(experiment)}" -def get_slurmscript_name(experiment: definitions.Experiment) -> str: +def get_slurmscript_name(experiment: definitions.ExperimentDescription) -> str: return f"{get_nmlfile_name(experiment)}.run" -def get_serdata_dst_dir(experiment: definitions.Experiment, comm_size: int) -> Path: +def get_serdata_dst_dir(experiment: definitions.ExperimentDescription, comm_size: int) -> Path: """Get the destination directory for serialized data.""" return OUTPUT_ROOT / dt_utils.get_ranked_experiment_name_with_version(experiment, comm_size) -def get_tar_path(experiment: definitions.Experiment, comm_size: int) -> Path: +def get_tar_path(experiment: definitions.ExperimentDescription, comm_size: int) -> Path: """Get the path to the tar archive for the experiment.""" return OUTPUT_ROOT / dt_utils.get_experiment_archive_filename(experiment, comm_size) -def cleanup_exp_output(experiment: definitions.Experiment, comm_size: int) -> None: +def cleanup_exp_output(experiment: definitions.ExperimentDescription, comm_size: int) -> None: """Clean up experiment output directories and archives. Deletes: @@ -377,7 +377,7 @@ def copy_ser_data(experiment, comm_size: int, job_id: str | None = None) -> Path return dest_dir -def tar_folder(folder: Path, experiment: definitions.Experiment, comm_size: int) -> Path: +def tar_folder(folder: Path, experiment: definitions.ExperimentDescription, comm_size: int) -> Path: tar_path = get_tar_path(experiment, comm_size) with tarfile.open(tar_path, "w:gz") as tar: @@ -388,7 +388,7 @@ def tar_folder(folder: Path, experiment: definitions.Experiment, comm_size: int) return tar_path -def generate_update_script(experiment: definitions.Experiment) -> None: +def generate_update_script(experiment: definitions.ExperimentDescription) -> None: # copy namelist file from repo to build_dir shutil.copy2( ICONF90_DIR / "run" / get_nmlfile_name(experiment), @@ -400,7 +400,7 @@ def generate_update_script(experiment: definitions.Experiment) -> None: _ = run_command(cmd, cwd=BUILD_DIR) -def run_experiment(experiment: definitions.Experiment, comm_size: int) -> None: +def run_experiment(experiment: definitions.ExperimentDescription, comm_size: int) -> None: """Execute a single experiment with the given communicator size.""" try: # Clean up previous experiment output From 43a351b047c91a80bf6fa4595f7b94d886cd90cc Mon Sep 17 00:00:00 2001 From: Jacopo Date: Wed, 18 Mar 2026 14:53:56 +0100 Subject: [PATCH 7/9] might be the last incorrect one? --- .../test_single_moment_six_class_gscp_graupel.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/model/atmosphere/subgrid_scale_physics/microphysics/tests/microphysics/integration_tests/test_single_moment_six_class_gscp_graupel.py b/model/atmosphere/subgrid_scale_physics/microphysics/tests/microphysics/integration_tests/test_single_moment_six_class_gscp_graupel.py index 6c571a0e54..340b478a53 100644 --- a/model/atmosphere/subgrid_scale_physics/microphysics/tests/microphysics/integration_tests/test_single_moment_six_class_gscp_graupel.py +++ b/model/atmosphere/subgrid_scale_physics/microphysics/tests/microphysics/integration_tests/test_single_moment_six_class_gscp_graupel.py @@ -47,7 +47,7 @@ "date", ["2008-09-01T01:59:48.000", "2008-09-01T01:59:52.000", "2008-09-01T01:59:56.000"] ) def test_graupel( - experiment: definitions.Experiments, + experiment: definitions.ExperimentDescription, model_top_height: ta.wpfloat, date: str, *, From 4ab3f4932f6a44f09934745522dc803901d403d8 Mon Sep 17 00:00:00 2001 From: Jacopo Date: Wed, 18 Mar 2026 16:36:01 +0100 Subject: [PATCH 8/9] make imports consistent --- .github/validation_grid_utils.py | 10 +-- .../mpi_tests/test_parallel_diffusion.py | 22 +++--- ...ute_horizontal_gradients_for_turbulence.py | 1 - ...ate_nabla2_and_smag_coefficients_for_vn.py | 2 +- .../integration_tests/test_solve_nonhydro.py | 72 +++++++++---------- .../test_velocity_advection.py | 44 ++++++------ .../test_saturation_adjustment.py | 4 +- ...st_single_moment_six_class_gscp_graupel.py | 6 +- .../test_diagnostic_calculations.py | 12 ++-- .../grid/integration_tests/test_horizontal.py | 4 +- .../common/grid/unit_tests/test_geometry.py | 56 +++++++-------- .../grid/unit_tests/test_grid_manager.py | 64 ++++++++--------- .../common/grid/unit_tests/test_gridfile.py | 6 +- .../tests/common/grid/unit_tests/test_icon.py | 34 ++++----- .../common/grid/unit_tests/test_topography.py | 2 +- .../common/grid/unit_tests/test_vertical.py | 38 +++++----- model/common/tests/common/grid/utils.py | 10 +-- .../unit_tests/test_interpolation_fields.py | 6 +- .../tests/common/io/unit_tests/test_io.py | 6 +- .../tests/common/io/unit_tests/test_ugrid.py | 8 +-- model/common/tests/common/io/utils.py | 8 +-- .../test_compute_diffusion_metrics.py | 10 +-- .../test_compute_zdiff_gradp_dsl.py | 2 +- .../metrics/unit_tests/test_metric_fields.py | 16 ++--- .../common/states/unit_tests/test_factory.py | 4 +- .../test_jablonowski_williamson_topography.py | 6 +- .../driver/integration_tests/test_gauss3d.py | 6 +- .../driver/integration_tests/test_icon4py.py | 18 ++--- .../test_jablonowski_williamson.py | 6 +- model/driver/tests/driver/utils.py | 8 +-- .../test_standalone_driver.py | 4 +- .../icon4py/model/testing/datatest_utils.py | 20 +++--- .../model/testing/fixtures/datatest.py | 62 ++++++++-------- .../model/testing/fixtures/stencil_tests.py | 10 +-- .../src/icon4py/model/testing/grid_utils.py | 14 ++-- scripts/run_serialization.py | 40 +++++------ .../wrappers/test_diffusion_wrapper.py | 8 +-- .../py2fgen/wrappers/test_dycore_wrapper.py | 10 +-- 38 files changed, 329 insertions(+), 330 deletions(-) diff --git a/.github/validation_grid_utils.py b/.github/validation_grid_utils.py index 116f9b3b03..ed91f3898a 100755 --- a/.github/validation_grid_utils.py +++ b/.github/validation_grid_utils.py @@ -24,14 +24,14 @@ import typer -from icon4py.model.testing import definitions, grid_utils +from icon4py.model.testing import definitions as test_defs, grid_utils VALIDATION_GRIDS = ( - definitions.Grids.R02B04_GLOBAL, - definitions.Grids.MCH_CH_R04B09_DSL, - definitions.Grids.MCH_OPR_R04B07_DOMAIN01, - definitions.Grids.TORUS_50000x5000, + test_defs.Grids.R02B04_GLOBAL, + test_defs.Grids.MCH_CH_R04B09_DSL, + test_defs.Grids.MCH_OPR_R04B07_DOMAIN01, + test_defs.Grids.TORUS_50000x5000, ) # change to MCH_OPR_R04B07_DOMAIN01 app = typer.Typer() diff --git a/model/atmosphere/diffusion/tests/diffusion/mpi_tests/test_parallel_diffusion.py b/model/atmosphere/diffusion/tests/diffusion/mpi_tests/test_parallel_diffusion.py index 64b18f53b5..cf33dc8503 100644 --- a/model/atmosphere/diffusion/tests/diffusion/mpi_tests/test_parallel_diffusion.py +++ b/model/atmosphere/diffusion/tests/diffusion/mpi_tests/test_parallel_diffusion.py @@ -15,7 +15,7 @@ from icon4py.model.common import dimension as dims, type_alias as ta from icon4py.model.common.decomposition import definitions as decomposition, mpi_decomposition from icon4py.model.common.grid import icon, vertical as v_grid -from icon4py.model.testing import definitions, parallel_helpers, serialbox, test_utils +from icon4py.model.testing import definitions as test_defs, parallel_helpers, serialbox, test_utils from .. import utils from ..fixtures import * # noqa: F403 @@ -27,18 +27,18 @@ "experiment, step_date_init, step_date_exit", [ ( - definitions.Experiments.MCH_CH_R04B09, + test_defs.Experiments.MCH_CH_R04B09, "2021-06-20T12:00:10.000", "2021-06-20T12:00:10.000", ), - (definitions.Experiments.EXCLAIM_APE, "2000-01-01T00:00:02.000", "2000-01-01T00:00:02.000"), + (test_defs.Experiments.EXCLAIM_APE, "2000-01-01T00:00:02.000", "2000-01-01T00:00:02.000"), ], ) @pytest.mark.parametrize("ndyn_substeps", [2]) @pytest.mark.parametrize("orchestration", [False]) @pytest.mark.parametrize("processor_props", [True], indirect=True) def test_parallel_diffusion( - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, step_date_init: str, step_date_exit: str, linit: bool, @@ -64,7 +64,7 @@ def test_parallel_diffusion( caplog.set_level("INFO") parallel_helpers.check_comm_size(processor_props) print( - f"rank={processor_props.rank}/{processor_props.comm_size}: initializing diffusion for experiment '{definitions.Experiments.MCH_CH_R04B09}'" + f"rank={processor_props.rank}/{processor_props.comm_size}: initializing diffusion for experiment '{experiment}'" ) print( f"local cells = {decomposition_info.global_index(dims.CellDim, decomposition.DecompositionInfo.EntryType.ALL).shape} " @@ -78,7 +78,7 @@ def test_parallel_diffusion( print( f"rank={processor_props.rank}/{processor_props.comm_size}: using local grid with {icon_grid.num_cells} Cells, {icon_grid.num_edges} Edges, {icon_grid.num_vertices} Vertices" ) - config = definitions.construct_diffusion_config(experiment, ndyn_substeps=ndyn_substeps) + config = test_defs.construct_diffusion_config(experiment, ndyn_substeps=ndyn_substeps) dtime = savepoint_diffusion_init.get_metadata("dtime").get("dtime") print( f"rank={processor_props.rank}/{processor_props.comm_size}: setup: using {processor_props.comm_name} with {processor_props.comm_size} nodes" @@ -154,17 +154,17 @@ def test_parallel_diffusion( "experiment, step_date_init, step_date_exit", [ ( - definitions.Experiments.MCH_CH_R04B09, + test_defs.Experiments.MCH_CH_R04B09, "2021-06-20T12:00:10.000", "2021-06-20T12:00:10.000", ), - (definitions.Experiments.EXCLAIM_APE, "2000-01-01T00:00:02.000", "2000-01-01T00:00:02.000"), + (test_defs.Experiments.EXCLAIM_APE, "2000-01-01T00:00:02.000", "2000-01-01T00:00:02.000"), ], ) @pytest.mark.parametrize("ndyn_substeps", [2]) @pytest.mark.parametrize("processor_props", [True], indirect=True) def test_parallel_diffusion_multiple_steps( - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, step_date_init: str, step_date_exit: str, linit: bool, @@ -191,7 +191,7 @@ def test_parallel_diffusion_multiple_steps( caplog.set_level("INFO") parallel_helpers.check_comm_size(processor_props) print( - f"rank={processor_props.rank}/{processor_props.comm_size}: initializing diffusion for experiment '{definitions.Experiments.MCH_CH_R04B09}'" + f"rank={processor_props.rank}/{processor_props.comm_size}: initializing diffusion for experiment '{experiment}'" ) print( f"local cells = {decomposition_info.global_index(dims.CellDim, decomposition.DecompositionInfo.EntryType.ALL).shape} " @@ -215,7 +215,7 @@ def test_parallel_diffusion_multiple_steps( stretch_factor=stretch_factor, rayleigh_damping_height=damping_height, ) - config = definitions.construct_diffusion_config(experiment, ndyn_substeps=ndyn_substeps) + config = test_defs.construct_diffusion_config(experiment, ndyn_substeps=ndyn_substeps) diffusion_params = diffusion_.DiffusionParams(config) dtime = savepoint_diffusion_init.get_metadata("dtime").get("dtime") print( diff --git a/model/atmosphere/diffusion/tests/diffusion/stencil_tests/test_apply_diffusion_to_w_and_compute_horizontal_gradients_for_turbulence.py b/model/atmosphere/diffusion/tests/diffusion/stencil_tests/test_apply_diffusion_to_w_and_compute_horizontal_gradients_for_turbulence.py index 4e9652ac76..9f3b47855c 100644 --- a/model/atmosphere/diffusion/tests/diffusion/stencil_tests/test_apply_diffusion_to_w_and_compute_horizontal_gradients_for_turbulence.py +++ b/model/atmosphere/diffusion/tests/diffusion/stencil_tests/test_apply_diffusion_to_w_and_compute_horizontal_gradients_for_turbulence.py @@ -16,7 +16,6 @@ from icon4py.model.common import dimension as dims from icon4py.model.common.grid import base, horizontal as h_grid from icon4py.model.common.utils.data_allocation import random_field, zero_field -from icon4py.model.testing import definitions from icon4py.model.testing.stencil_tests import StandardStaticVariants, StencilTest from .test_apply_nabla2_to_w import apply_nabla2_to_w_numpy diff --git a/model/atmosphere/diffusion/tests/diffusion/stencil_tests/test_calculate_nabla2_and_smag_coefficients_for_vn.py b/model/atmosphere/diffusion/tests/diffusion/stencil_tests/test_calculate_nabla2_and_smag_coefficients_for_vn.py index e9cd84bde4..8844151f3e 100644 --- a/model/atmosphere/diffusion/tests/diffusion/stencil_tests/test_calculate_nabla2_and_smag_coefficients_for_vn.py +++ b/model/atmosphere/diffusion/tests/diffusion/stencil_tests/test_calculate_nabla2_and_smag_coefficients_for_vn.py @@ -16,7 +16,7 @@ from icon4py.model.common import dimension as dims, type_alias as ta from icon4py.model.common.grid import base, horizontal as h_grid from icon4py.model.common.utils import data_allocation as data_alloc -from icon4py.model.testing import definitions, stencil_tests +from icon4py.model.testing import stencil_tests @pytest.mark.continuous_benchmarking diff --git a/model/atmosphere/dycore/tests/dycore/integration_tests/test_solve_nonhydro.py b/model/atmosphere/dycore/tests/dycore/integration_tests/test_solve_nonhydro.py index f00a231235..46cdd5f8f3 100644 --- a/model/atmosphere/dycore/tests/dycore/integration_tests/test_solve_nonhydro.py +++ b/model/atmosphere/dycore/tests/dycore/integration_tests/test_solve_nonhydro.py @@ -26,7 +26,7 @@ from icon4py.model.common.grid import horizontal as h_grid, vertical as v_grid from icon4py.model.common.math import smagorinsky from icon4py.model.common.utils import data_allocation as data_alloc -from icon4py.model.testing import definitions, test_utils +from icon4py.model.testing import definitions as test_defs, test_utils from .. import utils from ..fixtures import * # noqa: F403 @@ -40,7 +40,7 @@ @pytest.mark.datatest -@pytest.mark.parametrize("experiment", [definitions.Experiments.MCH_CH_R04B09]) +@pytest.mark.parametrize("experiment", [test_defs.Experiments.MCH_CH_R04B09]) def test_validate_divdamp_fields_against_savepoint_values( grid_savepoint: sb.IconGridSavepoint, savepoint_nonhydro_init: sb.IconNonHydroInitSavepoint, @@ -107,7 +107,7 @@ def test_validate_divdamp_fields_against_savepoint_values( @pytest.mark.datatest -@pytest.mark.parametrize("experiment", [definitions.Experiments.MCH_CH_R04B09]) +@pytest.mark.parametrize("experiment", [test_defs.Experiments.MCH_CH_R04B09]) @pytest.mark.parametrize( "istep_init, step_date_init, substep_init, at_initial_timestep", [ @@ -144,12 +144,12 @@ def test_time_step_flags( "experiment, step_date_init, step_date_exit", [ ( - definitions.Experiments.MCH_CH_R04B09, + test_defs.Experiments.MCH_CH_R04B09, "2021-06-20T12:00:10.000", "2021-06-20T12:00:10.000", ), ( - definitions.Experiments.EXCLAIM_APE, + test_defs.Experiments.EXCLAIM_APE, "2000-01-01T00:00:02.000", "2000-01-01T00:00:02.000", ), @@ -178,7 +178,7 @@ def test_nonhydro_predictor_step( backend, ): caplog.set_level(logging.WARN) - config = definitions.construct_nonhydrostatic_config(experiment) + config = test_defs.construct_nonhydrostatic_config(experiment) sp = savepoint_nonhydro_init sp_exit = savepoint_nonhydro_exit nonhydro_params = solve_nh.NonHydrostaticParams(config) @@ -472,12 +472,12 @@ def test_nonhydro_predictor_step( "experiment, step_date_init, step_date_exit", [ ( - definitions.Experiments.MCH_CH_R04B09, + test_defs.Experiments.MCH_CH_R04B09, "2021-06-20T12:00:10.000", "2021-06-20T12:00:10.000", ), ( - definitions.Experiments.EXCLAIM_APE, + test_defs.Experiments.EXCLAIM_APE, "2000-01-01T00:00:02.000", "2000-01-01T00:00:02.000", ), @@ -508,7 +508,7 @@ def test_nonhydro_corrector_step( backend, ): caplog.set_level(logging.WARN) - config = definitions.construct_nonhydrostatic_config(experiment) + config = test_defs.construct_nonhydrostatic_config(experiment) init_savepoint = savepoint_nonhydro_init nonhydro_params = solve_nh.NonHydrostaticParams(config) vertical_config = v_grid.VerticalGridConfig( @@ -669,12 +669,12 @@ def test_nonhydro_corrector_step( "experiment, step_date_init, step_date_exit", [ ( - definitions.Experiments.MCH_CH_R04B09, + test_defs.Experiments.MCH_CH_R04B09, "2021-06-20T12:00:10.000", "2021-06-20T12:00:10.000", ), ( - definitions.Experiments.EXCLAIM_APE, + test_defs.Experiments.EXCLAIM_APE, "2000-01-01T00:00:02.000", "2000-01-01T00:00:02.000", ), @@ -706,7 +706,7 @@ def test_run_solve_nonhydro_single_step( backend, ): caplog.set_level(logging.WARN) - config = definitions.construct_nonhydrostatic_config(experiment) + config = test_defs.construct_nonhydrostatic_config(experiment) sp = savepoint_nonhydro_init sp_step_exit = savepoint_nonhydro_step_final @@ -803,7 +803,7 @@ def test_run_solve_nonhydro_single_step( # why is this not run for APE? @pytest.mark.embedded_remap_error @pytest.mark.datatest -@pytest.mark.parametrize("experiment", [definitions.Experiments.MCH_CH_R04B09]) +@pytest.mark.parametrize("experiment", [test_defs.Experiments.MCH_CH_R04B09]) @pytest.mark.parametrize( "istep_init, substep_init, step_date_init, istep_exit, substep_exit, step_date_exit, at_initial_timestep", [ @@ -835,7 +835,7 @@ def test_run_solve_nonhydro_multi_step( ndyn_substeps, backend, ): - config = definitions.construct_nonhydrostatic_config(experiment) + config = test_defs.construct_nonhydrostatic_config(experiment) sp = savepoint_nonhydro_init sp_step_exit = savepoint_nonhydro_step_final nonhydro_params = solve_nh.NonHydrostaticParams(config) @@ -978,7 +978,7 @@ def test_run_solve_nonhydro_multi_step( @pytest.mark.datatest -@pytest.mark.parametrize("experiment", [definitions.Experiments.MCH_CH_R04B09]) +@pytest.mark.parametrize("experiment", [test_defs.Experiments.MCH_CH_R04B09]) def test_non_hydrostatic_params(savepoint_nonhydro_init): config = solve_nh.NonHydrostaticConfig() params = solve_nh.NonHydrostaticParams(config) @@ -996,12 +996,12 @@ def test_non_hydrostatic_params(savepoint_nonhydro_init): "experiment, step_date_init, step_date_exit", [ ( - definitions.Experiments.MCH_CH_R04B09, + test_defs.Experiments.MCH_CH_R04B09, "2021-06-20T12:00:10.000", "2021-06-20T12:00:10.000", ), ( - definitions.Experiments.EXCLAIM_APE, + test_defs.Experiments.EXCLAIM_APE, "2000-01-01T00:00:02.000", "2000-01-01T00:00:02.000", ), @@ -1074,7 +1074,7 @@ def test_compute_perturbed_quantities_and_interpolation( icon_grid, dims.CellDim, dims.KDim, allocator=backend ) - config = definitions.construct_nonhydrostatic_config(experiment) + config = test_defs.construct_nonhydrostatic_config(experiment) igradp_method = config.igradp_method nflatlev = vertical_params.nflatlev @@ -1209,12 +1209,12 @@ def test_compute_perturbed_quantities_and_interpolation( "experiment, step_date_init, step_date_exit", [ ( - definitions.Experiments.MCH_CH_R04B09, + test_defs.Experiments.MCH_CH_R04B09, "2021-06-20T12:00:10.000", "2021-06-20T12:00:10.000", ), ( - definitions.Experiments.EXCLAIM_APE, + test_defs.Experiments.EXCLAIM_APE, "2000-01-01T00:00:02.000", "2000-01-01T00:00:02.000", ), @@ -1354,12 +1354,12 @@ def test_compute_interpolation_and_nonhydro_buoy( "experiment, step_date_init, step_date_exit", [ ( - definitions.Experiments.MCH_CH_R04B09, + test_defs.Experiments.MCH_CH_R04B09, "2021-06-20T12:00:10.000", "2021-06-20T12:00:10.000", ), ( - definitions.Experiments.EXCLAIM_APE, + test_defs.Experiments.EXCLAIM_APE, "2000-01-01T00:00:02.000", "2000-01-01T00:00:02.000", ), @@ -1438,7 +1438,7 @@ def test_compute_rho_theta_pgrad_and_update_vn( grf_tend_vn = sp_nh_init.grf_tend_vn() rho_at_edges_on_model_levels = sp_stencil_init.z_rho_e() theta_v_at_edges_on_model_levels = sp_stencil_init.z_theta_v_e() - config = definitions.construct_nonhydrostatic_config(experiment) + config = test_defs.construct_nonhydrostatic_config(experiment) primal_normal_cell_1 = grid_savepoint.primal_normal_cell_x() primal_normal_cell_2 = grid_savepoint.primal_normal_cell_y() dual_normal_cell_1 = grid_savepoint.dual_normal_cell_x() @@ -1566,12 +1566,12 @@ def test_compute_rho_theta_pgrad_and_update_vn( "experiment, step_date_init, step_date_exit", [ ( - definitions.Experiments.MCH_CH_R04B09, + test_defs.Experiments.MCH_CH_R04B09, "2021-06-20T12:00:10.000", "2021-06-20T12:00:10.000", ), ( - definitions.Experiments.EXCLAIM_APE, + test_defs.Experiments.EXCLAIM_APE, "2000-01-01T00:00:02.000", "2000-01-01T00:00:02.000", ), @@ -1620,7 +1620,7 @@ def test_apply_divergence_damping_and_update_vn( current_vn = sp_stencil_init.vn() next_vn = savepoint_nonhydro_init.vn_new() horizontal_gradient_of_normal_wind_divergence = sp_nh_init.z_graddiv_vn() - config = definitions.construct_nonhydrostatic_config(experiment) + config = test_defs.construct_nonhydrostatic_config(experiment) mean_cell_area = grid_savepoint.mean_cell_area() # TODO: Use serialized data ('enh_divdamp_fac' in icon) instead of computing 'interpolated_fourth_order_divdamp_factor' @@ -1721,12 +1721,12 @@ def test_apply_divergence_damping_and_update_vn( "experiment, step_date_init, step_date_exit", [ ( - definitions.Experiments.MCH_CH_R04B09, + test_defs.Experiments.MCH_CH_R04B09, "2021-06-20T12:00:10.000", "2021-06-20T12:00:10.000", ), ( - definitions.Experiments.EXCLAIM_APE, + test_defs.Experiments.EXCLAIM_APE, "2000-01-01T00:00:02.000", "2000-01-01T00:00:02.000", ), @@ -1901,12 +1901,12 @@ def test_compute_horizontal_velocity_quantities_and_fluxes( "experiment, step_date_init, step_date_exit", [ ( - definitions.Experiments.MCH_CH_R04B09, + test_defs.Experiments.MCH_CH_R04B09, "2021-06-20T12:00:10.000", "2021-06-20T12:00:10.000", ), ( - definitions.Experiments.EXCLAIM_APE, + test_defs.Experiments.EXCLAIM_APE, "2000-01-01T00:00:02.000", "2000-01-01T00:00:02.000", ), @@ -2018,12 +2018,12 @@ def test_compute_averaged_vn_and_fluxes( "experiment, step_date_init, step_date_exit", [ ( - definitions.Experiments.MCH_CH_R04B09, + test_defs.Experiments.MCH_CH_R04B09, "2021-06-20T12:00:10.000", "2021-06-20T12:00:10.000", ), ( - definitions.Experiments.EXCLAIM_APE, + test_defs.Experiments.EXCLAIM_APE, "2000-01-01T00:00:02.000", "2000-01-01T00:00:02.000", ), @@ -2055,7 +2055,7 @@ def test_vertically_implicit_solver_at_predictor_step( ): sp_nh_exit = savepoint_nonhydro_exit sp_stencil_init = savepoint_vertically_implicit_dycore_solver_init - config = definitions.construct_nonhydrostatic_config(experiment) + config = test_defs.construct_nonhydrostatic_config(experiment) xp = data_alloc.import_array_ns(backend) vertical_config = v_grid.VerticalGridConfig( @@ -2220,12 +2220,12 @@ def test_vertically_implicit_solver_at_predictor_step( "experiment, step_date_init, step_date_exit", [ ( - definitions.Experiments.MCH_CH_R04B09, + test_defs.Experiments.MCH_CH_R04B09, "2021-06-20T12:00:10.000", "2021-06-20T12:00:10.000", ), ( - definitions.Experiments.EXCLAIM_APE, + test_defs.Experiments.EXCLAIM_APE, "2000-01-01T00:00:02.000", "2000-01-01T00:00:02.000", ), @@ -2268,7 +2268,7 @@ def test_vertically_implicit_solver_at_corrector_step( at_first_substep = substep_init == 0 at_last_substep = substep_exit == 0 - config = definitions.construct_nonhydrostatic_config(experiment) + config = test_defs.construct_nonhydrostatic_config(experiment) nonhydro_params = solve_nh.NonHydrostaticParams(config) diff --git a/model/atmosphere/dycore/tests/dycore/integration_tests/test_velocity_advection.py b/model/atmosphere/dycore/tests/dycore/integration_tests/test_velocity_advection.py index 061c18ae19..7546fd35a7 100644 --- a/model/atmosphere/dycore/tests/dycore/integration_tests/test_velocity_advection.py +++ b/model/atmosphere/dycore/tests/dycore/integration_tests/test_velocity_advection.py @@ -32,7 +32,7 @@ ) from icon4py.model.common.states import prognostic_state as prognostics from icon4py.model.common.utils import data_allocation as data_alloc -from icon4py.model.testing import definitions, serialbox, test_utils +from icon4py.model.testing import definitions as test_defs, serialbox, test_utils from .. import utils from ..fixtures import * # noqa: F403 @@ -72,8 +72,8 @@ def create_vertical_params( @pytest.mark.parametrize( "experiment, step_date_init", [ - (definitions.Experiments.MCH_CH_R04B09, "2021-06-20T12:00:10.000"), - (definitions.Experiments.EXCLAIM_APE, "2000-01-01T00:00:02.000"), + (test_defs.Experiments.MCH_CH_R04B09, "2021-06-20T12:00:10.000"), + (test_defs.Experiments.EXCLAIM_APE, "2000-01-01T00:00:02.000"), ], ) def test_verify_velocity_init_against_savepoint( @@ -86,7 +86,7 @@ def test_verify_velocity_init_against_savepoint( model_top_height: ta.wpfloat, stretch_factor: ta.wpfloat, damping_height: ta.wpfloat, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: interpolation_state = utils.construct_interpolation_state(interpolation_savepoint) @@ -119,8 +119,8 @@ def test_verify_velocity_init_against_savepoint( @pytest.mark.parametrize( "experiment, step_date_init", [ - (definitions.Experiments.MCH_CH_R04B09, "2021-06-20T12:00:10.000"), - (definitions.Experiments.EXCLAIM_APE, "2000-01-01T00:00:02.000"), + (test_defs.Experiments.MCH_CH_R04B09, "2021-06-20T12:00:10.000"), + (test_defs.Experiments.EXCLAIM_APE, "2000-01-01T00:00:02.000"), ], ) def test_scale_factors_by_dtime( @@ -169,16 +169,16 @@ def test_scale_factors_by_dtime( "experiment, step_date_init, step_date_exit", [ ( - definitions.Experiments.MCH_CH_R04B09, + test_defs.Experiments.MCH_CH_R04B09, "2021-06-20T12:00:10.000", "2021-06-20T12:00:10.000", ), ( - definitions.Experiments.MCH_CH_R04B09, + test_defs.Experiments.MCH_CH_R04B09, "2021-06-20T12:00:20.000", "2021-06-20T12:00:20.000", ), - (definitions.Experiments.EXCLAIM_APE, "2000-01-01T00:00:02.000", "2000-01-01T00:00:02.000"), + (test_defs.Experiments.EXCLAIM_APE, "2000-01-01T00:00:02.000", "2000-01-01T00:00:02.000"), ], ) def test_velocity_predictor_step( @@ -324,16 +324,16 @@ def test_velocity_predictor_step( "experiment, step_date_init, step_date_exit", [ ( - definitions.Experiments.MCH_CH_R04B09, + test_defs.Experiments.MCH_CH_R04B09, "2021-06-20T12:00:10.000", "2021-06-20T12:00:10.000", ), ( - definitions.Experiments.MCH_CH_R04B09, + test_defs.Experiments.MCH_CH_R04B09, "2021-06-20T12:00:20.000", "2021-06-20T12:00:20.000", ), - (definitions.Experiments.EXCLAIM_APE, "2000-01-01T00:00:02.000", "2000-01-01T00:00:02.000"), + (test_defs.Experiments.EXCLAIM_APE, "2000-01-01T00:00:02.000", "2000-01-01T00:00:02.000"), ], ) def test_velocity_corrector_step( @@ -457,11 +457,11 @@ def test_velocity_corrector_step( "experiment, step_date_init, step_date_exit", [ ( - definitions.Experiments.MCH_CH_R04B09, + test_defs.Experiments.MCH_CH_R04B09, "2021-06-20T12:00:10.000", "2021-06-20T12:00:10.000", ), - (definitions.Experiments.EXCLAIM_APE, "2000-01-01T00:00:02.000", "2000-01-01T00:00:02.000"), + (test_defs.Experiments.EXCLAIM_APE, "2000-01-01T00:00:02.000", "2000-01-01T00:00:02.000"), ], ) def test_compute_diagnostics_from_normal_wind( @@ -588,16 +588,16 @@ def test_compute_diagnostics_from_normal_wind( "experiment, step_date_init, step_date_exit", [ ( - definitions.Experiments.MCH_CH_R04B09, + test_defs.Experiments.MCH_CH_R04B09, "2021-06-20T12:00:10.000", "2021-06-20T12:00:10.000", ), ( - definitions.Experiments.MCH_CH_R04B09, + test_defs.Experiments.MCH_CH_R04B09, "2021-06-20T12:00:20.000", "2021-06-20T12:00:20.000", ), - (definitions.Experiments.EXCLAIM_APE, "2000-01-01T00:00:02.000", "2000-01-01T00:00:02.000"), + (test_defs.Experiments.EXCLAIM_APE, "2000-01-01T00:00:02.000", "2000-01-01T00:00:02.000"), ], ) @pytest.mark.parametrize("istep_init, istep_exit", [(1, 1)]) @@ -738,16 +738,16 @@ def test_compute_advection_in_predictor_vertical_momentum( "experiment, step_date_init, step_date_exit", [ ( - definitions.Experiments.MCH_CH_R04B09, + test_defs.Experiments.MCH_CH_R04B09, "2021-06-20T12:00:10.000", "2021-06-20T12:00:10.000", ), ( - definitions.Experiments.MCH_CH_R04B09, + test_defs.Experiments.MCH_CH_R04B09, "2021-06-20T12:00:20.000", "2021-06-20T12:00:20.000", ), - (definitions.Experiments.EXCLAIM_APE, "2000-01-01T00:00:02.000", "2000-01-01T00:00:02.000"), + (test_defs.Experiments.EXCLAIM_APE, "2000-01-01T00:00:02.000", "2000-01-01T00:00:02.000"), ], ) @pytest.mark.parametrize("istep_init, istep_exit", [(2, 2)]) @@ -883,11 +883,11 @@ def test_compute_advection_in_corrector_vertical_momentum( "experiment, step_date_init, step_date_exit", [ ( - definitions.Experiments.MCH_CH_R04B09, + test_defs.Experiments.MCH_CH_R04B09, "2021-06-20T12:00:10.000", "2021-06-20T12:00:10.000", ), - (definitions.Experiments.EXCLAIM_APE, "2000-01-01T00:00:02.000", "2000-01-01T00:00:02.000"), + (test_defs.Experiments.EXCLAIM_APE, "2000-01-01T00:00:02.000", "2000-01-01T00:00:02.000"), ], ) @pytest.mark.parametrize("istep_init, istep_exit", [(1, 1), (2, 2)]) diff --git a/model/atmosphere/subgrid_scale_physics/microphysics/tests/microphysics/integration_tests/test_saturation_adjustment.py b/model/atmosphere/subgrid_scale_physics/microphysics/tests/microphysics/integration_tests/test_saturation_adjustment.py index 12af8065ae..4d936e752f 100644 --- a/model/atmosphere/subgrid_scale_physics/microphysics/tests/microphysics/integration_tests/test_saturation_adjustment.py +++ b/model/atmosphere/subgrid_scale_physics/microphysics/tests/microphysics/integration_tests/test_saturation_adjustment.py @@ -17,7 +17,7 @@ from icon4py.model.common import dimension as dims from icon4py.model.common.grid import vertical as v_grid from icon4py.model.common.utils import data_allocation as data_alloc -from icon4py.model.testing import definitions, test_utils +from icon4py.model.testing import definitions as test_defs, test_utils from ..fixtures import * # noqa: F403 @@ -34,7 +34,7 @@ @pytest.mark.datatest @pytest.mark.parametrize( "experiment, model_top_height", - [(definitions.Experiments.WEISMAN_KLEMP_TORUS, 30000.0)], + [(test_defs.Experiments.WEISMAN_KLEMP_TORUS, 30000.0)], ) @pytest.mark.parametrize( "date", ["2008-09-01T01:59:48.000", "2008-09-01T01:59:52.000", "2008-09-01T01:59:56.000"] diff --git a/model/atmosphere/subgrid_scale_physics/microphysics/tests/microphysics/integration_tests/test_single_moment_six_class_gscp_graupel.py b/model/atmosphere/subgrid_scale_physics/microphysics/tests/microphysics/integration_tests/test_single_moment_six_class_gscp_graupel.py index 340b478a53..130b6c9008 100644 --- a/model/atmosphere/subgrid_scale_physics/microphysics/tests/microphysics/integration_tests/test_single_moment_six_class_gscp_graupel.py +++ b/model/atmosphere/subgrid_scale_physics/microphysics/tests/microphysics/integration_tests/test_single_moment_six_class_gscp_graupel.py @@ -23,7 +23,7 @@ tracer_state as tracers, ) from icon4py.model.common.utils import data_allocation as data_alloc -from icon4py.model.testing import definitions, test_utils +from icon4py.model.testing import definitions as test_defs, test_utils from ..fixtures import * # noqa: F403 @@ -40,14 +40,14 @@ @pytest.mark.parametrize( "experiment, model_top_height", [ - (definitions.Experiments.WEISMAN_KLEMP_TORUS, 30000.0), + (test_defs.Experiments.WEISMAN_KLEMP_TORUS, 30000.0), ], ) @pytest.mark.parametrize( "date", ["2008-09-01T01:59:48.000", "2008-09-01T01:59:52.000", "2008-09-01T01:59:56.000"] ) def test_graupel( - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, model_top_height: ta.wpfloat, date: str, *, diff --git a/model/common/tests/common/diagnostic_calculations/unit_tests/test_diagnostic_calculations.py b/model/common/tests/common/diagnostic_calculations/unit_tests/test_diagnostic_calculations.py index b3e6dbb257..a3ae55519f 100644 --- a/model/common/tests/common/diagnostic_calculations/unit_tests/test_diagnostic_calculations.py +++ b/model/common/tests/common/diagnostic_calculations/unit_tests/test_diagnostic_calculations.py @@ -24,7 +24,7 @@ from icon4py.model.common.interpolation.stencils import edge_2_cell_vector_rbf_interpolation as rbf from icon4py.model.common.states import diagnostic_state as diagnostics, tracer_state as tracers from icon4py.model.common.utils import data_allocation as data_alloc -from icon4py.model.testing import definitions, test_utils +from icon4py.model.testing import definitions as test_defs, test_utils from icon4py.model.testing.fixtures.datatest import ( backend, data_provider, @@ -45,7 +45,7 @@ @pytest.mark.datatest -@pytest.mark.parametrize("experiment", [definitions.Experiments.JW]) +@pytest.mark.parametrize("experiment", [test_defs.Experiments.JW]) def test_diagnose_temperature( data_provider: sb.IconSerialDataProvider, icon_grid: base_grid.Grid, backend: gtx_typing.Backend ) -> None: @@ -100,7 +100,7 @@ def test_diagnose_temperature( @pytest.mark.datatest -@pytest.mark.parametrize("experiment", [definitions.Experiments.JW]) +@pytest.mark.parametrize("experiment", [test_defs.Experiments.JW]) def test_diagnose_meridional_and_zonal_winds( data_provider: sb.IconSerialDataProvider, interpolation_savepoint: sb.InterpolationSavepoint, @@ -153,7 +153,7 @@ def test_diagnose_meridional_and_zonal_winds( @pytest.mark.datatest -@pytest.mark.parametrize("experiment", [definitions.Experiments.JW]) +@pytest.mark.parametrize("experiment", [test_defs.Experiments.JW]) def test_diagnose_surface_pressure( data_provider: sb.IconSerialDataProvider, icon_grid: base_grid.Grid, @@ -192,7 +192,7 @@ def test_diagnose_surface_pressure( @pytest.mark.datatest -@pytest.mark.parametrize("experiment", [definitions.Experiments.JW]) +@pytest.mark.parametrize("experiment", [test_defs.Experiments.JW]) def test_diagnose_pressure( data_provider: sb.IconSerialDataProvider, icon_grid: base_grid.Grid, @@ -242,7 +242,7 @@ def test_diagnose_pressure( @pytest.mark.parametrize( "experiment, model_top_height, damping_height, stretch_factor", - [(definitions.Experiments.WEISMAN_KLEMP_TORUS, 30000.0, 8000.0, 0.85)], + [(test_defs.Experiments.WEISMAN_KLEMP_TORUS, 30000.0, 8000.0, 0.85)], ) @pytest.mark.parametrize( "date", ["2008-09-01T01:59:48.000", "2008-09-01T01:59:52.000", "2008-09-01T01:59:56.000"] diff --git a/model/common/tests/common/grid/integration_tests/test_horizontal.py b/model/common/tests/common/grid/integration_tests/test_horizontal.py index 651aaefee9..e4b847c99d 100644 --- a/model/common/tests/common/grid/integration_tests/test_horizontal.py +++ b/model/common/tests/common/grid/integration_tests/test_horizontal.py @@ -13,7 +13,7 @@ from gt4py import next as gtx from icon4py.model.common.grid import horizontal as h_grid -from icon4py.model.testing import definitions +from icon4py.model.testing import definitions as test_defs from icon4py.model.testing.fixtures import experiment from ...fixtures import * # noqa: F403 @@ -29,7 +29,7 @@ @pytest.mark.datatest @pytest.mark.parametrize("dim", utils.main_horizontal_dims()) def test_map_icon_start_end_index( - experiment: definitions.ExperimentDescription, dim: gtx.Dimension, grid_savepoint: sb.IconGridSavepoint + experiment: test_defs.ExperimentDescription, dim: gtx.Dimension, grid_savepoint: sb.IconGridSavepoint ) -> None: end_indices = grid_savepoint.end_index() start_indices = grid_savepoint.start_index() diff --git a/model/common/tests/common/grid/unit_tests/test_geometry.py b/model/common/tests/common/grid/unit_tests/test_geometry.py index 9af90bd366..f7765c1e5f 100644 --- a/model/common/tests/common/grid/unit_tests/test_geometry.py +++ b/model/common/tests/common/grid/unit_tests/test_geometry.py @@ -24,7 +24,7 @@ from icon4py.model.common.grid.geometry import as_sparse_field from icon4py.model.common.math import helpers as math_helpers from icon4py.model.common.utils import data_allocation as data_alloc -from icon4py.model.testing import definitions, grid_utils, test_utils +from icon4py.model.testing import definitions as test_defs, grid_utils, test_utils from icon4py.model.testing.fixtures import ( backend, data_provider, @@ -45,7 +45,7 @@ @pytest.mark.datatest def test_geometry_raises_for_unknown_field( - backend: gtx_typing.Backend, experiment: definitions.ExperimentDescription + backend: gtx_typing.Backend, experiment: test_defs.ExperimentDescription ) -> None: geometry = grid_utils.get_grid_geometry(backend, experiment) with pytest.raises(ValueError) as e: @@ -57,16 +57,16 @@ def test_geometry_raises_for_unknown_field( @pytest.mark.parametrize( "experiment, rtol", [ - (definitions.Experiments.MCH_CH_R04B09, 1e-7), - (definitions.Experiments.EXCLAIM_APE, 3e-12), - (definitions.Experiments.GAUSS3D, 1e-13), + (test_defs.Experiments.MCH_CH_R04B09, 1e-7), + (test_defs.Experiments.EXCLAIM_APE, 3e-12), + (test_defs.Experiments.GAUSS3D, 1e-13), ], ) @pytest.mark.datatest def test_edge_control_area( backend: gtx_typing.Backend, grid_savepoint: sb.IconGridSavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, rtol: float, ) -> None: expected = grid_savepoint.edge_areas() @@ -79,7 +79,7 @@ def test_edge_control_area( def test_coriolis_parameter( backend: gtx_typing.Backend, grid_savepoint: sb.IconGridSavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, ) -> None: geometry_source = grid_utils.get_grid_geometry(backend, experiment) expected = grid_savepoint.f_e() @@ -92,7 +92,7 @@ def test_coriolis_parameter( def test_compute_edge_length( backend: gtx_typing.Backend, grid_savepoint: sb.IconGridSavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, ) -> None: geometry_source = grid_utils.get_grid_geometry(backend, experiment) expected = grid_savepoint.primal_edge_length() @@ -104,7 +104,7 @@ def test_compute_edge_length( def test_compute_inverse_edge_length( backend: gtx_typing.Backend, grid_savepoint: sb.IconGridSavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, ) -> None: expected = grid_savepoint.inverse_primal_edge_lengths() geometry_source = grid_utils.get_grid_geometry(backend, experiment) @@ -117,7 +117,7 @@ def test_compute_inverse_edge_length( def test_compute_dual_edge_length( backend: gtx_typing.Backend, grid_savepoint: sb.IconGridSavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, ) -> None: grid_geometry = grid_utils.get_grid_geometry(backend, experiment) @@ -130,7 +130,7 @@ def test_compute_dual_edge_length( def test_compute_inverse_dual_edge_length( backend: gtx_typing.Backend, grid_savepoint: sb.IconGridSavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, ) -> None: grid_geometry = grid_utils.get_grid_geometry(backend, experiment) expected = grid_savepoint.inv_dual_edge_length() @@ -145,16 +145,16 @@ def test_compute_inverse_dual_edge_length( @pytest.mark.parametrize( "experiment, rtol", [ - (definitions.Experiments.MCH_CH_R04B09, 5e-10), - (definitions.Experiments.EXCLAIM_APE, 1e-12), - (definitions.Experiments.GAUSS3D, 1e-14), + (test_defs.Experiments.MCH_CH_R04B09, 5e-10), + (test_defs.Experiments.EXCLAIM_APE, 1e-12), + (test_defs.Experiments.GAUSS3D, 1e-14), ], ) @pytest.mark.datatest def test_compute_inverse_vertex_vertex_length( backend: gtx_typing.Backend, grid_savepoint: sb.IconGridSavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, rtol: float, ) -> None: grid_geometry = grid_utils.get_grid_geometry(backend, experiment) @@ -175,7 +175,7 @@ def test_compute_inverse_vertex_vertex_length( def test_compute_coordinates_of_edge_tangent_and_normal( backend: gtx_typing.Backend, grid_savepoint: sb.IconGridSavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, ) -> None: grid_geometry = grid_utils.get_grid_geometry(backend, experiment) x_normal = grid_geometry.get(attrs.EDGE_NORMAL_X) @@ -203,7 +203,7 @@ def test_compute_coordinates_of_edge_tangent_and_normal( def test_compute_primal_normals( backend: gtx_typing.Backend, grid_savepoint: sb.IconGridSavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, ) -> None: grid_geometry = grid_utils.get_grid_geometry(backend, experiment) primal_normal_u = grid_geometry.get(attrs.EDGE_NORMAL_U) @@ -224,7 +224,7 @@ def test_compute_primal_normals( def test_tangent_orientation( backend: gtx_typing.Backend, grid_savepoint: sb.IconGridSavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, ) -> None: grid_geometry = grid_utils.get_grid_geometry(backend, experiment) result = grid_geometry.get(attrs.TANGENT_ORIENTATION) @@ -237,7 +237,7 @@ def test_tangent_orientation( def test_cell_area( backend: gtx_typing.Backend, grid_savepoint: sb.IconGridSavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, ) -> None: grid_geometry = grid_utils.get_grid_geometry(backend, experiment) result = grid_geometry.get(attrs.CELL_AREA) @@ -250,7 +250,7 @@ def test_cell_area( def test_primal_normal_cell( backend: gtx_typing.Backend, grid_savepoint: sb.IconGridSavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, ) -> None: grid_geometry = grid_utils.get_grid_geometry(backend, experiment) primal_normal_cell_u_ref = grid_savepoint.primal_normal_cell_x().asnumpy() @@ -270,7 +270,7 @@ def test_primal_normal_cell( def test_dual_normal_cell( backend: gtx_typing.Backend, grid_savepoint: sb.IconGridSavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, ) -> None: grid_geometry = grid_utils.get_grid_geometry(backend, experiment) dual_normal_cell_u_ref = grid_savepoint.dual_normal_cell_x().asnumpy() @@ -286,7 +286,7 @@ def test_dual_normal_cell( def test_primal_normal_vert( backend: gtx_typing.Backend, grid_savepoint: sb.IconGridSavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, ) -> None: grid_geometry = grid_utils.get_grid_geometry(backend, experiment) primal_normal_vert_u_ref = grid_savepoint.primal_normal_vert_x().asnumpy() @@ -306,7 +306,7 @@ def test_primal_normal_vert( def test_dual_normal_vert( backend: gtx_typing.Backend, grid_savepoint: sb.IconGridSavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, ) -> None: grid_geometry = grid_utils.get_grid_geometry(backend, experiment) dual_normal_vert_u_ref = grid_savepoint.dual_normal_vert_x().asnumpy() @@ -322,7 +322,7 @@ def test_dual_normal_vert( def test_cartesian_centers_edge( backend: gtx_typing.Backend, grid_savepoint: sb.IconGridSavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, ) -> None: grid_geometry = grid_utils.get_grid_geometry(backend, experiment) grid = grid_geometry.grid @@ -361,7 +361,7 @@ def test_cartesian_centers_edge( def test_cartesian_centers_cell( backend: gtx_typing.Backend, grid_savepoint: sb.IconGridSavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, ) -> None: grid_geometry = grid_utils.get_grid_geometry(backend, experiment) grid = grid_geometry.grid @@ -400,7 +400,7 @@ def test_cartesian_centers_cell( def test_vertex( backend: gtx_typing.Backend, grid_savepoint: sb.IconGridSavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, ) -> None: grid_geometry = grid_utils.get_grid_geometry(backend, experiment) grid = grid_geometry.grid @@ -452,7 +452,7 @@ def test_sparse_fields_creator() -> None: @pytest.mark.datatest def test_create_auxiliary_orientation_coordinates( - backend: gtx_typing.Backend, experiment: definitions.ExperimentDescription + backend: gtx_typing.Backend, experiment: test_defs.ExperimentDescription ) -> None: gm = grid_utils.get_grid_manager_from_identifier( experiment.grid, @@ -517,7 +517,7 @@ def test_create_auxiliary_orientation_coordinates( def test_geometry_mean_fields( backend: gtx_typing.Backend, grid_savepoint: sb.IconGridSavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, attr_name: str, ) -> None: assert hasattr(experiment, "name") diff --git a/model/common/tests/common/grid/unit_tests/test_grid_manager.py b/model/common/tests/common/grid/unit_tests/test_grid_manager.py index 24ffbaab3b..68f593b94c 100644 --- a/model/common/tests/common/grid/unit_tests/test_grid_manager.py +++ b/model/common/tests/common/grid/unit_tests/test_grid_manager.py @@ -24,7 +24,7 @@ horizontal as h_grid, vertical as v_grid, ) -from icon4py.model.testing import definitions, test_utils +from icon4py.model.testing import definitions as test_defs, test_utils if typing.TYPE_CHECKING: @@ -66,7 +66,7 @@ @pytest.mark.with_netcdf def test_grid_manager_eval_v2e( grid_savepoint: serialbox.IconGridSavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend, ) -> None: grid = utils.run_grid_manager(experiment.grid, keep_skip_values=True, backend=backend).grid @@ -93,7 +93,7 @@ def test_grid_manager_eval_v2e( @pytest.mark.parametrize("dim", [dims.CellDim, dims.EdgeDim, dims.VertexDim]) def test_grid_manager_refin_ctrl( grid_savepoint: serialbox.IconGridSavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, dim: gtx.Dimension, backend: gtx_typing.Backend, ) -> None: @@ -112,7 +112,7 @@ def test_grid_manager_refin_ctrl( @pytest.mark.with_netcdf def test_grid_manager_eval_v2c( grid_savepoint: serialbox.IconGridSavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend, ) -> None: grid = utils.run_grid_manager(experiment.grid, keep_skip_values=True, backend=backend).grid @@ -167,7 +167,7 @@ def _reset_invalid_index(index_array: np.ndarray) -> None: @pytest.mark.with_netcdf def test_grid_manager_eval_e2v( grid_savepoint: serialbox.IconGridSavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend, ) -> None: grid = utils.run_grid_manager(experiment.grid, keep_skip_values=True, backend=backend).grid @@ -190,7 +190,7 @@ def has_invalid_index(ar: np.ndarray) -> np.bool_: @pytest.mark.with_netcdf def test_grid_manager_eval_e2c( grid_savepoint: serialbox.IconGridSavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend, ) -> None: grid = utils.run_grid_manager(experiment.grid, keep_skip_values=True, backend=backend).grid @@ -207,7 +207,7 @@ def test_grid_manager_eval_e2c( @pytest.mark.with_netcdf def test_grid_manager_eval_c2e( grid_savepoint: serialbox.IconGridSavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend, ) -> None: grid = utils.run_grid_manager(experiment.grid, keep_skip_values=True, backend=backend).grid @@ -227,7 +227,7 @@ def test_grid_manager_eval_c2e( @pytest.mark.with_netcdf def test_grid_manager_eval_c2e2c( grid_savepoint: serialbox.IconGridSavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend, ) -> None: grid = utils.run_grid_manager(experiment.grid, keep_skip_values=True, backend=backend).grid @@ -241,7 +241,7 @@ def test_grid_manager_eval_c2e2c( @pytest.mark.with_netcdf def test_grid_manager_eval_c2e2cO( grid_savepoint: serialbox.IconGridSavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend, ) -> None: grid = utils.run_grid_manager(experiment.grid, keep_skip_values=True, backend=backend).grid @@ -257,7 +257,7 @@ def test_grid_manager_eval_c2e2cO( @pytest.mark.with_netcdf def test_grid_manager_eval_e2c2e( grid_savepoint: serialbox.IconGridSavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend, ) -> None: grid = utils.run_grid_manager(experiment.grid, keep_skip_values=True, backend=backend).grid @@ -282,7 +282,7 @@ def test_grid_manager_eval_e2c2e( @pytest.mark.with_netcdf def test_grid_manager_eval_e2c2v( grid_savepoint: serialbox.IconGridSavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend, ) -> None: grid = utils.run_grid_manager(experiment.grid, keep_skip_values=True, backend=backend).grid @@ -302,7 +302,7 @@ def test_grid_manager_eval_e2c2v( @pytest.mark.with_netcdf def test_grid_manager_eval_c2v( grid_savepoint: serialbox.IconGridSavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend, ) -> None: grid = utils.run_grid_manager(experiment.grid, keep_skip_values=True, backend=backend).grid @@ -311,11 +311,11 @@ def test_grid_manager_eval_c2v( @pytest.mark.parametrize( - "grid_descriptor", [definitions.Grids.R02B04_GLOBAL, definitions.Grids.MCH_CH_R04B09_DSL] + "grid_descriptor", [test_defs.Grids.R02B04_GLOBAL, test_defs.Grids.MCH_CH_R04B09_DSL] ) @pytest.mark.with_netcdf def test_grid_manager_grid_size( - backend: gtx_typing.Backend, grid_descriptor: definitions.GridDescription + backend: gtx_typing.Backend, grid_descriptor: test_defs.GridDescription ) -> None: grid = utils.run_grid_manager(grid_descriptor, keep_skip_values=True, backend=backend).grid assert grid_descriptor.params.num_cells == grid.size[dims.CellDim] @@ -364,12 +364,12 @@ def test_gt4py_transform_offset_by_1_where_valid(size: int) -> None: @pytest.mark.parametrize( "grid_descriptor, global_num_cells", [ - (definitions.Grids.R02B04_GLOBAL, definitions.Grids.R02B04_GLOBAL.params.num_cells), - (definitions.Grids.MCH_CH_R04B09_DSL, MCH_CH_RO4B09_GLOBAL_NUM_CELLS), + (test_defs.Grids.R02B04_GLOBAL, test_defs.Grids.R02B04_GLOBAL.params.num_cells), + (test_defs.Grids.MCH_CH_R04B09_DSL, MCH_CH_RO4B09_GLOBAL_NUM_CELLS), ], ) def test_grid_manager_grid_level_and_root( - grid_descriptor: definitions.GridDescription, global_num_cells: int, backend: gtx_typing.Backend + grid_descriptor: test_defs.GridDescription, global_num_cells: int, backend: gtx_typing.Backend ) -> None: assert ( global_num_cells @@ -383,11 +383,11 @@ def test_grid_manager_grid_level_and_root( @pytest.mark.with_netcdf @pytest.mark.parametrize( "experiment", - [definitions.Experiments.JW], + [test_defs.Experiments.JW], ) def test_grid_manager_eval_c2e2c2e( grid_savepoint: serialbox.IconGridSavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend, ) -> None: grid = utils.run_grid_manager(experiment.grid, keep_skip_values=True, backend=backend).grid @@ -405,7 +405,7 @@ def test_grid_manager_eval_c2e2c2e( @pytest.mark.parametrize("dim", utils.main_horizontal_dims()) def test_grid_manager_start_end_index_compare_with_serialized_data( grid_savepoint: serialbox.IconGridSavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, dim: gtx.Dimension, backend: gtx_typing.Backend, ) -> None: @@ -413,7 +413,7 @@ def test_grid_manager_start_end_index_compare_with_serialized_data( grid = utils.run_grid_manager(experiment.grid, keep_skip_values=True, backend=backend).grid for domain in h_grid.get_domains_for_dim(dim): - if not (experiment == definitions.Experiments.EXCLAIM_APE and domain.dim == dims.EdgeDim): + if not (experiment == test_defs.Experiments.EXCLAIM_APE and domain.dim == dims.EdgeDim): # serialized start indices for EdgeDim are all zero assert grid.start_index(domain) == serialized_grid.start_index( domain @@ -429,7 +429,7 @@ def test_grid_manager_start_end_index_compare_with_serialized_data( @pytest.mark.datatest def test_read_geometry_fields( grid_savepoint: serialbox.IconGridSavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend, ) -> None: manager = utils.run_grid_manager(experiment.grid, keep_skip_values=True, backend=backend) @@ -446,7 +446,7 @@ def test_read_geometry_fields( @pytest.mark.parametrize("dim", (dims.CellDim, dims.EdgeDim, dims.VertexDim)) def test_coordinates( grid_savepoint: serialbox.IconGridSavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, dim: gtx.Dimension, backend: gtx_typing.Backend, ) -> None: @@ -460,7 +460,7 @@ def test_coordinates( @pytest.mark.datatest def test_tangent_orientation( grid_savepoint: serialbox.IconGridSavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend, ) -> None: expected = grid_savepoint.tangent_orientation() @@ -474,7 +474,7 @@ def test_tangent_orientation( @pytest.mark.datatest def test_edge_orientation_on_vertex( grid_savepoint: serialbox.IconGridSavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend, ) -> None: expected = grid_savepoint.vertex_edge_orientation() @@ -488,7 +488,7 @@ def test_edge_orientation_on_vertex( @pytest.mark.datatest def test_dual_area( grid_savepoint: serialbox.IconGridSavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend, ) -> None: expected = grid_savepoint.vertex_dual_area() @@ -501,7 +501,7 @@ def test_dual_area( @pytest.mark.datatest def test_edge_cell_distance( grid_savepoint: serialbox.IconGridSavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend, ) -> None: expected = grid_savepoint.edge_cell_length() @@ -517,7 +517,7 @@ def test_edge_cell_distance( @pytest.mark.datatest def test_cell_normal_orientation( grid_savepoint: serialbox.IconGridSavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend, ) -> None: expected = grid_savepoint.edge_orientation() @@ -531,7 +531,7 @@ def test_cell_normal_orientation( @pytest.mark.datatest def test_edge_vertex_distance( grid_savepoint: serialbox.IconGridSavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend, ) -> None: expected = grid_savepoint.edge_vert_length() @@ -547,10 +547,10 @@ def test_edge_vertex_distance( @pytest.mark.parametrize( "grid_descriptor, expected", [ - (definitions.Grids.MCH_CH_R04B09_DSL, True), - (definitions.Grids.R02B04_GLOBAL, False), + (test_defs.Grids.MCH_CH_R04B09_DSL, True), + (test_defs.Grids.R02B04_GLOBAL, False), ], ) -def test_limited_area_on_grid(grid_descriptor: definitions.GridDescription, expected: bool) -> None: +def test_limited_area_on_grid(grid_descriptor: test_defs.GridDescription, expected: bool) -> None: grid = utils.run_grid_manager(grid_descriptor, keep_skip_values=True, backend=None).grid assert expected == grid.limited_area diff --git a/model/common/tests/common/grid/unit_tests/test_gridfile.py b/model/common/tests/common/grid/unit_tests/test_gridfile.py index e5964e3370..fd1dc8d798 100644 --- a/model/common/tests/common/grid/unit_tests/test_gridfile.py +++ b/model/common/tests/common/grid/unit_tests/test_gridfile.py @@ -13,7 +13,7 @@ from icon4py.model.common import dimension as dims from icon4py.model.common.grid import gridfile -from icon4py.model.testing import definitions, grid_utils as gridtest_utils +from icon4py.model.testing import definitions as test_defs, grid_utils as gridtest_utils from icon4py.model.testing.fixtures import ( backend, data_provider, @@ -30,7 +30,7 @@ @pytest.mark.with_netcdf def test_grid_file_dimension() -> None: - grid_descriptor = definitions.Grids.R02B04_GLOBAL + grid_descriptor = test_defs.Grids.R02B04_GLOBAL global_grid_file = str(gridtest_utils.resolve_full_grid_file_name(grid_descriptor)) parser = gridfile.GridFile(global_grid_file) try: @@ -54,7 +54,7 @@ def test_grid_file_dimension() -> None: @pytest.mark.datatest @pytest.mark.with_netcdf def test_grid_file_vertex_cell_edge_dimensions( - experiment: definitions.ExperimentDescription, grid_savepoint: serialbox.IconGridSavepoint + experiment: test_defs.ExperimentDescription, grid_savepoint: serialbox.IconGridSavepoint ) -> None: file = gridtest_utils.resolve_full_grid_file_name(experiment.grid) parser = gridfile.GridFile(str(file)) diff --git a/model/common/tests/common/grid/unit_tests/test_icon.py b/model/common/tests/common/grid/unit_tests/test_icon.py index aa961e2fae..ccab222523 100644 --- a/model/common/tests/common/grid/unit_tests/test_icon.py +++ b/model/common/tests/common/grid/unit_tests/test_icon.py @@ -19,7 +19,7 @@ from icon4py.model.common import constants, dimension as dims, model_backends from icon4py.model.common.grid import base, gridfile, horizontal as h_grid, icon from icon4py.model.common.utils import data_allocation as data_alloc -from icon4py.model.testing import definitions, grid_utils as gridtest_utils +from icon4py.model.testing import definitions as test_defs, grid_utils as gridtest_utils from icon4py.model.testing.fixtures import ( backend, cpu_allocator, @@ -42,15 +42,15 @@ @pytest.fixture(scope="module") -def experiment() -> definitions.ExperimentDescription: +def experiment() -> test_defs.ExperimentDescription: """The module uses hard-coded references for the MCH_CH_R04B09 experiment.""" - return definitions.Experiments.MCH_CH_R04B09 + return test_defs.Experiments.MCH_CH_R04B09 @functools.cache def grid_from_limited_area_grid_file() -> icon.IconGrid: return gridtest_utils.get_grid_manager_from_experiment( - definitions.Experiments.MCH_CH_R04B09, + test_defs.Experiments.MCH_CH_R04B09, keep_skip_values=True, allocator=model_backends.get_allocator(None), ).grid @@ -180,11 +180,11 @@ def test_grid_size(icon_grid: base_grid.Grid) -> None: @pytest.mark.parametrize( "grid_descriptor", - (definitions.Grids.MCH_CH_R04B09_DSL, definitions.Grids.R02B04_GLOBAL), + (test_defs.Grids.MCH_CH_R04B09_DSL, test_defs.Grids.R02B04_GLOBAL), ) @pytest.mark.parametrize("offset", (utils.horizontal_offsets()), ids=lambda x: x.value) def test_when_keep_skip_value_then_neighbor_table_matches_config( - grid_descriptor: definitions.GridDescription, + grid_descriptor: test_defs.GridDescription, offset: gtx.FieldOffset, backend: gtx_typing.Backend, ) -> None: @@ -202,11 +202,11 @@ def test_when_keep_skip_value_then_neighbor_table_matches_config( @pytest.mark.parametrize( "grid_descriptor", - (definitions.Grids.MCH_CH_R04B09_DSL, definitions.Grids.R02B04_GLOBAL), + (test_defs.Grids.MCH_CH_R04B09_DSL, test_defs.Grids.R02B04_GLOBAL), ) @pytest.mark.parametrize("dim", (utils.local_dims())) def test_when_replace_skip_values_then_only_pentagon_points_remain( - grid_descriptor: definitions.GridDescription, + grid_descriptor: test_defs.GridDescription, dim: gtx.Dimension, backend: gtx_typing.Backend, ) -> None: @@ -347,7 +347,7 @@ def test_grid_shape_fail(geometry_type: base.GeometryType, grid_root: int, grid_ "grid_descriptor, geometry_type, subdivision, radius, domain_length, domain_height, global_num_cells, num_cells, characteristic_length", [ ( - definitions.Grids.R02B04_GLOBAL, + test_defs.Grids.R02B04_GLOBAL, base.GeometryType.ICOSAHEDRON, icon.GridSubdivision(root=2, level=4), constants.EARTH_RADIUS, @@ -358,7 +358,7 @@ def test_grid_shape_fail(geometry_type: base.GeometryType, grid_root: int, grid_ 157817.27689721118, ), ( - definitions.Grids.R02B07_GLOBAL, + test_defs.Grids.R02B07_GLOBAL, base.GeometryType.ICOSAHEDRON, icon.GridSubdivision(root=2, level=7), constants.EARTH_RADIUS, @@ -369,7 +369,7 @@ def test_grid_shape_fail(geometry_type: base.GeometryType, grid_root: int, grid_ 19727.55141796687, ), ( - definitions.Grids.R19_B07_MCH_LOCAL, + test_defs.Grids.R19_B07_MCH_LOCAL, base.GeometryType.ICOSAHEDRON, icon.GridSubdivision(root=19, level=7), constants.EARTH_RADIUS, @@ -380,7 +380,7 @@ def test_grid_shape_fail(geometry_type: base.GeometryType, grid_root: int, grid_ 2029.555708750239, ), ( - definitions.Grids.MCH_OPR_R04B07_DOMAIN01, + test_defs.Grids.MCH_OPR_R04B07_DOMAIN01, base.GeometryType.ICOSAHEDRON, icon.GridSubdivision(root=4, level=7), constants.EARTH_RADIUS, @@ -391,7 +391,7 @@ def test_grid_shape_fail(geometry_type: base.GeometryType, grid_root: int, grid_ 9379.079256436624, ), ( - definitions.Grids.MCH_OPR_R19B08_DOMAIN01, + test_defs.Grids.MCH_OPR_R19B08_DOMAIN01, base.GeometryType.ICOSAHEDRON, icon.GridSubdivision(root=19, level=8), constants.EARTH_RADIUS, @@ -402,7 +402,7 @@ def test_grid_shape_fail(geometry_type: base.GeometryType, grid_root: int, grid_ 1014.8736406119558, ), ( - definitions.Grids.MCH_CH_R04B09_DSL, + test_defs.Grids.MCH_CH_R04B09_DSL, base.GeometryType.ICOSAHEDRON, icon.GridSubdivision(root=4, level=9), constants.EARTH_RADIUS, @@ -413,7 +413,7 @@ def test_grid_shape_fail(geometry_type: base.GeometryType, grid_root: int, grid_ 2501.209495453326, ), ( - definitions.Grids.TORUS_100X116_1000M, + test_defs.Grids.TORUS_100X116_1000M, base.GeometryType.TORUS, None, None, @@ -424,7 +424,7 @@ def test_grid_shape_fail(geometry_type: base.GeometryType, grid_root: int, grid_ 658.0370064762462, ), ( - definitions.Grids.TORUS_50000x5000, + test_defs.Grids.TORUS_50000x5000, base.GeometryType.TORUS, None, None, @@ -437,7 +437,7 @@ def test_grid_shape_fail(geometry_type: base.GeometryType, grid_root: int, grid_ ], ) def test_global_grid_params_from_grid_manager( - grid_descriptor: definitions.GridDescription, + grid_descriptor: test_defs.GridDescription, backend: gtx_typing.Backend, geometry_type: base.GeometryType, subdivision: icon.GridSubdivision, diff --git a/model/common/tests/common/grid/unit_tests/test_topography.py b/model/common/tests/common/grid/unit_tests/test_topography.py index 26fb9b683c..a597ef0ffc 100644 --- a/model/common/tests/common/grid/unit_tests/test_topography.py +++ b/model/common/tests/common/grid/unit_tests/test_topography.py @@ -13,7 +13,7 @@ from icon4py.model.common.grid import topography as topo from icon4py.model.common.utils import data_allocation as data_alloc -from icon4py.model.testing import definitions, test_utils +from icon4py.model.testing import test_utils from icon4py.model.testing.fixtures import * # noqa: F403 from ... import utils diff --git a/model/common/tests/common/grid/unit_tests/test_vertical.py b/model/common/tests/common/grid/unit_tests/test_vertical.py index ec937db242..ecc26f3b54 100644 --- a/model/common/tests/common/grid/unit_tests/test_vertical.py +++ b/model/common/tests/common/grid/unit_tests/test_vertical.py @@ -17,7 +17,7 @@ from icon4py.model.common import dimension as dims, type_alias as ta from icon4py.model.common.grid import vertical as v_grid from icon4py.model.common.utils import data_allocation as data_alloc, device_utils -from icon4py.model.testing import definitions, test_utils +from icon4py.model.testing import definitions as test_defs, test_utils from icon4py.model.testing.fixtures import ( backend, damping_height, @@ -103,7 +103,7 @@ def test_damping_layer_calculation_from_icon_input( @pytest.mark.datatest def test_grid_size( - experiment: definitions.ExperimentDescription, grid_savepoint: sb.IconGridSavepoint + experiment: test_defs.ExperimentDescription, grid_savepoint: sb.IconGridSavepoint ) -> None: config = v_grid.VerticalGridConfig(num_levels=grid_savepoint.num(dims.KDim)) vertical_grid = v_grid.VerticalGrid( @@ -154,7 +154,7 @@ def configure_vertical_grid( @pytest.mark.datatest @pytest.mark.parametrize( "experiment, expected_moist_level", - [(definitions.Experiments.MCH_CH_R04B09, 0), (definitions.Experiments.EXCLAIM_APE, 25)], + [(test_defs.Experiments.MCH_CH_R04B09, 0), (test_defs.Experiments.EXCLAIM_APE, 25)], ) def test_moist_level_calculation( grid_savepoint: sb.IconGridSavepoint, expected_moist_level: int @@ -210,7 +210,7 @@ def test_grid_index_top( @pytest.mark.datatest -@pytest.mark.parametrize("experiment", [definitions.Experiments.EXCLAIM_APE]) +@pytest.mark.parametrize("experiment", [test_defs.Experiments.EXCLAIM_APE]) @pytest.mark.parametrize("dim", [dims.KDim, dims.KHalfDim]) @pytest.mark.parametrize("offset", offsets()) def test_grid_index_damping( @@ -227,7 +227,7 @@ def test_grid_index_damping( @pytest.mark.datatest -@pytest.mark.parametrize("experiment", [definitions.Experiments.EXCLAIM_APE]) +@pytest.mark.parametrize("experiment", [test_defs.Experiments.EXCLAIM_APE]) @pytest.mark.parametrize("dim", [dims.KDim, dims.KHalfDim]) @pytest.mark.parametrize("offset", offsets()) def test_grid_index_moist( @@ -244,7 +244,7 @@ def test_grid_index_moist( @pytest.mark.datatest -@pytest.mark.parametrize("experiment", [definitions.Experiments.EXCLAIM_APE]) +@pytest.mark.parametrize("experiment", [test_defs.Experiments.EXCLAIM_APE]) @pytest.mark.parametrize("dim", [dims.KDim, dims.KHalfDim]) @pytest.mark.parametrize("offset", offsets()) def test_grid_index_flat( @@ -263,13 +263,13 @@ def test_grid_index_flat( @pytest.mark.datatest @pytest.mark.parametrize( "experiment", - [definitions.Experiments.MCH_CH_R04B09, definitions.Experiments.EXCLAIM_APE], + [test_defs.Experiments.MCH_CH_R04B09, test_defs.Experiments.EXCLAIM_APE], ) @pytest.mark.parametrize("dim", [dims.KDim, dims.KHalfDim]) @pytest.mark.parametrize("offset", offsets()) def test_grid_index_bottom( grid_savepoint: sb.IconGridSavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, dim: gtx.Dimension, offset: int, ) -> None: @@ -281,13 +281,13 @@ def test_grid_index_bottom( @pytest.mark.datatest -@pytest.mark.parametrize("experiment", [definitions.Experiments.EXCLAIM_APE]) +@pytest.mark.parametrize("experiment", [test_defs.Experiments.EXCLAIM_APE]) @pytest.mark.parametrize("zone", vertical_zones()) @pytest.mark.parametrize("dim", [dims.KDim, dims.KHalfDim]) @pytest.mark.parametrize("offset", offsets()) def test_grid_index_raises_if_index_above_num_levels( grid_savepoint: sb.IconGridSavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, zone: v_grid.Zone, dim: gtx.Dimension, offset: int, @@ -301,13 +301,13 @@ def test_grid_index_raises_if_index_above_num_levels( @pytest.mark.datatest -@pytest.mark.parametrize("experiment", [definitions.Experiments.EXCLAIM_APE]) +@pytest.mark.parametrize("experiment", [test_defs.Experiments.EXCLAIM_APE]) @pytest.mark.parametrize("zone", vertical_zones()) @pytest.mark.parametrize("dim", [dims.KDim, dims.KHalfDim]) @pytest.mark.parametrize("offset", offsets()) def test_grid_index_raises_if_index_below_zero( grid_savepoint: sb.IconGridSavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, zone: v_grid.Zone, dim: gtx.Dimension, offset: int, @@ -355,9 +355,9 @@ def test_vct_a_vct_b_calculation_from_icon_input( @pytest.mark.parametrize( "experiment", [ - definitions.Experiments.MCH_CH_R04B09, - definitions.Experiments.GAUSS3D, - definitions.Experiments.EXCLAIM_APE, + test_defs.Experiments.MCH_CH_R04B09, + test_defs.Experiments.GAUSS3D, + test_defs.Experiments.EXCLAIM_APE, ], ) def test_compute_vertical_coordinate( @@ -366,7 +366,7 @@ def test_compute_vertical_coordinate( topography_savepoint: sb.TopographySavepoint, interpolation_savepoint: sb.InterpolationSavepoint, icon_grid: base_grid.Grid, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, model_top_height: float, backend: gtx_typing.Backend, ) -> None: @@ -377,7 +377,7 @@ def test_compute_vertical_coordinate( specific_values = ( {"rayleigh_damping_height": 12500.0, "stretch_factor": 0.65, "lowest_layer_thickness": 20.0} - if experiment == definitions.Experiments.MCH_CH_R04B09 + if experiment == test_defs.Experiments.MCH_CH_R04B09 else { "rayleigh_damping_height": 45000.0, "stretch_factor": 1.0, @@ -400,9 +400,9 @@ def test_compute_vertical_coordinate( ) assert vertical_geometry.nflatlev == grid_savepoint.nflatlev() - if experiment in (definitions.Experiments.MCH_CH_R04B09, definitions.Experiments.GAUSS3D): + if experiment in (test_defs.Experiments.MCH_CH_R04B09, test_defs.Experiments.GAUSS3D): topography = topography_savepoint.topo_c() - elif experiment == definitions.Experiments.EXCLAIM_APE: + elif experiment == test_defs.Experiments.EXCLAIM_APE: topography = data_alloc.zero_field( icon_grid, dims.CellDim, allocator=backend, dtype=ta.wpfloat ) diff --git a/model/common/tests/common/grid/utils.py b/model/common/tests/common/grid/utils.py index a36bcfa610..f584b454c4 100644 --- a/model/common/tests/common/grid/utils.py +++ b/model/common/tests/common/grid/utils.py @@ -16,7 +16,7 @@ from icon4py.model.common import dimension as dims, model_backends from icon4py.model.common.grid import grid_manager as gm, horizontal as h_grid from icon4py.model.common.utils import data_allocation as data_alloc -from icon4py.model.testing import definitions, grid_utils as gridtest_utils +from icon4py.model.testing import definitions as test_defs, grid_utils as gridtest_utils managers: dict[str, gm.GridManager] = {} @@ -74,7 +74,7 @@ def _domain(dim: gtx.Dimension, zones: Iterator[h_grid.Zone]) -> Iterator[h_grid def run_grid_manager( - grid: definitions.GridDescription, + grid: test_defs.GridDescription, keep_skip_values: bool, backend: gtx_typing.Backend | None, ) -> gm.GridManager: @@ -95,19 +95,19 @@ def run_grid_manager( GRID_REFERENCE_VALUES = { - definitions.Experiments.EXCLAIM_APE.name: { + test_defs.Experiments.EXCLAIM_APE.name: { "mean_edge_length": 240221.1036647776, "mean_dual_edge_length": 138710.63736114913, "mean_cell_area": 24906292887.251026, "mean_dual_area": 49802858653.68937, }, - definitions.Experiments.MCH_CH_R04B09.name: { + test_defs.Experiments.MCH_CH_R04B09.name: { "mean_edge_length": 3803.019140934253, "mean_dual_edge_length": 2180.911493355989, "mean_cell_area": 6256048.940145881, "mean_dual_area": 12259814.063180268, }, - definitions.Experiments.GAUSS3D.name: { + test_defs.Experiments.GAUSS3D.name: { "mean_edge_length": 757.5757575757576, "mean_dual_edge_length": 437.3865675678984, "mean_cell_area": 248515.09520903317, diff --git a/model/common/tests/common/interpolation/unit_tests/test_interpolation_fields.py b/model/common/tests/common/interpolation/unit_tests/test_interpolation_fields.py index 9cd190fe76..6cb2d13d41 100644 --- a/model/common/tests/common/interpolation/unit_tests/test_interpolation_fields.py +++ b/model/common/tests/common/interpolation/unit_tests/test_interpolation_fields.py @@ -32,7 +32,7 @@ compute_pos_on_tplane_e_x_y_torus, ) from icon4py.model.common.utils import data_allocation as data_alloc -from icon4py.model.testing import definitions, serialbox as sb +from icon4py.model.testing import definitions as test_defs, serialbox as sb from icon4py.model.testing.fixtures.datatest import ( backend, data_provider, @@ -92,7 +92,7 @@ def test_compute_c_lin_e( @pytest.mark.embedded_only @pytest.mark.datatest def test_compute_geofac_div( - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, grid_savepoint: sb.IconGridSavepoint, interpolation_savepoint: sb.InterpolationSavepoint, icon_grid: base_grid.Grid, @@ -117,7 +117,7 @@ def test_compute_geofac_div( @pytest.mark.embedded_only @pytest.mark.datatest def test_compute_geofac_rot( - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, grid_savepoint: sb.IconGridSavepoint, interpolation_savepoint: sb.InterpolationSavepoint, icon_grid: base_grid.Grid, diff --git a/model/common/tests/common/io/unit_tests/test_io.py b/model/common/tests/common/io/unit_tests/test_io.py index d228ba336c..a31d389b31 100644 --- a/model/common/tests/common/io/unit_tests/test_io.py +++ b/model/common/tests/common/io/unit_tests/test_io.py @@ -30,7 +30,7 @@ to_delta, ) from icon4py.model.common.states import data -from icon4py.model.testing import datatest_utils, definitions, grid_utils +from icon4py.model.testing import datatest_utils, definitions as test_defs, grid_utils from ...fixtures import test_path from .. import utils as test_io_utils @@ -146,7 +146,7 @@ def test_io_monitor_write_ugrid_file(test_path): def test_io_monitor_write_and_read_ugrid_dataset(test_path, variables): path_name = test_path.absolute().as_posix() + "/output" grid = grid_utils.get_grid_manager_from_experiment( - definitions.Experiments.EXCLAIM_APE, keep_skip_values=True, allocator=backend + test_defs.Experiments.EXCLAIM_APE, keep_skip_values=True, allocator=backend ).grid vertical_config = v_grid.VerticalGridConfig(num_levels=grid.num_levels) vertical_params = v_grid.VerticalGrid( @@ -198,7 +198,7 @@ def test_io_monitor_write_and_read_ugrid_dataset(test_path, variables): def test_fieldgroup_monitor_write_dataset_file_roll(test_path): grid = grid_utils.get_grid_manager_from_experiment( - definitions.Experiments.EXCLAIM_APE, True, backend + test_defs.Experiments.EXCLAIM_APE, True, backend ).grid vertical_config = v_grid.VerticalGridConfig(num_levels=grid.num_levels) vertical_params = v_grid.VerticalGrid( diff --git a/model/common/tests/common/io/unit_tests/test_ugrid.py b/model/common/tests/common/io/unit_tests/test_ugrid.py index d6e100ac24..6aef644247 100644 --- a/model/common/tests/common/io/unit_tests/test_ugrid.py +++ b/model/common/tests/common/io/unit_tests/test_ugrid.py @@ -17,19 +17,19 @@ extract_horizontal_coordinates, load_data_file, ) -from icon4py.model.testing import datatest_utils, definitions, grid_utils +from icon4py.model.testing import datatest_utils, definitions as test_defs, grid_utils from ...fixtures import test_path def grid_files(): grids = [ - definitions.Grids.R02B04_GLOBAL, - definitions.Grids.MCH_CH_R04B09_DSL, + test_defs.Grids.R02B04_GLOBAL, + test_defs.Grids.MCH_CH_R04B09_DSL, ] for grid in grids: - yield definitions.grids_path().joinpath(grid.name).joinpath(grid.file_name) + yield test_defs.grids_path().joinpath(grid.name).joinpath(grid.file_name) @pytest.mark.parametrize("file", grid_files()) diff --git a/model/common/tests/common/io/utils.py b/model/common/tests/common/io/utils.py index 00fcfb3b55..e7f8a3fcf3 100644 --- a/model/common/tests/common/io/utils.py +++ b/model/common/tests/common/io/utils.py @@ -14,7 +14,7 @@ from icon4py.model.common.io import utils from icon4py.model.common.states import data from icon4py.model.common.utils import data_allocation as data_alloc -from icon4py.model.testing import definitions, grid_utils +from icon4py.model.testing import definitions as test_defs, grid_utils # setting backend to fieldview embedded here. @@ -22,11 +22,11 @@ UNLIMITED = None simple_grid = simple.simple_grid() -grid_file = definitions.grids_path().joinpath( - definitions.Grids.R02B04_GLOBAL.name, definitions.Grids.R02B04_GLOBAL.file_name +grid_file = test_defs.grids_path().joinpath( + test_defs.Grids.R02B04_GLOBAL.name, test_defs.Grids.R02B04_GLOBAL.file_name ) global_grid = grid_utils.get_grid_manager_from_experiment( - definitions.Experiments.EXCLAIM_APE, keep_skip_values=True, allocator=backend + test_defs.Experiments.EXCLAIM_APE, keep_skip_values=True, allocator=backend ).grid diff --git a/model/common/tests/common/metrics/unit_tests/test_compute_diffusion_metrics.py b/model/common/tests/common/metrics/unit_tests/test_compute_diffusion_metrics.py index 0c13e081d4..fb160d633a 100644 --- a/model/common/tests/common/metrics/unit_tests/test_compute_diffusion_metrics.py +++ b/model/common/tests/common/metrics/unit_tests/test_compute_diffusion_metrics.py @@ -24,7 +24,7 @@ compute_weighted_cell_neighbor_sum, ) from icon4py.model.common.utils import data_allocation as data_alloc -from icon4py.model.testing import definitions, test_utils +from icon4py.model.testing import definitions as test_defs, test_utils from icon4py.model.testing.fixtures.datatest import ( backend, data_provider, @@ -50,7 +50,7 @@ @pytest.mark.datatest def test_compute_diffusion_mask_and_coeff( metrics_savepoint: sb.MetricSavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, interpolation_savepoint: sb.InterpolationSavepoint, icon_grid: base_grid.Grid, grid_savepoint: sb.IconGridSavepoint, @@ -65,7 +65,7 @@ def test_compute_diffusion_mask_and_coeff( c2e2c = icon_grid.get_connectivity(dims.C2E2C).asnumpy() c_bln_avg = interpolation_savepoint.c_bln_avg() z_mc = metrics_savepoint.z_mc() - (_, _, _, _, _, _, _, _, thslp_zdiffu, thhgtd_zdiffu) = definitions.construct_metrics_config( + (_, _, _, _, _, _, _, _, thslp_zdiffu, thhgtd_zdiffu) = test_defs.construct_metrics_config( experiment ) cell_nudging = icon_grid.start_index(h_grid.domain(dims.CellDim)(h_grid.Zone.NUDGING)) @@ -134,7 +134,7 @@ def test_compute_diffusion_mask_and_coeff( @pytest.mark.datatest def test_compute_diffusion_intcoef_and_vertoffset( metrics_savepoint: sb.MetricSavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, interpolation_savepoint: sb.InterpolationSavepoint, icon_grid: base_grid.Grid, grid_savepoint: sb.IconGridSavepoint, @@ -149,7 +149,7 @@ def test_compute_diffusion_intcoef_and_vertoffset( c2e2c = icon_grid.get_connectivity(dims.C2E2C).asnumpy() c_bln_avg = interpolation_savepoint.c_bln_avg() z_mc = metrics_savepoint.z_mc() - (_, _, _, _, _, _, _, _, thslp_zdiffu, thhgtd_zdiffu) = definitions.construct_metrics_config( + (_, _, _, _, _, _, _, _, thslp_zdiffu, thhgtd_zdiffu) = test_defs.construct_metrics_config( experiment ) cell_nudging = icon_grid.start_index(h_grid.domain(dims.CellDim)(h_grid.Zone.NUDGING)) diff --git a/model/common/tests/common/metrics/unit_tests/test_compute_zdiff_gradp_dsl.py b/model/common/tests/common/metrics/unit_tests/test_compute_zdiff_gradp_dsl.py index 1c19a7ae09..c462d40c40 100644 --- a/model/common/tests/common/metrics/unit_tests/test_compute_zdiff_gradp_dsl.py +++ b/model/common/tests/common/metrics/unit_tests/test_compute_zdiff_gradp_dsl.py @@ -17,7 +17,7 @@ from icon4py.model.common.metrics.compute_zdiff_gradp_dsl import compute_zdiff_gradp_dsl from icon4py.model.common.metrics.metric_fields import compute_flat_max_idx from icon4py.model.common.utils import data_allocation as data_alloc -from icon4py.model.testing import definitions, test_utils +from icon4py.model.testing import test_utils from icon4py.model.testing.fixtures.datatest import ( backend, data_provider, diff --git a/model/common/tests/common/metrics/unit_tests/test_metric_fields.py b/model/common/tests/common/metrics/unit_tests/test_metric_fields.py index 67e6daf17a..663cbdab81 100644 --- a/model/common/tests/common/metrics/unit_tests/test_metric_fields.py +++ b/model/common/tests/common/metrics/unit_tests/test_metric_fields.py @@ -17,7 +17,7 @@ from icon4py.model.common.grid import grid_refinement as refinement, horizontal from icon4py.model.common.metrics import metric_fields as mf from icon4py.model.common.utils import data_allocation as data_alloc -from icon4py.model.testing import definitions, test_utils as testing_helpers +from icon4py.model.testing import definitions as test_defs, test_utils as testing_helpers from icon4py.model.testing.definitions import construct_metrics_config from icon4py.model.testing.fixtures.datatest import ( backend, @@ -137,7 +137,7 @@ def test_compute_scaling_factor_for_3d_divdamp( @pytest.mark.datatest def test_compute_rayleigh_w( icon_grid: base_grid.Grid, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, metrics_savepoint: sb.MetricSavepoint, grid_savepoint: sb.IconGridSavepoint, backend: gtx_typing.Backend, @@ -238,14 +238,14 @@ def test_compute_exner_exfac( grid_savepoint: sb.IconGridSavepoint, icon_grid: base_grid.Grid, metrics_savepoint: sb.MetricSavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend, ) -> None: horizontal_start = icon_grid.start_index(cell_domain(horizontal.Zone.LATERAL_BOUNDARY_LEVEL_2)) match experiment: - case definitions.Experiments.MCH_CH_R04B09: + case test_defs.Experiments.MCH_CH_R04B09: exner_expol = 0.333 - case definitions.Experiments.WEISMAN_KLEMP_TORUS: + case test_defs.Experiments.WEISMAN_KLEMP_TORUS: exner_expol = 0.333 case _: exner_expol = 1.0 / 3.0 @@ -288,7 +288,7 @@ def test_compute_exner_w_implicit_weight_parameter( grid_savepoint: sb.IconGridSavepoint, metrics_savepoint: sb.MetricSavepoint, interpolation_savepoint: sb.InterpolationSavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend, ) -> None: z_ifc = metrics_savepoint.z_ifc() @@ -346,9 +346,9 @@ def test_compute_exner_w_implicit_weight_parameter( vwind_impl_wgt_ref = metrics_savepoint.vwind_impl_wgt() dual_edge_length = grid_savepoint.dual_edge_length() match experiment: - case definitions.Experiments.MCH_CH_R04B09: + case test_defs.Experiments.MCH_CH_R04B09: vwind_offctr = 0.2 - case definitions.Experiments.WEISMAN_KLEMP_TORUS: + case test_defs.Experiments.WEISMAN_KLEMP_TORUS: vwind_offctr = 0.2 case _: vwind_offctr = 0.15 diff --git a/model/common/tests/common/states/unit_tests/test_factory.py b/model/common/tests/common/states/unit_tests/test_factory.py index 19b779b22a..aa41dd2503 100644 --- a/model/common/tests/common/states/unit_tests/test_factory.py +++ b/model/common/tests/common/states/unit_tests/test_factory.py @@ -21,7 +21,7 @@ from icon4py.model.common.math import helpers as math_helpers from icon4py.model.common.states import factory, model, utils as state_utils from icon4py.model.common.utils import data_allocation as data_alloc -from icon4py.model.testing import definitions, serialbox +from icon4py.model.testing import definitions as test_defs, serialbox from icon4py.model.testing.fixtures.datatest import ( backend, data_provider, @@ -132,7 +132,7 @@ def cell_coordinate_source( def height_coordinate_source( metrics_savepoint: sb.MetricSavepoint, grid_savepoint: sb.IconGridSavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend, ) -> Generator[SimpleFieldSource, None, None]: grid = grid_savepoint.construct_icon_grid(backend=backend) diff --git a/model/common/tests/common/topography/test_jablonowski_williamson_topography.py b/model/common/tests/common/topography/test_jablonowski_williamson_topography.py index af5aa6e950..bf4b778d26 100644 --- a/model/common/tests/common/topography/test_jablonowski_williamson_topography.py +++ b/model/common/tests/common/topography/test_jablonowski_williamson_topography.py @@ -15,7 +15,7 @@ from icon4py.model.common import dimension as dims from icon4py.model.common.initialization import topography from icon4py.model.common.utils import data_allocation as data_alloc -from icon4py.model.testing import definitions, test_utils +from icon4py.model.testing import definitions as test_defs, test_utils from ..fixtures import * # noqa: F403 @@ -28,9 +28,9 @@ @pytest.mark.datatest @pytest.mark.embedded_remap_error -@pytest.mark.parametrize("experiment", [definitions.Experiments.JW]) +@pytest.mark.parametrize("experiment", [test_defs.Experiments.JW]) def test_jablonowski_williamson_topography( - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend | None, grid_savepoint: sb.IconGridSavepoint, topography_savepoint: sb.TopographySavepoint, diff --git a/model/driver/tests/driver/integration_tests/test_gauss3d.py b/model/driver/tests/driver/integration_tests/test_gauss3d.py index d4b47bb5dc..29f758f780 100644 --- a/model/driver/tests/driver/integration_tests/test_gauss3d.py +++ b/model/driver/tests/driver/integration_tests/test_gauss3d.py @@ -13,7 +13,7 @@ from icon4py.model.common.decomposition import definitions as decomposition from icon4py.model.driver.testcases import gauss3d -from icon4py.model.testing import datatest_utils as dt_utils, definitions, test_utils +from icon4py.model.testing import datatest_utils as dt_utils, definitions as test_defs, test_utils from icon4py.model.testing.fixtures.datatest import backend from ..fixtures import * # noqa: F403 @@ -32,11 +32,11 @@ @pytest.mark.parametrize( "experiment, rank", [ - (definitions.Experiments.GAUSS3D, 0), + (test_defs.Experiments.GAUSS3D, 0), ], ) def test_gauss3d_initial_condition( - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, processor_props: decomposition.ProcessProperties, backend: gtx_typing.Backend, rank: int, diff --git a/model/driver/tests/driver/integration_tests/test_icon4py.py b/model/driver/tests/driver/integration_tests/test_icon4py.py index 78e8584c98..897d9f2919 100644 --- a/model/driver/tests/driver/integration_tests/test_icon4py.py +++ b/model/driver/tests/driver/integration_tests/test_icon4py.py @@ -24,7 +24,7 @@ icon4py_driver, initialization_utils as driver_init, ) -from icon4py.model.testing import datatest_utils as dt_utils, definitions, grid_utils, test_utils +from icon4py.model.testing import datatest_utils as dt_utils, definitions as test_defs, grid_utils, test_utils from icon4py.model.testing.fixtures.datatest import backend, backend_like from ..fixtures import * # noqa: F403 @@ -44,7 +44,7 @@ "experiment, istep_init, istep_exit, substep_init, substep_exit, timeloop_date_init, timeloop_date_exit, step_date_init, step_date_exit, timeloop_diffusion_linit_init, timeloop_diffusion_linit_exit", [ ( - definitions.Experiments.MCH_CH_R04B09, + test_defs.Experiments.MCH_CH_R04B09, 1, 2, 1, @@ -57,7 +57,7 @@ False, ), ( - definitions.Experiments.MCH_CH_R04B09, + test_defs.Experiments.MCH_CH_R04B09, 1, 2, 1, @@ -70,7 +70,7 @@ False, ), ( - definitions.Experiments.GAUSS3D, + test_defs.Experiments.GAUSS3D, 1, 2, 1, @@ -85,7 +85,7 @@ ], ) def test_run_timeloop_single_step( - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, timeloop_date_init: str, timeloop_date_exit: str, timeloop_diffusion_linit_init: bool, @@ -106,7 +106,7 @@ def test_run_timeloop_single_step( savepoint_nonhydro_exit: sb.IconNonHydroExitSavepoint, backend: gtx_typing.Backend, ): - if experiment == definitions.Experiments.GAUSS3D: + if experiment == test_defs.Experiments.GAUSS3D: config = icon4py_configuration.read_config( experiment_type=driver_init.ExperimentType.GAUSS3D, backend=backend, @@ -116,10 +116,10 @@ def test_run_timeloop_single_step( icon4pyrun_config = config.run_config else: - diffusion_config = definitions.construct_diffusion_config( + diffusion_config = test_defs.construct_diffusion_config( experiment, ndyn_substeps=ndyn_substeps ) - nonhydro_config = definitions.construct_nonhydrostatic_config(experiment) + nonhydro_config = test_defs.construct_nonhydrostatic_config(experiment) icon4pyrun_config = construct_icon4pyrun_config( experiment, timeloop_date_init, @@ -379,7 +379,7 @@ def test_run_timeloop_single_step( "experiment, experiment_type", [ ( - definitions.Experiments.MCH_CH_R04B09, + test_defs.Experiments.MCH_CH_R04B09, driver_init.ExperimentType.ANY.value, ), ], diff --git a/model/driver/tests/driver/integration_tests/test_jablonowski_williamson.py b/model/driver/tests/driver/integration_tests/test_jablonowski_williamson.py index a3b9738491..66c3b363d5 100644 --- a/model/driver/tests/driver/integration_tests/test_jablonowski_williamson.py +++ b/model/driver/tests/driver/integration_tests/test_jablonowski_williamson.py @@ -15,7 +15,7 @@ from icon4py.model.common.decomposition import definitions as decomposition from icon4py.model.common.utils import data_allocation as data_alloc from icon4py.model.driver.testcases import jablonowski_williamson as jabw -from icon4py.model.testing import datatest_utils as dt_utils, definitions, test_utils +from icon4py.model.testing import datatest_utils as dt_utils, definitions as test_defs, test_utils from icon4py.model.testing.fixtures.datatest import backend from ..fixtures import * # noqa: F403 @@ -31,9 +31,9 @@ @pytest.mark.datatest -@pytest.mark.parametrize("experiment, rank", [(definitions.Experiments.JW, 0)]) +@pytest.mark.parametrize("experiment, rank", [(test_defs.Experiments.JW, 0)]) def test_jabw_initial_condition( - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, processor_props: decomposition.ProcessProperties, backend: gtx_typing.Backend, rank: int, diff --git a/model/driver/tests/driver/utils.py b/model/driver/tests/driver/utils.py index 38d63eeaf9..9317c40fb0 100644 --- a/model/driver/tests/driver/utils.py +++ b/model/driver/tests/driver/utils.py @@ -11,7 +11,7 @@ import gt4py.next.typing as gtx_typing from icon4py.model.driver import icon4py_configuration as driver_config -from icon4py.model.testing import definitions +from icon4py.model.testing import definitions as test_defs def mch_ch_r04b09_dsl_icon4pyrun_config( @@ -63,18 +63,18 @@ def exclaim_ape_icon4pyrun_config( def construct_icon4pyrun_config( - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, date_init: str, date_exit: str, diffusion_linit_init: bool, backend: gtx_typing.Backend, ndyn_substeps: int = 5, ): - if experiment == definitions.Experiments.MCH_CH_R04B09: + if experiment == test_defs.Experiments.MCH_CH_R04B09: return mch_ch_r04b09_dsl_icon4pyrun_config( date_init, date_exit, diffusion_linit_init, backend, ndyn_substeps ) - elif experiment == definitions.Experiments.EXCLAIM_APE: + elif experiment == test_defs.Experiments.EXCLAIM_APE: return exclaim_ape_icon4pyrun_config( date_init, date_exit, diffusion_linit_init, backend, ndyn_substeps ) diff --git a/model/standalone_driver/tests/standalone_driver/integration_tests/test_standalone_driver.py b/model/standalone_driver/tests/standalone_driver/integration_tests/test_standalone_driver.py index bd38e6dce9..8776043ecf 100644 --- a/model/standalone_driver/tests/standalone_driver/integration_tests/test_standalone_driver.py +++ b/model/standalone_driver/tests/standalone_driver/integration_tests/test_standalone_driver.py @@ -11,7 +11,7 @@ from icon4py.model.common import model_backends from icon4py.model.standalone_driver import main -from icon4py.model.testing import definitions, grid_utils +from icon4py.model.testing import definitions as test_defs, grid_utils from icon4py.model.testing.fixtures.datatest import backend_like @@ -30,7 +30,7 @@ def test_standalone_driver( if backend_like == v: backend_name = k - grid_file_path = grid_utils._download_grid_file(definitions.Grids.R02B04_GLOBAL) + grid_file_path = grid_utils._download_grid_file(test_defs.Grids.R02B04_GLOBAL) output_path = tmp_path / f"ci_driver_output_for_backend_{backend_name}" main.main( diff --git a/model/testing/src/icon4py/model/testing/datatest_utils.py b/model/testing/src/icon4py/model/testing/datatest_utils.py index 0f9e0b5c15..e73b45347d 100644 --- a/model/testing/src/icon4py/model/testing/datatest_utils.py +++ b/model/testing/src/icon4py/model/testing/datatest_utils.py @@ -16,7 +16,7 @@ import gt4py.next.typing as gtx_typing from icon4py.model.common.decomposition import definitions as decomposition -from icon4py.model.testing import definitions, serialbox +from icon4py.model.testing import definitions as test_defs, serialbox def get_processor_properties_for_run( @@ -25,19 +25,19 @@ def get_processor_properties_for_run( return decomposition.get_processor_properties(run_instance) -def get_experiment_name_with_version(experiment: definitions.ExperimentDescription) -> str: +def get_experiment_name_with_version(experiment: test_defs.ExperimentDescription) -> str: """Generate experiment name with version suffix.""" return f"{experiment.name}_v{experiment.version:02d}" def get_ranked_experiment_name_with_version( - experiment: definitions.ExperimentDescription, comm_size: int + experiment: test_defs.ExperimentDescription, comm_size: int ) -> str: """Generate ranked experiment name with version suffix.""" return f"mpitask{comm_size}_{get_experiment_name_with_version(experiment)}" -def get_experiment_archive_filename(experiment: definitions.ExperimentDescription, comm_size: int) -> str: +def get_experiment_archive_filename(experiment: test_defs.ExperimentDescription, comm_size: int) -> str: """Generate ranked archive filename for an experiment.""" return f"{get_ranked_experiment_name_with_version(experiment, comm_size)}.tar.gz" @@ -48,7 +48,7 @@ def get_serialized_data_url(root_url: str, filepath: str) -> str: def get_datapath_for_experiment( - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, processor_props: decomposition.ProcessProperties, ) -> pathlib.Path: """Get the path to serialized data for an experiment.""" @@ -57,8 +57,8 @@ def get_datapath_for_experiment( experiment, processor_props.comm_size, ) - return definitions.serialized_data_path().joinpath( - experiment_dir, definitions.SERIALIZED_DATA_SUBDIR + return test_defs.serialized_data_path().joinpath( + experiment_dir, test_defs.SERIALIZED_DATA_SUBDIR ) @@ -92,7 +92,7 @@ def _read_namelist_json(json_file_path: pathlib.Path) -> dict: def create_experiment_configuration( - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, processor_props: decomposition.ProcessProperties, ) -> tuple: """ @@ -125,9 +125,9 @@ def create_experiment_configuration( processor_props.comm_size, ) json_file_path = ( - definitions.serialized_data_path() + test_defs.serialized_data_path() / experiment_dir - / f"{definitions.NAMELIST_ICON_FNAME}.json" + / f"{test_defs.NAMELIST_ICON_FNAME}.json" ) nml_data = _read_namelist_json(json_file_path) diff --git a/model/testing/src/icon4py/model/testing/fixtures/datatest.py b/model/testing/src/icon4py/model/testing/fixtures/datatest.py index 7eef6d044a..92971cef3c 100644 --- a/model/testing/src/icon4py/model/testing/fixtures/datatest.py +++ b/model/testing/src/icon4py/model/testing/fixtures/datatest.py @@ -17,7 +17,7 @@ from icon4py.model.common import model_backends, model_options from icon4py.model.common.constants import RayleighType from icon4py.model.common.grid import base as base_grid -from icon4py.model.testing import data_handling, datatest_utils as dt_utils, definitions +from icon4py.model.testing import data_handling, datatest_utils as dt_utils, definitions as test_defs if TYPE_CHECKING: @@ -81,13 +81,13 @@ def cpu_allocator() -> gtx_typing.Allocator: @pytest.fixture( params=[ - definitions.Experiments.MCH_CH_R04B09, - definitions.Experiments.EXCLAIM_APE, - definitions.Experiments.GAUSS3D, + test_defs.Experiments.MCH_CH_R04B09, + test_defs.Experiments.EXCLAIM_APE, + test_defs.Experiments.GAUSS3D, ], ids=lambda r: r.name, ) -def experiment(request: pytest.FixtureRequest) -> definitions.ExperimentDescription: +def experiment(request: pytest.FixtureRequest) -> test_defs.ExperimentDescription: """Default parametrization for experiments. The default parametrization is often overwritten for specific tests.""" @@ -102,15 +102,15 @@ def processor_props(request: pytest.FixtureRequest) -> decomposition.ProcessProp def _download_ser_data( - _experiment: definitions.ExperimentDescription, + _experiment: test_defs.ExperimentDescription, processor_props: decomposition.ProcessProperties, ) -> None: # not a fixture to be able to use this function outside of pytest comm_size = processor_props.comm_size try: - root_url = definitions.SERIALIZED_DATA_ROOT_URLS[comm_size] + root_url = test_defs.SERIALIZED_DATA_ROOT_URLS[comm_size] archive_filename = dt_utils.get_experiment_archive_filename(_experiment, comm_size) - archive_path = definitions.SERIALIZED_DATA_DIR + "/" + archive_filename + archive_path = test_defs.SERIALIZED_DATA_DIR + "/" + archive_filename uri = dt_utils.get_serialized_data_url(root_url, archive_path) destination_path = dt_utils.get_datapath_for_experiment(_experiment, processor_props) data_handling.download_test_data(destination_path.parent, uri) @@ -124,7 +124,7 @@ def _download_ser_data( def download_ser_data( request: pytest.FixtureRequest, processor_props: decomposition.ProcessProperties, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, pytestconfig: pytest.Config, ) -> None: """ @@ -142,7 +142,7 @@ def download_ser_data( @pytest.fixture def data_provider( download_ser_data: None, # downloads data as side-effect - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, processor_props: decomposition.ProcessProperties, backend: gtx_typing.Backend, ) -> serialbox.IconSerialDataProvider: @@ -152,7 +152,7 @@ def data_provider( @pytest.fixture def grid_savepoint( - data_provider: serialbox.IconSerialDataProvider, experiment: definitions.ExperimentDescription + data_provider: serialbox.IconSerialDataProvider, experiment: test_defs.ExperimentDescription ) -> serialbox.IconGridSavepoint: return data_provider.from_savepoint_grid(experiment.name, experiment.grid.params) @@ -171,7 +171,7 @@ def icon_grid( @pytest.fixture def decomposition_info( - data_provider: serialbox.IconSerialDataProvider, experiment: definitions.ExperimentDescription + data_provider: serialbox.IconSerialDataProvider, experiment: test_defs.ExperimentDescription ) -> decomposition.DecompositionInfo: return data_provider.from_savepoint_grid( grid_id=experiment.name, global_grid_params=experiment.grid.params @@ -179,14 +179,14 @@ def decomposition_info( @pytest.fixture -def ndyn_substeps(experiment: definitions.ExperimentDescription) -> int: +def ndyn_substeps(experiment: test_defs.ExperimentDescription) -> int: """ Return number of dynamical substeps. Serialized data of global and regional experiments uses a reduced number (2 instead of the default 5) in order to reduce the amount of data generated. """ - if experiment == definitions.Experiments.GAUSS3D: + if experiment == test_defs.Experiments.GAUSS3D: return 5 else: return 2 @@ -500,18 +500,18 @@ def istep_exit() -> int: @pytest.fixture -def lowest_layer_thickness(experiment: definitions.ExperimentDescription) -> float: - if experiment == definitions.Experiments.MCH_CH_R04B09: +def lowest_layer_thickness(experiment: test_defs.ExperimentDescription) -> float: + if experiment == test_defs.Experiments.MCH_CH_R04B09: return 20.0 else: return 50.0 @pytest.fixture -def model_top_height(experiment: definitions.ExperimentDescription) -> float: - if experiment == definitions.Experiments.MCH_CH_R04B09: +def model_top_height(experiment: test_defs.ExperimentDescription) -> float: + if experiment == test_defs.Experiments.MCH_CH_R04B09: return 23000.0 - elif experiment == definitions.Experiments.EXCLAIM_APE: + elif experiment == test_defs.Experiments.EXCLAIM_APE: return 75000.0 else: return 23500.0 @@ -523,20 +523,20 @@ def flat_height() -> float: @pytest.fixture -def stretch_factor(experiment: definitions.ExperimentDescription) -> float: - if experiment == definitions.Experiments.MCH_CH_R04B09: +def stretch_factor(experiment: test_defs.ExperimentDescription) -> float: + if experiment == test_defs.Experiments.MCH_CH_R04B09: return 0.65 - elif experiment == definitions.Experiments.EXCLAIM_APE: + elif experiment == test_defs.Experiments.EXCLAIM_APE: return 0.9 else: return 1.0 @pytest.fixture -def damping_height(experiment: definitions.ExperimentDescription) -> float: - if experiment == definitions.Experiments.MCH_CH_R04B09: +def damping_height(experiment: test_defs.ExperimentDescription) -> float: + if experiment == test_defs.Experiments.MCH_CH_R04B09: return 12500.0 - elif experiment == definitions.Experiments.EXCLAIM_APE: + elif experiment == test_defs.Experiments.EXCLAIM_APE: return 50000.0 else: return 45000.0 @@ -553,24 +553,24 @@ def maximal_layer_thickness() -> float: @pytest.fixture -def rayleigh_coeff(experiment: definitions.ExperimentDescription) -> float: - if experiment == definitions.Experiments.EXCLAIM_APE: +def rayleigh_coeff(experiment: test_defs.ExperimentDescription) -> float: + if experiment == test_defs.Experiments.EXCLAIM_APE: return 0.1 else: return 5.0 @pytest.fixture -def exner_expol(experiment: definitions.ExperimentDescription) -> float: - if experiment == definitions.Experiments.EXCLAIM_APE: +def exner_expol(experiment: test_defs.ExperimentDescription) -> float: + if experiment == test_defs.Experiments.EXCLAIM_APE: return 0.3333333333333 else: return 0.333 @pytest.fixture -def vwind_offctr(experiment: definitions.ExperimentDescription) -> float: - if experiment == definitions.Experiments.EXCLAIM_APE: +def vwind_offctr(experiment: test_defs.ExperimentDescription) -> float: + if experiment == test_defs.Experiments.EXCLAIM_APE: return 0.15 else: return 0.2 diff --git a/model/testing/src/icon4py/model/testing/fixtures/stencil_tests.py b/model/testing/src/icon4py/model/testing/fixtures/stencil_tests.py index 319f7ec7b2..3124acd3f8 100644 --- a/model/testing/src/icon4py/model/testing/fixtures/stencil_tests.py +++ b/model/testing/src/icon4py/model/testing/fixtures/stencil_tests.py @@ -14,7 +14,7 @@ from icon4py.model.common import model_backends from icon4py.model.common.grid import base as base_grid, grid_manager as gm, simple as simple_grid -from icon4py.model.testing import definitions, grid_utils +from icon4py.model.testing import definitions as test_defs, grid_utils BENCHMARK_DEFAULT_LEVELS: Final[int] = 80 @@ -41,28 +41,28 @@ def _get_grid_manager_from_preset( match grid_preset: case "icon_regional": return grid_utils.get_grid_manager_from_identifier( - definitions.Grids.MCH_CH_R04B09_DSL, + test_defs.Grids.MCH_CH_R04B09_DSL, num_levels=num_levels, keep_skip_values=False, allocator=allocator, ) case "icon_global": return grid_utils.get_grid_manager_from_identifier( - definitions.Grids.R02B04_GLOBAL, + test_defs.Grids.R02B04_GLOBAL, num_levels=num_levels, keep_skip_values=False, allocator=allocator, ) case "icon_benchmark_regional": return grid_utils.get_grid_manager_from_identifier( - definitions.Grids.MCH_OPR_R19B08_DOMAIN01, + test_defs.Grids.MCH_OPR_R19B08_DOMAIN01, num_levels=BENCHMARK_DEFAULT_LEVELS, keep_skip_values=False, allocator=allocator, ) case "icon_benchmark_global": return grid_utils.get_grid_manager_from_identifier( - definitions.Grids.R02B06_GLOBAL, + test_defs.Grids.R02B06_GLOBAL, num_levels=BENCHMARK_DEFAULT_LEVELS, keep_skip_values=False, allocator=allocator, diff --git a/model/testing/src/icon4py/model/testing/grid_utils.py b/model/testing/src/icon4py/model/testing/grid_utils.py index 02a994d1ce..40ddb1a5f2 100644 --- a/model/testing/src/icon4py/model/testing/grid_utils.py +++ b/model/testing/src/icon4py/model/testing/grid_utils.py @@ -20,14 +20,14 @@ vertical as v_grid, ) from icon4py.model.common.utils import data_allocation as data_alloc, device_utils -from icon4py.model.testing import config, data_handling, definitions +from icon4py.model.testing import config, data_handling, definitions as test_defs grid_geometries: dict[str, geometry.GridGeometry] = {} def get_grid_manager_from_experiment( - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, keep_skip_values: bool, allocator: gtx_typing.Allocator, ) -> gm.GridManager: @@ -40,7 +40,7 @@ def get_grid_manager_from_experiment( def get_grid_manager_from_identifier( - grid: definitions.GridDescription, + grid: test_defs.GridDescription, num_levels: int, keep_skip_values: bool, allocator: gtx_typing.Allocator, @@ -75,11 +75,11 @@ def get_grid_manager( return manager -def resolve_full_grid_file_name(grid: definitions.GridDescription) -> pathlib.Path: - return definitions.grids_path().joinpath(grid.name, grid.file_name) +def resolve_full_grid_file_name(grid: test_defs.GridDescription) -> pathlib.Path: + return test_defs.grids_path().joinpath(grid.name, grid.file_name) -def _download_grid_file(grid: definitions.GridDescription) -> pathlib.Path: +def _download_grid_file(grid: test_defs.GridDescription) -> pathlib.Path: full_name = resolve_full_grid_file_name(grid) grid_directory = full_name.parent grid_directory.mkdir(parents=True, exist_ok=True) @@ -120,7 +120,7 @@ def _add_dimension(dim: gtx.Dimension) -> None: def get_grid_geometry( - backend: gtx_typing.Backend | None, experiment: definitions.ExperimentDescription + backend: gtx_typing.Backend | None, experiment: test_defs.ExperimentDescription ) -> geometry.GridGeometry: register_name = "_".join((experiment.name, data_alloc.backend_name(backend))) diff --git a/scripts/run_serialization.py b/scripts/run_serialization.py index c427d6d9ac..f471c31758 100644 --- a/scripts/run_serialization.py +++ b/scripts/run_serialization.py @@ -23,7 +23,7 @@ import typer -from icon4py.model.testing import datatest_utils as dt_utils, definitions +from icon4py.model.testing import datatest_utils as dt_utils, definitions as test_defs cli = typer.Typer(no_args_is_help=True, help=__doc__) @@ -35,11 +35,11 @@ COMM_SIZES: list[int] = [1, 2, 4] EXPERIMENTS = [ - definitions.Experiments.MCH_CH_R04B09, - definitions.Experiments.JW, - definitions.Experiments.EXCLAIM_APE, - definitions.Experiments.GAUSS3D, - definitions.Experiments.WEISMAN_KLEMP_TORUS, + test_defs.Experiments.MCH_CH_R04B09, + test_defs.Experiments.JW, + test_defs.Experiments.EXCLAIM_APE, + test_defs.Experiments.GAUSS3D, + test_defs.Experiments.WEISMAN_KLEMP_TORUS, ] # Slurm settings @@ -61,7 +61,7 @@ EXPERIMENTS_DIR = BUILD_DIR / "experiments" # Output location for copied ser_data and tarballs -OUTPUT_ROOT = EXPERIMENTS_DIR / definitions.SERIALIZED_DATA_DIR +OUTPUT_ROOT = EXPERIMENTS_DIR / test_defs.SERIALIZED_DATA_DIR # Maximum concurrent threads for running experiments MAX_THREADS: int = 5 @@ -71,33 +71,33 @@ # ====================================== -def get_f90exp_name(experiment: definitions.ExperimentDescription) -> str: +def get_f90exp_name(experiment: test_defs.ExperimentDescription) -> str: return f"{experiment.name}_sb" -def get_f90exp_dir(experiment: definitions.ExperimentDescription) -> Path: +def get_f90exp_dir(experiment: test_defs.ExperimentDescription) -> Path: return EXPERIMENTS_DIR / get_f90exp_name(experiment) -def get_nmlfile_name(experiment: definitions.ExperimentDescription) -> str: +def get_nmlfile_name(experiment: test_defs.ExperimentDescription) -> str: return f"exp.{get_f90exp_name(experiment)}" -def get_slurmscript_name(experiment: definitions.ExperimentDescription) -> str: +def get_slurmscript_name(experiment: test_defs.ExperimentDescription) -> str: return f"{get_nmlfile_name(experiment)}.run" -def get_serdata_dst_dir(experiment: definitions.ExperimentDescription, comm_size: int) -> Path: +def get_serdata_dst_dir(experiment: test_defs.ExperimentDescription, comm_size: int) -> Path: """Get the destination directory for serialized data.""" return OUTPUT_ROOT / dt_utils.get_ranked_experiment_name_with_version(experiment, comm_size) -def get_tar_path(experiment: definitions.ExperimentDescription, comm_size: int) -> Path: +def get_tar_path(experiment: test_defs.ExperimentDescription, comm_size: int) -> Path: """Get the path to the tar archive for the experiment.""" return OUTPUT_ROOT / dt_utils.get_experiment_archive_filename(experiment, comm_size) -def cleanup_exp_output(experiment: definitions.ExperimentDescription, comm_size: int) -> None: +def cleanup_exp_output(experiment: test_defs.ExperimentDescription, comm_size: int) -> None: """Clean up experiment output directories and archives. Deletes: @@ -352,7 +352,7 @@ def copy_ser_data(experiment, comm_size: int, job_id: str | None = None) -> Path dest_dir.mkdir(parents=True, exist_ok=True) # Copy ser_data folder - shutil.copytree(src_dir, dest_dir / definitions.SERIALIZED_DATA_SUBDIR) + shutil.copytree(src_dir, dest_dir / test_defs.SERIALIZED_DATA_SUBDIR) # Copy NAMELIST files namelist_files = sorted(exp_dir.glob("NAMELIST_*")) @@ -363,8 +363,8 @@ def copy_ser_data(experiment, comm_size: int, job_id: str | None = None) -> Path # Translate to json and copy NAMELIST_ICON_output_atm cmd = [ "f90nml", - str(exp_dir / definitions.NAMELIST_ICON_FNAME), - str(dest_dir / (definitions.NAMELIST_ICON_FNAME + ".json")), + str(exp_dir / test_defs.NAMELIST_ICON_FNAME), + str(dest_dir / (test_defs.NAMELIST_ICON_FNAME + ".json")), ] _ = run_command(cmd) @@ -377,7 +377,7 @@ def copy_ser_data(experiment, comm_size: int, job_id: str | None = None) -> Path return dest_dir -def tar_folder(folder: Path, experiment: definitions.ExperimentDescription, comm_size: int) -> Path: +def tar_folder(folder: Path, experiment: test_defs.ExperimentDescription, comm_size: int) -> Path: tar_path = get_tar_path(experiment, comm_size) with tarfile.open(tar_path, "w:gz") as tar: @@ -388,7 +388,7 @@ def tar_folder(folder: Path, experiment: definitions.ExperimentDescription, comm return tar_path -def generate_update_script(experiment: definitions.ExperimentDescription) -> None: +def generate_update_script(experiment: test_defs.ExperimentDescription) -> None: # copy namelist file from repo to build_dir shutil.copy2( ICONF90_DIR / "run" / get_nmlfile_name(experiment), @@ -400,7 +400,7 @@ def generate_update_script(experiment: definitions.ExperimentDescription) -> Non _ = run_command(cmd, cwd=BUILD_DIR) -def run_experiment(experiment: definitions.ExperimentDescription, comm_size: int) -> None: +def run_experiment(experiment: test_defs.ExperimentDescription, comm_size: int) -> None: """Execute a single experiment with the given communicator size.""" try: # Clean up previous experiment output diff --git a/tools/tests/tools/py2fgen/wrappers/test_diffusion_wrapper.py b/tools/tests/tools/py2fgen/wrappers/test_diffusion_wrapper.py index 8aed0867fc..bb2ed54ec9 100644 --- a/tools/tests/tools/py2fgen/wrappers/test_diffusion_wrapper.py +++ b/tools/tests/tools/py2fgen/wrappers/test_diffusion_wrapper.py @@ -15,7 +15,7 @@ from icon4py.model.atmosphere.diffusion import diffusion, diffusion_states from icon4py.model.common import dimension as dims from icon4py.model.common.grid import states as grid_states, vertical as v_grid -from icon4py.model.testing import definitions, test_utils as testing_test_utils +from icon4py.model.testing import definitions as test_defs, test_utils as testing_test_utils from icon4py.tools import py2fgen from icon4py.tools.py2fgen import test_utils from icon4py.tools.py2fgen.wrappers import common as wrapper_common, diffusion_wrapper @@ -29,7 +29,7 @@ "experiment, step_date_init, step_date_exit", [ ( - definitions.Experiments.MCH_CH_R04B09, + test_defs.Experiments.MCH_CH_R04B09, "2021-06-20T12:00:10.000", "2021-06-20T12:00:10.000", ), @@ -142,7 +142,7 @@ def test_diffusion_wrapper_granule_inputs( dwdy=savepoint_diffusion_init.dwdy(), ) expected_prognostic_state = savepoint_diffusion_init.construct_prognostics() - expected_config = definitions.construct_diffusion_config(experiment, ndyn_substeps) + expected_config = test_defs.construct_diffusion_config(experiment, ndyn_substeps) expected_additional_parameters = diffusion.DiffusionParams(expected_config) # --- Mock and Test Diffusion.init --- @@ -260,7 +260,7 @@ def test_diffusion_wrapper_granule_inputs( "experiment, step_date_init, step_date_exit", [ ( - definitions.Experiments.MCH_CH_R04B09, + test_defs.Experiments.MCH_CH_R04B09, "2021-06-20T12:00:10.000", "2021-06-20T12:00:10.000", ), diff --git a/tools/tests/tools/py2fgen/wrappers/test_dycore_wrapper.py b/tools/tests/tools/py2fgen/wrappers/test_dycore_wrapper.py index abb00a1d6c..205b551ebc 100644 --- a/tools/tests/tools/py2fgen/wrappers/test_dycore_wrapper.py +++ b/tools/tests/tools/py2fgen/wrappers/test_dycore_wrapper.py @@ -20,7 +20,7 @@ from icon4py.model.common.grid.vertical import VerticalGridConfig from icon4py.model.common.states import prognostic_state as prognostics from icon4py.model.common.utils import data_allocation as data_alloc -from icon4py.model.testing import definitions, test_utils as testing_test_utils +from icon4py.model.testing import definitions as test_defs, test_utils as testing_test_utils from icon4py.tools import py2fgen from icon4py.tools.py2fgen import test_utils from icon4py.tools.py2fgen.wrappers import common as wrapper_common, dycore_wrapper @@ -240,7 +240,7 @@ def solve_nh_init( "experiment, step_date_init, step_date_exit", [ ( - definitions.Experiments.MCH_CH_R04B09, + test_defs.Experiments.MCH_CH_R04B09, "2021-06-20T12:00:10.000", "2021-06-20T12:00:10.000", ), @@ -505,7 +505,7 @@ def test_dycore_wrapper_granule_inputs( coeff2_dwdz=metrics_savepoint.coeff2_dwdz(), coeff_gradekin=metrics_savepoint.coeff_gradekin(), ) - expected_config = definitions.construct_nonhydrostatic_config(experiment) + expected_config = test_defs.construct_nonhydrostatic_config(experiment) expected_additional_parameters = solve_nh.NonHydrostaticParams(expected_config) # --- Expected objects that form inputs into run function --- @@ -805,7 +805,7 @@ def test_dycore_wrapper_granule_inputs( "experiment,step_date_init, step_date_exit", [ ( - definitions.Experiments.MCH_CH_R04B09, + test_defs.Experiments.MCH_CH_R04B09, "2021-06-20T12:00:10.000", "2021-06-20T12:00:10.000", ), @@ -984,7 +984,7 @@ def test_granule_solve_nonhydro_single_step_regional( @pytest.mark.datatest -@pytest.mark.parametrize("experiment", [definitions.Experiments.MCH_CH_R04B09]) +@pytest.mark.parametrize("experiment", [test_defs.Experiments.MCH_CH_R04B09]) @pytest.mark.parametrize( "istep_init, substep_init, step_date_init, istep_exit, substep_exit, step_date_exit, vn_only, at_initial_timestep", [ From 858db357855818211fbc44b6f3f65020b73cd1df Mon Sep 17 00:00:00 2001 From: Jacopo Date: Wed, 18 Mar 2026 17:28:43 +0100 Subject: [PATCH 9/9] more renaming definitions to test_defs for consistency across tests and two import fixes --- .../integration_tests/test_advection.py | 8 +-- .../integration_tests/test_diffusion.py | 54 +++++++++---------- model/common/tests/common/fixtures.py | 7 ++- .../unit_tests/test_interpolation_factory.py | 42 +++++++-------- .../unit_tests/test_rbf_interpolation.py | 32 +++++------ .../unit_tests/test_metrics_factory.py | 54 +++++++++---------- 6 files changed, 98 insertions(+), 99 deletions(-) diff --git a/model/atmosphere/advection/tests/advection/integration_tests/test_advection.py b/model/atmosphere/advection/tests/advection/integration_tests/test_advection.py index b8f037bc12..c65bf2a50b 100644 --- a/model/atmosphere/advection/tests/advection/integration_tests/test_advection.py +++ b/model/atmosphere/advection/tests/advection/integration_tests/test_advection.py @@ -20,7 +20,7 @@ from icon4py.model.common.interpolation.interpolation_fields import compute_lsq_coeffs from icon4py.model.common.utils import data_allocation as data_alloc from icon4py.model.testing import ( - definitions, + definitions as test_defs, grid_utils, grid_utils as gridtest_utils, serialbox as sb, @@ -65,7 +65,7 @@ @pytest.mark.embedded_remap_error @pytest.mark.datatest -@pytest.mark.parametrize("experiment", [definitions.Experiments.MCH_CH_R04B09]) +@pytest.mark.parametrize("experiment", [test_defs.Experiments.MCH_CH_R04B09]) @pytest.mark.parametrize( "date, even_timestep, ntracer, horizontal_advection_type, horizontal_advection_limiter, vertical_advection_type, vertical_advection_limiter", [ @@ -124,7 +124,7 @@ def test_advection_run_single_step( backend, advection_init_savepoint, advection_exit_savepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, ): # TODO(OngChia): the last datatest fails on GPU (or even CPU) backend when there is no advection because the horizontal flux is not zero. Further check required. if ( @@ -221,7 +221,7 @@ def test_compute_lsq_coeffs( grid_savepoint: sb.IconGridSavepoint, backend: gtx_typing.Backend, interpolation_savepoint: sb.InterpolationSavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, ) -> None: gm = grid_utils.get_grid_manager_from_identifier( experiment.grid, diff --git a/model/atmosphere/diffusion/tests/diffusion/integration_tests/test_diffusion.py b/model/atmosphere/diffusion/tests/diffusion/integration_tests/test_diffusion.py index bf13f822fc..7458721c0f 100644 --- a/model/atmosphere/diffusion/tests/diffusion/integration_tests/test_diffusion.py +++ b/model/atmosphere/diffusion/tests/diffusion/integration_tests/test_diffusion.py @@ -19,7 +19,7 @@ from icon4py.model.common.grid import geometry_attributes as geometry_meta, vertical as v_grid from icon4py.model.common.utils import data_allocation as data_alloc from icon4py.model.testing import ( - definitions, + definitions as test_defs, grid_utils, reference_funcs as ref_funcs, serialbox as sb, @@ -38,23 +38,23 @@ grid_functionality = collections.defaultdict(dict) -def get_grid_for_experiment(experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend): +def get_grid_for_experiment(experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend): return _get_or_initialize(experiment, backend, "grid") def get_edge_geometry_for_experiment( - experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend + experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend ): return _get_or_initialize(experiment, backend, "edge_geometry") def get_cell_geometry_for_experiment( - experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend + experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend ): return _get_or_initialize(experiment, backend, "cell_geometry") -def _get_or_initialize(experiment: definitions.ExperimentDescription, backend: gtx_typing.Backend, name: str): +def _get_or_initialize(experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend, name: str): if not grid_functionality[experiment.name].get(name): geometry_ = grid_utils.get_grid_geometry(backend, experiment) grid = geometry_.grid @@ -95,7 +95,7 @@ def _get_or_initialize(experiment: definitions.ExperimentDescription, backend: g def test_diffusion_coefficients_with_hdiff_efdt_ratio(experiment): - config = definitions.construct_diffusion_config(experiment, ndyn_substeps=5) + config = test_defs.construct_diffusion_config(experiment, ndyn_substeps=5) config.hdiff_efdt_ratio = 1.0 config.hdiff_w_efdt_ratio = 2.0 @@ -108,7 +108,7 @@ def test_diffusion_coefficients_with_hdiff_efdt_ratio(experiment): def test_diffusion_coefficients_without_hdiff_efdt_ratio(experiment): - config = definitions.construct_diffusion_config(experiment) + config = test_defs.construct_diffusion_config(experiment) config.hdiff_efdt_ratio = 0.0 config.hdiff_w_efdt_ratio = 0.0 @@ -121,7 +121,7 @@ def test_diffusion_coefficients_without_hdiff_efdt_ratio(experiment): def test_smagorinski_factor_for_diffusion_type_4(experiment): - config = definitions.construct_diffusion_config(experiment, ndyn_substeps=5) + config = test_defs.construct_diffusion_config(experiment, ndyn_substeps=5) config.smagorinski_scaling_factor = 0.15 config.diffusion_type = 4 @@ -134,7 +134,7 @@ def test_smagorinski_factor_for_diffusion_type_4(experiment): def test_smagorinski_heights_diffusion_type_5_are_consistent( experiment, ): - config = definitions.construct_diffusion_config(experiment, ndyn_substeps=5) + config = test_defs.construct_diffusion_config(experiment, ndyn_substeps=5) config.smagorinski_scaling_factor = 0.15 config.diffusion_type = 5 @@ -150,7 +150,7 @@ def test_smagorinski_heights_diffusion_type_5_are_consistent( def test_smagorinski_factor_diffusion_type_5(experiment): params = diffusion.DiffusionParams( - definitions.construct_diffusion_config(experiment, ndyn_substeps=5) + test_defs.construct_diffusion_config(experiment, ndyn_substeps=5) ) assert len(params.smagorinski_factor) == len(params.smagorinski_height) assert len(params.smagorinski_factor) == 4 @@ -163,8 +163,8 @@ def test_smagorinski_factor_diffusion_type_5(experiment): @pytest.mark.parametrize( "experiment,step_date_init", [ - (definitions.Experiments.MCH_CH_R04B09, "2021-06-20T12:00:10.000"), - (definitions.Experiments.MCH_CH_R04B09, "2021-06-20T12:00:20.000"), + (test_defs.Experiments.MCH_CH_R04B09, "2021-06-20T12:00:10.000"), + (test_defs.Experiments.MCH_CH_R04B09, "2021-06-20T12:00:20.000"), ], ) def test_diffusion_init( @@ -180,7 +180,7 @@ def test_diffusion_init( ndyn_substeps, backend, ): - config = definitions.construct_diffusion_config(experiment, ndyn_substeps=ndyn_substeps) + config = test_defs.construct_diffusion_config(experiment, ndyn_substeps=ndyn_substeps) additional_parameters = diffusion.DiffusionParams(config) grid = get_grid_for_experiment(experiment, backend) @@ -294,10 +294,10 @@ def _verify_init_values_against_savepoint( @pytest.mark.parametrize( "experiment,step_date_init", [ - (definitions.Experiments.MCH_CH_R04B09, "2021-06-20T12:00:10.000"), - (definitions.Experiments.MCH_CH_R04B09, "2021-06-20T12:00:20.000"), - (definitions.Experiments.EXCLAIM_APE, "2000-01-01T00:00:02.000"), - (definitions.Experiments.EXCLAIM_APE, "2000-01-01T00:00:04.000"), + (test_defs.Experiments.MCH_CH_R04B09, "2021-06-20T12:00:10.000"), + (test_defs.Experiments.MCH_CH_R04B09, "2021-06-20T12:00:20.000"), + (test_defs.Experiments.EXCLAIM_APE, "2000-01-01T00:00:02.000"), + (test_defs.Experiments.EXCLAIM_APE, "2000-01-01T00:00:04.000"), ], ) @pytest.mark.parametrize("ndyn_substeps", (2,)) @@ -318,7 +318,7 @@ def test_verify_diffusion_init_against_savepoint( grid = get_grid_for_experiment(experiment, backend) cell_params = get_cell_geometry_for_experiment(experiment, backend) edge_params = get_edge_geometry_for_experiment(experiment, backend) - config = definitions.construct_diffusion_config(experiment, ndyn_substeps=ndyn_substeps) + config = test_defs.construct_diffusion_config(experiment, ndyn_substeps=ndyn_substeps) additional_parameters = diffusion.DiffusionParams(config) vertical_config = v_grid.VerticalGridConfig( grid.num_levels, @@ -356,12 +356,12 @@ def test_verify_diffusion_init_against_savepoint( "experiment, step_date_init, step_date_exit", [ ( - definitions.Experiments.MCH_CH_R04B09, + test_defs.Experiments.MCH_CH_R04B09, "2021-06-20T12:00:10.000", "2021-06-20T12:00:10.000", ), ( - definitions.Experiments.EXCLAIM_APE, + test_defs.Experiments.EXCLAIM_APE, "2000-01-01T00:00:02.000", "2000-01-01T00:00:02.000", ), @@ -418,7 +418,7 @@ def test_run_diffusion_single_step( vct_b=vct_b, ) - config = definitions.construct_diffusion_config(experiment, ndyn_substeps) + config = test_defs.construct_diffusion_config(experiment, ndyn_substeps) additional_parameters = diffusion.DiffusionParams(config) diffusion_granule = diffusion.Diffusion( @@ -447,7 +447,7 @@ def test_run_diffusion_single_step( "experiment, step_date_init, step_date_exit", [ ( - definitions.Experiments.MCH_CH_R04B09, + test_defs.Experiments.MCH_CH_R04B09, "2021-06-20T12:00:10.000", "2021-06-20T12:00:10.000", ), @@ -494,7 +494,7 @@ def test_run_diffusion_multiple_steps( config=vertical_config, vct_a=grid_savepoint.vct_a(), vct_b=grid_savepoint.vct_b() ) - config = definitions.construct_diffusion_config(experiment, ndyn_substeps) + config = test_defs.construct_diffusion_config(experiment, ndyn_substeps) additional_parameters = diffusion.DiffusionParams(config) ###################################################################### @@ -574,7 +574,7 @@ def test_run_diffusion_multiple_steps( @pytest.mark.datatest @pytest.mark.embedded_remap_error -@pytest.mark.parametrize("experiment", [definitions.Experiments.MCH_CH_R04B09]) +@pytest.mark.parametrize("experiment", [test_defs.Experiments.MCH_CH_R04B09]) @pytest.mark.parametrize("linit", [True]) # TODO(): Enable dace orchestration, currently broken by precompiled programs @pytest.mark.parametrize("orchestration", [False]) @@ -619,7 +619,7 @@ def test_run_diffusion_initial_step( dwdy=savepoint_diffusion_init.dwdy(), ) prognostic_state = savepoint_diffusion_init.construct_prognostics() - config = definitions.construct_diffusion_config(experiment, ndyn_substeps=2) + config = test_defs.construct_diffusion_config(experiment, ndyn_substeps=2) params = diffusion.DiffusionParams(config) diffusion_granule = diffusion.Diffusion( @@ -657,14 +657,14 @@ def test_run_diffusion_initial_step( @pytest.mark.parametrize( "experiment,step_date_init", [ - (definitions.Experiments.MCH_CH_R04B09, "2021-06-20T12:00:10.000"), + (test_defs.Experiments.MCH_CH_R04B09, "2021-06-20T12:00:10.000"), ], ) def test_verify_special_diffusion_inital_step_values_against_initial_savepoint( savepoint_diffusion_init, experiment, icon_grid, linit, ndyn_substeps, backend ): savepoint = savepoint_diffusion_init - config = definitions.construct_diffusion_config(experiment, ndyn_substeps=ndyn_substeps) + config = test_defs.construct_diffusion_config(experiment, ndyn_substeps=ndyn_substeps) params = diffusion.DiffusionParams(config) expected_diff_multfac_vn = savepoint.diff_multfac_vn() diff --git a/model/common/tests/common/fixtures.py b/model/common/tests/common/fixtures.py index 2488b327e7..604ef68ed9 100644 --- a/model/common/tests/common/fixtures.py +++ b/model/common/tests/common/fixtures.py @@ -12,19 +12,18 @@ import gt4py.next.typing as gtx_typing import pytest +from icon4py.model.common.decomposition import definitions as decomposition from icon4py.model.common.grid import geometry, geometry_attributes, gridfile, vertical from icon4py.model.common.interpolation import interpolation_attributes, interpolation_factory from icon4py.model.common.metrics import metrics_attributes, metrics_factory -from icon4py.model.testing import serialbox +from icon4py.model.testing import definitions as test_defs, serialbox from icon4py.model.testing.definitions import construct_metrics_config from icon4py.model.testing.fixtures.datatest import ( backend, backend_like, damping_height, data_provider, - decomposition, decomposition_info, - definitions, download_ser_data, experiment, flat_height, @@ -128,7 +127,7 @@ def metrics_factory_from_savepoint( backend: gtx_typing.Backend, grid_savepoint: serialbox.IconGridSavepoint, topography_savepoint: serialbox.TopographySavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, decomposition_info: decomposition.DecompositionInfo, processor_props: decomposition.ProcessProperties, geometry_from_savepoint: geometry.GridGeometry, diff --git a/model/common/tests/common/interpolation/unit_tests/test_interpolation_factory.py b/model/common/tests/common/interpolation/unit_tests/test_interpolation_factory.py index f69a6d0aae..d33138486e 100644 --- a/model/common/tests/common/interpolation/unit_tests/test_interpolation_factory.py +++ b/model/common/tests/common/interpolation/unit_tests/test_interpolation_factory.py @@ -28,7 +28,7 @@ from icon4py.model.common.utils import data_allocation as data_alloc from icon4py.model.testing import ( datatest_utils as dt_utils, - definitions, + definitions as test_defs, grid_utils as gridtest_utils, test_utils as test_helpers, ) @@ -64,7 +64,7 @@ def _get_interpolation_factory( backend: gtx_typing.Backend | None, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, ) -> interpolation_factory.InterpolationFieldsFactory: registry_key = "_".join((experiment.name, data_alloc.backend_name(backend))) factory = interpolation_factories.get(registry_key) @@ -84,7 +84,7 @@ def _get_interpolation_factory( @pytest.mark.datatest def test_factory_raises_error_on_unknown_field( - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend | None, decomposition_info: decomposition.DecompositionInfo, ) -> None: @@ -105,7 +105,7 @@ def test_factory_raises_error_on_unknown_field( @pytest.mark.datatest def test_get_c_lin_e( interpolation_savepoint: serialbox.InterpolationSavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: field_ref = interpolation_savepoint.c_lin_e() @@ -120,7 +120,7 @@ def test_get_c_lin_e( @pytest.mark.datatest def test_get_geofac_div( interpolation_savepoint: serialbox.InterpolationSavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: field_ref = interpolation_savepoint.geofac_div() @@ -134,7 +134,7 @@ def test_get_geofac_div( @pytest.mark.datatest def test_get_geofac_grdiv( interpolation_savepoint: serialbox.InterpolationSavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: field_ref = interpolation_savepoint.geofac_grdiv() @@ -148,7 +148,7 @@ def test_get_geofac_grdiv( @pytest.mark.datatest def test_get_geofac_rot( interpolation_savepoint: serialbox.InterpolationSavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: field_ref = interpolation_savepoint.geofac_rot() @@ -166,7 +166,7 @@ def test_get_geofac_rot( @pytest.mark.datatest def test_get_geofac_n2s( interpolation_savepoint: serialbox.InterpolationSavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: field_ref = interpolation_savepoint.geofac_n2s() @@ -181,7 +181,7 @@ def test_get_geofac_n2s( @pytest.mark.datatest def test_get_geofac_grg( interpolation_savepoint: serialbox.InterpolationSavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: field_ref = interpolation_savepoint.geofac_grg() @@ -200,7 +200,7 @@ def test_get_geofac_grg( @pytest.mark.datatest def test_get_mass_conserving_cell_average_weight( interpolation_savepoint: serialbox.InterpolationSavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: field_ref = interpolation_savepoint.c_bln_avg() @@ -216,7 +216,7 @@ def test_get_mass_conserving_cell_average_weight( @pytest.mark.datatest def test_e_flx_avg( interpolation_savepoint: serialbox.InterpolationSavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: field_ref = interpolation_savepoint.e_flx_avg() @@ -231,15 +231,15 @@ def test_e_flx_avg( @pytest.mark.parametrize( "experiment, rtol", [ - (definitions.Experiments.MCH_CH_R04B09, 1e-10), - (definitions.Experiments.EXCLAIM_APE, 1e-11), - (definitions.Experiments.GAUSS3D, 0), + (test_defs.Experiments.MCH_CH_R04B09, 1e-10), + (test_defs.Experiments.EXCLAIM_APE, 1e-11), + (test_defs.Experiments.GAUSS3D, 0), ], ) @pytest.mark.datatest def test_e_bln_c_s( interpolation_savepoint: serialbox.InterpolationSavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend | None, rtol: float, ) -> None: @@ -255,7 +255,7 @@ def test_e_bln_c_s( @pytest.mark.datatest def test_pos_on_tplane_e_x_y( interpolation_savepoint: serialbox.InterpolationSavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: field_ref_1 = interpolation_savepoint.pos_on_tplane_e_x() @@ -271,7 +271,7 @@ def test_pos_on_tplane_e_x_y( @pytest.mark.datatest def test_cells_aw_verts( interpolation_savepoint: serialbox.InterpolationSavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: field_ref = interpolation_savepoint.c_intp() @@ -287,7 +287,7 @@ def test_cells_aw_verts( @pytest.mark.datatest def test_nudgecoeffs( interpolation_savepoint: serialbox.InterpolationSavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: field_ref = interpolation_savepoint.nudgecoeff_e() @@ -301,7 +301,7 @@ def test_nudgecoeffs( @pytest.mark.datatest def test_rbf_interpolation_coeffs_cell( interpolation_savepoint: serialbox.InterpolationSavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: field_ref_c1 = interpolation_savepoint.rbf_vec_coeff_c1() @@ -330,7 +330,7 @@ def test_rbf_interpolation_coeffs_cell( @pytest.mark.datatest def test_rbf_interpolation_coeffs_edge( interpolation_savepoint: serialbox.InterpolationSavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: field_ref_e = interpolation_savepoint.rbf_vec_coeff_e() @@ -351,7 +351,7 @@ def test_rbf_interpolation_coeffs_edge( @pytest.mark.datatest def test_rbf_interpolation_coeffs_vertex( interpolation_savepoint: serialbox.InterpolationSavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: field_ref_v1 = interpolation_savepoint.rbf_vec_coeff_v1() diff --git a/model/common/tests/common/interpolation/unit_tests/test_rbf_interpolation.py b/model/common/tests/common/interpolation/unit_tests/test_rbf_interpolation.py index 453d16fefe..d1e63572b7 100644 --- a/model/common/tests/common/interpolation/unit_tests/test_rbf_interpolation.py +++ b/model/common/tests/common/interpolation/unit_tests/test_rbf_interpolation.py @@ -19,7 +19,7 @@ from icon4py.model.common.interpolation import rbf_interpolation as rbf from icon4py.model.common.utils import data_allocation as data_alloc from icon4py.model.testing import ( - definitions, + definitions as test_defs, grid_utils as gridtest_utils, test_utils as test_helpers, ) @@ -44,19 +44,19 @@ RBF_TOLERANCES = { dims.CellDim: { - definitions.Experiments.EXCLAIM_APE.name: 3.1e-9, - definitions.Experiments.MCH_CH_R04B09.name: 4e-2, - definitions.Experiments.GAUSS3D.name: 1e-14, + test_defs.Experiments.EXCLAIM_APE.name: 3.1e-9, + test_defs.Experiments.MCH_CH_R04B09.name: 4e-2, + test_defs.Experiments.GAUSS3D.name: 1e-14, }, dims.EdgeDim: { - definitions.Experiments.EXCLAIM_APE.name: 8e-14, - definitions.Experiments.MCH_CH_R04B09.name: 2e-9, - definitions.Experiments.GAUSS3D.name: 0, + test_defs.Experiments.EXCLAIM_APE.name: 8e-14, + test_defs.Experiments.MCH_CH_R04B09.name: 2e-9, + test_defs.Experiments.GAUSS3D.name: 0, }, dims.VertexDim: { - definitions.Experiments.EXCLAIM_APE.name: 3e-10, - definitions.Experiments.MCH_CH_R04B09.name: 3e-3, - definitions.Experiments.GAUSS3D.name: 1e-15, + test_defs.Experiments.EXCLAIM_APE.name: 3e-10, + test_defs.Experiments.MCH_CH_R04B09.name: 3e-3, + test_defs.Experiments.GAUSS3D.name: 1e-15, }, } @@ -64,7 +64,7 @@ @pytest.mark.level("unit") @pytest.mark.datatest def test_construct_rbf_matrix_offsets_tables_for_cells( - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, grid_savepoint: serialbox.IconGridSavepoint, backend: gtx_typing.Backend | None, ) -> None: @@ -96,7 +96,7 @@ def test_construct_rbf_matrix_offsets_tables_for_cells( @pytest.mark.level("unit") @pytest.mark.datatest def test_construct_rbf_matrix_offsets_tables_for_edges( - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, grid_savepoint: serialbox.IconGridSavepoint, backend: gtx_typing.Backend | None, ) -> None: @@ -126,7 +126,7 @@ def test_construct_rbf_matrix_offsets_tables_for_edges( @pytest.mark.level("unit") @pytest.mark.datatest def test_construct_rbf_matrix_offsets_tables_for_vertices( - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, grid_savepoint: serialbox.IconGridSavepoint, backend: gtx_typing.Backend | None, ) -> None: @@ -163,7 +163,7 @@ def test_rbf_interpolation_coeffs_cell( grid_savepoint: serialbox.IconGridSavepoint, interpolation_savepoint: serialbox.IconGridSavepoint, backend: gtx_typing.Backend | None, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, ) -> None: geometry = gridtest_utils.get_grid_geometry(backend, experiment) grid = geometry.grid @@ -240,7 +240,7 @@ def test_rbf_interpolation_coeffs_vertex( grid_savepoint: serialbox.IconGridSavepoint, interpolation_savepoint: serialbox.IconGridSavepoint, backend: gtx_typing.Backend | None, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, ) -> None: geometry = gridtest_utils.get_grid_geometry(backend, experiment) grid = geometry.grid @@ -317,7 +317,7 @@ def test_rbf_interpolation_coeffs_edge( grid_savepoint: serialbox.IconGridSavepoint, interpolation_savepoint: serialbox.IconGridSavepoint, backend: gtx_typing.Backend | None, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, ) -> None: geometry = gridtest_utils.get_grid_geometry(backend, experiment) grid = geometry.grid diff --git a/model/common/tests/common/metrics/unit_tests/test_metrics_factory.py b/model/common/tests/common/metrics/unit_tests/test_metrics_factory.py index 69cd9a13de..ed01bf8d7d 100644 --- a/model/common/tests/common/metrics/unit_tests/test_metrics_factory.py +++ b/model/common/tests/common/metrics/unit_tests/test_metrics_factory.py @@ -20,7 +20,7 @@ from icon4py.model.common.metrics import metrics_attributes as attrs, metrics_factory from icon4py.model.common.utils import data_allocation as data_alloc from icon4py.model.testing import ( - definitions, + definitions as test_defs, grid_utils as gridtest_utils, serialbox, test_utils as test_helpers, @@ -44,7 +44,7 @@ def _get_metrics_factory( backend: gtx_typing.Backend | None, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, grid_savepoint: serialbox.IconGridSavepoint, topography_savepoint: serialbox.TopographySavepoint, exchange: decomposition.ExchangeRuntime = decomposition.single_node_default, @@ -113,7 +113,7 @@ def _get_metrics_factory( def test_factory_nflat_gradp( grid_savepoint: serialbox.IconGridSavepoint, topography_savepoint: serialbox.TopographySavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: value_ref = grid_savepoint.nflat_gradp() @@ -133,7 +133,7 @@ def test_factory_z_mc( grid_savepoint: serialbox.IconGridSavepoint, metrics_savepoint: serialbox.MetricSavepoint, topography_savepoint: serialbox.TopographySavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: field_ref = metrics_savepoint.z_mc() @@ -153,7 +153,7 @@ def test_factory_ddqz_z_and_inverse( grid_savepoint: serialbox.IconGridSavepoint, metrics_savepoint: serialbox.MetricSavepoint, topography_savepoint: serialbox.TopographySavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: inverse_field_ref = metrics_savepoint.inv_ddqz_z_full() @@ -175,7 +175,7 @@ def test_factory_ddqz_full_e( grid_savepoint: serialbox.IconGridSavepoint, metrics_savepoint: serialbox.MetricSavepoint, topography_savepoint: serialbox.TopographySavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: field_ref = metrics_savepoint.ddqz_z_full_e().asnumpy() @@ -196,7 +196,7 @@ def test_factory_ddqz_z_half( grid_savepoint: serialbox.IconGridSavepoint, metrics_savepoint: serialbox.MetricSavepoint, topography_savepoint: serialbox.TopographySavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: field_ref = metrics_savepoint.ddqz_z_half() @@ -216,7 +216,7 @@ def test_factory_scaling_factor_for_3d_divdamp( grid_savepoint: serialbox.IconGridSavepoint, metrics_savepoint: serialbox.MetricSavepoint, topography_savepoint: serialbox.TopographySavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: field_ref = metrics_savepoint.scalfac_dd3d() @@ -236,7 +236,7 @@ def test_factory_rayleigh_w( grid_savepoint: serialbox.IconGridSavepoint, metrics_savepoint: serialbox.MetricSavepoint, topography_savepoint: serialbox.TopographySavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: field_ref = metrics_savepoint.rayleigh_w() @@ -256,7 +256,7 @@ def test_factory_coeffs_dwdz( grid_savepoint: serialbox.IconGridSavepoint, metrics_savepoint: serialbox.MetricSavepoint, topography_savepoint: serialbox.TopographySavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: field_ref_1 = metrics_savepoint.coeff1_dwdz() @@ -279,7 +279,7 @@ def test_factory_ref_mc( grid_savepoint: serialbox.IconGridSavepoint, metrics_savepoint: serialbox.MetricSavepoint, topography_savepoint: serialbox.TopographySavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: field_ref_1 = metrics_savepoint.theta_ref_mc() @@ -302,7 +302,7 @@ def test_factory_d2dexdz2_facs_mc( grid_savepoint: serialbox.IconGridSavepoint, metrics_savepoint: serialbox.MetricSavepoint, topography_savepoint: serialbox.TopographySavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: field_ref_1 = metrics_savepoint.d2dexdz2_fac1_mc() @@ -324,7 +324,7 @@ def test_factory_ddxn_z_full( grid_savepoint: serialbox.IconGridSavepoint, metrics_savepoint: serialbox.MetricSavepoint, topography_savepoint: serialbox.TopographySavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: field_ref = metrics_savepoint.ddxn_z_full() @@ -344,7 +344,7 @@ def test_factory_ddxt_z_full( grid_savepoint: serialbox.IconGridSavepoint, metrics_savepoint: serialbox.MetricSavepoint, topography_savepoint: serialbox.TopographySavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: field_ref = metrics_savepoint.ddxt_z_full().asnumpy() @@ -365,7 +365,7 @@ def test_factory_exner_w_implicit_weight_parameter( grid_savepoint: serialbox.IconGridSavepoint, metrics_savepoint: serialbox.MetricSavepoint, topography_savepoint: serialbox.TopographySavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: field_ref = metrics_savepoint.vwind_impl_wgt() @@ -385,7 +385,7 @@ def test_factory_exner_w_explicit_weight_parameter( grid_savepoint: serialbox.IconGridSavepoint, metrics_savepoint: serialbox.MetricSavepoint, topography_savepoint: serialbox.TopographySavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: field_ref = metrics_savepoint.vwind_expl_wgt() @@ -406,7 +406,7 @@ def test_factory_exner_exfac( grid_savepoint: serialbox.IconGridSavepoint, metrics_savepoint: serialbox.MetricSavepoint, topography_savepoint: serialbox.TopographySavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: field_ref = metrics_savepoint.exner_exfac() @@ -427,7 +427,7 @@ def test_factory_pressure_gradient_fields( grid_savepoint: serialbox.IconGridSavepoint, metrics_savepoint: serialbox.MetricSavepoint, topography_savepoint: serialbox.TopographySavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: field_1_ref = metrics_savepoint.pg_exdist() @@ -449,7 +449,7 @@ def test_factory_mask_prog_halo_c( grid_savepoint: serialbox.IconGridSavepoint, metrics_savepoint: serialbox.MetricSavepoint, topography_savepoint: serialbox.TopographySavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: field_ref = metrics_savepoint.mask_prog_halo_c() @@ -469,7 +469,7 @@ def test_factory_horizontal_mask_for_3d_divdamp( grid_savepoint: serialbox.IconGridSavepoint, metrics_savepoint: serialbox.MetricSavepoint, topography_savepoint: serialbox.TopographySavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: field_ref = metrics_savepoint.hmask_dd3d() @@ -491,7 +491,7 @@ def test_factory_zdiff_gradp( grid_savepoint: serialbox.IconGridSavepoint, metrics_savepoint: serialbox.MetricSavepoint, topography_savepoint: serialbox.TopographySavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: zdiff_gradp_ref = metrics_savepoint.zdiff_gradp() @@ -518,7 +518,7 @@ def test_factory_coeff_gradekin( grid_savepoint: serialbox.IconGridSavepoint, metrics_savepoint: serialbox.MetricSavepoint, topography_savepoint: serialbox.TopographySavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: field_ref = metrics_savepoint.coeff_gradekin() @@ -538,7 +538,7 @@ def test_factory_wgtfacq_e( grid_savepoint: serialbox.IconGridSavepoint, metrics_savepoint: serialbox.MetricSavepoint, topography_savepoint: serialbox.TopographySavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: factory = _get_metrics_factory( @@ -558,7 +558,7 @@ def test_vertical_coordinates_on_half_levels( grid_savepoint: serialbox.IconGridSavepoint, metrics_savepoint: serialbox.MetricSavepoint, topography_savepoint: serialbox.TopographySavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: factory = _get_metrics_factory( @@ -579,7 +579,7 @@ def test_compute_wgtfac_c( grid_savepoint: serialbox.IconGridSavepoint, metrics_savepoint: serialbox.MetricSavepoint, topography_savepoint: serialbox.TopographySavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: factory = _get_metrics_factory( @@ -600,7 +600,7 @@ def test_factory_compute_diffusion_mask_and_coef( grid_savepoint: serialbox.IconGridSavepoint, metrics_savepoint: serialbox.MetricSavepoint, topography_savepoint: serialbox.TopographySavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: field_ref_1 = metrics_savepoint.mask_hdiff() @@ -625,7 +625,7 @@ def test_factory_compute_diffusion_intcoeff_and_vertoffset( grid_savepoint: serialbox.IconGridSavepoint, metrics_savepoint: serialbox.MetricSavepoint, topography_savepoint: serialbox.TopographySavepoint, - experiment: definitions.ExperimentDescription, + experiment: test_defs.ExperimentDescription, backend: gtx_typing.Backend | None, ) -> None: field_ref_1 = metrics_savepoint.zd_intcoef()