icon4py.model.atmosphere.dycore package

Subpackages

Submodules

icon4py.model.atmosphere.dycore.dycore_states module

class DiagnosticStateNonHydro(vt: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Edge', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], float], vn_ie: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Edge', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], float], w_concorr_c: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Cell', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], float], theta_v_ic: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Cell', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], float], exner_pr: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Cell', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], float], rho_ic: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Cell', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], float], ddt_exner_phy: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Cell', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], float], grf_tend_rho: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Cell', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], float], grf_tend_thv: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Cell', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], float], grf_tend_w: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Cell', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], float], mass_fl_e: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Edge', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], float], ddt_vn_phy: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Edge', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], float], grf_tend_vn: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Edge', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], float], ddt_vn_apc_pc: ~icon4py.model.common.utils._common.PredictorCorrectorPair[~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Edge', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], float]], ddt_w_adv_pc: ~icon4py.model.common.utils._common.PredictorCorrectorPair[~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Cell', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], float]], rho_incr: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Edge', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], float] | None, vn_incr: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Edge', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], float] | None, exner_incr: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Edge', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], float] | None, exner_dyn_incr: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Cell', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], float])

Bases: object

Data class containing diagnostic fields that are calculated in the dynamical core (SolveNonHydro).

ddt_exner_phy: VERTICAL: 'vertical'>)], float]
ddt_vn_apc_pc: VERTICAL: 'vertical'>)], float]]
ddt_vn_phy: VERTICAL: 'vertical'>)], float]
ddt_w_adv_pc: VERTICAL: 'vertical'>)], float]]
exner_dyn_incr: VERTICAL: 'vertical'>)], float]
exner_incr: VERTICAL: 'vertical'>)], float] | None
exner_pr: VERTICAL: 'vertical'>)], float]
grf_tend_rho: VERTICAL: 'vertical'>)], float]
grf_tend_thv: VERTICAL: 'vertical'>)], float]
grf_tend_vn: VERTICAL: 'vertical'>)], float]
grf_tend_w: VERTICAL: 'vertical'>)], float]
mass_fl_e: VERTICAL: 'vertical'>)], float]
rho_ic: VERTICAL: 'vertical'>)], float]
rho_incr: VERTICAL: 'vertical'>)], float] | None
theta_v_ic: VERTICAL: 'vertical'>)], float]
vn_ie: VERTICAL: 'vertical'>)], float]
vn_incr: VERTICAL: 'vertical'>)], float] | None
vt: VERTICAL: 'vertical'>)], float]
w_concorr_c: VERTICAL: 'vertical'>)], float]
class InterpolationState(e_bln_c_s: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='CE', kind=<DimensionKind.HORIZONTAL: 'horizontal'>)], float], 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'>)], float], 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'>)], float], geofac_div: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='CE', kind=<DimensionKind.HORIZONTAL: 'horizontal'>)], float], geofac_n2s: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Cell', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='C2E2CO', kind=<DimensionKind.LOCAL: 'local'>)], float], 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'>)], float], 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'>)], float], nudgecoeff_e: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Edge', kind=<DimensionKind.HORIZONTAL: 'horizontal'>)], float], 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'>)], float], geofac_grdiv: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Edge', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='E2C2EO', kind=<DimensionKind.LOCAL: 'local'>)], float], 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'>)], float], c_intp: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Vertex', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='V2C', kind=<DimensionKind.LOCAL: 'local'>)], float], geofac_rot: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Vertex', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='V2E', kind=<DimensionKind.LOCAL: 'local'>)], float], pos_on_tplane_e_1: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='EC', kind=<DimensionKind.HORIZONTAL: 'horizontal'>)], float], pos_on_tplane_e_2: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='EC', kind=<DimensionKind.HORIZONTAL: 'horizontal'>)], float], 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'>)], float])

Bases: object

Represents the ICON interpolation state used in the dynamical core (SolveNonhydro).

