From 4a838f5463b53aa4cd5733f8042c58427dc74097 Mon Sep 17 00:00:00 2001 From: Christine Johnson <74597224+cjohnson-pi@users.noreply.github.com> Date: Mon, 12 Jan 2026 14:21:29 +0000 Subject: [PATCH 1/7] changes from fcm - 32bit linear --- .../driver/adjoint_test_parameters_mod.F90 | 12 +- .../adjoint_tests/file/field_def_diags_ls.xml | 44 +++ .../app/adjoint_tests/file/file_def_ancil.xml | 9 + .../file/file_def_check_restart.xml | 15 + .../app/adjoint_tests/file/file_def_diags.xml | 17 + .../adjoint_tests/file/file_def_diags_ls.xml | 13 + .../adjoint_tests/file/file_def_initial.xml | 17 + .../app/adjoint_tests/file/file_def_ls.xml | 19 + .../app/adjoint_tests/file/file_def_read.xml | 19 + rose-stem/app/adjoint_tests/file/iodef.xml | 327 +++------------ .../app/adjoint_tests/opt/rose-app-64bit.conf | 13 + .../adjoint_tests/opt/rose-app-default.conf | 3 + rose-stem/app/adjoint_tests/rose-app.conf | 8 +- .../linear_model/file/field_def_diags_ls.xml | 44 +++ .../app/linear_model/file/file_def_ancil.xml | 9 + .../file/file_def_check_restart.xml | 15 + .../app/linear_model/file/file_def_diags.xml | 17 + .../linear_model/file/file_def_diags_ls.xml | 13 + .../linear_model/file/file_def_initial.xml | 17 + .../app/linear_model/file/file_def_ls.xml | 19 + .../app/linear_model/file/file_def_read.xml | 19 + rose-stem/app/linear_model/file/iodef.xml | 373 +++--------------- .../adjoint_tests/tasks_adjoint_tests.cylc | 9 +- .../linear_model/tasks_linear_model.cylc | 9 +- .../meto/groups/groups_adjoint_tests.cylc | 15 +- .../site/meto/groups/groups_linear_model.cylc | 18 +- .../source/diagnostics/diagnostics_io_mod.x90 | 57 ++- .../driver/gungho_diagnostics_driver_mod.F90 | 24 +- 28 files changed, 524 insertions(+), 650 deletions(-) create mode 100644 rose-stem/app/adjoint_tests/file/field_def_diags_ls.xml create mode 100644 rose-stem/app/adjoint_tests/file/file_def_ancil.xml create mode 100644 rose-stem/app/adjoint_tests/file/file_def_check_restart.xml create mode 100644 rose-stem/app/adjoint_tests/file/file_def_diags.xml create mode 100644 rose-stem/app/adjoint_tests/file/file_def_diags_ls.xml create mode 100644 rose-stem/app/adjoint_tests/file/file_def_initial.xml create mode 100644 rose-stem/app/adjoint_tests/file/file_def_ls.xml create mode 100644 rose-stem/app/adjoint_tests/file/file_def_read.xml create mode 100644 rose-stem/app/adjoint_tests/opt/rose-app-64bit.conf create mode 100644 rose-stem/app/linear_model/file/field_def_diags_ls.xml create mode 100644 rose-stem/app/linear_model/file/file_def_ancil.xml create mode 100644 rose-stem/app/linear_model/file/file_def_check_restart.xml create mode 100644 rose-stem/app/linear_model/file/file_def_diags.xml create mode 100644 rose-stem/app/linear_model/file/file_def_diags_ls.xml create mode 100644 rose-stem/app/linear_model/file/file_def_initial.xml create mode 100644 rose-stem/app/linear_model/file/file_def_ls.xml create mode 100644 rose-stem/app/linear_model/file/file_def_read.xml diff --git a/applications/adjoint_tests/source/driver/adjoint_test_parameters_mod.F90 b/applications/adjoint_tests/source/driver/adjoint_test_parameters_mod.F90 index 09f74b4c9..f4f06ea0c 100644 --- a/applications/adjoint_tests/source/driver/adjoint_test_parameters_mod.F90 +++ b/applications/adjoint_tests/source/driver/adjoint_test_parameters_mod.F90 @@ -28,12 +28,12 @@ module adjoint_test_parameters_mod ! if the ls is not realistic. ls can still be ! randomly assigned, but in a sensible range ! to prevent these issues. - real(r_def), dimension(2), parameter :: ls_u_range = (/ 0.0_r_def, 10.0_r_def /) + real(r_def), dimension(2), parameter :: ls_u_range = (/ 0.1_r_def, 10.0_r_def /) real(r_def), dimension(2), parameter :: ls_theta_range = (/ 280.0_r_def, 340.0_r_def /) - real(r_def), dimension(2), parameter :: ls_rho_range = (/ 0.0_r_def, 1.0_r_def /) - real(r_def), dimension(2), parameter :: ls_exner_range = (/ 0.0_r_def, 1.0_r_def /) - real(r_def), dimension(2), parameter :: ls_md1_range = (/ 0.0_r_def, 1.0_r_def /) - real(r_def), dimension(2), parameter :: ls_md2_range = (/ 0.0_r_def, 1.0_r_def /) - real(r_def), dimension(2), parameter :: ls_md3_range = (/ 0.0_r_def, 1.0_r_def /) + real(r_def), dimension(2), parameter :: ls_rho_range = (/ 0.1_r_def, 1.0_r_def /) + real(r_def), dimension(2), parameter :: ls_exner_range = (/ 0.1_r_def, 1.0_r_def /) + real(r_def), dimension(2), parameter :: ls_md1_range = (/ 0.1_r_def, 1.0_r_def /) + real(r_def), dimension(2), parameter :: ls_md2_range = (/ 0.1_r_def, 1.0_r_def /) + real(r_def), dimension(2), parameter :: ls_md3_range = (/ 0.1_r_def, 1.0_r_def /) end module adjoint_test_parameters_mod diff --git a/rose-stem/app/adjoint_tests/file/field_def_diags_ls.xml b/rose-stem/app/adjoint_tests/file/field_def_diags_ls.xml new file mode 100644 index 000000000..8a2c34e54 --- /dev/null +++ b/rose-stem/app/adjoint_tests/file/field_def_diags_ls.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/rose-stem/app/adjoint_tests/file/file_def_ancil.xml b/rose-stem/app/adjoint_tests/file/file_def_ancil.xml new file mode 100644 index 000000000..43c9e9e44 --- /dev/null +++ b/rose-stem/app/adjoint_tests/file/file_def_ancil.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/rose-stem/app/adjoint_tests/file/file_def_check_restart.xml b/rose-stem/app/adjoint_tests/file/file_def_check_restart.xml new file mode 100644 index 000000000..05ba6dcbc --- /dev/null +++ b/rose-stem/app/adjoint_tests/file/file_def_check_restart.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/rose-stem/app/adjoint_tests/file/file_def_diags.xml b/rose-stem/app/adjoint_tests/file/file_def_diags.xml new file mode 100644 index 000000000..c12613f00 --- /dev/null +++ b/rose-stem/app/adjoint_tests/file/file_def_diags.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/rose-stem/app/adjoint_tests/file/file_def_diags_ls.xml b/rose-stem/app/adjoint_tests/file/file_def_diags_ls.xml new file mode 100644 index 000000000..0cdd03798 --- /dev/null +++ b/rose-stem/app/adjoint_tests/file/file_def_diags_ls.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/rose-stem/app/adjoint_tests/file/file_def_initial.xml b/rose-stem/app/adjoint_tests/file/file_def_initial.xml new file mode 100644 index 000000000..05a68968e --- /dev/null +++ b/rose-stem/app/adjoint_tests/file/file_def_initial.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/rose-stem/app/adjoint_tests/file/file_def_ls.xml b/rose-stem/app/adjoint_tests/file/file_def_ls.xml new file mode 100644 index 000000000..63e02702a --- /dev/null +++ b/rose-stem/app/adjoint_tests/file/file_def_ls.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/rose-stem/app/adjoint_tests/file/file_def_read.xml b/rose-stem/app/adjoint_tests/file/file_def_read.xml new file mode 100644 index 000000000..61cc7f81e --- /dev/null +++ b/rose-stem/app/adjoint_tests/file/file_def_read.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + diff --git a/rose-stem/app/adjoint_tests/file/iodef.xml b/rose-stem/app/adjoint_tests/file/iodef.xml index ab5722770..075e428f3 100644 --- a/rose-stem/app/adjoint_tests/file/iodef.xml +++ b/rose-stem/app/adjoint_tests/file/iodef.xml @@ -5,285 +5,54 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/rose-stem/app/adjoint_tests/opt/rose-app-64bit.conf b/rose-stem/app/adjoint_tests/opt/rose-app-64bit.conf new file mode 100644 index 000000000..c2ebcf72b --- /dev/null +++ b/rose-stem/app/adjoint_tests/opt/rose-app-64bit.conf @@ -0,0 +1,13 @@ +[file:iodef_temp.xml] +mode=auto +source=$ROSE_SUITE_DIR/app/adjoint_tests/file/iodef.xml + +[namelist:helmholtz_solver] +si_pressure_tolerance=1.0e-15 + +[namelist:linear] +fixed_ls=.false. + +[namelist:mixed_solver] +mixed_solver_a_tol=1.0e-21 +si_tolerance=1.0e-21 diff --git a/rose-stem/app/adjoint_tests/opt/rose-app-default.conf b/rose-stem/app/adjoint_tests/opt/rose-app-default.conf index e69de29bb..dba827637 100644 --- a/rose-stem/app/adjoint_tests/opt/rose-app-default.conf +++ b/rose-stem/app/adjoint_tests/opt/rose-app-default.conf @@ -0,0 +1,3 @@ +[file:iodef_temp.xml] +mode=auto +source=$ROSE_SUITE_DIR/app/adjoint_tests/file/iodef.xml diff --git a/rose-stem/app/adjoint_tests/rose-app.conf b/rose-stem/app/adjoint_tests/rose-app.conf index e1950c137..0f17ae2df 100644 --- a/rose-stem/app/adjoint_tests/rose-app.conf +++ b/rose-stem/app/adjoint_tests/rose-app.conf @@ -1,7 +1,7 @@ meta=lfric-adjoint_tests/vn2.2_t618 [command] -default=$LAUNCH_SCRIPT/launch-exe +default=rose env-cat iodef_temp.xml -o iodef.xml; $LAUNCH_SCRIPT/launch-exe [env] ENSEMBLE_MEMBER=0 @@ -421,7 +421,7 @@ normalise=.true. preconditioner='tridiagonal' si_pressure_a_tol=0 si_pressure_maximum_iterations=400 -si_pressure_tolerance=1.0e-15 +si_pressure_tolerance=1.0e-6 [namelist:iau] !!iau_ainc_multifile=.false. @@ -724,14 +724,14 @@ fail_on_non_converged=.false. gcrk=10 guess_np1=.false. !!jacobi_relaxation=0 -mixed_solver_a_tol=1.0e-21 +mixed_solver_a_tol=1.0e-7 monitor_convergence=.true. normalise=.true. reference_reset_time=3600.0 si_maximum_iterations=10 si_method='block_gcr' si_preconditioner='pressure' -si_tolerance=1.0e-21 +si_tolerance=1.0e-8 split_w=.true. [namelist:mixing] diff --git a/rose-stem/app/linear_model/file/field_def_diags_ls.xml b/rose-stem/app/linear_model/file/field_def_diags_ls.xml new file mode 100644 index 000000000..8a2c34e54 --- /dev/null +++ b/rose-stem/app/linear_model/file/field_def_diags_ls.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/rose-stem/app/linear_model/file/file_def_ancil.xml b/rose-stem/app/linear_model/file/file_def_ancil.xml new file mode 100644 index 000000000..43c9e9e44 --- /dev/null +++ b/rose-stem/app/linear_model/file/file_def_ancil.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/rose-stem/app/linear_model/file/file_def_check_restart.xml b/rose-stem/app/linear_model/file/file_def_check_restart.xml new file mode 100644 index 000000000..05ba6dcbc --- /dev/null +++ b/rose-stem/app/linear_model/file/file_def_check_restart.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/rose-stem/app/linear_model/file/file_def_diags.xml b/rose-stem/app/linear_model/file/file_def_diags.xml new file mode 100644 index 000000000..c12613f00 --- /dev/null +++ b/rose-stem/app/linear_model/file/file_def_diags.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/rose-stem/app/linear_model/file/file_def_diags_ls.xml b/rose-stem/app/linear_model/file/file_def_diags_ls.xml new file mode 100644 index 000000000..0cdd03798 --- /dev/null +++ b/rose-stem/app/linear_model/file/file_def_diags_ls.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/rose-stem/app/linear_model/file/file_def_initial.xml b/rose-stem/app/linear_model/file/file_def_initial.xml new file mode 100644 index 000000000..05a68968e --- /dev/null +++ b/rose-stem/app/linear_model/file/file_def_initial.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/rose-stem/app/linear_model/file/file_def_ls.xml b/rose-stem/app/linear_model/file/file_def_ls.xml new file mode 100644 index 000000000..63e02702a --- /dev/null +++ b/rose-stem/app/linear_model/file/file_def_ls.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/rose-stem/app/linear_model/file/file_def_read.xml b/rose-stem/app/linear_model/file/file_def_read.xml new file mode 100644 index 000000000..61cc7f81e --- /dev/null +++ b/rose-stem/app/linear_model/file/file_def_read.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + diff --git a/rose-stem/app/linear_model/file/iodef.xml b/rose-stem/app/linear_model/file/iodef.xml index 8591084dc..075e428f3 100644 --- a/rose-stem/app/linear_model/file/iodef.xml +++ b/rose-stem/app/linear_model/file/iodef.xml @@ -5,331 +5,54 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - processed__tot_col_uv_kinetic_energy + processed__tot_col_w_kinetic_energy - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/rose-stem/site/common/adjoint_tests/tasks_adjoint_tests.cylc b/rose-stem/site/common/adjoint_tests/tasks_adjoint_tests.cylc index cf00dc311..cfdfa8964 100644 --- a/rose-stem/site/common/adjoint_tests/tasks_adjoint_tests.cylc +++ b/rose-stem/site/common/adjoint_tests/tasks_adjoint_tests.cylc @@ -19,6 +19,13 @@ "resolution": "C12", }) %} +{% elif task_ns.conf_name == "64bit-C12" %} + + {% do task_dict.update({ + "opt_confs": ["64bit"], + "resolution": "C12", + }) %} + {% elif task_ns.conf_name == "canned" %} {% do task_dict.update({ @@ -45,4 +52,4 @@ {% endif %} {% endif %} -{% do LOG.debug("Finished in site/common/adjoint_tests/tasks_jedi_lfric_tests.cylc") %} \ No newline at end of file +{% do LOG.debug("Finished in site/common/adjoint_tests/tasks_jedi_lfric_tests.cylc") %} diff --git a/rose-stem/site/common/linear_model/tasks_linear_model.cylc b/rose-stem/site/common/linear_model/tasks_linear_model.cylc index 750fb3604..06561ed41 100644 --- a/rose-stem/site/common/linear_model/tasks_linear_model.cylc +++ b/rose-stem/site/common/linear_model/tasks_linear_model.cylc @@ -13,7 +13,7 @@ "DT": 1800, "tsteps": 12, "mpi_parts": 6, - "plot_str": "linear.py $NODAL_DATA_DIR/lfric_diag.nc $PLOT_DIR 70 linear_model-nwp-gal9_C12 theta:exner:rho:u_in_w2h:v_in_w2h:w_in_wth:m_v:m_cl:m_r:m_s 120:0:5", + "plot_str": "linear.py $NODAL_DATA_DIR/lfric_diag.nc $PLOT_DIR 70 linear_model-nwp-gal9_C12 theta:exner:rho:u_in_w3:v_in_w3:m_v:m_cl:m_r:m_cf 120:0:5", }) %} {% elif task_ns.conf_name == "nwp_gal9-C224_MG" %} @@ -27,7 +27,7 @@ "xios_nodes": 4, "mpi_parts_xios" : 16, "log_level": "debug", - "plot_str": "linear.py $NODAL_DATA_DIR/lfric_diag.nc $PLOT_DIR 70 linear_model-nwp-gal9_C224 theta:exner:rho:u_in_w2h 120:0:5", + "plot_str": "linear.py $NODAL_DATA_DIR/lfric_diag.nc $PLOT_DIR 70 linear_model-nwp-gal9_C224 theta:exner:rho:u_in_w3 120:0:5", }) %} {% elif task_ns.conf_name == "nwp_gal9_random-C12_MG" %} @@ -38,7 +38,7 @@ "DT": 1800, "tsteps": 12, "mpi_parts": 6, - "plot_str": "linear.py $NODAL_DATA_DIR/lfric_diag.nc $PLOT_DIR 70 linear_model-nwp-gal9_random theta:exner:rho:u_in_w2h:v_in_w2h:w_in_wth:m_v:m_cl:m_r:m_s 120:0:5", + "plot_str": "linear.py $NODAL_DATA_DIR/lfric_diag.nc $PLOT_DIR 70 linear_model-nwp-gal9_random theta:exner:rho:u_in_w3:v_in_w3:m_v:m_cl:m_r:m_cf 120:0:5", }) %} {% elif task_ns.conf_name == "nwp_gal9_zero-C12_MG" %} @@ -49,6 +49,7 @@ "DT": 1800, "tsteps": 12, "mpi_parts": 6, + "plot_str": "linear.py $NODAL_DATA_DIR/lfric_diag.nc $PLOT_DIR 70 linear_model-nwp-gal9_random theta:exner:rho:m_v:m_cl:m_r:m_cf 120:0:5", }) %} {% elif task_ns.conf_name == "runge-kutta-C12" %} @@ -80,7 +81,7 @@ "DT": 10, "tsteps": 180, "mpi_parts": 12, - "plot_str": "linear.py $NODAL_DATA_DIR/lfric_diag.nc $PLOT_DIR 10 linear_model-dcmip theta:exner:rho:u_in_w2h:v_in_w2h:w_in_wth 120:0:5" + "plot_str": "linear.py $NODAL_DATA_DIR/lfric_diag.nc $PLOT_DIR 10 linear_model-dcmip theta:exner:rho:u_in_w3:v_in_w3 120:0:5" }) %} {% elif task_ns.conf_name == "canned" %} diff --git a/rose-stem/site/meto/groups/groups_adjoint_tests.cylc b/rose-stem/site/meto/groups/groups_adjoint_tests.cylc index 804f53ee8..bdfef1608 100644 --- a/rose-stem/site/meto/groups/groups_adjoint_tests.cylc +++ b/rose-stem/site/meto/groups/groups_adjoint_tests.cylc @@ -8,9 +8,9 @@ {# Azspice Groups #} {% do site_groups.update({ "adjoint_tests_azspice_developer": [ - "adjoint_tests_default-C12_azspice_gnu_fast-debug-64bit-rsolver64", - "adjoint_tests_default-C12_azspice_gnu_full-debug-64bit-rsolver64", - "adjoint_tests_varying_ls-C12_azspice_gnu_fast-debug-64bit-rsolver64", + "adjoint_tests_default-C12_azspice_gnu_production-32bit", + "adjoint_tests_64bit-C12_azspice_gnu_fast-debug-64bit-rsolver64", + "adjoint_tests_64bit-C12_azspice_gnu_full-debug-64bit-rsolver64", "adjoint_tests_azspice_canned", ], "adjoint_tests_azspice": [ @@ -20,7 +20,7 @@ "adjoint_tests_canned_azspice_gnu_fast-debug-64bit-rsolver64", ], "adjoint_tests_azspice_build": [ - "build_adjoint_tests_azspice_gnu_fast-debug-64bit", + "build_adjoint_tests_azspice_gnu_production-32bit", "build_adjoint_tests_azspice_gnu_full-debug-64bit", ], }) %} @@ -28,8 +28,9 @@ {# EX1A Groups #} {% do site_groups.update({ "adjoint_tests_ex1a_developer": [ - "adjoint_tests_default-C12_ex1a_gnu_fast-debug-64bit-rsolver64", - "adjoint_tests_default-C12_ex1a_gnu_full-debug-64bit-rsolver64", + "adjoint_tests_default-C12_ex1a_gnu_production-32bit", + "adjoint_tests_64bit-C12_ex1a_gnu_fast-debug-64bit-rsolver64", + "adjoint_tests_64bit-C12_ex1a_gnu_full-debug-64bit-rsolver64", "adjoint_tests_ex1a_canned", ], "adjoint_tests_ex1a": [ @@ -39,7 +40,7 @@ "adjoint_tests_canned_ex1a_gnu_fast-debug-64bit-rsolver64", ], "adjoint_tests_ex1a_build": [ - "build_adjoint_tests_ex1a_gnu_fast-debug-64bit", + "build_adjoint_tests_ex1a_gnu_production-32bit", "build_adjoint_tests_ex1a_gnu_full-debug-64bit", ], }) %} diff --git a/rose-stem/site/meto/groups/groups_linear_model.cylc b/rose-stem/site/meto/groups/groups_linear_model.cylc index 36b7b9491..ffd540f2f 100644 --- a/rose-stem/site/meto/groups/groups_linear_model.cylc +++ b/rose-stem/site/meto/groups/groups_linear_model.cylc @@ -8,6 +8,7 @@ {# Azspice Groups #} {% do site_groups.update({ "linear_model_azspice_developer": [ + "linear_model_nwp_gal9-C12_MG_azspice_gnu_production-32bit", "linear_model_nwp_gal9-C12_MG_azspice_gnu_fast-debug-64bit", "linear_model_nwp_gal9_random-C12_MG_azspice_gnu_fast-debug-64bit", "linear_model_nwp_gal9_zero-C12_MG_azspice_gnu_fast-debug-64bit", @@ -31,13 +32,22 @@ {# EX1A Groups #} {% do site_groups.update({ "linear_model_ex1a_developer": [ - "linear_model_nwp_gal9-C224_MG_ex1a_gnu_fast-debug-64bit", - "linear_model_nwp_gal9-C12_MG_ex1a_gnu_fast-debug-64bit", - "linear_model_nwp_gal9_random-C12_MG_ex1a_gnu_fast-debug-64bit", - "linear_model_nwp_gal9_zero-C12_MG_ex1a_gnu_fast-debug-64bit", + "linear_model_nwp_gal9-C224_MG_ex1a_gnu_production-32bit", "linear_model_runge-kutta-C12_ex1a_gnu_fast-debug-64bit", "linear_model_semi-implicit-C12_ex1a_gnu_fast-debug-64bit", "linear_model_dcmip301-C24_ex1a_gnu_fast-debug-64bit", + "linear_model_nwp_gal9-C12_MG_ex1a_gnu_fast-debug-64bit", + "linear_model_nwp_gal9-C12_MG_ex1a_gnu_fast-debug-32bit", + "linear_model_nwp_gal9-C12_MG_ex1a_gnu_full-debug-64bit", + "linear_model_nwp_gal9-C12_MG_ex1a_gnu_full-debug-32bit", + "linear_model_nwp_gal9-C12_MG_ex1a_gnu_production-64bit", + "linear_model_nwp_gal9-C12_MG_ex1a_gnu_production-32bit", + "linear_model_nwp_gal9-C12_MG_ex1a_cce_fast-debug-64bit", + "linear_model_nwp_gal9-C12_MG_ex1a_cce_fast-debug-32bit", + "linear_model_nwp_gal9-C12_MG_ex1a_cce_production-64bit", + "linear_model_nwp_gal9-C12_MG_ex1a_cce_production-32bit", + "linear_model_nwp_gal9_random-C12_MG_ex1a_gnu_fast-debug-64bit", + "linear_model_nwp_gal9_zero-C12_MG_ex1a_gnu_fast-debug-64bit", "linear_model_ex1a_canned", ], "linear_model_ex1a": [ diff --git a/science/gungho/source/diagnostics/diagnostics_io_mod.x90 b/science/gungho/source/diagnostics/diagnostics_io_mod.x90 index ad2f7737a..2b3c5dcec 100755 --- a/science/gungho/source/diagnostics/diagnostics_io_mod.x90 +++ b/science/gungho/source/diagnostics/diagnostics_io_mod.x90 @@ -17,6 +17,7 @@ module diagnostics_io_mod scalar_nodal_diagnostic_alg, & scalar_ugrid_diagnostic_alg, & vector_nodal_diagnostic_alg + use initialise_diagnostics_mod, only: diagnostic_to_be_sampled use io_config_mod, only: use_xios_io, write_fluxes use files_config_mod, only: diag_stem_name use function_space_collection_mod, only: function_space_collection @@ -139,9 +140,13 @@ subroutine write_scalar_diagnostic( field_name, field, & ! Check if we need to write an initial field if (clock%is_initialisation()) then - call output_field(1)%write_field(trim('init_'//field_name)) + if (diagnostic_to_be_sampled(trim('init_'//field_name))) then + call output_field(1)%write_field(trim('init_'//field_name)) + end if else - call output_field(1)%write_field(trim(field_name)) + if (diagnostic_to_be_sampled(trim(field_name))) then + call output_field(1)%write_field(trim(field_name)) + end if end if nullify(tmp_write_ptr) @@ -308,23 +313,47 @@ subroutine write_vector_diagnostic( field_name, field, & if (clock%is_initialisation()) then if (field_name == 'u') then - call u1_wind%write_field("init_u_in_w2h") - call u2_wind%write_field("init_v_in_w2h") - call u3_wind%write_field("init_w_in_wth") + if (diagnostic_to_be_sampled("init_u_in_w2h")) then + call u1_wind%write_field("init_u_in_w2h") + end if + if (diagnostic_to_be_sampled("init_v_in_w2h")) then + call u2_wind%write_field("init_v_in_w2h") + end if + if (diagnostic_to_be_sampled("init_w_in_wth")) then + call u3_wind%write_field("init_w_in_wth") + end if else - call u1_wind%write_field("init_"//trim(field_name)//"1") - call u2_wind%write_field("init_"//trim(field_name)//"2") - call u3_wind%write_field("init_"//trim(field_name)//"3") + if (diagnostic_to_be_sampled(trim(field_name)//"1")) then + call u1_wind%write_field("init_"//trim(field_name)//"1") + end if + if (diagnostic_to_be_sampled(trim(field_name)//"2")) then + call u2_wind%write_field("init_"//trim(field_name)//"2") + end if + if (diagnostic_to_be_sampled(trim(field_name)//"3")) then + call u3_wind%write_field("init_"//trim(field_name)//"3") + end if end if else if (field_name == 'u') then - call u1_wind%write_field("u_in_w2h") - call u2_wind%write_field("v_in_w2h") - call u3_wind%write_field("w_in_wth") + if (diagnostic_to_be_sampled("u_in_w2h")) then + call u1_wind%write_field("u_in_w2h") + end if + if (diagnostic_to_be_sampled("v_in_w2h")) then + call u2_wind%write_field("v_in_w2h") + end if + if (diagnostic_to_be_sampled("w_in_wth")) then + call u3_wind%write_field("w_in_wth") + end if else - call u1_wind%write_field(trim(field_name)//"1") - call u2_wind%write_field(trim(field_name)//"2") - call u3_wind%write_field(trim(field_name)//"3") + if (diagnostic_to_be_sampled(trim(field_name)//"1")) then + call u1_wind%write_field(trim(field_name)//"1") + end if + if (diagnostic_to_be_sampled(trim(field_name)//"2")) then + call u2_wind%write_field(trim(field_name)//"2") + end if + if (diagnostic_to_be_sampled(trim(field_name)//"3")) then + call u3_wind%write_field(trim(field_name)//"3") + end if end if end if diff --git a/science/gungho/source/driver/gungho_diagnostics_driver_mod.F90 b/science/gungho/source/driver/gungho_diagnostics_driver_mod.F90 index 12cc745a4..b7d1f57b3 100644 --- a/science/gungho/source/driver/gungho_diagnostics_driver_mod.F90 +++ b/science/gungho/source/driver/gungho_diagnostics_driver_mod.F90 @@ -212,13 +212,25 @@ subroutine gungho_diagnostics_driver( modeldb, & call u_in_w2h%set_write_behaviour(tmp_write_ptr) call v_in_w2h%set_write_behaviour(tmp_write_ptr) if (modeldb%clock%is_initialisation()) then - call u_in_w2h%write_field("init_u_in_w2h") - call v_in_w2h%write_field("init_v_in_w2h") - call w_in_wth%write_field("init_w_in_wth") + if (diagnostic_to_be_sampled("init_u_in_w2h")) then + call u_in_w2h%write_field("init_u_in_w2h") + end if + if (diagnostic_to_be_sampled("init_v_in_w2h")) then + call v_in_w2h%write_field("init_v_in_w2h") + end if + if (diagnostic_to_be_sampled("init_w_in_wth")) then + call w_in_wth%write_field("init_w_in_wth") + end if else - call u_in_w2h%write_field("u_in_w2h") - call v_in_w2h%write_field("v_in_w2h") - call w_in_wth%write_field("w_in_wth") + if (diagnostic_to_be_sampled("u_in_w2h")) then + call u_in_w2h%write_field("u_in_w2h") + end if + if (diagnostic_to_be_sampled("v_in_w2h")) then + call v_in_w2h%write_field("v_in_w2h") + end if + if (diagnostic_to_be_sampled("w_in_wth")) then + call w_in_wth%write_field("w_in_wth") + end if end if else call write_vector_diagnostic('u', u, & From 1f30170b238696dc1a5e317c23a7aedf726c2fe8 Mon Sep 17 00:00:00 2001 From: Christine Johnson <74597224+cjohnson-pi@users.noreply.github.com> Date: Mon, 19 Jan 2026 10:19:23 +0000 Subject: [PATCH 2/7] CLA --- CONTRIBUTORS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index d0f7ae14d..dc904219d 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -4,3 +4,4 @@ | ----------- | --------- | ----------- | ---- | | james-bruten-mo | James Bruten | Met Office | 2025-12-09 | | jennyhickson | Jenny Hickson | Met Office | 2025-12-10 | +| cjohnson-pi | Christine Johnson | Met Office | 2026-01-19 | From 98cb62d81bc7adac8023cab5a8b63a5ec715df19 Mon Sep 17 00:00:00 2001 From: cjohnson-pi <74597224+cjohnson-pi@users.noreply.github.com> Date: Mon, 19 Jan 2026 10:22:55 +0000 Subject: [PATCH 3/7] Update CONTRIBUTORS.md --- CONTRIBUTORS.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 8df582df7..2d5611223 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -1,5 +1,4 @@ # Contributors - | GitHub user | Real Name | Affiliation | Date | | --------------- | ----------------- | ----------- | ---------- | | james-bruten-mo | James Bruten | Met Office | 2025-12-09 | @@ -12,4 +11,4 @@ | DrTVockerodtMO | Terence Vockerodt | Met Office | 2026-01-08 | | MetBenjaminWent | Benjamin Went | Met Office | 2026-01-15 | | timgraham-Met | Tim Graham | Met Office | 2026-01-15 | -| cjohnson-pi | Christine Johnson | Met Office | 2026-01-19 | \ No newline at end of file +| cjohnson-pi | Christine Johnson | Met Office | 2026-01-19 | From 853bc29ff7f4961ce517e6100537e0e06d16718f Mon Sep 17 00:00:00 2001 From: Christine Johnson <74597224+cjohnson-pi@users.noreply.github.com> Date: Mon, 19 Jan 2026 10:33:54 +0000 Subject: [PATCH 4/7] update rose --- rose-stem/site/meto/groups/groups_linear_model.cylc | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/rose-stem/site/meto/groups/groups_linear_model.cylc b/rose-stem/site/meto/groups/groups_linear_model.cylc index 377a5b59a..062689d42 100644 --- a/rose-stem/site/meto/groups/groups_linear_model.cylc +++ b/rose-stem/site/meto/groups/groups_linear_model.cylc @@ -32,16 +32,11 @@ {# EX1A Groups #} {% do site_groups.update({ "linear_model_ex1a_developer": [ -<<<<<<< HEAD - "linear_model_nwp_gal9-C224_MG_ex1a_gnu_production-32bit", -======= - "linear_model_nwp_gal9-C12_MG_ex1a_gnu_fast-debug-64bit", - "linear_model_nwp_gal9_random-C12_MG_ex1a_gnu_fast-debug-64bit", - "linear_model_nwp_gal9_zero-C12_MG_ex1a_gnu_fast-debug-64bit", ->>>>>>> origin/stable "linear_model_runge-kutta-C12_ex1a_gnu_fast-debug-64bit", "linear_model_semi-implicit-C12_ex1a_gnu_fast-debug-64bit", "linear_model_dcmip301-C24_ex1a_gnu_fast-debug-64bit", + "linear_model_nwp_gal9_random-C12_MG_ex1a_gnu_fast-debug-64bit", + "linear_model_nwp_gal9_zero-C12_MG_ex1a_gnu_fast-debug-64bit", "linear_model_nwp_gal9-C12_MG_ex1a_gnu_fast-debug-64bit", "linear_model_nwp_gal9-C12_MG_ex1a_gnu_fast-debug-32bit", "linear_model_nwp_gal9-C12_MG_ex1a_gnu_full-debug-64bit", @@ -52,8 +47,6 @@ "linear_model_nwp_gal9-C12_MG_ex1a_cce_fast-debug-32bit", "linear_model_nwp_gal9-C12_MG_ex1a_cce_production-64bit", "linear_model_nwp_gal9-C12_MG_ex1a_cce_production-32bit", - "linear_model_nwp_gal9_random-C12_MG_ex1a_gnu_fast-debug-64bit", - "linear_model_nwp_gal9_zero-C12_MG_ex1a_gnu_fast-debug-64bit", "linear_model_ex1a_canned", ], "linear_model_ex1a": [ From fe54e63d8d2b4baea5f0946734a66546c423b0c1 Mon Sep 17 00:00:00 2001 From: Christine Johnson <74597224+cjohnson-pi@users.noreply.github.com> Date: Mon, 19 Jan 2026 15:14:58 +0000 Subject: [PATCH 5/7] kgos --- ...odel_nwp_gal9-C12_MG_azspice_gnu_production-32bit.txt | 9 +++++++++ ...r_model_nwp_gal9-C12_MG_ex1a_cce_fast-debug-32bit.txt | 9 +++++++++ ...r_model_nwp_gal9-C12_MG_ex1a_cce_fast-debug-64bit.txt | 9 +++++++++ ...r_model_nwp_gal9-C12_MG_ex1a_cce_production-32bit.txt | 9 +++++++++ ...r_model_nwp_gal9-C12_MG_ex1a_cce_production-64bit.txt | 9 +++++++++ ...r_model_nwp_gal9-C12_MG_ex1a_gnu_fast-debug-32bit.txt | 9 +++++++++ ...r_model_nwp_gal9-C12_MG_ex1a_gnu_full-debug-32bit.txt | 9 +++++++++ ...r_model_nwp_gal9-C12_MG_ex1a_gnu_full-debug-64bit.txt | 9 +++++++++ ...r_model_nwp_gal9-C12_MG_ex1a_gnu_production-32bit.txt | 9 +++++++++ ...r_model_nwp_gal9-C12_MG_ex1a_gnu_production-64bit.txt | 9 +++++++++ 10 files changed, 90 insertions(+) create mode 100644 rose-stem/site/meto/kgos/linear_model/azspice/checksum_linear_model_nwp_gal9-C12_MG_azspice_gnu_production-32bit.txt create mode 100644 rose-stem/site/meto/kgos/linear_model/ex1a/checksum_linear_model_nwp_gal9-C12_MG_ex1a_cce_fast-debug-32bit.txt create mode 100644 rose-stem/site/meto/kgos/linear_model/ex1a/checksum_linear_model_nwp_gal9-C12_MG_ex1a_cce_fast-debug-64bit.txt create mode 100644 rose-stem/site/meto/kgos/linear_model/ex1a/checksum_linear_model_nwp_gal9-C12_MG_ex1a_cce_production-32bit.txt create mode 100644 rose-stem/site/meto/kgos/linear_model/ex1a/checksum_linear_model_nwp_gal9-C12_MG_ex1a_cce_production-64bit.txt create mode 100644 rose-stem/site/meto/kgos/linear_model/ex1a/checksum_linear_model_nwp_gal9-C12_MG_ex1a_gnu_fast-debug-32bit.txt create mode 100644 rose-stem/site/meto/kgos/linear_model/ex1a/checksum_linear_model_nwp_gal9-C12_MG_ex1a_gnu_full-debug-32bit.txt create mode 100644 rose-stem/site/meto/kgos/linear_model/ex1a/checksum_linear_model_nwp_gal9-C12_MG_ex1a_gnu_full-debug-64bit.txt create mode 100644 rose-stem/site/meto/kgos/linear_model/ex1a/checksum_linear_model_nwp_gal9-C12_MG_ex1a_gnu_production-32bit.txt create mode 100644 rose-stem/site/meto/kgos/linear_model/ex1a/checksum_linear_model_nwp_gal9-C12_MG_ex1a_gnu_production-64bit.txt diff --git a/rose-stem/site/meto/kgos/linear_model/azspice/checksum_linear_model_nwp_gal9-C12_MG_azspice_gnu_production-32bit.txt b/rose-stem/site/meto/kgos/linear_model/azspice/checksum_linear_model_nwp_gal9-C12_MG_azspice_gnu_production-32bit.txt new file mode 100644 index 000000000..c934afe08 --- /dev/null +++ b/rose-stem/site/meto/kgos/linear_model/azspice/checksum_linear_model_nwp_gal9-C12_MG_azspice_gnu_production-32bit.txt @@ -0,0 +1,9 @@ +Inner product checksum rho = 3D4ACAE6 +Inner product checksum theta = 4B0FFC49 +Inner product checksum u = 6B52658C +Inner product checksum mr1 = 39DC40E0 +Inner product checksum mr2 = 37599186 +Inner product checksum mr3 = 36FF90E9 +Inner product checksum mr4 = 376A1F26 +Inner product checksum mr5 = 0 +Inner product checksum mr6 = 0 diff --git a/rose-stem/site/meto/kgos/linear_model/ex1a/checksum_linear_model_nwp_gal9-C12_MG_ex1a_cce_fast-debug-32bit.txt b/rose-stem/site/meto/kgos/linear_model/ex1a/checksum_linear_model_nwp_gal9-C12_MG_ex1a_cce_fast-debug-32bit.txt new file mode 100644 index 000000000..e80557eca --- /dev/null +++ b/rose-stem/site/meto/kgos/linear_model/ex1a/checksum_linear_model_nwp_gal9-C12_MG_ex1a_cce_fast-debug-32bit.txt @@ -0,0 +1,9 @@ +Inner product checksum rho = 3D4ACE5F +Inner product checksum theta = 4B0FFDD1 +Inner product checksum u = 6B52681C +Inner product checksum mr1 = 39DC44FB +Inner product checksum mr2 = 3759A01B +Inner product checksum mr3 = 36FFA7F1 +Inner product checksum mr4 = 376A28C7 +Inner product checksum mr5 = 0 +Inner product checksum mr6 = 0 diff --git a/rose-stem/site/meto/kgos/linear_model/ex1a/checksum_linear_model_nwp_gal9-C12_MG_ex1a_cce_fast-debug-64bit.txt b/rose-stem/site/meto/kgos/linear_model/ex1a/checksum_linear_model_nwp_gal9-C12_MG_ex1a_cce_fast-debug-64bit.txt new file mode 100644 index 000000000..229501ffa --- /dev/null +++ b/rose-stem/site/meto/kgos/linear_model/ex1a/checksum_linear_model_nwp_gal9-C12_MG_ex1a_cce_fast-debug-64bit.txt @@ -0,0 +1,9 @@ +Inner product checksum rho = 3FA958EF383B0782 +Inner product checksum theta = 4161FFBE25C862BD +Inner product checksum u = 456A4D0A84F080A3 +Inner product checksum mr1 = 3F3B887BAF34DBFF +Inner product checksum mr2 = 3EEB31093A6C92AD +Inner product checksum mr3 = 3EDFF31B7D494BE0 +Inner product checksum mr4 = 3EED42825E6771A0 +Inner product checksum mr5 = 0 +Inner product checksum mr6 = 0 diff --git a/rose-stem/site/meto/kgos/linear_model/ex1a/checksum_linear_model_nwp_gal9-C12_MG_ex1a_cce_production-32bit.txt b/rose-stem/site/meto/kgos/linear_model/ex1a/checksum_linear_model_nwp_gal9-C12_MG_ex1a_cce_production-32bit.txt new file mode 100644 index 000000000..e6510b951 --- /dev/null +++ b/rose-stem/site/meto/kgos/linear_model/ex1a/checksum_linear_model_nwp_gal9-C12_MG_ex1a_cce_production-32bit.txt @@ -0,0 +1,9 @@ +Inner product checksum rho = 3D4AF97F +Inner product checksum theta = 4B0FFB8A +Inner product checksum u = 6B5264A4 +Inner product checksum mr1 = 39DC524B +Inner product checksum mr2 = 3759A43A +Inner product checksum mr3 = 36FF9496 +Inner product checksum mr4 = 376A002D +Inner product checksum mr5 = 0 +Inner product checksum mr6 = 0 diff --git a/rose-stem/site/meto/kgos/linear_model/ex1a/checksum_linear_model_nwp_gal9-C12_MG_ex1a_cce_production-64bit.txt b/rose-stem/site/meto/kgos/linear_model/ex1a/checksum_linear_model_nwp_gal9-C12_MG_ex1a_cce_production-64bit.txt new file mode 100644 index 000000000..aaea37eb9 --- /dev/null +++ b/rose-stem/site/meto/kgos/linear_model/ex1a/checksum_linear_model_nwp_gal9-C12_MG_ex1a_cce_production-64bit.txt @@ -0,0 +1,9 @@ +Inner product checksum rho = 3FA958F7049182F0 +Inner product checksum theta = 4161FFBD6EBABDF1 +Inner product checksum u = 456A4D0A64E2B7A7 +Inner product checksum mr1 = 3F3B8855C1E5D2B9 +Inner product checksum mr2 = 3EEB3109C255DDD4 +Inner product checksum mr3 = 3EDFF31B85B04D4A +Inner product checksum mr4 = 3EED428246BF621C +Inner product checksum mr5 = 0 +Inner product checksum mr6 = 0 diff --git a/rose-stem/site/meto/kgos/linear_model/ex1a/checksum_linear_model_nwp_gal9-C12_MG_ex1a_gnu_fast-debug-32bit.txt b/rose-stem/site/meto/kgos/linear_model/ex1a/checksum_linear_model_nwp_gal9-C12_MG_ex1a_gnu_fast-debug-32bit.txt new file mode 100644 index 000000000..c2ac32349 --- /dev/null +++ b/rose-stem/site/meto/kgos/linear_model/ex1a/checksum_linear_model_nwp_gal9-C12_MG_ex1a_gnu_fast-debug-32bit.txt @@ -0,0 +1,9 @@ +Inner product checksum rho = 3D4ACBD4 +Inner product checksum theta = 4B0FFCD7 +Inner product checksum u = 6B526688 +Inner product checksum mr1 = 39DC44FD +Inner product checksum mr2 = 37599DDD +Inner product checksum mr3 = 36FF9C03 +Inner product checksum mr4 = 376A223A +Inner product checksum mr5 = 0 +Inner product checksum mr6 = 0 diff --git a/rose-stem/site/meto/kgos/linear_model/ex1a/checksum_linear_model_nwp_gal9-C12_MG_ex1a_gnu_full-debug-32bit.txt b/rose-stem/site/meto/kgos/linear_model/ex1a/checksum_linear_model_nwp_gal9-C12_MG_ex1a_gnu_full-debug-32bit.txt new file mode 100644 index 000000000..c2ac32349 --- /dev/null +++ b/rose-stem/site/meto/kgos/linear_model/ex1a/checksum_linear_model_nwp_gal9-C12_MG_ex1a_gnu_full-debug-32bit.txt @@ -0,0 +1,9 @@ +Inner product checksum rho = 3D4ACBD4 +Inner product checksum theta = 4B0FFCD7 +Inner product checksum u = 6B526688 +Inner product checksum mr1 = 39DC44FD +Inner product checksum mr2 = 37599DDD +Inner product checksum mr3 = 36FF9C03 +Inner product checksum mr4 = 376A223A +Inner product checksum mr5 = 0 +Inner product checksum mr6 = 0 diff --git a/rose-stem/site/meto/kgos/linear_model/ex1a/checksum_linear_model_nwp_gal9-C12_MG_ex1a_gnu_full-debug-64bit.txt b/rose-stem/site/meto/kgos/linear_model/ex1a/checksum_linear_model_nwp_gal9-C12_MG_ex1a_gnu_full-debug-64bit.txt new file mode 100644 index 000000000..8839d63b9 --- /dev/null +++ b/rose-stem/site/meto/kgos/linear_model/ex1a/checksum_linear_model_nwp_gal9-C12_MG_ex1a_gnu_full-debug-64bit.txt @@ -0,0 +1,9 @@ +Inner product checksum rho = 3FA958F09D97D52D +Inner product checksum theta = 4161FFBE7B6B7DE1 +Inner product checksum u = 456A4D0ACAB467CA +Inner product checksum mr1 = 3F3B888D5EA6A45C +Inner product checksum mr2 = 3EEB310977D9678E +Inner product checksum mr3 = 3EDFF31B705B97D8 +Inner product checksum mr4 = 3EED42824B13222B +Inner product checksum mr5 = 0 +Inner product checksum mr6 = 0 diff --git a/rose-stem/site/meto/kgos/linear_model/ex1a/checksum_linear_model_nwp_gal9-C12_MG_ex1a_gnu_production-32bit.txt b/rose-stem/site/meto/kgos/linear_model/ex1a/checksum_linear_model_nwp_gal9-C12_MG_ex1a_gnu_production-32bit.txt new file mode 100644 index 000000000..ee7721fa6 --- /dev/null +++ b/rose-stem/site/meto/kgos/linear_model/ex1a/checksum_linear_model_nwp_gal9-C12_MG_ex1a_gnu_production-32bit.txt @@ -0,0 +1,9 @@ +Inner product checksum rho = 3D4ACB2D +Inner product checksum theta = 4B0FFC10 +Inner product checksum u = 6B526556 +Inner product checksum mr1 = 39DC4799 +Inner product checksum mr2 = 375987FC +Inner product checksum mr3 = 36FF91E4 +Inner product checksum mr4 = 376A23BA +Inner product checksum mr5 = 0 +Inner product checksum mr6 = 0 diff --git a/rose-stem/site/meto/kgos/linear_model/ex1a/checksum_linear_model_nwp_gal9-C12_MG_ex1a_gnu_production-64bit.txt b/rose-stem/site/meto/kgos/linear_model/ex1a/checksum_linear_model_nwp_gal9-C12_MG_ex1a_gnu_production-64bit.txt new file mode 100644 index 000000000..57c69ccdd --- /dev/null +++ b/rose-stem/site/meto/kgos/linear_model/ex1a/checksum_linear_model_nwp_gal9-C12_MG_ex1a_gnu_production-64bit.txt @@ -0,0 +1,9 @@ +Inner product checksum rho = 3FA958F2AD005117 +Inner product checksum theta = 4161FFC01F219433 +Inner product checksum u = 456A4D0C6EB9A688 +Inner product checksum mr1 = 3F3B888EDFD9349C +Inner product checksum mr2 = 3EEB3108D38837C3 +Inner product checksum mr3 = 3EDFF31B73A51CE4 +Inner product checksum mr4 = 3EED42827244488E +Inner product checksum mr5 = 0 +Inner product checksum mr6 = 0 From c746e8fc0371438bc3bb7dd7429cfc162273dd59 Mon Sep 17 00:00:00 2001 From: Christine Johnson <74597224+cjohnson-pi@users.noreply.github.com> Date: Tue, 20 Jan 2026 10:28:05 +0000 Subject: [PATCH 6/7] correction for adjoint_tests 32bit --- .../solver/adjt_mixed_operator_alg_mod.x90 | 10 ++++---- ...djt_mixed_schur_preconditioner_alg_mod.x90 | 10 ++++---- .../solver/adjt_mixed_solver_alg_mod.x90 | 10 ++++---- .../solver/adjt_pressure_precon_alg_mod.x90 | 6 ++--- .../adjt_scaled_matrix_vector_alg_mod.x90 | 6 ++--- ...adjt_semi_implicit_solver_step_alg_mod.x90 | 24 +++++++++---------- .../driver/adjoint_test_parameters_mod.F90 | 2 +- 7 files changed, 34 insertions(+), 34 deletions(-) diff --git a/applications/adjoint_tests/source/algorithm/solver/adjt_mixed_operator_alg_mod.x90 b/applications/adjoint_tests/source/algorithm/solver/adjt_mixed_operator_alg_mod.x90 index 1ec40ca09..dac95c19e 100644 --- a/applications/adjoint_tests/source/algorithm/solver/adjt_mixed_operator_alg_mod.x90 +++ b/applications/adjoint_tests/source/algorithm/solver/adjt_mixed_operator_alg_mod.x90 @@ -7,7 +7,7 @@ module adjt_mixed_operator_alg_mod - use constants_mod, only: i_def, r_def, l_def, r_solver + use constants_mod, only: i_def, r_def, l_def, r_solver, EPS use log_mod, only: log_event, & log_scratch_space, & LOG_LEVEL_DEBUG, & @@ -83,7 +83,7 @@ contains real(kind=r_def) :: machine_tol, machine_tol_r_solver real(kind=r_def) :: relative_diff, relative_diff_r_solver real(kind=r_def), parameter :: overall_tolerance = 1000.0_r_def - real(kind=r_def), parameter :: eps = 1e-30_r_def + !real(kind=r_def), parameter :: eps = 1e-30_r_def if (subroutine_timers) call timer('adjt_mixed_operator_alg') @@ -165,9 +165,9 @@ contains write(log_scratch_space, *) "w inner product = ", w_inner_prod call log_event( log_scratch_space, LOG_LEVEL_DEBUG ) - p_sf = 1.0_r_def / (p_inner_prod + eps) - uv_sf = 1.0_r_def / (uv_inner_prod + eps) - w_sf = 1.0_r_def / (w_inner_prod + eps) + p_sf = 1.0_r_def / (p_inner_prod + EPS) + uv_sf = 1.0_r_def / (uv_inner_prod + EPS) + w_sf = 1.0_r_def / (w_inner_prod + EPS) inner1 = 0.0_r_def inner1 = inner1 + p_inner_prod * p_sf diff --git a/applications/adjoint_tests/source/algorithm/solver/adjt_mixed_schur_preconditioner_alg_mod.x90 b/applications/adjoint_tests/source/algorithm/solver/adjt_mixed_schur_preconditioner_alg_mod.x90 index 7a4560938..17dd75100 100644 --- a/applications/adjoint_tests/source/algorithm/solver/adjt_mixed_schur_preconditioner_alg_mod.x90 +++ b/applications/adjoint_tests/source/algorithm/solver/adjt_mixed_schur_preconditioner_alg_mod.x90 @@ -7,7 +7,7 @@ module adjt_mixed_schur_preconditioner_alg_mod - use constants_mod, only: i_def, r_def, l_def, r_solver + use constants_mod, only: i_def, r_def, l_def, r_solver, EPS use log_mod, only: log_event, & log_scratch_space, & LOG_LEVEL_INFO, & @@ -125,7 +125,7 @@ contains real(kind=r_def), parameter :: overall_tolerance = 1000.0_r_def real(kind=r_def) :: machine_tol, machine_tol_r_solver real(kind=r_def) :: relative_diff, relative_diff_r_solver - real(kind=r_def), parameter :: eps = 1e-30_r_def + !real(kind=r_def), parameter :: eps = 1e-30_r_def if (subroutine_timers) call timer('adjt_mixed_schur_preconditioner_alg') @@ -253,9 +253,9 @@ contains write(log_scratch_space, *) "w inner product = ", w_inner_prod call log_event( log_scratch_space, LOG_LEVEL_DEBUG ) - p_sf = 1.0_r_def / (p_inner_prod + eps) - uv_sf = 1.0_r_def / (uv_inner_prod + eps) - w_sf = 1.0_r_def / (w_inner_prod + eps) + p_sf = 1.0_r_def / (p_inner_prod + EPS) + uv_sf = 1.0_r_def / (uv_inner_prod + EPS) + w_sf = 1.0_r_def / (w_inner_prod + EPS) inner1 = 0.0_r_def inner1 = inner1 + p_inner_prod * p_sf diff --git a/applications/adjoint_tests/source/algorithm/solver/adjt_mixed_solver_alg_mod.x90 b/applications/adjoint_tests/source/algorithm/solver/adjt_mixed_solver_alg_mod.x90 index 67317630f..eb99dc072 100644 --- a/applications/adjoint_tests/source/algorithm/solver/adjt_mixed_solver_alg_mod.x90 +++ b/applications/adjoint_tests/source/algorithm/solver/adjt_mixed_solver_alg_mod.x90 @@ -7,7 +7,7 @@ module adjt_mixed_solver_alg_mod - use constants_mod, only: i_def, r_def, l_def, r_solver + use constants_mod, only: i_def, r_def, l_def, r_solver, EPS use log_mod, only: log_event, & log_scratch_space, & LOG_LEVEL_INFO, & @@ -142,7 +142,7 @@ contains real(kind=r_def), parameter :: overall_tolerance = 1000.0_r_def real(kind=r_def) :: machine_tol, machine_tol_r_solver real(kind=r_def) :: relative_diff, relative_diff_r_solver - real(kind=r_def), parameter :: eps = 1e-30_r_def + ! real(kind=r_def), parameter :: eps = 1e-30_r_def if (subroutine_timers) call timer('adjt_mixed_solver_alg') @@ -284,9 +284,9 @@ contains call log_event( log_scratch_space, LOG_LEVEL_DEBUG ) ! Scaling factors are scaled up a bit to avoid numerical issues - p_sf = 1.0E4_r_def / (p_inner_prod + eps) - uv_sf = 1.0E4_r_def / (uv_inner_prod + eps) - w_sf = 1.0E4_r_def / (w_inner_prod + eps) + p_sf = 1.0E4_r_def / (p_inner_prod + EPS) + uv_sf = 1.0E4_r_def / (uv_inner_prod + EPS) + w_sf = 1.0E4_r_def / (w_inner_prod + EPS) inner1 = 0.0_r_def inner1 = inner1 + p_inner_prod * p_sf diff --git a/applications/adjoint_tests/source/algorithm/solver/adjt_pressure_precon_alg_mod.x90 b/applications/adjoint_tests/source/algorithm/solver/adjt_pressure_precon_alg_mod.x90 index 225e7610b..f9877b0fe 100644 --- a/applications/adjoint_tests/source/algorithm/solver/adjt_pressure_precon_alg_mod.x90 +++ b/applications/adjoint_tests/source/algorithm/solver/adjt_pressure_precon_alg_mod.x90 @@ -7,7 +7,7 @@ module adjt_pressure_precon_alg_mod - use constants_mod, only: i_def, r_def, l_def, r_solver + use constants_mod, only: i_def, r_def, l_def, r_solver, EPS use log_mod, only: log_event, & log_scratch_space, & LOG_LEVEL_INFO, & @@ -114,7 +114,7 @@ contains real(kind=r_def), parameter :: overall_tolerance = 1000.0_r_def real(kind=r_def) :: machine_tol, machine_tol_r_solver real(kind=r_def) :: relative_diff, relative_diff_r_solver - real(kind=r_def), parameter :: eps = 1e-30_r_def + !real(kind=r_def), parameter :: eps = 1e-30_r_def if (subroutine_timers) call timer('adjt_pressure_precon_alg') @@ -235,7 +235,7 @@ contains write(log_scratch_space, *) "p inner product = ", p_inner_prod call log_event( log_scratch_space, LOG_LEVEL_DEBUG ) - p_sf = 1.0_r_def / (p_inner_prod + eps) + p_sf = 1.0_r_def / (p_inner_prod + EPS) inner1 = 0.0_r_def inner1 = inner1 + p_inner_prod * p_sf diff --git a/applications/adjoint_tests/source/algorithm/solver/adjt_scaled_matrix_vector_alg_mod.x90 b/applications/adjoint_tests/source/algorithm/solver/adjt_scaled_matrix_vector_alg_mod.x90 index 81c23dd57..535593208 100644 --- a/applications/adjoint_tests/source/algorithm/solver/adjt_scaled_matrix_vector_alg_mod.x90 +++ b/applications/adjoint_tests/source/algorithm/solver/adjt_scaled_matrix_vector_alg_mod.x90 @@ -9,7 +9,7 @@ !> @brief Module containing adjoint test for scaled_matrix_vector_kernel module adjt_scaled_matrix_vector_alg_mod - use constants_mod, only: i_def, r_def, l_def, r_solver + use constants_mod, only: i_def, r_def, l_def, r_solver, EPS use field_mod, only: field_type use finite_element_config_mod, only: element_order_h, element_order_v use fs_continuity_mod, only: W2, W3, Wtheta @@ -77,7 +77,7 @@ module adjt_scaled_matrix_vector_alg_mod real(kind=r_def) :: machine_tolerance real(kind=r_def) :: relative_diff real(kind=r_def), parameter :: overall_tolerance = 1500.0_r_def - real(kind=r_def), parameter :: eps = 1e-30_r_def + !real(kind=r_def), parameter :: eps = 1e-30_r_def ! Setup @@ -128,7 +128,7 @@ module adjt_scaled_matrix_vector_alg_mod write(log_scratch_space, *) "vector inner product = ", vector_inner_prod call log_event( log_scratch_space, LOG_LEVEL_DEBUG ) - vector_sf = 1.0_r_def / (vector_inner_prod + eps) + vector_sf = 1.0_r_def / (vector_inner_prod + EPS) inner1 = 0.0_r_def inner1 = inner1 + vector_inner_prod * vector_sf diff --git a/applications/adjoint_tests/source/algorithm/solver/adjt_semi_implicit_solver_step_alg_mod.x90 b/applications/adjoint_tests/source/algorithm/solver/adjt_semi_implicit_solver_step_alg_mod.x90 index 6672c772c..6f745a31a 100644 --- a/applications/adjoint_tests/source/algorithm/solver/adjt_semi_implicit_solver_step_alg_mod.x90 +++ b/applications/adjoint_tests/source/algorithm/solver/adjt_semi_implicit_solver_step_alg_mod.x90 @@ -7,7 +7,7 @@ module adjt_semi_implicit_solver_step_alg_mod - use constants_mod, only: i_def, r_def, l_def, r_solver + use constants_mod, only: i_def, r_def, l_def, r_solver, EPS use log_mod, only: log_event, & log_scratch_space, & LOG_LEVEL_INFO, & @@ -306,7 +306,7 @@ contains real(kind=r_def), parameter :: overall_tolerance = 1000.0_r_def real(kind=r_def) :: machine_tol, machine_tol_r_solver real(kind=r_def) :: relative_diff, relative_diff_r_solver - real(kind=r_def), parameter :: eps = 1e-30_r_def + !real(kind=r_def), parameter :: eps = 1e-30_r_def integer(kind=i_def) :: i @@ -362,17 +362,17 @@ contains end do ! Scaling factors are scaled up a bit to avoid numerical issues - state_sf(igh_u) = 1.0E4_r_def / (state_inner_prod(igh_u) + eps) - state_sf(igh_t) = 1.0E4_r_def / (state_inner_prod(igh_t) + eps) - state_sf(igh_d) = 1.0E4_r_def / (state_inner_prod(igh_d) + eps) - state_sf(igh_p) = 1.0E4_r_def / (state_inner_prod(igh_p) + eps) - rhs_sf(igh_u) = 1.0E4_r_def / (rhs_inner_prod(igh_u) + eps) - rhs_sf(igh_t) = 1.0E4_r_def / (rhs_inner_prod(igh_t) + eps) - rhs_sf(igh_d) = 1.0E4_r_def / (rhs_inner_prod(igh_d) + eps) - rhs_sf(igh_p) = 1.0E4_r_def / (rhs_inner_prod(igh_p) + eps) - moist_dyn_gas_law_sf = 1.0E4_r_def / (moist_dyn_gas_law_inner_prod + eps) + state_sf(igh_u) = 1.0E4_r_def / (state_inner_prod(igh_u) + EPS) + state_sf(igh_t) = 1.0E4_r_def / (state_inner_prod(igh_t) + EPS) + state_sf(igh_d) = 1.0E4_r_def / (state_inner_prod(igh_d) + EPS) + state_sf(igh_p) = 1.0E4_r_def / (state_inner_prod(igh_p) + EPS) + rhs_sf(igh_u) = 1.0E4_r_def / (rhs_inner_prod(igh_u) + EPS) + rhs_sf(igh_t) = 1.0E4_r_def / (rhs_inner_prod(igh_t) + EPS) + rhs_sf(igh_d) = 1.0E4_r_def / (rhs_inner_prod(igh_d) + EPS) + rhs_sf(igh_p) = 1.0E4_r_def / (rhs_inner_prod(igh_p) + EPS) + moist_dyn_gas_law_sf = 1.0E4_r_def / (moist_dyn_gas_law_inner_prod + EPS) do i = 1, nummr - mr_sf(i) = 1.0E4_r_def / (mr_inner_prod(i) + eps) + mr_sf(i) = 1.0E4_r_def / (mr_inner_prod(i) + EPS) end do inner1 = 0.0_r_def diff --git a/applications/adjoint_tests/source/driver/adjoint_test_parameters_mod.F90 b/applications/adjoint_tests/source/driver/adjoint_test_parameters_mod.F90 index f4f06ea0c..9db0ddb99 100644 --- a/applications/adjoint_tests/source/driver/adjoint_test_parameters_mod.F90 +++ b/applications/adjoint_tests/source/driver/adjoint_test_parameters_mod.F90 @@ -28,7 +28,7 @@ module adjoint_test_parameters_mod ! if the ls is not realistic. ls can still be ! randomly assigned, but in a sensible range ! to prevent these issues. - real(r_def), dimension(2), parameter :: ls_u_range = (/ 0.1_r_def, 10.0_r_def /) + real(r_def), dimension(2), parameter :: ls_u_range = (/ 1.e2_r_def, 1.e3_r_def /) real(r_def), dimension(2), parameter :: ls_theta_range = (/ 280.0_r_def, 340.0_r_def /) real(r_def), dimension(2), parameter :: ls_rho_range = (/ 0.1_r_def, 1.0_r_def /) real(r_def), dimension(2), parameter :: ls_exner_range = (/ 0.1_r_def, 1.0_r_def /) From c9d26e0d818966fd877b8f89a3a5e790f6ab4666 Mon Sep 17 00:00:00 2001 From: Christine Johnson <74597224+cjohnson-pi@users.noreply.github.com> Date: Tue, 20 Jan 2026 10:32:24 +0000 Subject: [PATCH 7/7] tidy --- .../source/algorithm/solver/adjt_mixed_operator_alg_mod.x90 | 1 - .../algorithm/solver/adjt_mixed_schur_preconditioner_alg_mod.x90 | 1 - .../source/algorithm/solver/adjt_mixed_solver_alg_mod.x90 | 1 - .../source/algorithm/solver/adjt_pressure_precon_alg_mod.x90 | 1 - .../algorithm/solver/adjt_scaled_matrix_vector_alg_mod.x90 | 1 - .../algorithm/solver/adjt_semi_implicit_solver_step_alg_mod.x90 | 1 - 6 files changed, 6 deletions(-) diff --git a/applications/adjoint_tests/source/algorithm/solver/adjt_mixed_operator_alg_mod.x90 b/applications/adjoint_tests/source/algorithm/solver/adjt_mixed_operator_alg_mod.x90 index dac95c19e..611b8f322 100644 --- a/applications/adjoint_tests/source/algorithm/solver/adjt_mixed_operator_alg_mod.x90 +++ b/applications/adjoint_tests/source/algorithm/solver/adjt_mixed_operator_alg_mod.x90 @@ -83,7 +83,6 @@ contains real(kind=r_def) :: machine_tol, machine_tol_r_solver real(kind=r_def) :: relative_diff, relative_diff_r_solver real(kind=r_def), parameter :: overall_tolerance = 1000.0_r_def - !real(kind=r_def), parameter :: eps = 1e-30_r_def if (subroutine_timers) call timer('adjt_mixed_operator_alg') diff --git a/applications/adjoint_tests/source/algorithm/solver/adjt_mixed_schur_preconditioner_alg_mod.x90 b/applications/adjoint_tests/source/algorithm/solver/adjt_mixed_schur_preconditioner_alg_mod.x90 index 17dd75100..76d382211 100644 --- a/applications/adjoint_tests/source/algorithm/solver/adjt_mixed_schur_preconditioner_alg_mod.x90 +++ b/applications/adjoint_tests/source/algorithm/solver/adjt_mixed_schur_preconditioner_alg_mod.x90 @@ -125,7 +125,6 @@ contains real(kind=r_def), parameter :: overall_tolerance = 1000.0_r_def real(kind=r_def) :: machine_tol, machine_tol_r_solver real(kind=r_def) :: relative_diff, relative_diff_r_solver - !real(kind=r_def), parameter :: eps = 1e-30_r_def if (subroutine_timers) call timer('adjt_mixed_schur_preconditioner_alg') diff --git a/applications/adjoint_tests/source/algorithm/solver/adjt_mixed_solver_alg_mod.x90 b/applications/adjoint_tests/source/algorithm/solver/adjt_mixed_solver_alg_mod.x90 index eb99dc072..7efb9b6c2 100644 --- a/applications/adjoint_tests/source/algorithm/solver/adjt_mixed_solver_alg_mod.x90 +++ b/applications/adjoint_tests/source/algorithm/solver/adjt_mixed_solver_alg_mod.x90 @@ -142,7 +142,6 @@ contains real(kind=r_def), parameter :: overall_tolerance = 1000.0_r_def real(kind=r_def) :: machine_tol, machine_tol_r_solver real(kind=r_def) :: relative_diff, relative_diff_r_solver - ! real(kind=r_def), parameter :: eps = 1e-30_r_def if (subroutine_timers) call timer('adjt_mixed_solver_alg') diff --git a/applications/adjoint_tests/source/algorithm/solver/adjt_pressure_precon_alg_mod.x90 b/applications/adjoint_tests/source/algorithm/solver/adjt_pressure_precon_alg_mod.x90 index f9877b0fe..ba2ac5c4e 100644 --- a/applications/adjoint_tests/source/algorithm/solver/adjt_pressure_precon_alg_mod.x90 +++ b/applications/adjoint_tests/source/algorithm/solver/adjt_pressure_precon_alg_mod.x90 @@ -114,7 +114,6 @@ contains real(kind=r_def), parameter :: overall_tolerance = 1000.0_r_def real(kind=r_def) :: machine_tol, machine_tol_r_solver real(kind=r_def) :: relative_diff, relative_diff_r_solver - !real(kind=r_def), parameter :: eps = 1e-30_r_def if (subroutine_timers) call timer('adjt_pressure_precon_alg') diff --git a/applications/adjoint_tests/source/algorithm/solver/adjt_scaled_matrix_vector_alg_mod.x90 b/applications/adjoint_tests/source/algorithm/solver/adjt_scaled_matrix_vector_alg_mod.x90 index 535593208..33a2a9f96 100644 --- a/applications/adjoint_tests/source/algorithm/solver/adjt_scaled_matrix_vector_alg_mod.x90 +++ b/applications/adjoint_tests/source/algorithm/solver/adjt_scaled_matrix_vector_alg_mod.x90 @@ -77,7 +77,6 @@ module adjt_scaled_matrix_vector_alg_mod real(kind=r_def) :: machine_tolerance real(kind=r_def) :: relative_diff real(kind=r_def), parameter :: overall_tolerance = 1500.0_r_def - !real(kind=r_def), parameter :: eps = 1e-30_r_def ! Setup diff --git a/applications/adjoint_tests/source/algorithm/solver/adjt_semi_implicit_solver_step_alg_mod.x90 b/applications/adjoint_tests/source/algorithm/solver/adjt_semi_implicit_solver_step_alg_mod.x90 index 6f745a31a..ef6fb8710 100644 --- a/applications/adjoint_tests/source/algorithm/solver/adjt_semi_implicit_solver_step_alg_mod.x90 +++ b/applications/adjoint_tests/source/algorithm/solver/adjt_semi_implicit_solver_step_alg_mod.x90 @@ -306,7 +306,6 @@ contains real(kind=r_def), parameter :: overall_tolerance = 1000.0_r_def real(kind=r_def) :: machine_tol, machine_tol_r_solver real(kind=r_def) :: relative_diff, relative_diff_r_solver - !real(kind=r_def), parameter :: eps = 1e-30_r_def integer(kind=i_def) :: i