Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
0f8d8d0
Use lsq_dim_stencil instead of lsq_dim_c in compute_lsq_coeffs
jcanton Jul 14, 2026
ba8be0a
Fix wrong outer neighbor in SimpleGrid c2e2c2e2c_table
jcanton Jul 14, 2026
4d872fe
Add init-time WENO least-squares coefficients for miura_weno advection
jcanton Jul 14, 2026
1a49652
Add miura_weno candidate reconstruction and flux-weight stencils
jcanton Jul 14, 2026
95e9cc0
Add linear WENO reconstruction stencil for miura_weno
jcanton Jul 14, 2026
3ab145f
Wire linear WENO (ihadv_tracer=102) through the advection factory
jcanton Jul 14, 2026
c7a59af
Build linear WENO coefficients in the standalone driver
jcanton Jul 14, 2026
a4f370a
Add tracer_blob IC with prescribed advection mass fluxes
jcanton Jul 14, 2026
b5566b6
Write active tracers to the driver NetCDF output
jcanton Jul 14, 2026
08841a5
Add tracer blob translation test for miura_weno and miura
jcanton Jul 14, 2026
61494d1
Add plotting script for the tracer blob experiment
jcanton Jul 14, 2026
27df34a
Add miura3 quadratic Gauss quadrature stencil
jcanton Jul 14, 2026
5145ec8
Add miura3 WENO flux stencil
jcanton Jul 14, 2026
907f63b
Add init-time ffsl backtrajectory torus geometry for miura_weno
jcanton Jul 14, 2026
3fa8dc9
Validate compute_ffsl_backtrajectory on uniform torus flow
jcanton Jul 14, 2026
42cb37d
Add full-pipeline numpy cross-check for the miura3 WENO flux
jcanton Jul 15, 2026
797120e
Add ThirdOrderMiuraWeno quadratic WENO tracer flux (ihadv_tracer=103)
jcanton Jul 15, 2026
7aec96a
Wire quadratic WENO (ihadv_tracer=103) through the advection factory
jcanton Jul 15, 2026
54ed8fb
Build quadratic WENO coefficients in the standalone driver
jcanton Jul 15, 2026
fefb535
Extend the tracer blob test to quadratic WENO
jcanton Jul 15, 2026
278f43b
Address final whole-branch review of miura_weno
jcanton Jul 15, 2026
ac1fe10
add claude conversation
jcanton Jul 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1,469 changes: 1,469 additions & 0 deletions 2026-07-15-144110-local-command-caveatcaveat-the-messages-below.txt

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions model/atmosphere/advection/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ dependencies = [
"icon4py-common~=0.2.0",
# external dependencies
"gt4py==1.1.11",
"numpy>=1.23.3",
'packaging>=20.0'
]
description = "ICON advection."
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,10 @@ class HorizontalAdvectionType(Enum):
NO_ADVECTION = 0
#: 2nd order MIURA with linear reconstruction
LINEAR_2ND_ORDER = 2
#: 2nd order MIURA with linear reconstruction and WENO candidate blending
LINEAR_2ND_ORDER_WENO = 102
#: 3rd order MIURA with quadratic reconstruction and WENO candidate blending
QUADRATIC_3RD_ORDER_WENO = 103


class HorizontalAdvectionLimiter(Enum):
Expand Down Expand Up @@ -428,6 +432,8 @@ def convert_config_to_horizontal_vertical_advection( # noqa: PLR0912 [too-many-
cell_params: grid_states.CellParams,
backend: gtx_typing.Backend | None,
exchange: decomposition.ExchangeRuntime,
weno_linear_state: advection_states.AdvectionWenoLinearState | None = None,
weno_quadratic_state: advection_states.AdvectionWenoQuadraticState | None = None,
) -> tuple[advection_horizontal.HorizontalAdvection, advection_vertical.VerticalAdvection]:
assert exchange is not None, "Exchange runtime must not be None."
horizontal_limiter: advection_horizontal.HorizontalFluxLimiter | None
Expand All @@ -449,9 +455,51 @@ def convert_config_to_horizontal_vertical_advection( # noqa: PLR0912 [too-many-
case HorizontalAdvectionType.NO_ADVECTION:
horizontal_advection = advection_horizontal.NoAdvection(grid=grid, backend=backend)
case HorizontalAdvectionType.LINEAR_2ND_ORDER:
tracer_flux = advection_horizontal.SecondOrderMiura(
tracer_flux: advection_horizontal.SemiLagrangianTracerFlux = (
advection_horizontal.SecondOrderMiura(
grid=grid,
least_squares_state=least_squares_state,
horizontal_limiter=horizontal_limiter,
backend=backend,
)
)
horizontal_advection = advection_horizontal.SemiLagrangian(
tracer_flux=tracer_flux,
grid=grid,
interpolation_state=interpolation_state,
metric_state=metric_state,
edge_params=edge_params,
cell_params=cell_params,
backend=backend,
)
case HorizontalAdvectionType.LINEAR_2ND_ORDER_WENO:
if weno_linear_state is None:
raise ValueError(
"Horizontal advection type 'LINEAR_2ND_ORDER_WENO' requires 'weno_linear_state'."
)
tracer_flux = advection_horizontal.SecondOrderMiuraWeno(
grid=grid,
weno_linear_state=weno_linear_state,
horizontal_limiter=horizontal_limiter,
backend=backend,
)
horizontal_advection = advection_horizontal.SemiLagrangian(
tracer_flux=tracer_flux,
grid=grid,
interpolation_state=interpolation_state,
metric_state=metric_state,
edge_params=edge_params,
cell_params=cell_params,
backend=backend,
)
case HorizontalAdvectionType.QUADRATIC_3RD_ORDER_WENO:
if weno_quadratic_state is None:
raise ValueError(
"Horizontal advection type 'QUADRATIC_3RD_ORDER_WENO' requires 'weno_quadratic_state'."
)
tracer_flux = advection_horizontal.ThirdOrderMiuraWeno(
grid=grid,
least_squares_state=least_squares_state,
weno_quadratic_state=weno_quadratic_state,
horizontal_limiter=horizontal_limiter,
backend=backend,
)
Expand Down Expand Up @@ -515,6 +563,8 @@ def convert_config_to_advection(
backend: gtx_typing.Backend | None,
exchange: decomposition.ExchangeRuntime,
even_timestep: bool = False,
weno_linear_state: advection_states.AdvectionWenoLinearState | None = None,
weno_quadratic_state: advection_states.AdvectionWenoQuadraticState | None = None,
) -> Advection:
if (
config.horizontal_advection_type == HorizontalAdvectionType.NO_ADVECTION
Expand All @@ -533,6 +583,8 @@ def convert_config_to_advection(
cell_params=cell_params,
backend=backend,
exchange=exchange,
weno_linear_state=weno_linear_state,
weno_quadratic_state=weno_quadratic_state,
)

advection = GodunovSplittingAdvection(
Expand Down
Loading