c_intp: LOCAL: 'local'>)], float]
c_lin_e: LOCAL: 'local'>)], float]
e_bln_c_s: HORIZONTAL: 'horizontal'>)], float]
e_flx_avg: LOCAL: 'local'>)], float]
geofac_div: HORIZONTAL: 'horizontal'>)], float]
geofac_grdiv: LOCAL: 'local'>)], float]
geofac_grg_x: LOCAL: 'local'>)], float]
geofac_grg_y: LOCAL: 'local'>)], float]
geofac_n2s: LOCAL: 'local'>)], float]
geofac_rot: LOCAL: 'local'>)], float]
nudgecoeff_e: HORIZONTAL: 'horizontal'>)], float]
pos_on_tplane_e_1: HORIZONTAL: 'horizontal'>)], float]
pos_on_tplane_e_2: HORIZONTAL: 'horizontal'>)], float]
rbf_coeff_1: LOCAL: 'local'>)], float]
rbf_coeff_2: LOCAL: 'local'>)], float]
rbf_vec_coeff_e: LOCAL: 'local'>)], float]
class MetricStateNonHydro(bdy_halo_c: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Cell', kind=<DimensionKind.HORIZONTAL: 'horizontal'>)], bool], 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='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], float], wgtfac_c: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Cell', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], float], wgtfacq_c: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Cell', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], float], wgtfac_e: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Edge', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], float], wgtfacq_e: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Edge', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], float], exner_exfac: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Cell', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], float], exner_ref_mc: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Cell', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], float], rho_ref_mc: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Cell', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], float], theta_ref_mc: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Cell', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], float], rho_ref_me: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Edge', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], float], theta_ref_me: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Edge', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], float], theta_ref_ic: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Cell', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], float], d_exner_dz_ref_ic: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Cell', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], float], ddqz_z_half: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Cell', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], float], 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'>)], float], 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'>)], float], 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'>)], float], 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'>)], float], 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'>)], float], 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'>)], float], vertoffset_gradp: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='EC', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], float], zdiff_gradp: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='EC', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], float], ipeidx_dsl: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Edge', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], bool], pg_exdist: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Edge', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], float], vwind_expl_wgt: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Cell', kind=<DimensionKind.HORIZONTAL: 'horizontal'>)], float], vwind_impl_wgt: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Cell', kind=<DimensionKind.HORIZONTAL: 'horizontal'>)], float], hmask_dd3d: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Edge', kind=<DimensionKind.HORIZONTAL: 'horizontal'>)], float], scalfac_dd3d: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], float], coeff1_dwdz: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Cell', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], float], coeff2_dwdz: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Cell', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], float], coeff_gradekin: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='EC', kind=<DimensionKind.HORIZONTAL: 'horizontal'>)], float])

Bases: object

Dataclass containing metric fields needed in dynamical core (SolveNonhydro).

bdy_halo_c: HORIZONTAL: 'horizontal'>)], bool]
coeff1_dwdz: VERTICAL: 'vertical'>)], float]
coeff2_dwdz: VERTICAL: 'vertical'>)], float]
coeff_gradekin: HORIZONTAL: 'horizontal'>)], float]
d2dexdz2_fac1_mc: VERTICAL: 'vertical'>)], float]
d2dexdz2_fac2_mc: VERTICAL: 'vertical'>)], float]
d_exner_dz_ref_ic: VERTICAL: 'vertical'>)], float]
ddqz_z_full_e: VERTICAL: 'vertical'>)], float]
ddqz_z_half: VERTICAL: 'vertical'>)], float]
ddxn_z_full: VERTICAL: 'vertical'>)], float]
ddxt_z_full: VERTICAL: 'vertical'>)], float]
exner_exfac: VERTICAL: 'vertical'>)], float]
exner_ref_mc: VERTICAL: 'vertical'>)], float]
hmask_dd3d: HORIZONTAL: 'horizontal'>)], float]
inv_ddqz_z_full: VERTICAL: 'vertical'>)], float]
ipeidx_dsl: VERTICAL: 'vertical'>)], bool]
mask_prog_halo_c: VERTICAL: 'vertical'>)], bool]
pg_exdist: VERTICAL: 'vertical'>)], float]
rayleigh_w: VERTICAL: 'vertical'>)], float]
rho_ref_mc: VERTICAL: 'vertical'>)], float]
rho_ref_me: VERTICAL: 'vertical'>)], float]
scalfac_dd3d: VERTICAL: 'vertical'>)], float]
theta_ref_ic: VERTICAL: 'vertical'>)], float]
theta_ref_mc: VERTICAL: 'vertical'>)], float]
theta_ref_me: VERTICAL: 'vertical'>)], float]
vertoffset_gradp: VERTICAL: 'vertical'>)], float]
vwind_expl_wgt: HORIZONTAL: 'horizontal'>)], float]
vwind_impl_wgt: HORIZONTAL: 'horizontal'>)], float]
wgtfac_c: VERTICAL: 'vertical'>)], float]
wgtfac_e: VERTICAL: 'vertical'>)], float]
wgtfacq_c: VERTICAL: 'vertical'>)], float]
wgtfacq_e: VERTICAL: 'vertical'>)], float]
zdiff_gradp: VERTICAL: 'vertical'>)], float]
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'>)], float], 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'>)], float], mass_flx_ic: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Cell', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], float], vol_flx_ic: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Cell', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], float])

