Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
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
5 changes: 5 additions & 0 deletions rose-stem/app/gungho_model/opt/rose-app-suite_controlled.conf
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