Skip to content
Merged
2 changes: 2 additions & 0 deletions CONTRIBUTORS.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
# Contributors

| GitHub user | Real Name | Affiliation | Date |
| --------------- | ----------------- | ----------- | ---------- |
| james-bruten-mo | James Bruten | Met Office | 2025-12-09 |
Expand All @@ -13,3 +14,4 @@
| MetBenjaminWent | Benjamin Went | Met Office | 2026-01-15 |
| timgraham-Met | Tim Graham | Met Office | 2026-01-15 |
| mo-alistairp | Alistair Pirrie | Met Office | 2026-01-19 |
| thomasmelvin | Thomas Melvin | Met Office | 2026-01-15 |
4 changes: 2 additions & 2 deletions dependencies.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@ lfric_apps:
ref:

lfric_core:
source: git@github.com:MetOffice/lfric_core.git
ref: aa328242675491338ddb888d4d747b5e02d3754c
source: git@github.com:thomasmelvin/lfric_core.git
ref: decompose_across_panels

moci:
source: git@github.com:MetOffice/moci.git
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,11 @@ use_xios_io=${USE_XIOS_IO}
[namelist:logging]
run_log_level='${LOG_LEVEL}'

[namelist:partitioning]
panel_decomposition='${PANEL_DECOMP}'
panel_xproc=${XPROC}
panel_yproc=${YPROC}

[namelist:time]
timestep_end='${RESTART_STOP}'
timestep_start='${RESTART_START}'
103 changes: 49 additions & 54 deletions rose-stem/app/plot/bin/baroclinic.py
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ def make_figures(filein, plotpath, fields, vertical_spacing, formulation):
else:
combined_fields = [field]

interp_fig = plt.figure(figsize=(20, 10))
fig1, ax = plt.subplots(figsize=(20, 10))
for cfield in combined_fields:

cube = read_ugrid_data(filein, cfield)
Expand Down Expand Up @@ -166,63 +166,58 @@ def make_figures(filein, plotpath, fields, vertical_spacing, formulation):
kappa = rd/1005.0
plot_data[:, :, level] = 0.01*fi**(1.0/kappa) * p0

nplots = 1
nxplots = 1
nyplots = 1

for iplot in range(nplots):
ax = interp_fig.add_subplot(nxplots, nyplots, iplot+1)
level = iplot
if (cfield == 'm_v' or cfield == 'm_cl'):
# Plot level 10 for mositure fields
level = 10
cmap = magma.reversed()
else:
cmap = magma
ys = np.tile(yi, (n_levs, 1))
if (cfield == 'm_v' or cfield == 'm_cl'):
# Plot level 10 for mositure fields
level = 10
cmap = magma.reversed()
else:
level = 0
cmap = magma
ys = np.tile(yi, (n_levs, 1))


if direction == 'xz':
lon, height = np.meshgrid(xi, zi)
CS = plt.contourf(lon, height,
plot_data[:, plot_lat, :].T,
levels=levels, cmap=cmap)
plt.colorbar(cmap=cmap)
CL = plt.contour(lat, height,
plot_data[:, plot_lat, :].T,
levels=levels, linewidths=0.5,
colors='k')
plt.title(['lat = ', yi[plot_lat]*360./np.real(nx)])
if direction == 'yz':
lat, height = np.meshgrid(yi, zi)
CS = plt.contourf(lat, height,
plot_data[:, plot_long, :].T,
levels=levels, cmap=cmap)
plt.colorbar(cmap=cmap)
CL = plt.contour(lat, height,
plot_data[:, plot_long, :].T,
levels=levels, linewidths=0.5,
colors='k')
plt.title(['long = ', xi[plot_long]*360./np.real(nx)])
if direction == 'xy':
lat, lon = np.meshgrid(yi, xi)
if cfield == 'exner' and iplot == 0:
# Extrapolate data to the surface
dz = plot_data[:, :, 0] + (zi_f[0] - zi_h[0]) * \
if direction == 'xz':
lon, height = np.meshgrid(xi, zi)
CS = ax.contourf(lon, height,
plot_data[:, plot_lat, :].T,
levels=levels, cmap=cmap)
fig1.colorbar(CS, cmap=cmap)
CL = ax.contour(lat, height,
plot_data[:, plot_lat, :].T,
levels=levels, linewidths=0.5,
colors='k')
ax.set_title(['lat = ', yi[plot_lat]*360./np.real(nx)])
if direction == 'yz':
lat, height = np.meshgrid(yi, zi)
CS = ax.contourf(lat, height,
plot_data[:, plot_long, :].T,
levels=levels, cmap=cmap)
fig1.colorbar(CS, cmap=cmap)
CL = ax.contour(lat, height,
plot_data[:, plot_long, :].T,
levels=levels, linewidths=0.5,
colors='k')
ax.set_title(['long = ', xi[plot_long]*360./np.real(nx)])
if direction == 'xy':
lat, lon = np.meshgrid(yi, xi)
if cfield == 'exner':
# Extrapolate data to the surface
dz = plot_data[:, :, 0] + (zi_f[0] - zi_h[0]) * \
(plot_data[:, :, 0] - plot_data[:, :, level]) \
/ (zi_h[0] - zi_h[1])
else:
dz = plot_data[:, :, level]
if cfield != 'exner':
CS = plt.contourf(lon, lat,
plot_data[:, :, level].T,
levels=levels, cmap=cmap)
plt.colorbar(cmap=cmap)
if cfield != 'theta':
CL = plt.contour(lon, lat, dz.T, levels=levels,
linewidths=1.0, colors='k')
plt.clabel(CL, CL.levels[1::2], fontsize=15,
inline=1, fmt='%3.1f')
else:
dz = plot_data[:, :, level]