Bases: object

Dataclass used in SolveNonHydro that pre-calculates fields during the dynamical substepping that are later needed in tracer advection.

mass_flx_ic: VERTICAL: 'vertical'>)], float]
mass_flx_me: VERTICAL: 'vertical'>)], float]
vn_traj: VERTICAL: 'vertical'>)], float]
vol_flx_ic: VERTICAL: 'vertical'>)], float]

icon4py.model.atmosphere.dycore.dycore_utils module

icon4py.model.atmosphere.dycore.solve_nonhydro module

class DivergenceDampingOrder(value)

Bases: IntEnum

An enumeration.

COMBINED = 24

combined 2nd and 4th orders divergence damping and enhanced vertical wind off - centering during initial spinup phase

FOURTH_ORDER = 4

4th order divergence damping

SECOND_ORDER = 2

2nd order divergence damping

class DivergenceDampingType(value)

Bases: IntEnum

An enumeration.

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

class HorizontalPressureDiscretizationType(value)

Bases: IntEnum

Parameter called igradp_method in ICON namelist.

CONVENTIONAL = 1

conventional discretization with metric correction term

POLYNOMIAL = 4

Cubic / quadratic polynomial interpolation for pressure reconstruction

POLYNOMIAL_HYDRO = 5

Same as igradp_method_polynomial, but hydrostatic approximation for downward extrapolation over steep slopes

TAYLOR = 2

Taylor-expansion-based reconstruction of pressure

TAYLOR_HYDRO = 3

Similar discretization as igradp_method_taylor, but uses hydrostatic approximation for downward extrapolation over steep slopes

class IntermediateFields(z_gradh_exner: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Edge', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], float], z_alpha: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Edge', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], float], z_beta: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Cell', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], float], z_w_expl: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Edge', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], float], z_exner_expl: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Cell', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], float], z_q: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Cell', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], float], z_contr_w_fl_l: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Edge', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], float], z_rho_e: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Edge', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], float], z_theta_v_e: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Edge', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], float], z_kin_hor_e: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Edge', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], float], z_vt_ie: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Edge', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], float], z_graddiv_vn: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Edge', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], float], z_rho_expl: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Cell', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], float], z_dwdz_dd: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Cell', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], float])

Bases: object

