diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 5c277da0..44d9e9d8 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -1,4 +1,5 @@ # Contributors + | GitHub user | Real Name | Affiliation | Date | | --------------- | ----------------- | ----------- | ---------- | | james-bruten-mo | James Bruten | Met Office | 2025-12-09 | @@ -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 | \ No newline at end of file diff --git a/dependencies.yaml b/dependencies.yaml index 6bf41fd7..d1790884 100644 --- a/dependencies.yaml +++ b/dependencies.yaml @@ -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 diff --git a/rose-stem/app/gungho_model/opt/rose-app-suite_controlled.conf b/rose-stem/app/gungho_model/opt/rose-app-suite_controlled.conf index c3789d26..81be8308 100644 --- a/rose-stem/app/gungho_model/opt/rose-app-suite_controlled.conf +++ b/rose-stem/app/gungho_model/opt/rose-app-suite_controlled.conf @@ -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}' diff --git a/rose-stem/app/plot/bin/baroclinic.py b/rose-stem/app/plot/bin/baroclinic.py index 30545490..56d05a32 100755 --- a/rose-stem/app/plot/bin/baroclinic.py +++ b/rose-stem/app/plot/bin/baroclinic.py @@ -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) @@ -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) diff --git a/rose-stem/site/common/gungho_model/tasks_gungho_model.cylc b/rose-stem/site/common/gungho_model/tasks_gungho_model.cylc index 17c6843c..b446910a 100644 --- a/rose-stem/site/common/gungho_model/tasks_gungho_model.cylc +++ b/rose-stem/site/common/gungho_model/tasks_gungho_model.cylc @@ -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({ diff --git a/rose-stem/site/meto/groups/groups_gungho_model.cylc b/rose-stem/site/meto/groups/groups_gungho_model.cylc index 0605786b..0704f11a 100644 --- a/rose-stem/site/meto/groups/groups_gungho_model.cylc +++ b/rose-stem/site/meto/groups/groups_gungho_model.cylc @@ -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", diff --git a/rose-stem/site/meto/kgos/gungho_model/azspice/checksum_gungho_model_baroclinic-C48_MG-2panel_azspice_gnu_fast-debug-64bit.txt b/rose-stem/site/meto/kgos/gungho_model/azspice/checksum_gungho_model_baroclinic-C48_MG-2panel_azspice_gnu_fast-debug-64bit.txt new file mode 100644 index 00000000..fff7d09e --- /dev/null +++ b/rose-stem/site/meto/kgos/gungho_model/azspice/checksum_gungho_model_baroclinic-C48_MG-2panel_azspice_gnu_fast-debug-64bit.txt @@ -0,0 +1,3 @@ +Inner product checksum rho = 4102EEF5FAAB93B4 +Inner product checksum theta = 423041DD82556056 +Inner product checksum u = 45017CE3BDE63034 diff --git a/rose-stem/site/meto/kgos/gungho_model/azspice/checksum_gungho_model_baroclinic-C48_MG-3panel_azspice_gnu_fast-debug-64bit.txt b/rose-stem/site/meto/kgos/gungho_model/azspice/checksum_gungho_model_baroclinic-C48_MG-3panel_azspice_gnu_fast-debug-64bit.txt new file mode 100644 index 00000000..060f81ae --- /dev/null +++ b/rose-stem/site/meto/kgos/gungho_model/azspice/checksum_gungho_model_baroclinic-C48_MG-3panel_azspice_gnu_fast-debug-64bit.txt @@ -0,0 +1,3 @@ +Inner product checksum rho = 4102EEF5FAAB93B5 +Inner product checksum theta = 423041DD82556059 +Inner product checksum u = 45017CE3BDE63032 diff --git a/rose-stem/site/meto/kgos/gungho_model/azspice/checksum_gungho_model_baroclinic-C48_MG_azspice_gnu_fast-debug-64bit.txt b/rose-stem/site/meto/kgos/gungho_model/azspice/checksum_gungho_model_baroclinic-C48_MG_azspice_gnu_fast-debug-64bit.txt new file mode 100644 index 00000000..54207423 --- /dev/null +++ b/rose-stem/site/meto/kgos/gungho_model/azspice/checksum_gungho_model_baroclinic-C48_MG_azspice_gnu_fast-debug-64bit.txt @@ -0,0 +1,3 @@ +Inner product checksum rho = 4102EEF5FAAB93BA +Inner product checksum theta = 423041DD82556055 +Inner product checksum u = 45017CE3BDE63033 diff --git a/rose-stem/site/meto/kgos/gungho_model/ex1a/checksum_gungho_model_baroclinic-C48_MG_ex1a_gnu_fast-debug-64bit.txt b/rose-stem/site/meto/kgos/gungho_model/ex1a/checksum_gungho_model_baroclinic-C48_MG_ex1a_gnu_fast-debug-64bit.txt new file mode 100644 index 00000000..df436b1f --- /dev/null +++ b/rose-stem/site/meto/kgos/gungho_model/ex1a/checksum_gungho_model_baroclinic-C48_MG_ex1a_gnu_fast-debug-64bit.txt @@ -0,0 +1,3 @@ +Inner product checksum rho = 4102EEF5FAB7BD35 +Inner product checksum theta = 423041DD82538AE9 +Inner product checksum u = 45017CE3BDC64744