if cfield != 'exner':
CS = ax.contourf(lon, lat,
plot_data[:, :, level].T,
levels=levels, cmap=cmap)
fig1.colorbar(CS, cmap=cmap)
if cfield != 'theta':
CL = ax.contour(lon, lat, dz.T, levels=levels,
linewidths=1.0, colors='k')
ax.clabel(CL, CL.levels[1::2], fontsize=15,
inline=1, fmt='%3.1f')

pngfile = '%s/baroclinic_plot-%s-time%s-%s.png' % \
(plotpath, cfield, time[t], direction)
Expand Down
41 changes: 41 additions & 0 deletions rose-stem/site/common/gungho_model/tasks_gungho_model.cylc
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,47 @@
"plot_str": "baroclinic.py $NODAL_DATA_DIR/lfric_diag.nc $PLOT_DIR dcmip dry surface_pressure_temperature",
}) %}

{% elif task_ns.conf_name == "baroclinic-C48_MG" %}

{% do task_dict.update({
"opt_confs": ["baroclinic"],
"resolution": "C48_MG",
"DT": 3600,
"threads": 4,
"mpi_parts": 6,
"tsteps": 240,
"plot_str": "baroclinic.py $NODAL_DATA_DIR/lfric_diag.nc $PLOT_DIR dcmip dry surface_pressure_temperature",
}) %}
{% elif task_ns.conf_name == "baroclinic-C48_MG-3panel" %}

{% do task_dict.update({
"opt_confs": ["baroclinic"],
"resolution": "C48_MG",
"DT": 3600,
"threads": 2,
"mpi_parts": 12,
"panel_decomp": "custom",
"xproc": 2,
"yproc": 3,
"tsteps": 240,
"plot_str": "baroclinic.py $NODAL_DATA_DIR/lfric_diag.nc $PLOT_DIR dcmip dry surface_pressure_temperature",
}) %}

{% elif task_ns.conf_name == "baroclinic-C48_MG-2panel" %}

{% do task_dict.update({
"opt_confs": ["baroclinic"],
"resolution": "C48_MG",
"DT": 3600,
"threads": 1,
"mpi_parts": 27,
"panel_decomp": "custom",
"xproc": 3,
"yproc": 3,
"tsteps": 240,
"plot_str": "baroclinic.py $NODAL_DATA_DIR/lfric_diag.nc $PLOT_DIR dcmip dry surface_pressure_temperature",
}) %}

{% elif task_ns.conf_name == "baroclinic-pert-C24_MG" %}

{% do task_dict.update({
Expand Down
3 changes: 3 additions & 0 deletions rose-stem/site/meto/groups/groups_gungho_model.cylc
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@
"gungho_model_azspice_developer": [
"gungho_model_agnesi_hyd_cart-BiP120x8-2000x2000_azspice_gnu_fast-debug-64bit",
"gungho_model_baroclinic-C24_MG_azspice_gnu_fast-debug-64bit",
"gungho_model_baroclinic-C48_MG_azspice_gnu_fast-debug-64bit",
"gungho_model_baroclinic-C48_MG-2panel_azspice_gnu_fast-debug-64bit",
"gungho_model_baroclinic-C48_MG-3panel_azspice_gnu_fast-debug-64bit",
"gungho_model_baroclinic-pert-C24_MG_azspice_gnu_fast-debug-64bit",
"gungho_model_baroclinic-alt1-C24s_MG_azspice_gnu_fast-debug-64bit",
"gungho_model_baroclinic-alt2-C24_MG_op_azspice_gnu_fast-debug-64bit",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
Inner product checksum rho = 4102EEF5FAAB93B4
Inner product checksum theta = 423041DD82556056
Inner product checksum u = 45017CE3BDE63034
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
Inner product checksum rho = 4102EEF5FAAB93B5
Inner product checksum theta = 423041DD82556059
Inner product checksum u = 45017CE3BDE63032
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
Inner product checksum rho = 4102EEF5FAAB93BA
Inner product checksum theta = 423041DD82556055
Inner product checksum u = 45017CE3BDE63033
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
Inner product checksum rho = 4102EEF5FAB7BD35
Inner product checksum theta = 423041DD82538AE9
Inner product checksum u = 45017CE3BDC64744