Encapsulate 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: BaseGrid, backend: Backend | None = None)
z_alpha: VERTICAL: 'vertical'>)], float]
z_beta: VERTICAL: 'vertical'>)], float]
z_contr_w_fl_l: VERTICAL: 'vertical'>)], float]
z_dwdz_dd: VERTICAL: 'vertical'>)], float]
z_exner_expl: VERTICAL: 'vertical'>)], float]
z_graddiv_vn: VERTICAL: 'vertical'>)], float]
z_gradh_exner: VERTICAL: 'vertical'>)], float]
z_kin_hor_e: VERTICAL: 'vertical'>)], float]
z_q: VERTICAL: 'vertical'>)], float]
z_rho_e: VERTICAL: 'vertical'>)], float]
z_rho_expl: VERTICAL: 'vertical'>)], float]
z_theta_v_e: VERTICAL: 'vertical'>)], float]
z_vt_ie: VERTICAL: 'vertical'>)], float]
z_w_expl: VERTICAL: 'vertical'>)], float]
class NonHydrostaticConfig(itime_scheme: TimeSteppingScheme = TimeSteppingScheme.MOST_EFFICIENT, iadv_rhotheta: RhoThetaAdvectionType = RhoThetaAdvectionType.MIURA, igradp_method: HorizontalPressureDiscretizationType = HorizontalPressureDiscretizationType.TAYLOR_HYDRO, ndyn_substeps_var: float = 5.0, rayleigh_type: RayleighType = RayleighType.KLEMP, rayleigh_coeff: float = 0.05, divdamp_order: DivergenceDampingOrder = DivergenceDampingOrder.COMBINED, is_iau_active: bool = False, iau_wgt_dyn: float = 0.0, divdamp_type: DivergenceDampingType = DivergenceDampingType.THREE_DIMENSIONAL, divdamp_trans_start: float = 12500.0, divdamp_trans_end: float = 17500.0, l_vert_nested: bool = False, rhotheta_offctr: float = -0.1, veladv_offctr: float = 0.25, max_nudging_coeff: float = 0.02, divdamp_fac: float = 0.0025, divdamp_fac2: float = 0.004, divdamp_fac3: float = 0.004, divdamp_fac4: float = 0.004, divdamp_z: float = 32500.0, divdamp_z2: float = 40000.0, divdamp_z3: float = 60000.0, divdamp_z4: float = 80000.0)

Bases: object

Contains 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.

divdamp_fac: float

scaling factor for divergence damping

divdamp_order: int

order of divergence damping

divdamp_trans_start: float

Lower and upper bound of transition zone between 2D and 3D divergence damping in case of divdamp_type = 32 [m]

divdamp_type: int

type of divergence damping

iadv_rhotheta: int

Miura scheme for advection of rho and theta

iau_wgt_dyn: float

IAU weight for dynamics fields

igradp_method: int

Use truly horizontal pressure-gradient computation to ensure numerical stability without heavy orography smoothing

is_iau_active: bool

from mo_initicon_nml.f90/ mo_initicon_config.f90 whether IAU is active at current time

l_vert_nested: bool

from mo_run_nml.f90 use vertical nesting

ndyn_substeps_var

number of dynamics substeps per fast-physics timestep

nudge_max_coeff: float

from mo_interpol_nml.f90

rayleigh_type: int

type of Rayleigh damping

rhotheta_offctr: float

off-centering for density and potential temperature at interface levels. Specifying a negative value here reduces the amount of vertical wind off-centering needed for stability of sound waves.

veladv_offctr: float

off-centering of velocity advection in corrector step

class NonHydrostaticParams(config: NonHydrostaticConfig)

Bases: object

Calculates derived quantities depending on the NonHydrostaticConfig.

kstart_dd3d: Final[int]

start level for 3D divergence damping terms this is only different from 0 if divdamp_type == 32: calculation done in mo_vertical_grid.f90

wgt_nnew_rth: Final[float]

Weighting coefficients for rho and theta at interface levels in the corrector step This empirically determined weighting minimizes the vertical wind off-centering needed for numerical stability of vertical sound wave propagation

wgt_nnow_vel: Final[float]

Weighting coefficients for velocity advection if tendency averaging is used The off-centering specified here turned out to be beneficial to numerical stability in extreme situations

class RhoThetaAdvectionType(value)

Bases: IntEnum

Parameter called iadv_rhotheta in ICON namelist.

MIURA = 2

2nd order Miura horizontal

SIMPLE = 1

simple 2nd order upwind-biased scheme

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, exchange: ~icon4py.model.common.decomposition.definitions.ExchangeRuntime = SingleNodeExchange())

Bases: object

run_corrector_step(diagnostic_state_nh: DiagnosticStateNonHydro, prognostic_states: TimeStepPair[PrognosticState], z_fields: IntermediateFields, divdamp_fac_o2: float, prep_adv: PrepAdvection, dtime: float, lprep_adv: bool, at_first_substep: bool, at_last_substep: bool)
run_predictor_step(diagnostic_state_nh: DiagnosticStateNonHydro, prognostic_states: TimeStepPair[PrognosticState], z_fields: IntermediateFields, dtime: float, at_initial_timestep: bool, at_first_substep: bool)

