icon4py.model.atmosphere.dycore package
Subpackages
- icon4py.model.atmosphere.dycore.stencils package
- Submodules
- icon4py.model.atmosphere.dycore.stencils.accumulate_prep_adv_fields module
- icon4py.model.atmosphere.dycore.stencils.add_analysis_increments_from_data_assimilation module
- icon4py.model.atmosphere.dycore.stencils.add_analysis_increments_to_vn module
- icon4py.model.atmosphere.dycore.stencils.add_extra_diffusion_for_normal_wind_tendency_approaching_cfl module
- icon4py.model.atmosphere.dycore.stencils.add_temporal_tendencies_to_vn module
- icon4py.model.atmosphere.dycore.stencils.add_temporal_tendencies_to_vn_by_interpolating_between_time_levels module
- icon4py.model.atmosphere.dycore.stencils.add_vertical_wind_derivative_to_divergence_damping module
- icon4py.model.atmosphere.dycore.stencils.apply_2nd_order_divergence_damping module
- icon4py.model.atmosphere.dycore.stencils.apply_4th_order_divergence_damping module
- icon4py.model.atmosphere.dycore.stencils.apply_rayleigh_damping_mechanism module
- icon4py.model.atmosphere.dycore.stencils.apply_weighted_2nd_and_4th_order_divergence_damping module
- icon4py.model.atmosphere.dycore.stencils.compute_airmass module
- icon4py.model.atmosphere.dycore.stencils.compute_approx_of_2nd_vertical_derivative_of_exner module
- icon4py.model.atmosphere.dycore.stencils.compute_avg_vn_and_graddiv_vn_and_vt module
- icon4py.model.atmosphere.dycore.stencils.compute_cell_diagnostics_for_dycore module
- icon4py.model.atmosphere.dycore.stencils.compute_contravariant_correction module
- icon4py.model.atmosphere.dycore.stencils.compute_contravariant_correction_of_w module
- icon4py.model.atmosphere.dycore.stencils.compute_contravariant_correction_of_w_for_lower_boundary module
- icon4py.model.atmosphere.dycore.stencils.compute_diagnostics_from_normal_wind module
- icon4py.model.atmosphere.dycore.stencils.compute_divergence_of_fluxes_of_rho_and_theta module
- icon4py.model.atmosphere.dycore.stencils.compute_dwdz_for_divergence_damping module
- icon4py.model.atmosphere.dycore.stencils.compute_edge_diagnostics_for_dycore_and_update_vn module
- icon4py.model.atmosphere.dycore.stencils.compute_exner_from_rhotheta module
- icon4py.model.atmosphere.dycore.stencils.compute_explicit_part_for_rho_and_exner module
- icon4py.model.atmosphere.dycore.stencils.compute_explicit_vertical_wind_from_advection_and_vertical_wind_density module
- icon4py.model.atmosphere.dycore.stencils.compute_explicit_vertical_wind_speed_and_vertical_wind_times_density module
- icon4py.model.atmosphere.dycore.stencils.compute_graddiv2_of_vn module
- icon4py.model.atmosphere.dycore.stencils.compute_horizontal_advection_of_rho_and_theta module
- icon4py.model.atmosphere.dycore.stencils.compute_horizontal_gradient_of_exner_pressure_for_flat_coordinates module
- icon4py.model.atmosphere.dycore.stencils.compute_horizontal_gradient_of_exner_pressure_for_multiple_levels module
- icon4py.model.atmosphere.dycore.stencils.compute_horizontal_gradient_of_exner_pressure_for_nonflat_coordinates module
- icon4py.model.atmosphere.dycore.stencils.compute_horizontal_velocity_quantities module
- icon4py.model.atmosphere.dycore.stencils.compute_hydrostatic_correction_term module
- icon4py.model.atmosphere.dycore.stencils.compute_mass_flux module
- icon4py.model.atmosphere.dycore.stencils.compute_perturbation_of_rho_and_theta module
- icon4py.model.atmosphere.dycore.stencils.compute_perturbation_of_rho_and_theta_and_rho_interface_cell_centers module
- icon4py.model.atmosphere.dycore.stencils.compute_results_for_thermodynamic_variables module
- icon4py.model.atmosphere.dycore.stencils.compute_rho_virtual_potential_temperatures_and_pressure_gradient module
- icon4py.model.atmosphere.dycore.stencils.compute_solver_coefficients_matrix module
- icon4py.model.atmosphere.dycore.stencils.compute_virtual_potential_temperatures_and_pressure_gradient module
- icon4py.model.atmosphere.dycore.stencils.compute_vn_on_lateral_boundary module
- icon4py.model.atmosphere.dycore.stencils.copy_cell_kdim_field_to_vp module
- icon4py.model.atmosphere.dycore.stencils.extrapolate_at_top module
- icon4py.model.atmosphere.dycore.stencils.extrapolate_quadratically_to_surface module
- icon4py.model.atmosphere.dycore.stencils.extrapolate_temporally_exner_pressure module
- icon4py.model.atmosphere.dycore.stencils.init_two_edge_kdim_fields_with_zero_wp module
- icon4py.model.atmosphere.dycore.stencils.interpolate_vt_to_interface_edges module
- icon4py.model.atmosphere.dycore.stencils.set_lower_boundary_condition_for_w_and_contravariant_correction module
- icon4py.model.atmosphere.dycore.stencils.set_theta_v_prime_ic_at_lower_boundary module
- icon4py.model.atmosphere.dycore.stencils.solve_tridiagonal_matrix_for_w_back_substitution module
- icon4py.model.atmosphere.dycore.stencils.solve_tridiagonal_matrix_for_w_forward_sweep module
- icon4py.model.atmosphere.dycore.stencils.spatially_average_flux_or_velocity module
- icon4py.model.atmosphere.dycore.stencils.update_density_exner_wind module
- icon4py.model.atmosphere.dycore.stencils.update_dynamical_exner_time_increment module
- icon4py.model.atmosphere.dycore.stencils.update_mass_flux_weighted module
- icon4py.model.atmosphere.dycore.stencils.update_mass_volume_flux module
- icon4py.model.atmosphere.dycore.stencils.update_theta_and_exner_in_halo module
- icon4py.model.atmosphere.dycore.stencils.update_wind module
- icon4py.model.atmosphere.dycore.stencils.velocity_advection_corrector module
- icon4py.model.atmosphere.dycore.stencils.velocity_advection_predictor module
- icon4py.model.atmosphere.dycore.stencils.velocity_advection_terms module
- icon4py.model.atmosphere.dycore.stencils.vertically_implicit_dycore_solver module
- Module contents
Submodules
icon4py.model.atmosphere.dycore.dycore_states module
- class DivergenceDampingOrder(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)
Bases:
int32,Enum- COMBINED = np.int32(24)
combined 2nd and 4th orders divergence damping and enhanced vertical wind off - centering during initial spinup phase
- FOURTH_ORDER = np.int32(4)
4th order divergence damping
- SECOND_ORDER = np.int32(2)
2nd order divergence damping
- class DivergenceDampingType(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)
Bases:
IntEnum- COMBINED = 32
combination of 3D div.damping in the troposphere with transition to 2D div. damping in the stratosphere
- THREE_DIMENSIONAL = 3
divergence damping acting on 3D divergence
- TWO_DIMENSIONAL = 2
divergence damping acting on 2D divergence
- class HorizontalPressureDiscretizationType(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)
Bases:
int32,EnumParameter called igradp_method in ICON namelist.
- CONVENTIONAL = np.int32(1)
conventional discretization with metric correction term
- POLYNOMIAL = np.int32(4)
Cubic / quadratic polynomial interpolation for pressure reconstruction
- POLYNOMIAL_HYDRO = np.int32(5)
Same as igradp_method_polynomial, but hydrostatic approximation for downward extrapolation over steep slopes
- TAYLOR = np.int32(2)
Taylor-expansion-based reconstruction of pressure
- TAYLOR_HYDRO = np.int32(3)
Similar discretization as igradp_method_taylor, but uses hydrostatic approximation for downward extrapolation over steep slopes
- class InterpolationState(e_bln_c_s: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Cell', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='C2E', kind=<DimensionKind.LOCAL: 'local'>)], ~numpy.float64], rbf_coeff_1: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Vertex', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='V2E', kind=<DimensionKind.LOCAL: 'local'>)], ~numpy.float64], rbf_coeff_2: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Vertex', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='V2E', kind=<DimensionKind.LOCAL: 'local'>)], ~numpy.float64], geofac_div: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Cell', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='C2E', kind=<DimensionKind.LOCAL: 'local'>)], ~numpy.float64], geofac_n2s: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Cell', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='C2E2CO', kind=<DimensionKind.LOCAL: 'local'>)], ~numpy.float64], geofac_grg_x: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Cell', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='C2E2CO', kind=<DimensionKind.LOCAL: 'local'>)], ~numpy.float64], geofac_grg_y: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Cell', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='C2E2CO', kind=<DimensionKind.LOCAL: 'local'>)], ~numpy.float64], nudgecoeff_e: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Edge', kind=<DimensionKind.HORIZONTAL: 'horizontal'>)], ~numpy.float64], c_lin_e: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Edge', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='E2C', kind=<DimensionKind.LOCAL: 'local'>)], ~numpy.float64], geofac_grdiv: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Edge', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='E2C2EO', kind=<DimensionKind.LOCAL: 'local'>)], ~numpy.float64], rbf_vec_coeff_e: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Edge', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='E2C2E', kind=<DimensionKind.LOCAL: 'local'>)], ~numpy.float64], c_intp: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Vertex', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='V2C', kind=<DimensionKind.LOCAL: 'local'>)], ~numpy.float64], geofac_rot: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Vertex', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='V2E', kind=<DimensionKind.LOCAL: 'local'>)], ~numpy.float64], pos_on_tplane_e_1: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Edge', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='E2C', kind=<DimensionKind.LOCAL: 'local'>)], ~numpy.float64], pos_on_tplane_e_2: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Edge', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='E2C', kind=<DimensionKind.LOCAL: 'local'>)], ~numpy.float64], e_flx_avg: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Edge', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='E2C2EO', kind=<DimensionKind.LOCAL: 'local'>)], ~numpy.float64])
Bases:
objectRepresents the ICON interpolation state used in the dynamical core (SolveNonhydro).
- c_intp: float64]
- c_lin_e: float64]
- e_bln_c_s: float64]
- e_flx_avg: float64]
- geofac_div: float64]
- geofac_grdiv: float64]
- geofac_grg_x: float64]
- geofac_grg_y: float64]
- geofac_n2s: float64]
- geofac_rot: float64]
- nudgecoeff_e: float64]
- pos_on_tplane_e_1: float64]
- pos_on_tplane_e_2: float64]
- rbf_coeff_1: float64]
- rbf_coeff_2: float64]
- rbf_vec_coeff_e: float64]
- class MetricStateNonHydro(mask_prog_halo_c: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Cell', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], bool], rayleigh_w: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='_StaggeredK', kind=<DimensionKind.VERTICAL: 'vertical'>)], ~numpy.float64], wgtfac_c: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Cell', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='_StaggeredK', kind=<DimensionKind.VERTICAL: 'vertical'>)], ~numpy.float64], wgtfacq_c: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Cell', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], ~numpy.float64], wgtfac_e: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Edge', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='_StaggeredK', kind=<DimensionKind.VERTICAL: 'vertical'>)], ~numpy.float64], wgtfacq_e: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Edge', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], ~numpy.float64], time_extrapolation_parameter_for_exner: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Cell', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], ~numpy.float64], reference_exner_at_cells_on_model_levels: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Cell', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], ~numpy.float64], reference_rho_at_cells_on_model_levels: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Cell', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], ~numpy.float64], reference_theta_at_cells_on_model_levels: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Cell', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], ~numpy.float64], reference_rho_at_edges_on_model_levels: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Edge', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], ~numpy.float64], reference_theta_at_edges_on_model_levels: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Edge', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], ~numpy.float64], reference_theta_at_cells_on_half_levels: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Cell', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='_StaggeredK', kind=<DimensionKind.VERTICAL: 'vertical'>)], ~numpy.float64], ddz_of_reference_exner_at_cells_on_half_levels: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Cell', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='_StaggeredK', kind=<DimensionKind.VERTICAL: 'vertical'>)], ~numpy.float64], ddqz_z_half: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Cell', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='_StaggeredK', kind=<DimensionKind.VERTICAL: 'vertical'>)], ~numpy.float64], d2dexdz2_fac1_mc: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Cell', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], ~numpy.float64], d2dexdz2_fac2_mc: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Cell', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], ~numpy.float64], ddxn_z_full: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Edge', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], ~numpy.float64], ddqz_z_full_e: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Edge', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], ~numpy.float64], ddxt_z_full: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Edge', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], ~numpy.float64], inv_ddqz_z_full: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Cell', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], ~numpy.float64], vertoffset_gradp: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Edge', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='E2C', kind=<DimensionKind.LOCAL: 'local'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], ~numpy.int32], zdiff_gradp: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Edge', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='E2C', kind=<DimensionKind.LOCAL: 'local'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], ~numpy.float64], nflat_gradp: ~numpy.int32, pg_exdist: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Edge', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], ~numpy.float64], exner_w_explicit_weight_parameter: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Cell', kind=<DimensionKind.HORIZONTAL: 'horizontal'>)], ~numpy.float64], exner_w_implicit_weight_parameter: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Cell', kind=<DimensionKind.HORIZONTAL: 'horizontal'>)], ~numpy.float64], horizontal_mask_for_3d_divdamp: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Edge', kind=<DimensionKind.HORIZONTAL: 'horizontal'>)], ~numpy.float64], scaling_factor_for_3d_divdamp: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], ~numpy.float64], coeff1_dwdz: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Cell', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], ~numpy.float64], coeff2_dwdz: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Cell', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], ~numpy.float64], coeff_gradekin: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Edge', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='E2C', kind=<DimensionKind.LOCAL: 'local'>)], ~numpy.float64])
Bases:
objectDataclass containing metric fields needed in dynamical core (SolveNonhydro).
- coeff1_dwdz: float64]
- coeff2_dwdz: float64]
- coeff_gradekin: float64]
- d2dexdz2_fac1_mc: float64]
- d2dexdz2_fac2_mc: float64]
- ddqz_z_full_e: float64]
- ddqz_z_half: float64]
- ddxn_z_full: float64]
- ddxt_z_full: float64]
- ddz_of_reference_exner_at_cells_on_half_levels: float64]
Declared as d_exner_dz_ref_ic in ICON.
- exner_w_explicit_weight_parameter: float64]
Declared as vwind_expl_wgt in ICON. The explicitness parameter for exner and w in the vertically implicit dycore solver. exner_w_explicit_weight_parameter = 1 - exner_w_implicit_weight_parameter
- exner_w_implicit_weight_parameter: float64]
Declared as vwind_impl_wgt in ICON. The implicitness parameter for exner and w in the vertically implicit dycore solver. It is denoted as eta below eq. 3.20 in ICON tutorial 2023. However, it is only vwind_offctr that can be set via namelist. The actual computation of exner_w_implicit_weight_parameter is not shown in the tutorial.
- horizontal_mask_for_3d_divdamp: float64]
Declared as hmask_dd3d in ICON. A horizontal mask where 3D divergence is computed for the divergence damping. 3D divergence is defined as divergence of horizontal wind plus vertical derivative of vertical wind (dw/dz).
- inv_ddqz_z_full: float64]
- mask_prog_halo_c: VERTICAL: 'vertical'>)], bool]
- nflat_gradp: int32
The minimum height index at which the height of the center of an edge lies within two neighboring cells so that horizontal pressure gradient can be computed by first order discretization scheme.
- pg_exdist: float64]
Extrapolation distance needed for HorizontalPressureDiscretizationType.TAYLOR_HYDRO.
- rayleigh_w: float64]
- reference_exner_at_cells_on_model_levels: float64]
Declared as exner_ref_mc in ICON.
- reference_rho_at_cells_on_model_levels: float64]
Declared as rho_ref_mc in ICON.
- reference_rho_at_edges_on_model_levels: float64]
Declared as rho_ref_me in ICON.
- reference_theta_at_cells_on_half_levels: float64]
Declared as theta_ref_ic in ICON.
- reference_theta_at_cells_on_model_levels: float64]
Declared as theta_ref_mc in ICON.
- reference_theta_at_edges_on_model_levels: float64]
Declared as theta_ref_me in ICON.
- scaling_factor_for_3d_divdamp: float64]
Declared as scalfac_dd3d in ICON. A scaling factor in vertical dimension for 3D divergence damping.
- time_extrapolation_parameter_for_exner: float64]
Declared as exner_exfac in ICON.
- vertoffset_gradp: int32]
- wgtfac_c: float64]
- wgtfac_e: float64]
- wgtfacq_c: float64]
- wgtfacq_e: float64]
- zdiff_gradp: float64]
- class PrepAdvection(vn_traj: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Edge', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], ~numpy.float64], mass_flx_me: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Edge', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], ~numpy.float64], dynamical_vertical_mass_flux_at_cells_on_half_levels: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Cell', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='_StaggeredK', kind=<DimensionKind.VERTICAL: 'vertical'>)], ~numpy.float64], dynamical_vertical_volumetric_flux_at_cells_on_half_levels: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Cell', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='_StaggeredK', kind=<DimensionKind.VERTICAL: 'vertical'>)], ~numpy.float64])
Bases:
objectDataclass used in SolveNonHydro that pre-calculates fields during the dynamical substepping that are later needed in tracer advection.
- dynamical_vertical_mass_flux_at_cells_on_half_levels: float64]
Declared as mass_flx_ic in ICON.
- dynamical_vertical_volumetric_flux_at_cells_on_half_levels: float64]
Declared as vol_flx_ic in ICON.
- mass_flx_me: float64]
- vn_traj: float64]
- class RhoThetaAdvectionType(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)
Bases:
int32,EnumParameter called iadv_rhotheta in ICON namelist.
- MIURA = np.int32(2)
2nd order Miura horizontal
- SIMPLE = np.int32(1)
simple 2nd order upwind-biased scheme
- class TimeSteppingScheme(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)
Bases:
IntEnumParameter called itime_scheme in ICON namelist.
- EXPENSIVE = 6
As STABLE, but velocity tendencies are also computed in both substeps (no benefit, but more expensive)
- MOST_EFFICIENT = 4
Contravariant vertical velocity is computed in the predictor step only, velocity tendencies are computed in the corrector step only
- STABLE = 5
Contravariant vertical velocity is computed in both substeps (beneficial for numerical stability in very-high resolution setups with extremely steep slopes)
- initialize_prep_advection(grid: grid_base.Grid, allocator: gtx_typing.Allocator) PrepAdvection
icon4py.model.atmosphere.dycore.dycore_utils module
icon4py.model.atmosphere.dycore.solve_nonhydro module
- class IntermediateFields(horizontal_pressure_gradient: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Edge', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], anyfloat], rho_at_edges_on_model_levels: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Edge', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], ~numpy.float64], theta_v_at_edges_on_model_levels: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Edge', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], ~numpy.float64], horizontal_kinetic_energy_at_edges_on_model_levels: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Edge', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], anyfloat], tangential_wind_on_half_levels: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Edge', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='_StaggeredK', kind=<DimensionKind.VERTICAL: 'vertical'>)], anyfloat], horizontal_gradient_of_normal_wind_divergence: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Edge', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], anyfloat], dwdz_at_cells_on_model_levels: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Cell', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], anyfloat])
Bases:
objectEncapsulate internal fields of SolveNonHydro that contain shared state over predictor and corrector step.
Encapsulates internal fields used in SolveNonHydro. Fields (and the class!) follow the naming convention of ICON to prepend local fields of a module with z_. Contrary to other such z_ fields inside SolveNonHydro the fields in this dataclass contain state that is built up over the predictor and corrector part in a timestep.
- classmethod allocate(grid: Grid, allocator: ArrayNamespace | FieldBufferAllocatorProtocol[DeviceTypeT] | FieldBufferAllocatorFactoryProtocol[DeviceTypeT] | None) IntermediateFields
- dwdz_at_cells_on_model_levels: VERTICAL: 'vertical'>)], anyfloat]
Declared as z_dwdz_dd in ICON.
- horizontal_gradient_of_normal_wind_divergence: VERTICAL: 'vertical'>)], anyfloat]
Declared as z_graddiv_vn in ICON.
- horizontal_kinetic_energy_at_edges_on_model_levels: VERTICAL: 'vertical'>)], anyfloat]
Declared as z_kin_hor_e in ICON.
- horizontal_pressure_gradient: VERTICAL: 'vertical'>)], anyfloat]
Declared as z_gradh_exner in ICON.
- rho_at_edges_on_model_levels: float64]
Declared as z_rho_e in ICON.
- tangential_wind_on_half_levels: VERTICAL: 'vertical'>)], anyfloat]
it is only used for the horizontal advection of w, and w[nlevp1-1] is diagnostic.
- Type:
Declared as z_vt_ie in ICON. Tangential wind at edge on k-half levels. The bottom half level is never computed
- theta_v_at_edges_on_model_levels: float64]
Declared as z_theta_v_e in ICON.
- class NonHydrostaticConfig(*, itime_scheme: TimeSteppingScheme = TimeSteppingScheme.MOST_EFFICIENT, iadv_rhotheta: RhoThetaAdvectionType = RhoThetaAdvectionType.MIURA, igradp_method: HorizontalPressureDiscretizationType = HorizontalPressureDiscretizationType.TAYLOR_HYDRO, rayleigh_type: RayleighType = RayleighType.KLEMP, divdamp_order: DivergenceDampingOrder = DivergenceDampingOrder.COMBINED, divdamp_type: DivergenceDampingType = DivergenceDampingType.THREE_DIMENSIONAL, l_vert_nested: bool = False, deepatmos_mode: bool = False, iau_init: bool = False, extra_diffu: bool = True, rhotheta_offctr: float = -0.1, veladv_offctr: float = 0.25, fourth_order_divdamp_factor: float = 0.0025, fourth_order_divdamp_factor2: float = 0.004, fourth_order_divdamp_factor3: float = 0.004, fourth_order_divdamp_factor4: float = 0.004, fourth_order_divdamp_z: float = 32500.0, fourth_order_divdamp_z2: float = 40000.0, fourth_order_divdamp_z3: float = 60000.0, fourth_order_divdamp_z4: float = 80000.0)
Bases:
objectContains necessary parameter to configure a nonhydro run.
Encapsulates namelist parameters and derived parameters. TODO: (magdalena) values should be read from a configuration file. Default values are taken from the defaults in the corresponding ICON Fortran namelist files.
- deepatmos_mode: bool = False
- divdamp_order: DivergenceDampingOrder = np.int32(24)
- divdamp_type: DivergenceDampingType = 3
- extra_diffu: bool = True
- fourth_order_divdamp_factor: float = 0.0025
- fourth_order_divdamp_factor2: float = 0.004
- fourth_order_divdamp_factor3: float = 0.004
- fourth_order_divdamp_factor4: float = 0.004
- fourth_order_divdamp_z: float = 32500.0
- fourth_order_divdamp_z2: float = 40000.0
- fourth_order_divdamp_z3: float = 60000.0
- fourth_order_divdamp_z4: float = 80000.0
- classmethod from_fortran_dict(atmo_dict: dict[str, Any], **overrides: Any) NonHydrostaticConfig
- iadv_rhotheta: RhoThetaAdvectionType = np.int32(2)
- iau_init: bool = False
- igradp_method: HorizontalPressureDiscretizationType = np.int32(3)
- itime_scheme: TimeSteppingScheme = 4
- l_vert_nested: bool = False
- rayleigh_type: RayleighType = 2
- rhotheta_offctr: float = -0.1
- veladv_offctr: float = 0.25
- class NonHydrostaticParams(config: NonHydrostaticConfig)
Bases:
objectCalculates derived quantities depending on the NonHydrostaticConfig.
- advection_explicit_weight_parameter: Final[float]
Declared as wgt_nnow_vel in ICON.
- advection_implicit_weight_parameter: Final[float]
Declared as wgt_nnew_vel in ICON.
- rhotheta_explicit_weight_parameter: Final[float]
Declared as wgt_nnow_rth in ICON.
- rhotheta_implicit_weight_parameter: Final[float]
Declared as wgt_nnew_rth in ICON.
- class SolveNonhydro(*, grid: ~icon4py.model.common.grid.icon.IconGrid, config: ~icon4py.model.atmosphere.dycore.solve_nonhydro.NonHydrostaticConfig, params: ~icon4py.model.atmosphere.dycore.solve_nonhydro.NonHydrostaticParams, metric_state_nonhydro: ~icon4py.model.atmosphere.dycore.dycore_states.MetricStateNonHydro, interpolation_state: ~icon4py.model.atmosphere.dycore.dycore_states.InterpolationState, vertical_params: ~icon4py.model.common.grid.vertical.VerticalGrid, edge_geometry: ~icon4py.model.common.grid.states.EdgeParams, cell_geometry: ~icon4py.model.common.grid.states.CellParams, owner_mask: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Cell', kind=<DimensionKind.HORIZONTAL: 'horizontal'>)], bool], backend: ~gt4py.next.backend.Backend | ~gt4py._core.definitions.DeviceType | BackendDescriptor | None, exchange: ~icon4py.model.common.decomposition.definitions.ExchangeRuntime, max_nudging_coefficient: float)
Bases:
object- run_corrector_step(*, diagnostic_state_nh: DiagnosticStateNonHydro, prognostic_states: TimeStepPair[PrognosticState], z_fields: IntermediateFields, second_order_divdamp_factor: float, prep_adv: PrepAdvection, dtime: float, ndyn_substeps_var: int, prepare_fluxes_for_advection: bool, at_first_substep: bool, at_last_substep: bool, is_iau_active: bool, iau_wgt_dyn: float) None
- run_predictor_step(*, diagnostic_state_nh: DiagnosticStateNonHydro, prognostic_states: TimeStepPair[PrognosticState], z_fields: IntermediateFields, dtime: float, at_initial_timestep: bool, at_first_substep: bool, is_iau_active: bool, iau_wgt_dyn: float) None
Runs the predictor step of the non-hydrostatic solver.
- time_step(*, diagnostic_state_nh: DiagnosticStateNonHydro, prognostic_states: TimeStepPair[PrognosticState], prep_adv: PrepAdvection, second_order_divdamp_factor: float, dtime: float, ndyn_substeps_var: int, at_initial_timestep: bool, prepare_fluxes_for_advection: bool, at_first_substep: bool, at_last_substep: bool, is_iau_active: bool = False, iau_wgt_dyn: float = 0.0) None
Update prognostic variables (prognostic_states.next) after the dynamical process over one substep. :param diagnostic_state_nh: diagnostic variables used for solving the governing equations. It includes local variables and the physics tendency term that comes from physics :param prognostic_states: prognostic variables :param prep_adv: variables for tracer advection :param second_order_divdamp_factor: Originally declared as divdamp_fac_o2 in ICON. Second order (nabla2) divergence damping coefficient. :param dtime: time step :param ndyn_substeps_var: number of dynamical substeps :param at_initial_timestep: initial time step of the model run :param prepare_fluxes_for_advection: Preparation for tracer advection :param at_first_substep: first substep :param at_last_substep: last substep :param is_iau_active: Incremental analysis update active during dycore step :param iau_wgt_dyn: weight scalar for the incremental analysis update