diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md
index 5c277da0b..c08db54f2 100644
--- a/CONTRIBUTORS.md
+++ b/CONTRIBUTORS.md
@@ -13,3 +13,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 |
+| cjohnson-pi | Christine Johnson | Met Office | 2026-01-19 |
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 36906bb77..76f74e0f1 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,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
integer(kind=tik) :: id
if ( LPROF ) call start_timing( id, 'adjt_mixed_operator_alg' )
@@ -167,9 +166,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 3c214bdd1..7e506f24d 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,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=tik) :: id
if ( LPROF ) call start_timing( id, 'adjt_mixed_schur_preconditioner_alg' )
@@ -254,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 df216b670..9c38dc65e 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,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(tik) :: id
if ( LPROF ) call start_timing( id, 'adjt_mixed_solver_alg' )
@@ -285,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 308b1f180..d2d385428 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,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(tik) :: id
if ( LPROF ) call start_timing( id, 'adjt_pressure_precon_alg' )
@@ -236,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..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
@@ -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,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
@@ -128,7 +127,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 efb6ffc53..13c990b7c 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, &
@@ -307,7 +307,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
@@ -363,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 09f74b4c9..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,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 = (/ 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.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 f51713b2a..0e910ff29 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 20c70408b..fb61417fd 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/vn3.0
[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 d9d6303af..0e910ff29 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 6a32d88bf..dbc9239f1 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({
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 23b91946c..fb054999f 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,8 +27,8 @@
"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_w3 120:0:5",
"tech-tests_wallclock": 30,
- "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",
}) %}
{% elif task_ns.conf_name == "nwp_gal9_random-C12_MG" %}
@@ -39,7 +39,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" %}
@@ -50,6 +50,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" %}
@@ -81,7 +82,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 b584e591e..062689d42 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,12 +32,21 @@
{# EX1A Groups #}
{% do site_groups.update({
"linear_model_ex1a_developer": [
- "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_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",
+ "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_ex1a_canned",
],
"linear_model_ex1a": [
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
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 aff34838f..f1bfcab13 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, &