Runs the predictor step of the non-hydrostatic solver.

time_step(diagnostic_state_nh: DiagnosticStateNonHydro, prognostic_states: TimeStepPair[PrognosticState], prep_adv: PrepAdvection, divdamp_fac_o2: float, dtime: float, at_initial_timestep: bool, lprep_adv: bool, at_first_substep: bool, at_last_substep: bool)

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 divdamp_fac_o2: second order (nabla2) divergence damping coefficient :param dtime: time step :param at_initial_timestep: initial time step of the model run :param lprep_adv: Preparation for tracer advection TODO (Chia Rui): add more detailed information here :param at_first_substep: first substep :param at_last_substep: last substep

update_time_levels_for_velocity_tendencies(diagnostic_state_nh: DiagnosticStateNonHydro, at_first_substep: bool, at_initial_timestep: bool)

Set time levels of ddt_adv fields for call to velocity_tendencies.

When using TimeSteppingScheme.MOST_EFFICIENT (itime_scheme=4 in ICON Fortran), ddt_w_adv_pc.predictor (advection term in vertical momentum equation in predictor step) is not computed in the predictor step of each substep. Instead, the advection term computed in the corrector step during the previous substep is reused for efficiency (except, of course, in the very first substep of the initial time step). ddt_vn_apc.predictor (advection term in horizontal momentum equation in predictor step) is only computed in the predictor step of the first substep and the advection term in the corrector step during the previous substep is reused for ddt_vn_apc.predictor from the second substep onwards. Additionally, in this scheme the predictor and corrector outputs are kept in separate elements of the pair (.predictor for the predictor step and .corrector for the corrector step) and interpoolated at the end of the corrector step to get the final output.

No other time stepping schemes are currently supported.

Parameters:
  • diagnostic_state_nh – Diagnostic fields calculated in the dynamical core (SolveNonHydro)

  • at_first_substep – Flag indicating if this is the first substep of the time step.

  • at_initial_timestep – Flag indicating if this is the first time step.

Returns:

The index of the pair element to be used for the corrector output.

class TimeSteppingScheme(value)

Bases: IntEnum

Parameter 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)

icon4py.model.atmosphere.dycore.solve_nonhydro_stencils module

icon4py.model.atmosphere.dycore.velocity_advection module

class VelocityAdvection(grid: ~icon4py.model.common.grid.icon.IconGrid, metric_state: ~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_params: ~icon4py.model.common.grid.states.EdgeParams, owner_mask: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Cell', kind=<DimensionKind.HORIZONTAL: 'horizontal'>)], bool], backend: ~gt4py.next.backend.Backend)

Bases: object

run_corrector_step(diagnostic_state: ~icon4py.model.atmosphere.dycore.dycore_states.DiagnosticStateNonHydro, prognostic_state: ~icon4py.model.common.states.prognostic_state.PrognosticState, z_kin_hor_e: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Edge', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], float], z_vt_ie: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Edge', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], float], dtime: float, cell_areas: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Cell', kind=<DimensionKind.HORIZONTAL: 'horizontal'>)], float])
run_predictor_step(vn_only: bool, diagnostic_state: ~icon4py.model.atmosphere.dycore.dycore_states.DiagnosticStateNonHydro, prognostic_state: ~icon4py.model.common.states.prognostic_state.PrognosticState, z_w_concorr_me: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Edge', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], float], z_kin_hor_e: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Edge', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], float], z_vt_ie: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Edge', kind=<DimensionKind.HORIZONTAL: 'horizontal'>), Dimension(value='K', kind=<DimensionKind.VERTICAL: 'vertical'>)], float], dtime: float, cell_areas: ~gt4py.next.common.Field[~gt4py.next.common.Dims[Dimension(value='Cell', kind=<DimensionKind.HORIZONTAL: 'horizontal'>)], float])

icon4py.model.atmosphere.dycore.velocity_advection_stencils module

Module contents