From 5f2397dff990ef4b0d5dc1082b9ce52c113da52a Mon Sep 17 00:00:00 2001 From: ss421 Date: Mon, 27 Apr 2026 11:00:31 +0100 Subject: [PATCH 01/25] Add new files - testing via cylc --- .../jedi_lfric_tests/build/compile_options.mk | 46 +++++++++++++++++++ .../build/fortran/gfortran.mk | 40 ++++++++++++++++ .../source/driver/nl_physics_config_mod.F90 | 17 +++++++ 3 files changed, 103 insertions(+) create mode 100644 applications/jedi_lfric_tests/build/compile_options.mk create mode 100644 applications/jedi_lfric_tests/build/fortran/gfortran.mk create mode 100644 science/gungho/source/driver/nl_physics_config_mod.F90 diff --git a/applications/jedi_lfric_tests/build/compile_options.mk b/applications/jedi_lfric_tests/build/compile_options.mk new file mode 100644 index 000000000..ec2e95b9e --- /dev/null +++ b/applications/jedi_lfric_tests/build/compile_options.mk @@ -0,0 +1,46 @@ +############################################################################## +# (c) Crown copyright 2017 Met Office. All rights reserved. +# The file LICENCE, distributed with this code, contains details of the terms +# under which the code may be used. +############################################################################## + +# NOTE: Import of compile options from LFRic infrastructure is temporarily +# suspended here as a workaround for #2340 in which application of the +# -qoverride-limits option was preventing compilation of a UKCA module. +# include $(LFRIC_BUILD)/compile_options.mk + +$(info UM physics specific compile options) + +include $(PROJECT_DIR)/build/fortran/$(FORTRAN_COMPILER).mk + +casim/%.o: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS) +ukca/%.o: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS) +jules/%.o: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS) +socrates/%.o: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS) +legacy/%.o: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS) +AC_assimilation/%.o: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS) +aerosols/%.o: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS) +atmosphere_service/%.o: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS) +boundary_layer/%.o: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS) +carbon/%.o: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS) +convection/%.o: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS) +diffusion_and_filtering/%.o: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS) +dynamics/%.o: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS) +dynamics_advection/%.o: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS) +electric/%.o: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS) +free_tracers/%.o: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS) +gravity_wave_drag/%.o: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS) +idealised/%.o: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS) +large_scale_cloud/%.o: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS) +large_scale_precipitation/%.o: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS) +physics_diagnostics/%.o: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS) +PWS_diagnostics/%.o: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS) +radiation_control/%.o: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS) +stochastic_physics/%.o: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS) +tracer_advection/%.o: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS) +%/limited_area_constants_mod.o: private FFLAGS_EXTRA = $(FFLAGS_INTEL_FIX_ARG) + +$(info Disable warnings-turned-error caused by undeclared external functions - see ifort.mk) +%mpi_mod.o: private FFLAGS_EXTRA = $(FFLAGS_INTEL_EXTERNALS) +socrates/src/radiance_core/%.o: private FFLAGS_EXTRA = $(FFLAGS_INTEL_EXTERNALS) +socrates/src/interface_core/%.o: private FFLAGS_EXTRA = $(FFLAGS_INTEL_EXTERNALS) diff --git a/applications/jedi_lfric_tests/build/fortran/gfortran.mk b/applications/jedi_lfric_tests/build/fortran/gfortran.mk new file mode 100644 index 000000000..79f02dc5a --- /dev/null +++ b/applications/jedi_lfric_tests/build/fortran/gfortran.mk @@ -0,0 +1,40 @@ +############################################################################## +# (c) Crown copyright 2017 Met Office. All rights reserved. +# The file LICENCE, distributed with this code, contains details of the terms +# under which the code may be used. +############################################################################## +# Various things specific to the GNU Fortran compiler. +############################################################################## + +$(info Project specials for GNU compiler) + +export FFLAGS_UM_PHYSICS = -fdefault-real-8 -fdefault-double-8 +# Most lfric_atm dependencies contain code with implicit lossy conversions and +# unused variables. +# We reset the FFLAGS_WARNINGS variable here in order to prevent +# -Werror induced build failures. +FFLAGS_WARNINGS = -Wall -Werror=character-truncation -Werror=unused-value \ + -Werror=tabs +# But, we can apply some more lfric infrastructure checking to socrates +FFLAGS_SOCRATES_WARNINGS = -Werror=unused-variable + +science/src/socrates/%.o science/src/socrates/%.mod: private FFLAGS_EXTRA = $(FFLAGS_SOCRATES_WARNINGS) + +# We remove bounds checking (applied by -fcheck=all) and underflow checking. The +# latter is due to regular permitting of exponents going to zero for small numbers +# to imply total extinction of radiation passing through a medium +FFLAGS_RUNTIME = -fcheck=all,no-bounds -ffpe-trap=invalid,zero,overflow + +# The lfric_atm app defines an extra set of debug flags for +# fast-debug which are the same as the full-debug settings +# except for some platforms +ifdef CRAY_ENVIRONMENT +# On the EXZ these options are switched off for fast-debug +# due to an unexpected FPE in the NetCDF library +FFLAGS_FASTD_INIT = +FFLAGS_FASTD_RUNTIME = +else +# Otherwise, use the same as the default full-debug settings +FFLAGS_FASTD_INIT = $(FFLAGS_INIT) +FFLAGS_FASTD_RUNTIME = $(FFLAGS_RUNTIME) +endif diff --git a/science/gungho/source/driver/nl_physics_config_mod.F90 b/science/gungho/source/driver/nl_physics_config_mod.F90 new file mode 100644 index 000000000..c9160e010 --- /dev/null +++ b/science/gungho/source/driver/nl_physics_config_mod.F90 @@ -0,0 +1,17 @@ +!----------------------------------------------------------------------------- +! (c) Crown copyright 2024 Met Office. All rights reserved. +! The file LICENCE, distributed with this code, contains details of the terms +! under which the code may be used. +!----------------------------------------------------------------------------- +!> @brief Global flag controlling whether NL physics is active. +!> @details Provides a single module-level logical that all gungho driver +!> modules use to conditionally execute UM physics code paths. +!> Set to .false. by default; set to .true. to activate full NL +!> physics (e.g. for an lfric_atm configuration). +module nl_physics_config_mod + + implicit none + + logical, public, save :: use_nl_physics = .false. + +end module nl_physics_config_mod From 39e57144cdeb9cc396f553f7ede6f0bafbc328f4 Mon Sep 17 00:00:00 2001 From: ss421 Date: Mon, 27 Apr 2026 11:18:33 +0100 Subject: [PATCH 02/25] Add EMPTY file for testing --- .../build/psyclone_transmute_file_list.mk | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 applications/jedi_lfric_tests/build/psyclone_transmute_file_list.mk diff --git a/applications/jedi_lfric_tests/build/psyclone_transmute_file_list.mk b/applications/jedi_lfric_tests/build/psyclone_transmute_file_list.mk new file mode 100644 index 000000000..3e99bf874 --- /dev/null +++ b/applications/jedi_lfric_tests/build/psyclone_transmute_file_list.mk @@ -0,0 +1,42 @@ +############################################################################## +# (c) Crown copyright 2026 Met Office. All rights reserved. +# The file LICENCE, distributed with this code, contains details of the terms +# under which the code may be used. +############################################################################## + +# File lists provided will use the transmute PSyclone method. +# https://code.metoffice.gov.uk/trac/lfric_apps/ticket/724 + + +##### TRANSMUTE_INCLUDE_METHOD specify_include ##### +# For CPU OMP, we want to choose which files get run through PSyclone, +# and preserve existing hand coded optimisations. + +# Choose which files to pre-process and PSyclone from physics_schemes / other +# source (e.g. UKCA) + +export PSYCLONE_PHYSICS_FILES = + +##### TRANSMUTE_INCLUDE_METHOD specify_include ##### + +# List to use PSyclone explicitly without any opt script +# This will remove hand written (OMP) directives in the source +# Used by both methods, specify_include and specify_exclude +export PSYCLONE_PASS_NO_SCRIPT = + +##### TRANSMUTE_INCLUDE_METHOD specify_exclude ##### +# For GPU, we may want to use more generic local.py transformation scripts and +# PSyclone by directory. +# Advise which directories to pass to PSyclone. +# All files in these directories will be run through PSyclone using the +# transmute method. +# Also provide an optional exception list. +# These files will be filtered, and will NOT be run through PSyclone. + +# Directories to PSyclone +export PSYCLONE_DIRECTORIES = + +# A general file exception list +export PSYCLONE_PHYSICS_EXCEPTION = + +##### TRANSMUTE_INCLUDE_METHOD specify_exclude ##### From 7c1de4b2e118a320ea62ce8ffab1751c3e637137 Mon Sep 17 00:00:00 2001 From: ss421 Date: Mon, 27 Apr 2026 12:46:40 +0100 Subject: [PATCH 03/25] Updates to include UM PHYSICS and make curent test run, forecast still failing --- applications/jedi_lfric_tests/Makefile | 52 +- .../jedi_lfric_tests/build/project.mk | 13 +- .../jedi_forecast/HEAD/rose-meta.conf | 159 ++++- .../algorithm/random_seed_gen_alg_mod.f90 | 3 +- .../source/legacy/misc/chk_opts_mod.F90 | 9 +- .../source/legacy/misc/vectlib_mod.F90 | 66 +- .../check_global_variables/file/dirtylist.txt | 2 +- .../app/jedi_forecast/opt/rose-app-C12.conf | 13 + rose-stem/app/jedi_forecast/rose-app.conf | 573 +++++++++--------- rose-stem/flow.cylc | 5 +- .../site/meto/common/default_directives.cylc | 6 + .../runtime/generate_runtime_application.cylc | 2 +- .../runtime/generate_runtime_build.cylc | 2 +- .../runtime/generate_runtime_check.cylc | 6 +- .../runtime/generate_runtime_control.cylc | 2 +- .../runtime/generate_runtime_gen_weights.cylc | 4 +- .../generate_runtime_lfric_coupled.cylc | 4 +- .../runtime/generate_runtime_mesh.cylc | 2 +- .../runtime/generate_runtime_other.cylc | 2 +- .../runtime/generate_runtime_plot.cylc | 4 +- .../runtime/generate_runtime_scripts.cylc | 22 +- .../init_physics_prognostics_alg_mod.X90 | 4 +- .../physics/external_forcing_alg_mod.X90 | 12 + .../physics/fast_physics_alg_mod.X90 | 6 +- .../physics/slow_physics_alg_mod.X90 | 6 +- .../physics_constants_mod.X90 | 5 + .../semi_implicit_timestep_alg_mod.X90 | 5 + .../diagnostics/diagnostics_calc_mod.F90 | 10 + .../source/driver/create_iau_fields_mod.F90 | 14 + .../driver/create_physics_prognostics_mod.F90 | 5 +- .../gungho/source/driver/field_maker_mod.F90 | 6 + .../gungho/source/driver/field_mapper_mod.F90 | 5 + .../driver/gungho_diagnostics_driver_mod.F90 | 11 + .../source/driver/gungho_driver_mod.F90 | 16 + .../source/driver/gungho_init_fields_mod.X90 | 15 + .../gungho/source/driver/gungho_model_mod.F90 | 7 + .../source/driver/gungho_setup_io_mod.F90 | 7 + .../iau_multifile_io/iau_multifile_io_mod.F90 | 7 + .../source/driver/iau_time_control_mod.F90 | 10 + .../multidata_field_dimensions_mod.F90 | 36 +- .../source/physics/time_dimensions_mod.F90 | 7 + .../source/aerosols/grow_particles_mod.F90 | 6 +- 42 files changed, 773 insertions(+), 378 deletions(-) diff --git a/applications/jedi_lfric_tests/Makefile b/applications/jedi_lfric_tests/Makefile index c76919a8f..d75cb9b13 100644 --- a/applications/jedi_lfric_tests/Makefile +++ b/applications/jedi_lfric_tests/Makefile @@ -26,6 +26,10 @@ export INTERNAL_DEPENDENCIES = $(CORE_ROOT_DIR)/infrastructure \ $(CORE_ROOT_DIR)/components/inventory \ $(APPS_ROOT_DIR)/interfaces/jedi_lfric_interface \ $(CORE_ROOT_DIR)/components/lfric-xios \ + $(APPS_ROOT_DIR)/science/shared \ + $(APPS_ROOT_DIR)/interfaces/socrates_interface \ + $(APPS_ROOT_DIR)/interfaces/jules_interface \ + $(APPS_ROOT_DIR)/interfaces/physics_schemes_interface \ $(APPS_ROOT_DIR)/science/gungho \ $(APPS_ROOT_DIR)/science/linear \ $(APPS_ROOT_DIR)/science/adjoint @@ -53,6 +57,11 @@ include $(CORE_ROOT_DIR)/infrastructure/build/lfric.mk include $(INTERNAL_DEPENDENCIES:=/build/import.mk) -include $(PROJECT_DIR)/build/project.mk +# Include transmute list only if not using minimum or no transformations +ifeq ($(filter "$(PSYCLONE_TRANSFORMATION)", "none" "minimum"),) + include build/psyclone_transmute_file_list.mk +endif + ############################################################################## # Documentation # @@ -103,7 +112,7 @@ build: export WORKING_DIR := $(WORKING_DIR)/jedi_lfric_tests build: export LDFLAGS_GROUPS = OPENMP ifeq "$(PROFILE)" "full-debug" -build: export FFLAG_GROUPS = OPENMP DEBUG WARNINGS INIT RUNTIME NO_OPTIMISATION FORTRAN_STANDARD +build: export FFLAG_GROUPS = OPENMP DEBUG WARNINGS INIT RUNTIME NO_OPTIMISATION else ifeq "$(PROFILE)" "fast-debug" build: export FFLAG_GROUPS = OPENMP DEBUG WARNINGS SAFE_OPTIMISATION FORTRAN_STANDARD else ifeq "$(PROFILE)" "production" @@ -118,6 +127,10 @@ build: ALWAYS $(Q)for SUBPROJECT in $(INTERNAL_DEPENDENCIES) ; do \ $(MAKE) $(QUIET_ARG) -f $$SUBPROJECT/build/import.mk ; done $(call MESSAGE,========================================) + $(call MESSAGE,Extracting UM physics) + $(call MESSAGE,========================================) + $Q$(MAKE) $(QUIET_ARG) -f $(APPS_ROOT_DIR)/build/extract/extract_physics.mk + $(call MESSAGE,========================================) $(call MESSAGE,Extracting $(PROJECT_NAME)) $(call MESSAGE,========================================) $Q$(MAKE) $(QUIET_ARG) -f $(LFRIC_BUILD)/extract.mk \ @@ -132,11 +145,48 @@ build: ALWAYS WORKING_DIR=$(WORKING_DIR) \ META_FILE_DIR=$(META_FILE_DIR) $(call MESSAGE,========================================) + $(call MESSAGE,PSycloning interface components) + $(call MESSAGE,========================================) + $Q$(MAKE) $(QUIET_ARG) -f $(LFRIC_BUILD)/psyclone/psyclone_psykal.mk \ + SOURCE_DIR=$(APPS_ROOT_DIR)/interfaces/jules_interface/source \ + OPTIMISATION_PATH=$(OPTIMISATION_PATH) + $Q$(MAKE) $(QUIET_ARG) -f $(LFRIC_BUILD)/psyclone/psyclone_psykal.mk \ + SOURCE_DIR=$(APPS_ROOT_DIR)/interfaces/socrates_interface/source \ + OPTIMISATION_PATH=$(OPTIMISATION_PATH) + $Q$(MAKE) $(QUIET_ARG) -f $(LFRIC_BUILD)/psyclone/psyclone_psykal.mk \ + SOURCE_DIR=$(APPS_ROOT_DIR)/interfaces/physics_schemes_interface/source \ + OPTIMISATION_PATH=$(OPTIMISATION_PATH) + $(call MESSAGE,========================================) + $(call MESSAGE,PSycloning Gungho dynamical core) + $(call MESSAGE,========================================) + $Q$(MAKE) $(QUIET_ARG) -f $(LFRIC_BUILD)/psyclone/psyclone_psykal.mk \ + SOURCE_DIR=$(APPS_ROOT_DIR)/science/gungho/source \ + OPTIMISATION_PATH=$(OPTIMISATION_PATH) + $(call MESSAGE,========================================) $(call MESSAGE,PSycloning $(PROJECT_NAME)) $(call MESSAGE,========================================) $Q$(MAKE) $(QUIET_ARG) -f $(LFRIC_BUILD)/psyclone/psyclone_psykal.mk \ SOURCE_DIR=source \ OPTIMISATION_PATH=$(OPTIMISATION_PATH) + $(call MESSAGE,========================================) + $(call MESSAGE,Preprocess and PSyclone Transmute) + $(call MESSAGE,========================================) + $Q$(MAKE) $(QUIET_ARG) -f $(APPS_ROOT_DIR)/interfaces/physics_schemes_interface/build/pre_process_phys.mk \ + SOURCE_DIR=$(WORKING_DIR) \ + PSYCLONE_PHYSICS_FILES="$(PSYCLONE_PHYSICS_FILES)" \ + PSYCLONE_DIRECTORIES="$(PSYCLONE_DIRECTORIES)" \ + PSYCLONE_PHYSICS_EXCEPTION="$(PSYCLONE_PHYSICS_EXCEPTION)" + $Q$(MAKE) $(QUIET_ARG) -f $(APPS_ROOT_DIR)/interfaces/physics_schemes_interface/build/psyclone_transmute_pass.mk \ + SOURCE_DIR=$(WORKING_DIR) \ + OPTIMISATION_PATH_PSY=$(APPS_ROOT_DIR)/applications/$(PROJECT)/$(OPTIMISATION_PATH) \ + PSYCLONE_PASS_NO_SCRIPT="$(PSYCLONE_PASS_NO_SCRIPT)" + $Q$(MAKE) $(QUIET_ARG) -f $(APPS_ROOT_DIR)/interfaces/physics_schemes_interface/build/psyclone_transmute.mk \ + SOURCE_DIR=$(WORKING_DIR) \ + OPTIMISATION_PATH_PSY=$(APPS_ROOT_DIR)/applications/$(PROJECT)/$(OPTIMISATION_PATH) \ + PSYCLONE_PHYSICS_FILES="$(PSYCLONE_PHYSICS_FILES)" \ + PSYCLONE_PASS_NO_SCRIPT="$(PSYCLONE_PASS_NO_SCRIPT)" \ + PSYCLONE_DIRECTORIES="$(PSYCLONE_DIRECTORIES)" \ + PSYCLONE_PHYSICS_EXCEPTION="$(PSYCLONE_PHYSICS_EXCEPTION)" $(call MESSAGE,=========================================================) $(call MESSAGE,Analysing $(PROJECT) build dependencies) $(call MESSAGE,=========================================================) diff --git a/applications/jedi_lfric_tests/build/project.mk b/applications/jedi_lfric_tests/build/project.mk index d99171780..e4a05cfed 100644 --- a/applications/jedi_lfric_tests/build/project.mk +++ b/applications/jedi_lfric_tests/build/project.mk @@ -1,10 +1,15 @@ ############################################################################## -# (c) Crown copyright 2022 Met Office. All rights reserved. +# (c) Crown copyright 2017 Met Office. All rights reserved. # The file LICENCE, distributed with this code, contains details of the terms # under which the code may be used. ############################################################################## -# This file is for any project specific build settings to be applied -# via the Makefile. +$(info UM physics project specials) -$(info JEDI-LFRic test miniapp) +export PRE_PROCESS_INCLUDE_DIRS = \ + $(WORKING_DIR)/atmosphere_service/include \ + $(WORKING_DIR)/boundary_layer/include \ + $(WORKING_DIR)/large_scale_precipitation/include \ + $(WORKING_DIR)/free_tracers/include + +export PRE_PROCESS_MACROS += UM_PHYSICS LFRIC USSPPREC_32B LSPREC_32B UM_JULES diff --git a/applications/jedi_lfric_tests/rose-meta/jedi_forecast/HEAD/rose-meta.conf b/applications/jedi_lfric_tests/rose-meta/jedi_forecast/HEAD/rose-meta.conf index 06cec7ef7..3ab9c29d7 100644 --- a/applications/jedi_lfric_tests/rose-meta/jedi_forecast/HEAD/rose-meta.conf +++ b/applications/jedi_lfric_tests/rose-meta/jedi_forecast/HEAD/rose-meta.conf @@ -1,4 +1,161 @@ -import=jedi_common/HEAD +import=lfric-gungho/HEAD + +#============================================================================== +# Geometry for the JEDI-LFRIC Emulator +#============================================================================== +[namelist:jedi_geometry] +compulsory=true +description=JEDI-LFRIC emulator geometry configuration +help=Configuration options for JEDI-LFRIC emulator geometry object. +ns=namelist/JEDI-LFRIC-setup/jedi_geometry +title=jedi_geometry + +[namelist:jedi_geometry=io_calender_start] +compulsory=true +description=The IO clock start date +help=Format: yyyy-mm-ddThh:mm:ss +!kind=default +sort-key= +type=character + +[namelist:jedi_geometry=io_path_state_read] +compulsory=true +description=Path to the file to be read +help=This is the lfric_diag.nc file which stores a test trajectory (set of states) +!kind=default +sort-key= +type=character + +[namelist:jedi_geometry=io_path_state_write] +compulsory=true +description=Path to the file that will be written +help=This is the file that will be written to +!kind=default +sort-key= +type=character + +[namelist:jedi_geometry=io_time_step] +compulsory=true +description=The time step duration +help=Format: PdDThHmMsS where d=day, h=hours, m=minutes and s=seconds +!kind=default +sort-key= +type=character + +#============================================================================== +# Setup for the JEDI-LFRIC Emulator application +#============================================================================== +[namelist:jedi_lfric_settings] +compulsory=true +description=JEDI-LFRIC emulator application configuration +help=Configuration option for JEDI-LFRIC emulator. +ns=namelist/JEDI-LFRIC-setup +title=JEDI-LFRIC Setings + +[namelist:jedi_lfric_settings=adjoint_test_tolerance] +compulsory=false +description=Tolerance for inner product adjoint tests in jedi_tlm_tests +help=Set as appropriate based on configuration +!kind=default +sort-key= +type=real + +[namelist:jedi_lfric_settings=forecast_length] +compulsory=true +description=The forecast duration +help=Format: PdDThHmMsS where d=day, h=hours, m=minutes and s=seconds +!kind=default +sort-key= +type=character + +#============================================================================== +# jedi_lfric_tests for the JEDI-LFRIC Emulator +#============================================================================== +[namelist:jedi_lfric_tests] +compulsory=true +description= +ns=namelist/jedi_lfric_tests +title=jedi_lfric_tests + +[namelist:jedi_lfric_tests=test_field] +compulsory=true +description=Which field to apply the algorithm to +help=One of the jedi_lfric_tests fields should contain distinct data for test purposes +!kind=default +sort-key= +type=character + +#============================================================================== +# Pseudo model for the JEDI-LFRIC Emulator +#============================================================================== +[namelist:jedi_pseudo_model] +compulsory=true +description=JEDI-LFRIC emulator pseudo model configuration +help=Configuration options for JEDI-LFRIC emulator pseudo model object. +ns=namelist/JEDI-LFRIC-setup/jedi_pseudo_model +title=jedi_pseudo_model + +[namelist:jedi_pseudo_model=initial_time] +compulsory=true +description=The start date for the the model run +help=Add the start date for the the model run + =Format: yyyy-mm-ddThh:mm:ss +!kind=default +sort-key= +type=character + +[namelist:jedi_pseudo_model=number_of_steps] +compulsory=true +description=The number of time steps to run +help=Add the number of time steps +!kind=default +sort-key= +type=integer + +[namelist:jedi_pseudo_model=time_step] +compulsory=true +description=The model time step duration +help=Format PdDThHmMsS where d=day, h=hours, m=minutes and s=seconds +!kind=default +sort-key= +type=character + +#============================================================================== +# State for the JEDI-LFRIC Emulator +#============================================================================== +[namelist:jedi_state] +compulsory=true +description=JEDI-LFRIC emulator state configuration +help=Configuration options for JEDI-LFRIC emulator state object. +ns=namelist/JEDI-LFRIC-setup/jedi_state +title=jedi_state + +[namelist:jedi_state=state_time] +compulsory=true +description=The validity date of the state +help=Format: yyyy-mm-dd hh:mm:ss +!kind=default +sort-key= +type=character + +[namelist:jedi_state=use_pseudo_model] +compulsory=true +description=A logical that defines how the state should be setup +help=A logical that when true sets the state up to be used + =with the pseudo model. This means NL model modeldb + =is not instantiated +!kind=default +sort-key= +type=logical + +[namelist:jedi_state=variables] +compulsory=true +description=List of variables to be instantiated +help=Add a comma separted list of variables to instantiate + =format: 'theta', 'rho', ... +length=: +sort-key= +type=character #============================================================================== # Model for the JEDI-LFRIC Emulator diff --git a/interfaces/physics_schemes_interface/source/algorithm/random_seed_gen_alg_mod.f90 b/interfaces/physics_schemes_interface/source/algorithm/random_seed_gen_alg_mod.f90 index 8e2693c0a..695735fb1 100644 --- a/interfaces/physics_schemes_interface/source/algorithm/random_seed_gen_alg_mod.f90 +++ b/interfaces/physics_schemes_interface/source/algorithm/random_seed_gen_alg_mod.f90 @@ -38,8 +38,7 @@ subroutine random_seed_gen_alg(iranseed, ensemble_number) integer(i_def), intent(in) :: ensemble_number type(xios_date) :: datetime - integer(i_def) :: i - integer(i_def) :: year, month, day, utc_shift, hour, minute, & + integer(i_def) :: year, month, day, hour, minute, & milli_ensemble_number integer(i_def) :: random_seed_size, iarg, max_iarg integer(i_def), allocatable :: prevseed(:) diff --git a/interfaces/physics_schemes_interface/source/legacy/misc/chk_opts_mod.F90 b/interfaces/physics_schemes_interface/source/legacy/misc/chk_opts_mod.F90 index 72cf697ad..a98255a03 100644 --- a/interfaces/physics_schemes_interface/source/legacy/misc/chk_opts_mod.F90 +++ b/interfaces/physics_schemes_interface/source/legacy/misc/chk_opts_mod.F90 @@ -17,6 +17,7 @@ module chk_opts_mod use errormessagelength_mod, only: errormessagelength use umprintmgr, only: umprint, ummessage, newline use ereport_mod, only: ereport +use iso_fortran_env, only: real64 implicit none @@ -53,9 +54,9 @@ module chk_opts_mod ! the code owner specified checks, these checks should be consistent with ! the UM rose-metadata interface chk_var - module procedure chk_int_str ! Integers (values/ranges) - module procedure chk_real_str ! Reals (values/ranges) - module procedure chk_int_arr ! Integers (values only) + module procedure chk_int_str ! Integers (values/ranges) + module procedure chk_real_str ! Reals (values/ranges) + module procedure chk_int_arr ! Integers (values only) end interface character(len=str_len) :: def_src = '' ! Calling routine if specified @@ -476,8 +477,6 @@ subroutine chk_real_str (var, var_name, string, report_pass, cmessage) return end subroutine chk_real_str - - !============================================================================== !============================================================================== diff --git a/interfaces/physics_schemes_interface/source/legacy/misc/vectlib_mod.F90 b/interfaces/physics_schemes_interface/source/legacy/misc/vectlib_mod.F90 index ee27fcf4e..e4401a9fe 100644 --- a/interfaces/physics_schemes_interface/source/legacy/misc/vectlib_mod.F90 +++ b/interfaces/physics_schemes_interface/source/legacy/misc/vectlib_mod.F90 @@ -66,7 +66,6 @@ subroutine exp_v(n,x,y) ! Sets y(i) to the exponential function of x(i), for i=1,..,n integer :: n real (kind=real_64) :: y(n), x(n) -integer (kind=integer_32) :: l_n integer :: i #if defined(MKL_EXP_V) @@ -75,8 +74,7 @@ subroutine exp_v(n,x,y) #endif #if defined(VMASS) -l_n=n -call vexp (y, x, l_n) +call vexp (y, x, int(n, kind=integer_32)) #elif defined(MKL_EXP_V) call vdexp(n, x, y) #else @@ -93,7 +91,6 @@ subroutine exp_v_32b(n,x,y) ! Sets y(i) to the exponential function of x(i), for i=1,..,n integer :: n real (kind=real_32) :: y(n), x(n) -integer (kind=integer_32) :: l_n integer :: i #if defined(MKL_EXP_V) @@ -102,8 +99,7 @@ subroutine exp_v_32b(n,x,y) #endif #if defined(VMASS) -l_n=n -call vsexp (y, x, l_n) +call vsexp (y, x, int(n, kind=integer_32)) #elif defined(MKL_EXP_V) call vsexp(n, x, y) #else @@ -121,8 +117,10 @@ subroutine powr_v(n, x, power, z) implicit none ! Sets z(i) to x(i) raised to the power power, for i=1,..,n integer :: n, i -real (kind=real_64) :: z(n), x(n), y(n), power -integer (kind=integer_32) :: l_n +real (kind=real_64) :: z(n), x(n), power +#if defined(VMASS) +real (kind=real_64) :: y(n) +#endif #if defined(MKL_POWR_V) ! Interfaces for MKL @@ -130,11 +128,10 @@ subroutine powr_v(n, x, power, z) #endif #if defined(VMASS) -l_n=n do i=1, n y(i)=power end do -call vpow (z, x, y, l_n) +call vpow (z, x, y, int(n, kind=integer_32)) #elif defined(MKL_POWR_V) call vdpowx(n, x, power, z) #else @@ -150,8 +147,10 @@ subroutine powr_v_32b(n, x, power, z) implicit none ! Sets z(i) to x(i) raised to the power power, for i=1,..,n integer :: n, i -real (kind=real_32) :: z(n), x(n), y(n), power -integer (kind=integer_32) :: l_n +real (kind=real_32) :: z(n), x(n), power +#if defined(VMASS) +real (kind=real_32) :: y(n) +#endif #if defined(MKL_POWR_V) ! Interfaces for MKL @@ -159,11 +158,10 @@ subroutine powr_v_32b(n, x, power, z) #endif #if defined(VMASS) -l_n=n do i=1, n y(i)=power end do -call vspow (z, x, y, l_n) +call vspow (z, x, y, int(n, kind=integer_32)) #elif defined(MKL_POWR_V) call vspowx(n, x, power, z) #else @@ -189,7 +187,6 @@ subroutine rtor_v(n, x, y, z) integer :: n real (kind=real_64) :: z(n), x(n), y(n) -integer (kind=integer_32) :: l_n integer :: i #if defined(MKL_RTOR_V) @@ -199,8 +196,7 @@ subroutine rtor_v(n, x, y, z) #if defined(VMASS) -l_n=n -call vpow (z, x, y, l_n) +call vpow (z, x, y, int(n, kind=integer_32)) #elif defined(MKL_RTOR_V) @@ -227,7 +223,6 @@ subroutine sqrt_v(n, x, y) integer :: n real (kind=real_64) :: x(n), y(n) -integer (kind=integer_32) :: l_n integer :: i #if defined(MKL_SQRT_V) @@ -237,8 +232,7 @@ subroutine sqrt_v(n, x, y) #if defined(VMASS) -l_n=n -call vsqrt (y, x, l_n) +call vsqrt (y, x, int(n, kind=integer_32)) #elif defined(MKL_SQRT_V) @@ -263,12 +257,10 @@ subroutine oneover_v(n, x, y) ! Sets y(i) to the reciprocal of x(i), for i=1,..,n integer :: n real (kind=real_64) :: x(n), y(n) -integer (kind=integer_32) :: l_n integer :: i #if defined(VMASS) -l_n=n -call vrec (y, x, l_n) +call vrec (y, x, int(n, kind=integer_32)) #else do i=1, n y(i) = 1/x(i) @@ -283,12 +275,10 @@ subroutine oneover_v_32b(n, x, y) ! Sets y(i) to the reciprocal of x(i), for i=1,..,n integer :: n real (kind=real_32) :: x(n), y(n) -integer (kind=integer_32) :: l_n integer :: i #if defined(VMASS) -l_n=n -call vsrec (y, x, l_n) +call vsrec (y, x, int(n, kind=integer_32)) #else do i=1, n y(i) = 1/x(i) @@ -307,7 +297,6 @@ subroutine log_v (n, x, y) integer :: n real (kind=real_64) :: x(n), y(n) -integer (kind=integer_32) :: l_n integer :: i #if defined(MKL_LOG_V) @@ -317,8 +306,7 @@ subroutine log_v (n, x, y) #if defined(VMASS) -l_n=n -call vlog (y, x, l_n) +call vlog (y, x, int(n, kind=integer_32)) #elif defined(MKL_LOG_V) @@ -345,7 +333,6 @@ subroutine sin_v(n,x,y) integer :: n real (kind=real_64) :: y(n), x(n) -integer (kind=integer_32) :: l_n integer :: i #if defined(MKL_SIN_V) @@ -355,8 +342,7 @@ subroutine sin_v(n,x,y) #if defined(VMASS) -l_n=n -call vsin (y, x, l_n) +call vsin (y, x, int(n, kind=integer_32)) #elif defined(MKL_SIN_V) @@ -383,7 +369,6 @@ subroutine cos_v(n,x,y) integer :: n real (kind=real_64) :: y(n), x(n) -integer (kind=integer_32) :: l_n integer :: i #if defined(MKL_COS_V) @@ -393,8 +378,7 @@ subroutine cos_v(n,x,y) #if defined(VMASS) -l_n=n -call vcos (y, x, l_n) +call vcos (y, x, int(n, kind=integer_32)) #elif defined(MKL_COS_V) @@ -420,7 +404,6 @@ subroutine acos_v(n,x,y) integer :: n real (kind=real_64) :: y(n), x(n) -integer (kind=integer_32) :: l_n integer :: i #if defined(MKL_ACOS_V) @@ -432,8 +415,7 @@ subroutine acos_v(n,x,y) #if defined(VMASS) -l_n=n -call vacos (y, x, l_n) +call vacos (y, x, int(n, kind=integer_32)) #elif defined(MKL_ACOS_V) @@ -460,7 +442,6 @@ subroutine asin_v(n,x,y) integer :: n real (kind=real_64) :: y(n), x(n) -integer (kind=integer_32) :: l_n integer :: i #if defined(MKL_ASIN_V) @@ -470,8 +451,7 @@ subroutine asin_v(n,x,y) #if defined(VMASS) -l_n=n -call vasin (y, x, l_n) +call vasin (y, x, int(n, kind=integer_32)) #elif defined(MKL_ASIN_V) @@ -498,7 +478,6 @@ subroutine atan2_v(n,a,b,y) integer :: n real (kind=real_64) :: y(n), a(n),b(n) -integer (kind=integer_32) :: l_n integer :: i #if defined(MKL_ATAN2_V) @@ -508,8 +487,7 @@ subroutine atan2_v(n,a,b,y) #if defined(VMASS) -l_n=n -call vatan2 (y, a, b, l_n) +call vatan2 (y, a, b, int(n, kind=integer_32)) #elif defined(MKL_ATAN2_V) diff --git a/rose-stem/app/check_global_variables/file/dirtylist.txt b/rose-stem/app/check_global_variables/file/dirtylist.txt index 7281913c9..121df53ed 100644 --- a/rose-stem/app/check_global_variables/file/dirtylist.txt +++ b/rose-stem/app/check_global_variables/file/dirtylist.txt @@ -160,4 +160,4 @@ science/physics_schemes/source/diffusion_and_filtering/leonard_incs_mod.F90 science/physics_schemes/source/diffusion_and_filtering/turb_diff_mod.F90 science/physics_schemes/source/gravity_wave_drag/gw_ussp_prec_mod.F90 science/physics_schemes/source/gravity_wave_drag/g_wave_input_mod.F90 - +science/gungho/source/driver/nl_physics_config_mod.F90 diff --git a/rose-stem/app/jedi_forecast/opt/rose-app-C12.conf b/rose-stem/app/jedi_forecast/opt/rose-app-C12.conf index 1ffc83787..d44221c5e 100644 --- a/rose-stem/app/jedi_forecast/opt/rose-app-C12.conf +++ b/rose-stem/app/jedi_forecast/opt/rose-app-C12.conf @@ -3,4 +3,17 @@ mode=auto source=$MESH_DIR/mesh_C12.nc [namelist:base_mesh] +!!f_lat_deg= file_prefix='mesh_C12' +!!fplane= + +[namelist:formulation] +l_multigrid=.false. + +[namelist:helmholtz_solver] +fail_on_non_converged=.true. +method='bicgstab' +monitor_convergence=.true. +preconditioner='tridiagonal' + +[!!namelist:multigrid] diff --git a/rose-stem/app/jedi_forecast/rose-app.conf b/rose-stem/app/jedi_forecast/rose-app.conf index 064ee951b..7897c7b07 100644 --- a/rose-stem/app/jedi_forecast/rose-app.conf +++ b/rose-stem/app/jedi_forecast/rose-app.conf @@ -1,7 +1,7 @@ meta=jedi_forecast/vn3.1 [command] -default=$CORE_ROOT_DIR/bin/tweak_iodef ; \ +default=$CORE_ROOT_DIR/bin/tweak_iodef; \ =$LAUNCH_SCRIPT/launch-exe [env] @@ -23,13 +23,19 @@ source=namelist:jedi_lfric_tests = namelist:jedi_model = namelist:jedi_pseudo_model = namelist:jedi_lfric_settings + = (namelist:aerosol) = namelist:base_mesh + = (namelist:blayer) = namelist:boundaries = namelist:checks = namelist:section_choice + = (namelist:cloud) + = (namelist:chemistry) + = (namelist:convection) + = (namelist:cosp) = (namelist:damping_layer) = (namelist:departure_points) - = namelist:energy_correction + = (namelist:energy_correction) = (namelist:external_forcing) = namelist:extrusion = (namelist:files) @@ -40,6 +46,7 @@ source=namelist:jedi_lfric_tests = (namelist:iau_addinf_io(:)) = (namelist:iau_ainc_io(:)) = (namelist:iau_bcorr_io(:)) + = (namelist:iau) = (namelist:idealised) = (namelist:ideal_surface) = namelist:initialization @@ -61,76 +68,94 @@ source=namelist:jedi_lfric_tests = (namelist:jules_surface_types) = (namelist:jules_urban) = (namelist:jules_vegetation) - = namelist:linear - = namelist:linear_physics = namelist:logging + = (namelist:microphysics) = namelist:mixed_solver - = (namelist:mixing) + = namelist:mixing = (namelist:multigrid) = (namelist:multires_coupling) = namelist:esm_couple + = (namelist:orbit) = namelist:orography = (namelist:orography_agnesi_cartesian) = (namelist:orography_agnesi_spherical) - = (namelist:orography_bell_cartesian) - = (namelist:orography_bell_spherical) = (namelist:orography_dcmip200_spherical) = (namelist:orography_schar_cartesian) = (namelist:orography_schar_spherical) = namelist:partitioning = (namelist:physics) = namelist:planet + = (namelist:radiation) = namelist:radiative_gases + = (namelist:spectral_gwd) + = (namelist:orographic_drag) = namelist:solver = (namelist:specified_surface) + = (namelist:star) = (namelist:stochastic_physics) + = (namelist:surface) = (namelist:temp_tend_data) = (namelist:theta_relax) = namelist:time = namelist:timestepping = namelist:transport - = namelist:validity_test = (namelist:vapour_forcing) = (namelist:vertadvect) = (namelist:wind_forcing) -[!!namelist:aerosol] -!!aclw_file='' -!!acsw_file='' -!!activation_scheme='off' -!!anlw_file='' -!!answ_file='' -!!crlw_file='' -!!crsw_file='' +[file:iodef.xml] +mode=auto +source=$ROSE_SUITE_DIR/app/lfric_atm/file/iodef_gal_nwp.xml + +[file:lut] +mode=symlink+ +source=$BIG_DATA_DIR/um_aux/UKCA/radaer/ga7_1 + +[file:precalc] +mode=symlink+ +source=$BIG_DATA_DIR/um_aux/spectral/ga7_1 + +[file:spec] +mode=symlink+ +source=$SOURCE_ROOT/socrates/data/spectra/ga9 + +[namelist:aerosol] +aclw_file='lut/nml_ac_lw' +acsw_file='lut/nml_ac_sw' +activation_scheme='jones' +anlw_file='lut/nml_an_lw' +answ_file='lut/nml_an_sw' +crlw_file='lut/nml_cr_lw' +crsw_file='lut/nml_cr_sw' easyaerosol_cdnc=.false. easyaerosol_lw=.false. easyaerosol_sw=.false. !!emissions='GC5' -glomap_mode='off' -!!horiz_d=2.25 -!!l_radaer=.false. +glomap_mode='dust_and_clim' +horiz_d=2.25 +l_radaer=.true. murk=.false. !!murk_lbc=.false. !!murk_prognostic=.false. !!murk_source_scaling=1.0 !!murk_visibility=.false. -!!n_radaer_step=1 -!!prec_file='' -sulphuric_strat_climatology=.false. -!!sulphuric_strat_column=1.86604e-6 +n_radaer_step=1 +prec_file='precalc/RADAER_pcalc.ukca' +sulphuric_strat_climatology=.true. +sulphuric_strat_column=1.86604e-6 ukca_mode_seg_size=4 -!!us_am=1.45 +us_am=1.45 [namelist:base_mesh] !!f_lat_deg=45.0 -file_prefix='mesh.nc' +file_prefix='mesh' !!fplane=.false. geometry='spherical' prepartitioned=.false. prime_mesh_name='dynamics' topology='fully_periodic' -[!!namelist:blayer] +[namelist:blayer] a_ent_2=0.056 a_ent_shr=1.6 bl_levels=50 @@ -186,7 +211,7 @@ limited_area=.false. !!rim_width_ns=1 !!solver_boundary_depth=1 !!transport_boundary_depth=6 -transport_overwrite_freq='split_step' +transport_overwrite_freq='final' [namelist:checks] limit_cfl=.false. @@ -206,63 +231,63 @@ chem_scheme='none' !!fjx_spec_file='FJX_spec_Nov11.dat' !!flexchem_opt='bs1999' i_chem_timestep_halvings=0 -!!i_ukca_chem_version=0 +!!i_ukca_chem_version=111 !!l_ukca_asad_full=.false. -!!l_ukca_linox_scaling=.false. -!!l_ukca_quasinewton=.false. +!!l_ukca_linox_scaling= +!!l_ukca_quasinewton= !!l_ukca_ro2_ntp=.false. -!!lightnox_scale_fac=0 +!!lightnox_scale_fac= !!photol_scheme='off' -!!top_bdy_opt='no_overwrt' +!!top_bdy_opt='' -[!!namelist:cloud] -!!cff_spread_rate=1.0e-5 +[namelist:cloud] +cff_spread_rate=1.0e-5 cld_fsd_hill=.true. cloud_call_b4_conv=.false. !!cloud_horizontal_ice_fsd=0.0 !!cloud_horizontal_liq_fsd=0.75 cloud_pc2_tol=0.005 cloud_pc2_tol_2=0.001 -!!dbsdtbs_turb_0=1.5E-4 +dbsdtbs_turb_0=1.5E-4 !!ent_coef_bm=0.2 -!!ez_max=400.0 +ez_max=400.0 falliceshear_method='real' filter_optical_depth=.true. -!!fsd_conv_const=2.81 -!!fsd_min_conv_frac=0.0 -!!fsd_nonconv_ice_const=1.14 -!!fsd_nonconv_liq_const=1.14 -!!i_bm_ez_opt='subcrit' -!!i_pc2_erosion_numerics='implicit' -!!ice_width=0.02 -!!l_bm_sigma_s_grad=.false. -!!l_bm_tweaks=.false. -!!max_sigmas=3.0 -!!min_sigx_ft=0.0 +fsd_conv_const=3.5 +fsd_min_conv_frac=0.0 +fsd_nonconv_ice_const=0.75 +fsd_nonconv_liq_const=1.0 +i_bm_ez_opt='subcrit' +i_pc2_erosion_numerics='implicit' +ice_width=0.02 +l_bm_sigma_s_grad=.false. +l_bm_tweaks=.false. +max_sigmas=3.0 +min_sigx_ft=0.0 !!mphys_erosion=.false. -!!opt_depth_thresh=0.01 +opt_depth_thresh=0.01 pc2_init_logic='original' pc2ini='bimodal' rh_crit=0.920,0.918,0.916,0.912,0.908,0.903,64*0.9 rh_crit_opt='tke' scheme='pc2' subgrid_qv=.true. -!!turb_var_fac_bm=1.0 -two_d_fsd_factor=1.65 +turb_var_fac_bm=1.0 +two_d_fsd_factor=1.6 use_fsd_eff_res=.true. [namelist:convection] -!!cape_timescale=1800.0 -!!cv_scheme='gregory_rowntree' +cape_timescale=1800.0 +cv_scheme='gregory_rowntree' dx_ref=50000.0 -!!efrac=1.0 +efrac=1.0 l_cvdiag_ctop_qmax=.false. -!!number_of_convection_substeps=2 -!!orig_mdet_fac=1.0 +number_of_convection_substeps=2 +orig_mdet_fac=1.5 !!par_gen_mass_fac=0.25 !!par_gen_rhpert=0.05 !!par_radius_ppn_max=3.5e-4 -!!prog_ent_min=0.5 +prog_ent_min=0.3 qlmin=4.0e-4 resdep_precipramp=.false. @@ -274,7 +299,7 @@ l_cosp=.false. [namelist:damping_layer] dl_base=40000.0 dl_str=0.05 -dl_type='latitude' +dl_type='standard' [namelist:departure_points] horizontal_limit='cap' @@ -316,14 +341,14 @@ stretching_height=17507.0 stretching_method='smooth' [namelist:files] -!!aerosols_ancil_path='' +aerosols_ancil_path='aerosol_clims/glomap/qrclim.aerosols70.fixed' !!albedo_nir_ancil_path='' !!albedo_vis_ancil_path='' -ancil_directory='' -checkpoint_stem_name='$CYLC_SUITE_SHARE_DIR/data/restartGungho_$ROSE_TASK_NAME' +ancil_directory='$BIG_DATA_DIR/ancils/basic-gal/yak/${RESOLUTION}' +checkpoint_stem_name='$CYLC_SUITE_SHARE_DIR/data/restartLfricAtm_$ROSE_TASK_NAME' !!cloud_drop_no_conc_ancil_path='' -!!coarse_ancil_directory='' -!!diag_stem_name='' +!!coarse_ancil_directory='$BIG_DATA_DIR/ancils/basic-gal/yak/${RESOLUTION}' +diag_stem_name='diagLfricAtm' !!dms_conc_ocean_ancil_path='' !!ea_ancil_directory='' !!easy_absorption_lw_ancil_path='' @@ -363,7 +388,7 @@ checkpoint_stem_name='$CYLC_SUITE_SHARE_DIR/data/restartGungho_$ROSE_TASK_NAME' !!gas_mmr_ancil_path='' !!h2o2_limit_ancil_path='' !!ho2_ancil_path='' -!!hydtop_ancil_path='' +hydtop_ancil_path='hydrol_lsh/hydrosheds/qrparm.hydtop' !!iau_addinf_path='' !!iau_bcorr_path='' !!iau_path='' @@ -371,7 +396,7 @@ checkpoint_stem_name='$CYLC_SUITE_SHARE_DIR/data/restartGungho_$ROSE_TASK_NAME' !!iau_sst_path='' !!iau_surf_path='' !!internal_flux_ancil_path='' -!!land_area_ancil_path='' +land_area_ancil_path='land_sea_mask/etop01/qrparm.landfrac' !!lbc_directory='' !!lbc_filename='' !!ls_directory='' @@ -379,20 +404,20 @@ checkpoint_stem_name='$CYLC_SUITE_SHARE_DIR/data/restartGungho_$ROSE_TASK_NAME' !!no3_ancil_path='' !!o3_ancil_path='' !!oh_ancil_path='' -!!orography_mean_ancil_path='' -!!orography_subgrid_ancil_path='' -!!ozone_ancil_path='' -!!plant_func_ancil_path='' -!!sea_ancil_path='' -!!sea_ice_ancil_path='' +orography_mean_ancil_path='orography/gmted_ramp2/qrparm.orog' +orography_subgrid_ancil_path='orography/gmted_ramp2/qrparm.orog' +ozone_ancil_path='ozone/sparc/1994-2005/qrclim.ozone_L70_O70' +plant_func_ancil_path='vegetation/func_type_modis/qrparm.veg.func.fixed' +sea_ancil_path='general_sea/GlobColour/qrclim.sea' +sea_ice_ancil_path='sstice/hadisst_6190/qrclim.sstice_ice' !!snow_analysis_ancil_path='' -!!soil_ancil_path='' -!!soil_dust_ancil_path='' -!!soil_rough_ancil_path='' -!!sst_ancil_path='' -start_dump_directory='' -start_dump_filename='' -!!surface_frac_ancil_path='' +soil_ancil_path='soil_parameters/hwsd_vg/qrparm.soil.fixed' +soil_dust_ancil_path='soil_dust/hwsd/qrparm.soil.dust.one_mrel' +soil_rough_ancil_path='soil_roughness/prigent12/qrparm.soil_roughness' +sst_ancil_path='sstice/hadisst_6190/qrclim.sstice_sst' +start_dump_directory='$BIG_DATA_DIR/start_dumps/nwp-gal9/apps1.1' +start_dump_filename='nwp-gal9_N320L70_${RESOLUTION}L70' +surface_frac_ancil_path='vegetation/fractions_cci/qrparm.veg.frac.fixed' !!urban_ancil_path='' [namelist:finite_element] @@ -409,10 +434,10 @@ dlayer_on=.true. dry_static_adjust=.true. eos_method='sampled' exner_from_eos=.false. -horizontal_physics_predictor=.false. -horizontal_transport_predictor=.false. +horizontal_physics_predictor=.true. +horizontal_transport_predictor=.true. init_exner_bt=.true. -l_multigrid=.false. +l_multigrid=.true. lagged_orog=.true. moisture_formulation='traditional' moisture_in_solver=.true. @@ -420,7 +445,7 @@ p2theta_vert=.true. rotating=.true. shallow=.true. si_momentum_equation=.false. -theta_moist_source=.false. +theta_moist_source=.true. use_multires_coupling=.false. use_physics=.true. use_wavedynamics=.true. @@ -442,7 +467,7 @@ gcrk=8 method='prec_only' monitor_convergence=.false. normalise=.true. -preconditioner='tridiagonal' +preconditioner='multigrid' si_pressure_a_tol=1.0e-8 si_pressure_maximum_iterations=400 si_pressure_tolerance=1.0e-4 @@ -450,14 +475,12 @@ si_pressure_tolerance=1.0e-4 [namelist:iau] !!iau_ainc_multifile=.false. !!iau_mode='instantaneous' -iau_path='' !!iau_pc2=.false. -iau_surf_path='' !!iau_tendency_addinf=.true. !!iau_tendency_ainc=.false. !!iau_tendency_bcorr=.true. !!iau_tendency_pertinc=.false. -!!iau_ts_start=0 +!!iau_ts_start=1 !!iau_use_addinf=.false. !!iau_use_bcorr=.false. !!iau_use_level_one_temp=.false. @@ -504,15 +527,15 @@ f_lon_deg=0.0 perturb_init=.false. !!perturb_magnitude=0 !!perturb_seed=0 -test='gravity_wave' +test='none' [namelist:initial_density] density_background=0.1 density_max=2.0 -r1=0.0 -r2=0.0 -x1=0.0 -x2=0.0 +r1=0.4 +r2=0.4 +x1=0.4 +x2=-0.4 y1=0.0 y2=0.0 z1=0.0 @@ -524,22 +547,22 @@ surface_pressure=1000.0e2 [namelist:initial_temperature] bvf_square=0.0001 -pert_centre=-60.0 +pert_centre=60.0 pert_width_scaling=1.0 perturb='none' -!!profile_data=300.0 -!!profile_heights=0.0 -!!profile_size=1 +!!profile_data=300.0,300.0 +!!profile_heights=0.0,10.0e3 +!!profile_size=2 theta_surf=300.0 [namelist:initial_vapour] -!!profile_data=0.0 -!!profile_heights=0.0 -!!profile_size=1 +!!profile_data=0.0,0.0 +!!profile_heights=0.0,10.0e3 +!!profile_size=2 [namelist:initial_wind] nl_constant=0.0 -profile='none' +profile='constant_uv' !!profile_data_u=0.0 !!profile_data_v=0.0 !!profile_data_w=0.0 @@ -549,49 +572,49 @@ profile='none' !!profile_size_w=1 sbr_angle_lat=0.0 sbr_angle_lon=0.0 -smp_init_wind=.false. -u0=0.0 +smp_init_wind=.true. +u0=2.0 v0=0.0 wind_time_period=0.0 [namelist:initialization] -ancil_option='none' +ancil_option='fixed' coarse_aerosol_ancil=.false. coarse_orography_ancil=.false. coarse_ozone_ancil=.false. -init_option='analytic' +init_option='fd_start_dump' lbc_option='none' ls_option='none' -!!model_eos_height=100 +model_eos_height=100 n_orog_smooth=0 read_w2h_wind=.false. sea_ice_source='ancillary' snow_source='start_dump' -!!sst_source='ancillary' +sst_source='ancillary' w0_orography_mapping=.false. zero_w2v_wind=.false. [namelist:io] -checkpoint_read=.false. -!!checkpoint_times= -checkpoint_write=.false. +checkpoint_read=$RESTART_READ +checkpoint_times= +checkpoint_write=$RESTART_WRITE counter_output_suffix='counter.txt' diag_active_files='lfric_diag' diag_always_on_sampling=.false. -!!diagnostic_frequency=3 -!!end_of_run_checkpoint=.true. +diagnostic_frequency=1 +end_of_run_checkpoint=.true. file_convention='UGRID' multifile_io=.false. -!!nodal_output_on_w3=.true. +!!nodal_output_on_w3=.false. subroutine_counters=.false. subroutine_timers=.true. timer_output_path='timer.txt' use_xios_io=.true. write_conservation_diag=.false. -write_diag=.false. +write_diag=.true. write_dump=.false. write_fluxes=.false. -!!write_minmax_tseries=.false. +write_minmax_tseries=.false. [namelist:jedi_geometry] io_calender_start='2018-04-14T21:00:00' @@ -621,14 +644,14 @@ state_time='2018-04-14 21:00:00' use_pseudo_model=.false. variables='theta','rho','exner' -[!!namelist:jules_hydrology] +[namelist:jules_hydrology] l_hydrology=.true. -!!l_var_rainfrac=.true. +l_var_rainfrac=.true. -[!!namelist:jules_model_environment_lfric] +[namelist:jules_model_environment_lfric] l_jules_parent='lfric' -[!!namelist:jules_nvegparm] +[namelist:jules_nvegparm] albsnc_nvg_io=0.4,0.8,0.8,0.8 albsnf_nvg_io=0.18,0.12,-1.0,0.75 !!albsnf_nvgl_io=0.05,0.06,0.03,0.75 @@ -642,7 +665,7 @@ vf_nvg_io=1.0,1.0,0.0,0.0 z0_nvg_io=1.0,1.0e-4,1.0e-3,5.0e-4 z0hm_nvg_io=1.0e-7,2.5e-1,2.0e-1,2.0e-1 -[!!namelist:jules_pftparm] +[namelist:jules_pftparm] albsnc_max_io=2.5e-1,2.5e-1,6.0e-1,6.0e-1,4.0e-1 alnir_io=0.341,0.272,0.369,0.368,0.395 alpar_io=0.057,0.041,0.071,0.083,0.074 @@ -653,28 +676,28 @@ kext_io=0.5,0.5,1.0,1.0,0.5 knl_io=5*0.2 omega_io=0.101,0.083,0.132,0.135,0.115 omnir_io=0.788,0.545,0.864,0.787,0.785 -z0hm_pft_io=1.65,1.65,0.1,0.1,0.1 -!!z0v_io=1.1,1.1,0.22,0.22,1.0 +z0hm_pft_io=1.0,1.0,0.01,0.01,0.01 +z0v_io=1.1,1.1,0.22,0.22,1.0 -[!!namelist:jules_radiation] +[namelist:jules_radiation] !!fixed_sea_albedo=0.06 i_sea_alb_method='jin' l_albedo_obs=.false. l_hapke_soil=.true. -!!l_niso_direct=.true. +l_niso_direct=.true. l_partition_albsoil=.true. -!!l_sea_alb_var_chl=.true. +l_sea_alb_var_chl=.true. l_spec_alb_bs=.false. -!!ratio_albsoil=2.0 -!!swdn_frac_albsoil=0.5 +ratio_albsoil=2.0 +swdn_frac_albsoil=0.5 -[!!namelist:jules_sea_seaice] +[namelist:jules_sea_seaice] alpham=0.72 amip_ice_thick=.false. beta_evap=1.0 buddy_sea='On' -!!cdn_hw_sea=0.002 -!!cdn_max_sea=0.003 +cdn_hw_sea=0.002 +cdn_max_sea=0.003 dtice=2.0 emis_sea=0.985 emis_sice=0.976 @@ -687,15 +710,15 @@ kappai_snow=0.256 l_10m_neut=.true. l_iceformdrag_lupkes=.true. l_sice_heatflux=.true. -!!l_stability_lupkes=.true. +l_stability_lupkes=.true. l_use_dtstar_sea=.false. nice=1 -!!u_cdn_hw=55.0 -!!u_cdn_max=33.0 -!!z0h_specified=0.01 -!!z0m_specified=0.1 +u_cdn_hw=55.0 +u_cdn_max=33.0 +!!z0h_specified=0.0 +!!z0m_specified=0.0 -[!!namelist:jules_snow] +[namelist:jules_snow] can_clump=8.0,4.0,1.0,1.0,1.0 cansnowpft=.true.,.true.,.false.,.false.,.false. i_basal_melting_opt='instant' @@ -705,21 +728,21 @@ n_lai_exposed=5*1.0 rho_snow_fresh=109.0 unload_rate_u=2.31e-6,2.31e-6,0.0,0.0,0.0 -[!!namelist:jules_soil] +[namelist:jules_soil] l_dpsids_dsdz=.true. l_soil_sat_down=.true. l_vg_soil=.false. -[!!namelist:jules_surface] +[namelist:jules_surface] all_tiles='off' !!anthrop_heat_mean=20.0 !!anthrop_heat_option='dukes' beta1=0.83 beta2=0.93 -!!beta_cnv_bl=0.04 +beta_cnv_bl=0.04 cor_mo_iter='improved' -!!fd_hill_option='capped_lowhill' -!!fd_stability_dep='none' +fd_hill_option='capped_lowhill' +fd_stability_dep='none' formdrag='dist_drag' fwe_c3=0.5 fwe_c4=20000.0 @@ -736,11 +759,11 @@ l_land_ice_imp=.true. l_mo_buoyancy_calc=.true. !!l_point_data=.false. l_urban2t=.false. -l_vary_z0m_soil=.false. -!!orog_drag_param=0.15 +l_vary_z0m_soil=.true. +orog_drag_param=0.15 srf_ex_cnv_gust=.true. -[!!namelist:jules_surface_types] +[namelist:jules_surface_types] brd_leaf=1 c3_grass=3 c4_grass=4 @@ -751,7 +774,7 @@ nnvg=4 npft=5 shrub=5 soil=8 -!!urban=6 +urban=6 !!urban_canyon=0 !!urban_roof=0 @@ -763,58 +786,40 @@ l_moruses_rough=.false. l_moruses_storage=.false. !!l_moruses_storage_thin=.false. -[!!namelist:jules_vegetation] +[namelist:jules_vegetation] can_rad_mod='six' l_limit_canhc=.true. l_spec_veg_z0=.true. -[namelist:linear] -fixed_ls=.true. -l_stabilise_bl=.false. -ls_read_w2h=.false. -pert_option='analytic' -transport_efficiency=.true. - -[namelist:linear_physics] -blevs_m=15 -e_folding_levs_m=10 -l_0_m=80.0 -l_boundary_layer=.true. -log_layer=2 -u_land_m=0.4 -u_sea_m=0.4 -z_land_m=0.05 -z_sea_m=0.0005 - [namelist:logging] log_to_rank_zero_only=.true. run_log_level='info' -[!!namelist:microphysics] -!!a_ratio_exp=-0.2707 -!!a_ratio_fac=0.0517 -!!c_r_correl=0.9 +[namelist:microphysics] +a_ratio_exp=-0.2707 +a_ratio_fac=0.0517 +c_r_correl=0.9 !!casim_cdnc_opt='fixed' ci_input=14.3 cic_input=1024.0 droplet_tpr=.false. -!!fcrit=1.0 -!!graupel_scheme='none' +fcrit=1.0 +graupel_scheme='none' heavy_rain_evap_fac=0.0 !!i_update_precfrac='homog' -!!l_mcr_precfrac=.false. -!!l_proc_fluxes=.false. +l_mcr_precfrac=.false. +l_proc_fluxes=.false. microphysics_casim=.false. -!!mp_dz_scal=2.0 +mp_dz_scal=2.0 !!ndrop_surf=50.0e6 -!!nscalesf=1.0 -!!nsigmasf=2.82843 -!!orog_block=.true. -!!orog_rain=.true. -!!orog_rime=.true. -!!prog_tnuc=.false. -!!qcl_rime=1.0e-4 -!!shape_rime=.false. +nscalesf=1.0 +nsigmasf=2.82843 +orog_block=.true. +orog_rain=.true. +orog_rime=.true. +prog_tnuc=.true. +qcl_rime=1.0e-4 +shape_rime=.true. turb_gen_mixph=.true. !!z_surf=50.0 @@ -827,7 +832,7 @@ guess_np1=.false. mixed_solver_a_tol=1.0e-3 monitor_convergence=.true. normalise=.true. -reference_reset_time=3600. +reference_reset_time=3600.0 si_maximum_iterations=10 si_method='block_gcr' si_preconditioner='pressure' @@ -837,15 +842,15 @@ split_w=.true. [namelist:mixing] !!leonard_kl=2.0 leonard_term=.false. -!!method='blending' +!!method='blend_1dbl_fa' !!mix_factor=0.2 !!smag_l_calc='UseDx' smagorinsky=.false. viscosity=.false. viscosity_mu=0.0 -[!!namelist:multigrid] -chain_mesh_tags='','','','' +[namelist:multigrid] +chain_mesh_tags='dynamics','multigrid_l1','multigrid_l2','multigrid_l3' multigrid_chain_nitems=4 n_coarsesmooth=4 n_postsmooth=2 @@ -853,11 +858,19 @@ n_presmooth=2 smooth_relaxation=0.8 [!!namelist:multires_coupling] -aerosol_mesh_name='dynamics' +aerosol_mesh_name='aerosol' coarse_aerosol_transport=.false. coarse_rad_aerosol=.false. - -[!!namelist:orbit] +dynamics_mesh_name='dynamics' +!!lowest_order_aero_flag=.false. +multires_coupling_mesh_tags='dynamics' +multires_coupling_mode='test' +negative_correction='none' +physics_mesh_name='aerosol' +reconstruction='simple' +recovery_order='linear' + +[namelist:orbit] !!arg_periapsis=1.796767421 !!arg_periapsis_inc=0.0 !!eccentricity=1.6710222E-02 @@ -878,19 +891,19 @@ observer_lon=0.0 !!semimajor_axis_inc=0.0 spin='earth_day' -[!!namelist:orographic_drag] +[namelist:orographic_drag] cd_flow_blocking=4.0 fr_crit_gwd=4.0 fr_sat_gwd=0.25 gwd_scaling=0.7 include_moisture='lowmoist' -mountain_height_scaling=2.6 +mountain_height_scaling=3.1 orographic_blocking_heating=.true. orographic_gwd_heating=.true. vertical_smoothing=.true. [namelist:orography] -orog_init_option='none' +orog_init_option='ancil' !!profile='none' [!!namelist:orography_agnesi_cartesian] @@ -950,7 +963,7 @@ phi_centre_dec=0.0 wavelength=4000.0 [namelist:partitioning] -generate_inner_halos=.true. +generate_inner_halos=.false. panel_decomposition='auto' !!panel_xproc=1 !!panel_yproc=1 @@ -958,24 +971,24 @@ partitioner='cubedsphere' [namelist:physics] bl_segment=0 -!!blayer_placement='fast' +blayer_placement='fast' configure_segments=.true. conv_gr_segment=16 -!!convection_placement='fast' +convection_placement='fast' !!electric_placement='slow' !!evap_condense_placement='fast' gw_segment=0 limit_drag_incs=.false. -!!lowest_level='gradient' +lowest_level='gradient' ls_ppn_segment=0 -!!microphysics_placement='slow' -!!orographic_drag_placement='slow' -!!radiation_placement='slow' +microphysics_placement='slow' +orographic_drag_placement='slow' +radiation_placement='slow' sample_physics_scalars=.true. sample_physics_winds=.true. sample_physics_winds_correction=.false. !!smagorinsky_placement='end' -!!spectral_gwd_placement='slow' +spectral_gwd_placement='slow' !!stochastic_physics_placement='fast' ussp_segment=0 @@ -987,14 +1000,14 @@ p_zero=100000.0 rd=287.05 scaling_factor=1.0 -[!!namelist:radiation] +[namelist:radiation] !!cloud_entrapment='zero' -!!cloud_inhomogeneity='mcica' -!!cloud_overlap='exponential_random' +cloud_inhomogeneity='mcica' +cloud_overlap='exponential_random' cloud_representation='combined' -!!cloud_vertical_decorr=10000.0 +cloud_vertical_decorr=4500.0 !!constant_droplet_effective_radius=7.0E-6 -!!droplet_effective_radius='liu' +droplet_effective_radius='liu' i_cloud_ice_type_lw=11 !!i_cloud_ice_type_lwinc=11 i_cloud_ice_type_sw=11 @@ -1007,8 +1020,8 @@ l_inc_radstep=.false. l_planet_grey_surface=.false. l_rayleigh_sw=.true. l_trans_zen_correction=.true. -!!liu_aparam=0.077 -!!liu_bparam=-0.1365 +liu_aparam=0.077 +liu_bparam=-0.1365 mcica_data_file='spec/mcica_data' !!n_horiz_ang=16 !!n_horiz_layer=1 @@ -1016,12 +1029,12 @@ mcica_data_file='spec/mcica_data' n_radstep=2 !!planet_albedo=0.06 !!planet_emissivity=0.985 -scatter_method_lw='full' -!!scatter_method_lwinc='full' +scatter_method_lw='hybrid' +!!scatter_method_lwinc='approx' spectral_file_lw='spec/sp_lw_ga9' -!!spectral_file_lwinc='spec/sp_lw_cloud7' +!!spectral_file_lwinc='spec/sp_lw_cloud9' spectral_file_sw='spec/sp_sw_ga9' -!!spectral_file_swinc='spec/sp_sw_cloud7' +!!spectral_file_swinc='spec/sp_sw_cloud9' topography='slope' [namelist:radiative_gases] @@ -1035,26 +1048,26 @@ cfc113_rad_opt='off' !!cfc11_clim_fcg_nyears=0 !!cfc11_clim_fcg_rates=0 !!cfc11_clim_fcg_years=0 -!!cfc11_mix_ratio=1.110e-09 -cfc11_rad_opt='off' +cfc11_mix_ratio=1.110e-09 +cfc11_rad_opt='constant' !!cfc12_clim_fcg_levls=0 !!cfc12_clim_fcg_nyears=0 !!cfc12_clim_fcg_rates=0 !!cfc12_clim_fcg_years=0 -!!cfc12_mix_ratio=2.187e-09 -cfc12_rad_opt='off' +cfc12_mix_ratio=2.187e-09 +cfc12_rad_opt='constant' !!ch4_clim_fcg_levls=0 !!ch4_clim_fcg_nyears=0 !!ch4_clim_fcg_rates=0 !!ch4_clim_fcg_years=0 -!!ch4_mix_ratio=1.006e-06 -ch4_rad_opt='off' +ch4_mix_ratio=1.006e-06 +ch4_rad_opt='constant' !!co2_clim_fcg_levls=0 !!co2_clim_fcg_nyears=0 !!co2_clim_fcg_rates=0 !!co2_clim_fcg_years=0 -!!co2_mix_ratio=6.002e-04 -co2_rad_opt='off' +co2_mix_ratio=6.002e-04 +co2_rad_opt='constant' !!co_clim_fcg_levls=0 !!co_clim_fcg_nyears=0 !!co_clim_fcg_rates=0 @@ -1126,8 +1139,8 @@ n2_rad_opt='off' !!n2o_clim_fcg_nyears=0 !!n2o_clim_fcg_rates=0 !!n2o_clim_fcg_years=0 -!!n2o_mix_ratio=4.945e-07 -n2o_rad_opt='off' +n2o_mix_ratio=4.945e-07 +n2o_rad_opt='constant' !!na_clim_fcg_levls=0 !!na_clim_fcg_nyears=0 !!na_clim_fcg_rates=0 @@ -1144,8 +1157,8 @@ nh3_rad_opt='off' !!o2_clim_fcg_nyears=0 !!o2_clim_fcg_rates=0 !!o2_clim_fcg_years=0 -!!o2_mix_ratio=0.2314 -o2_rad_opt='off' +o2_mix_ratio=0.2314 +o2_rad_opt='constant' !!o3_clim_fcg_levls=0 !!o3_clim_fcg_nyears=0 !!o3_clim_fcg_rates=0 @@ -1154,7 +1167,7 @@ o2_rad_opt='off' !!o3_profile_data=0 !!o3_profile_heights=0.0 !!o3_profile_size=0 -o3_rad_opt='off' +o3_rad_opt='ancil' !!rb_clim_fcg_levls=0 !!rb_clim_fcg_nyears=0 !!rb_clim_fcg_rates=0 @@ -1181,32 +1194,32 @@ tio_rad_opt='off' vo_rad_opt='off' [namelist:section_choice] -aerosol='none' -boundary_layer='none' +aerosol='um' +boundary_layer='um' chemistry='none' -cloud='none' -!!convection='none' +cloud='um' +convection='um' dynamics='gungho' -!!electric='none' +electric='none' external_forcing=.false. iau=.false. iau_sst=.false. iau_surf=.false. -methane_oxidation=.false. -!!microphysics='none' -orographic_drag='none' -radiation='none' -spectral_gwd='none' +methane_oxidation=.true. +microphysics='um' +orographic_drag='um' +radiation='socrates' +spectral_gwd='um' stochastic_physics='none' -surface='none' +surface='jules' [namelist:solver] -fail_on_non_converged=.false. +!!fail_on_non_converged=.false. gcrk=18 !!jacobi_relaxation=0.5 maximum_iterations=7 method='chebyshev' -monitor_convergence=.true. +monitor_convergence=.false. preconditioner='diagonal' tolerance=1.0e-6 @@ -1234,14 +1247,14 @@ tolerance=1.0e-6 !!time_units='seconds' !!time_units_sst='seconds' -[!!namelist:spectral_gwd] -add_cgw=.false. -!!cgw_scale_factor=1.0 +[namelist:spectral_gwd] +add_cgw=.true. +cgw_scale_factor=0.86 ussp_heating=.true. -ussp_launch_factor=1.3 +ussp_launch_factor=1.2 wavelstar=4300.0 -[!!namelist:star] +[namelist:star] stellar_constant=1361.0 stellar_radius=6.957e8 @@ -1291,9 +1304,9 @@ ens_memb=${ENSEMBLE_MEMBER} !!rp_lsfc_orog_drag_param=0.15,0.15,0.15 !!rp_lsfc_z0_soil=1.0e-3,1.0e-3,1.0e-3 !!rp_lsfc_z0_urban_mult=1.0,1.0,1.0 -!!rp_lsfc_z0hm_pft=1.65000,1.65000,1.00000e-2,1.00000e-2,1.00000e-1 -!!rp_lsfc_z0hm_pft_max=1.65000,1.65000,1.00000e-2,1.00000e-2,1.00000e-1 -!!rp_lsfc_z0hm_pft_min=1.65000,1.65000,1.00000e-2,1.00000e-2,1.00000e-1 +!!rp_lsfc_z0hm_pft=1.00,1.00,0.022,0.022,0.025 +!!rp_lsfc_z0hm_pft_max=1.00,1.00,0.022,0.022,0.025 +!!rp_lsfc_z0hm_pft_min=1.00,1.00,0.022,0.022,0.025 !!rp_lsfc_z0hm_soil=2.0e-1,2.0e-1,2.0e-1 !!rp_lsfc_z0v= !!rp_lsfc_z0v_max= @@ -1338,13 +1351,13 @@ ens_memb=${ENSEMBLE_MEMBER} !!spt_use_convection=.true. !!spt_use_microphysics=.true. !!spt_use_radiation=.true. -stph_n_max=22 +stph_n_max=60 stph_n_min=20 use_random_parameters=.false. use_skeb=.false. use_spt=.false. -[!!namelist:surface] +[namelist:surface] !!check_soilm_negatives=.true. emis_method_sea='fixed' emis_method_soil='fixed' @@ -1369,8 +1382,8 @@ timescale=1.0 [namelist:time] calendar='timestep' -calendar_origin='2016-01-01 15:00:00' -calendar_start='2016-01-01 15:00:00' +calendar_origin='2021-03-24 00:00:00' +calendar_start='2021-03-24 00:00:00' calendar_type='gregorian' timestep_end='$RESTART_STOP' timestep_start='$RESTART_START' @@ -1383,16 +1396,16 @@ method='semi_implicit' outer_iterations=2 runge_kutta_method='forward_euler' spinup_alpha=.false. -!!spinup_period=0 +!!spinup_period=0.0 tau_r=1.0 tau_t=1.0 tau_u=0.55 [namelist:transport] -adjust_theta=.false. -!!adjust_theta_above=30000.0 +adjust_theta=.true. +adjust_theta_above=30000.0 adjust_tracer_equation=.false. -adjust_vhv_wind=.false. +adjust_vhv_wind=.true. ageofair_reset_level=10 broken_w2_projection=.false. calculate_detj='upwind' @@ -1402,54 +1415,50 @@ cfl_mol_2d_stab=1.0 cfl_mol_3d_stab=1.0 cheap_update=.false. consistent_metric=.false. -dep_pt_stencil_extent=3 +dep_pt_stencil_extent=7 dry_field_name='density' -enforce_min_value=5*.false. -equation_form=1,2,2,2,2 +enforce_min_value=.false.,.false.,.false.,.true.,.true.,.true. +equation_form=1,3,2,3,3,3 ffsl_inner_order=0 ffsl_outer_order=1 -ffsl_splitting=5*1 -ffsl_unity_3d=.false. -ffsl_vertical_order=2,2,1,2,2 +ffsl_splitting=6*1 +ffsl_unity_3d=.true. +ffsl_vertical_order=2,2,1,2,2,2 field_names='density','potential_temperature','wind','moisture', - ='con_tracer' + ='adv_tracer','con_tracer' fv_horizontal_order=2 fv_vertical_order=2 -horizontal_method=5*1 -horizontal_monotone=5*1 -log_space=.true.,.true.,.false.,.false.,.false. +horizontal_method=6*2 +horizontal_monotone=1,5,1,5,5,5 +log_space=.true.,.true.,.false.,.false.,.false.,.false. max_vert_cfl_calc='dep_point' -min_val_abs_tol=-1.0e-12 -min_val_max_iterations=10 -min_val_method='iterative' -min_value=0.0,0.0,-99999999.0,0.0,0.0 +!!min_val_abs_tol=-1e-9 +!!min_val_max_iterations=10 +min_val_method='clipping' +min_value=0.0,0.0,-99999999.0,0.0,0.0,0.0 oned_reconstruction=.false. operators='fv' panel_edge_high_order=.true. -panel_edge_treatment='none' -profile_size=5 -reversible=.true.,.true.,.false.,.true.,.true. +panel_edge_treatment='special_edges' +profile_size=6 +reversible=.true.,.true.,.false.,.true.,.true.,.true. runge_kutta_method='ssp3' -scheme=5*1 -si_outer_transport='none' +scheme=6*3 +si_outer_transport='horizontal_sl' slice_order='parabola' -special_edges_monotone=5*1 -splitting=5*1 -substep_transport='off' -theta_dispersion_correction=.false. -theta_variable='dry' +special_edges_monotone=0,0,0,1,1,1 +splitting=6*2 +substep_transport='adaptive' +theta_dispersion_correction=.true. +theta_variable='virtual_dry' transport_ageofair=.false. use_density_predictor=.false. -vertical_method=5*1 -vertical_monotone=5*1 -vertical_monotone_order=5*3 +vertical_method=6*2 +vertical_monotone=1,5,1,5,5,5 +vertical_monotone_order=6*3 vertical_sl_order='cubic' -wind_mono_top=.false. -!!wind_mono_top_depth=5 - -[namelist:validity_test] -number_gamma_values=2 -update_ls_frequency=1 +wind_mono_top=.true. +wind_mono_top_depth=5 [!!namelist:vapour_forcing] coordinate='height' diff --git a/rose-stem/flow.cylc b/rose-stem/flow.cylc index f762b6e18..c93a53ad4 100644 --- a/rose-stem/flow.cylc +++ b/rose-stem/flow.cylc @@ -92,7 +92,8 @@ {% if "lfric_atm" in requested_applications or "jules" in requested_applications or "ngarch" in requested_applications - or "lfric_coupled" in requested_applications %} + or "lfric_coupled" in requested_applications + or "jedi_lfric_tests" in requested_applications %} {% do LOG.debug("Running Physics Schemes") %} @@ -140,7 +141,7 @@ [runtime] [[root]] env-script = "eval $(rose task-env)" - script = "rose task-run" + script = "rose task-run -v" [[[environment]]] SOURCE_ROOT = $CYLC_WORKFLOW_SHARE_DIR/source diff --git a/rose-stem/site/meto/common/default_directives.cylc b/rose-stem/site/meto/common/default_directives.cylc index f861939eb..f5243ca0f 100644 --- a/rose-stem/site/meto/common/default_directives.cylc +++ b/rose-stem/site/meto/common/default_directives.cylc @@ -24,6 +24,9 @@ "ngarch": { "build_wallclock": 45, }, + "jedi_lfric_tests": { + "build_wallclock": 45, + }, "mesh": { "mesh_wallclock": 20, "mesh_memory": [6, "GB"], @@ -51,6 +54,9 @@ "ngarch": { "build_wallclock": 45, }, + "jedi_lfric_tests": { + "build_wallclock": 45, + }, "mesh": { "mesh_wallclock": 20, "mesh_memory": [6, "GB"], diff --git a/rose-stem/templates/runtime/generate_runtime_application.cylc b/rose-stem/templates/runtime/generate_runtime_application.cylc index b9e507f15..a99408759 100644 --- a/rose-stem/templates/runtime/generate_runtime_application.cylc +++ b/rose-stem/templates/runtime/generate_runtime_application.cylc @@ -22,7 +22,7 @@ {# Generate the script command #} {% set script_str = namespace(name="") %} {% set script_str.name = "$CYLC_WORKFLOW_RUN_DIR/bin/application_results_setup.sh ; " %} -{% set script_str.name = script_str.name~"rose task-run --app-key="~task_values["app_name"] %} +{% set script_str.name = script_str.name~"rose task-run -v --app-key="~task_values["app_name"] %} {% if task_values["app_name"] == "canned_test" %} {% set script_str.name = script_str.name~" --command-key=$RUN_METHOD" %} {% else %} diff --git a/rose-stem/templates/runtime/generate_runtime_build.cylc b/rose-stem/templates/runtime/generate_runtime_build.cylc index 0dbf19d2b..db5bc4a12 100644 --- a/rose-stem/templates/runtime/generate_runtime_build.cylc +++ b/rose-stem/templates/runtime/generate_runtime_build.cylc @@ -35,7 +35,7 @@ [[{{task}}]] inherit={{inherit.str|upper}} - script = 'if command -v module > /dev/null 2>&1; then module list; fi; rose task-run --app-key=compile' + script = 'if command -v module > /dev/null 2>&1; then module list; fi; rose task-run -v --app-key=compile' execution time limit = PT{{task_values["build_wallclock"]}}M [[[environment]]] SOURCE_DIRECTORY = $SOURCE_ROOT/{{src_path}} diff --git a/rose-stem/templates/runtime/generate_runtime_check.cylc b/rose-stem/templates/runtime/generate_runtime_check.cylc index e97511800..61f1bf226 100644 --- a/rose-stem/templates/runtime/generate_runtime_check.cylc +++ b/rose-stem/templates/runtime/generate_runtime_check.cylc @@ -47,7 +47,7 @@ [[{{task}}]] inherit={{inherit.str|upper}} - script = 'rose task-run --app-key=check_kgo' + script = 'rose task-run -v --app-key=check_kgo' execution time limit = PT{{task_values["tech-tests_wallclock"]}}M [[[environment]]] CURRENT_KGO = {{current_kgo}} @@ -82,7 +82,7 @@ [[{{task}}]] inherit={{inherit.str|upper}} - script = rose task-run --app-key=phystest + script = rose task-run -v --app-key=phystest execution time limit = PT{{task_values["tech-tests_wallclock"]}}M [[[environment]]] PHYSTEST_DIR = {{task_output_dir}} @@ -102,7 +102,7 @@ [[{{task}}]] inherit={{inherit.str|upper}} - script = 'rose task-run --app-key=perturbation_compare' + script = 'rose task-run -v --app-key=perturbation_compare' execution time limit = PT{{task_values["tech-tests_wallclock"]}}M [[[environment]]] PERT_ON_TASK = {{perturb_output}} diff --git a/rose-stem/templates/runtime/generate_runtime_control.cylc b/rose-stem/templates/runtime/generate_runtime_control.cylc index 00a04b699..19e9f93ad 100644 --- a/rose-stem/templates/runtime/generate_runtime_control.cylc +++ b/rose-stem/templates/runtime/generate_runtime_control.cylc @@ -92,7 +92,7 @@ [[{{task}}]] inherit = HOUSEKEEPING, {{platform|upper}}_HOUSEKEEPING execution time limit = PT5M - script = rose task-run --app-key=housekeeping + script = rose task-run -v --app-key=housekeeping [[[directives]]] {{ set_task_resources(1, [1, "GB"]) }} diff --git a/rose-stem/templates/runtime/generate_runtime_gen_weights.cylc b/rose-stem/templates/runtime/generate_runtime_gen_weights.cylc index 48c0df047..fc6a2947e 100644 --- a/rose-stem/templates/runtime/generate_runtime_gen_weights.cylc +++ b/rose-stem/templates/runtime/generate_runtime_gen_weights.cylc @@ -15,9 +15,9 @@ inherit = GENERATE_WEIGHTS, \ {{site_vars["scripts_platform"]|upper}}_WEIGHTS {% if task_ns.application == "lfric2lfric" %} - script = rose task-run --app-key=generate_weights -O lfric2lfric + script = rose task-run -v --app-key=generate_weights -O lfric2lfric {% else %} - script = rose task-run --app-key=generate_weights + script = rose task-run -v --app-key=generate_weights {% endif %} [[[environment]]] MPIRUN_N_JOBS = {{task_values["gen_weights_tasks"]}} diff --git a/rose-stem/templates/runtime/generate_runtime_lfric_coupled.cylc b/rose-stem/templates/runtime/generate_runtime_lfric_coupled.cylc index 51ce6a276..56bd384bd 100644 --- a/rose-stem/templates/runtime/generate_runtime_lfric_coupled.cylc +++ b/rose-stem/templates/runtime/generate_runtime_lfric_coupled.cylc @@ -21,7 +21,7 @@ [[{{task}}]] {% endif %} inherit=BUILD_{{task_ns.application|upper}}_{{task_ns.platform|upper}},{{task_ns.platform|upper}}_BUILD_COUPLED_CCE - script = rose task-run + script = rose task-run -v [[[environment]]] ROSE_TASK_APP = {{task_app}} [[[directives]]] @@ -36,7 +36,7 @@ [[{{task}}]] {% endif %} inherit=BUILD_{{task_ns.application|upper}}_{{task_ns.platform|upper}}, {{SITE|upper}}_FCM_MAKE - script = rose task-run + script = rose task-run -v execution time limit = PT10M [[[environment]]] ROSE_TASK_APP = {{task_app}} diff --git a/rose-stem/templates/runtime/generate_runtime_mesh.cylc b/rose-stem/templates/runtime/generate_runtime_mesh.cylc index 69f8093fa..e6b902af9 100644 --- a/rose-stem/templates/runtime/generate_runtime_mesh.cylc +++ b/rose-stem/templates/runtime/generate_runtime_mesh.cylc @@ -14,7 +14,7 @@ {% set inherit.str = inherit.str~","~family|upper %} {% endfor %} -{% set script_str = "rose task-run --app-key=mesh --opt-conf-key="~task_ns.conf_name %} +{% set script_str = "rose task-run -v --app-key=mesh --opt-conf-key="~task_ns.conf_name %} [[{{task}}]] inherit={{inherit.str|upper}} diff --git a/rose-stem/templates/runtime/generate_runtime_other.cylc b/rose-stem/templates/runtime/generate_runtime_other.cylc index f55df4e5a..172dd1afd 100644 --- a/rose-stem/templates/runtime/generate_runtime_other.cylc +++ b/rose-stem/templates/runtime/generate_runtime_other.cylc @@ -29,7 +29,7 @@ [[{{task}}]] inherit={{inherit.str|upper}} - script = rose task-run --app-key=perftools_export + script = rose task-run -v --app-key=perftools_export execution time limit = PT{{task_values["tech-tests_wallclock"]}}M [[[environment]]] PREVIOUS_JOB={{previous_job}} diff --git a/rose-stem/templates/runtime/generate_runtime_plot.cylc b/rose-stem/templates/runtime/generate_runtime_plot.cylc index c7341cfb0..a9ce8f45f 100644 --- a/rose-stem/templates/runtime/generate_runtime_plot.cylc +++ b/rose-stem/templates/runtime/generate_runtime_plot.cylc @@ -20,7 +20,7 @@ [[{{task}}]] inherit={{inherit.str|upper}} - script = 'rose task-run --app-key=plot' + script = 'rose task-run -v --app-key=plot' execution time limit = PT{{task_values["tech-tests_wallclock"]}}M [[[environment]]] NODAL_DATA_DIR = {{task_output_dir}}/results @@ -41,7 +41,7 @@ [[{{task}}]] inherit={{inherit.str|upper}} - script = 'rose task-run --app-key=memory_profile' + script = 'rose task-run -v --app-key=memory_profile' [[[environment]]] PLOT_DIR = {{task_output_dir}}/plots TASK_LOG_DIR = {{log_dir}} diff --git a/rose-stem/templates/runtime/generate_runtime_scripts.cylc b/rose-stem/templates/runtime/generate_runtime_scripts.cylc index bd602ad7c..b9a3a258f 100644 --- a/rose-stem/templates/runtime/generate_runtime_scripts.cylc +++ b/rose-stem/templates/runtime/generate_runtime_scripts.cylc @@ -36,51 +36,51 @@ {% if "config_dump_checker" in task %} inherit={{inherit.str|upper}} - script="rose task-run --app-key=check_config_dump" + script="rose task-run -v --app-key=check_config_dump" {% elif "style_checker" in task %} inherit={{inherit.str|upper}} - script="rose task-run --app-key=check_style" + script="rose task-run -v --app-key=check_style" {% elif "extract_checker" in task %} inherit={{inherit.str|upper}} - script="rose task-run --app-key=extract_list_checker" + script="rose task-run -v --app-key=extract_list_checker" {% elif "site_validator" in task %} inherit={{inherit.str|upper}} - script="rose task-run --app-key=site_validator" + script="rose task-run -v --app-key=site_validator" {% elif "rose-stem_lint_checker" in task %} inherit={{inherit.str|upper}} - script="rose task-run --app-key=rose-stem_lint_check" + script="rose task-run -v --app-key=rose-stem_lint_check" {% elif "test_launch-exe" in task %} inherit={{inherit.str|upper}} - script="rose task-run --app-key=test_launch-exe" + script="rose task-run -v --app-key=test_launch-exe" [[[environment]]] launch_exe_meto_path = $CYLC_WORKFLOW_RUN_DIR/site/meto/common/bin/launch-exe {% elif "macro_chains_checker" in task %} inherit=SCRIPTS,{{site_vars["scripts_platform"]|upper}}_PLOT - script="rose task-run --app-key=check_macro_chains" + script="rose task-run -v --app-key=check_macro_chains" {% elif "validate_rose_meta" in task %} inherit={{inherit.str|upper}} - script="rose task-run --app-key=validate_rose_meta" + script="rose task-run -v --app-key=validate_rose_meta" [[[environment]]] ROSE_PYTHONPATH = $PYTHONPATH {% elif "kgo_groups_checker" in task %} inherit={{inherit.str|upper}} - script="rose task-run --app-key=check_kgo_groups" + script="rose task-run -v --app-key=check_kgo_groups" {% set group_str = RUN_NAMES|join(",") %} [[[environment]]] SUITE_SITE = {{SITE}} @@ -89,12 +89,12 @@ {% elif "global_variables_checker" in task %} inherit={{inherit.str|upper}} - script="rose task-run --app-key=check_global_variables" + script="rose task-run -v --app-key=check_global_variables" {% elif "python_unit_tests" in task %} inherit={{inherit.str|upper}} - script="rose task-run --app-key=python_unit_tests" + script="rose task-run -v --app-key=python_unit_tests" {% elif "local_build_test" in task %} {# Test the local_build script by building gungho_model #} diff --git a/science/gungho/source/algorithm/initialisation/init_physics_prognostics_alg_mod.X90 b/science/gungho/source/algorithm/initialisation/init_physics_prognostics_alg_mod.X90 index f43c0e5a0..f62377da7 100644 --- a/science/gungho/source/algorithm/initialisation/init_physics_prognostics_alg_mod.X90 +++ b/science/gungho/source/algorithm/initialisation/init_physics_prognostics_alg_mod.X90 @@ -33,6 +33,7 @@ module init_physics_prognostics_alg_mod #endif use log_mod, only : log_event, & LOG_LEVEL_INFO + use nl_physics_config_mod, only : use_nl_physics implicit none @@ -87,6 +88,7 @@ contains #ifdef UM_PHYSICS +if (use_nl_physics) then ! Only actually initialise the fields if we're using the external code ! Most things need calling regardless of whether the scheme is on, ! because we initialise fields used by other schemes if the scheme @@ -118,7 +120,7 @@ contains call init_stph_fields_alg(stph_fields) call log_event( 'Physics field collections initialised', LOG_LEVEL_INFO ) - +endif! (use_nl_physics) then #endif end subroutine init_physics_prognostics_alg diff --git a/science/gungho/source/algorithm/physics/external_forcing_alg_mod.X90 b/science/gungho/source/algorithm/physics/external_forcing_alg_mod.X90 index a5dc88e87..a833ed2d6 100644 --- a/science/gungho/source/algorithm/physics/external_forcing_alg_mod.X90 +++ b/science/gungho/source/algorithm/physics/external_forcing_alg_mod.X90 @@ -80,6 +80,7 @@ module external_forcing_alg_mod use w2_filter_alg_mod, only: w2_filter_alg use external_forcing_diagnostics_mod, only: write_forcing_diagnostics + use nl_physics_config_mod, only : use_nl_physics implicit none @@ -401,12 +402,21 @@ contains end if #ifdef UM_PHYSICS +if (use_nl_physics) then if ( .not. vapour_forcing_done ) then call dmv_forcing%initialise( vector_space = theta%get_function_space() ) call invoke( setval_c(dmv_forcing, 0.0_r_def) ) call dmcl_forcing%initialise( vector_space = theta%get_function_space() ) call invoke( setval_c(dmcl_forcing, 0.0_r_def) ) end if +else! (use_nl_physics) then + if (vapour_forcing /= vapour_forcing_none .and. .not. vapour_forcing_done ) then + call dmv_forcing%initialise( vector_space = theta%get_function_space() ) + call invoke( setval_c(dmv_forcing, 0.0_r_def) ) + call dmcl_forcing%initialise( vector_space = theta%get_function_space() ) + call invoke( setval_c(dmcl_forcing, 0.0_r_def) ) + end if +endif! (use_nl_physics) then #else if (vapour_forcing /= vapour_forcing_none .and. .not. vapour_forcing_done ) then call dmv_forcing%initialise( vector_space = theta%get_function_space() ) @@ -436,6 +446,7 @@ contains end if #ifdef UM_PHYSICS +if (use_nl_physics) then if ( theta_forcing_done .or. vapour_forcing_done ) then ! pc2 response to forcing if requested if (cloud == cloud_um .and. scheme == scheme_pc2 .and. & @@ -449,6 +460,7 @@ contains end if end if +endif! (use_nl_physics) then #endif if ( LPROF ) call stop_timing( id, 'external_forcing' ) diff --git a/science/gungho/source/algorithm/physics/fast_physics_alg_mod.X90 b/science/gungho/source/algorithm/physics/fast_physics_alg_mod.X90 index 851921548..8d8facc7c 100644 --- a/science/gungho/source/algorithm/physics/fast_physics_alg_mod.X90 +++ b/science/gungho/source/algorithm/physics/fast_physics_alg_mod.X90 @@ -81,6 +81,7 @@ module fast_physics_alg_mod use stph_main_alg_mod, only: stph_main_alg use blpert_main_alg_mod, only: blpert_main_alg #endif + use nl_physics_config_mod, only : use_nl_physics implicit none @@ -222,6 +223,7 @@ contains evap_condense_done = .false. #ifdef UM_PHYSICS +if (use_nl_physics) then ! Balance cloud before the rest of fast physics if (cloud_call_b4_conv) then call derived_fields%get_field('theta_star', theta_star) @@ -334,7 +336,7 @@ contains blpert_done = .true. end if end if - +endif! (use_nl_physics) then #endif if (evap_condense_placement == evap_condense_placement_fast .and. & @@ -372,6 +374,7 @@ contains end if #ifdef UM_PHYSICS +if (use_nl_physics) then if (stph_done) then ! Adding stochastic physics theta, mv and winds ! as part of the implicit solution @@ -386,6 +389,7 @@ contains call invoke(inc_X_plus_Y(dtheta, dtheta_blpert), & inc_X_plus_Y(mr(imr_v), dmv_blpert) ) end if +endif! (use_nl_physics) then #endif if (smagorinsky .and. smagorinsky_placement == smagorinsky_placement_fast) then diff --git a/science/gungho/source/algorithm/physics/slow_physics_alg_mod.X90 b/science/gungho/source/algorithm/physics/slow_physics_alg_mod.X90 index f6523d797..117535768 100644 --- a/science/gungho/source/algorithm/physics/slow_physics_alg_mod.X90 +++ b/science/gungho/source/algorithm/physics/slow_physics_alg_mod.X90 @@ -155,6 +155,7 @@ module slow_physics_alg_mod only: aerosol_mesh_name, & coarse_rad_aerosol use initialization_config_mod, only: coarse_aerosol_ancil + use nl_physics_config_mod, only : use_nl_physics implicit none @@ -430,7 +431,7 @@ contains end if #ifdef UM_PHYSICS - +if (use_nl_physics) then if ( microphysics == microphysics_um .or. & radiation == radiation_socrates ) then @@ -980,6 +981,7 @@ contains end if ! jules end if ! slow_bl end if ! bl_um +endif! (use_nl_physics) then #endif if (evap_condense_placement == evap_condense_placement_slow .and. & @@ -1119,6 +1121,7 @@ contains end if #ifdef UM_PHYSICS +if (use_nl_physics) then !-------------------------------------------------------------------- ! PC2 checking of current state and preparation for advection !-------------------------------------------------------------------- @@ -1162,6 +1165,7 @@ contains end if ! (microphysics_done .or. radiation_done)) end if ! (scheme == scheme_pc2) +endif! (use_nl_physics) then #endif call print_field_stats_alg(dtheta, LOG_LEVEL_INFO, printmin=-20.0_r_def, & diff --git a/science/gungho/source/algorithm/runtime_constants/physics_constants_mod.X90 b/science/gungho/source/algorithm/runtime_constants/physics_constants_mod.X90 index 94a95dcf1..b07244161 100644 --- a/science/gungho/source/algorithm/runtime_constants/physics_constants_mod.X90 +++ b/science/gungho/source/algorithm/runtime_constants/physics_constants_mod.X90 @@ -33,6 +33,7 @@ module physics_constants_mod use model_clock_mod, only: model_clock_type use timing_mod, only: start_timing, stop_timing, & tik, LPROF + use nl_physics_config_mod, only : use_nl_physics implicit none @@ -411,6 +412,7 @@ contains logical(kind=l_def) :: constant_exists integer(tik) :: id +if (use_nl_physics) then ! Check inventory is initialised if (.not. Pnm_star_inventory%is_initialised()) then call Pnm_star_inventory%initialise(name='Pnm_star') @@ -439,6 +441,7 @@ contains call Pnm_star_inventory%get_field(local_mesh, Pnm_star) +endif! (use_nl_physics) then end function get_Pnm_star #endif @@ -456,7 +459,9 @@ contains call rdz_w3_inventory%clear() call max_diff_wtheta_inventory%clear() #ifdef UM_PHYSICS +if (use_nl_physics) then call Pnm_star_inventory%clear() +endif! (use_nl_physics) then #endif end subroutine final_physics_constants diff --git a/science/gungho/source/algorithm/timestepping/semi_implicit_timestep_alg_mod.X90 b/science/gungho/source/algorithm/timestepping/semi_implicit_timestep_alg_mod.X90 index eb7dc2d09..cae9fa871 100644 --- a/science/gungho/source/algorithm/timestepping/semi_implicit_timestep_alg_mod.X90 +++ b/science/gungho/source/algorithm/timestepping/semi_implicit_timestep_alg_mod.X90 @@ -148,6 +148,7 @@ module semi_implicit_timestep_alg_mod use timing_mod, only: start_timing, stop_timing, tik, LPROF use ageofair_alg_mod, only: ageofair_update + use nl_physics_config_mod, only : use_nl_physics implicit none @@ -1091,6 +1092,7 @@ contains ! changes are applied from the solver. ! ---------------------------------------------------------------------- #ifdef UM_PHYSICS +if (use_nl_physics) then if (use_physics .and. cloud == cloud_um ) then call cld_alg( self%dtheta_cld, mr, & self%state(igh_t), self%state(igh_p), self%state(igh_d), & @@ -1105,6 +1107,7 @@ contains convection_fields, initialise=.false. ) end if ! microphysics_casim end if +endif! (use_nl_physics) then #endif ! Update derived variables for time level n+1 @@ -1121,6 +1124,7 @@ contains ! Call UKCA for GLOMAP-mode prognostic aerosol updates !-------------------------------------------------------------------- #ifdef UM_PHYSICS +if (use_nl_physics) then if ( aerosol == aerosol_um .and. & ( glomap_mode == glomap_mode_ukca .or. & glomap_mode == glomap_mode_dust_and_clim ) ) then @@ -1131,6 +1135,7 @@ contains surface_fields, soil_fields, & self%state, mr, model_clock ) end if +endif! (use_nl_physics) then #endif ! Write diagnostic output diff --git a/science/gungho/source/diagnostics/diagnostics_calc_mod.F90 b/science/gungho/source/diagnostics/diagnostics_calc_mod.F90 index f1787a8bf..96fee1f3a 100755 --- a/science/gungho/source/diagnostics/diagnostics_calc_mod.F90 +++ b/science/gungho/source/diagnostics/diagnostics_calc_mod.F90 @@ -44,6 +44,7 @@ module diagnostics_calc_mod use sci_geometric_constants_mod, only: get_coordinates, & get_panel_id + use nl_physics_config_mod, only : use_nl_physics implicit none private public :: write_divergence_diagnostic, & @@ -180,7 +181,12 @@ subroutine write_vorticity_diagnostic(u_field, exner, clock) diagnostic_to_be_sampled('init_xi3') #ifdef UM_PHYSICS +!!! this is the logic I should use.... +if (use_nl_physics) then plev_xi3_flag = init_diag(plev_xi3, 'plev__xi3') +else + plev_xi3_flag = .false. +endif! (use_nl_physics) then #else plev_xi3_flag = .false. #endif @@ -201,9 +207,12 @@ subroutine write_vorticity_diagnostic(u_field, exner, clock) call project_output( vorticity, projected_field, chi, panel_id, W3 ) #ifdef UM_PHYSICS + +if (use_nl_physics) then if (plev_xi3_flag) then call pres_lev_field_alg(projected_field(3), exner, plev_xi3, xi3_axis) end if +endif! (use_nl_physics) then #endif if (xi_modlev_flag) then @@ -242,6 +251,7 @@ subroutine write_vorticity_diagnostic(u_field, exner, clock) end subroutine write_vorticity_diagnostic #ifdef UM_PHYSICS +!! I assume we just dont need to do anything in this case? !------------------------------------------------------------------------------- !> @brief Potential vorticity diagnostic processing and output. !> @details Optionally calculate and output both model level and pressure diff --git a/science/gungho/source/driver/create_iau_fields_mod.F90 b/science/gungho/source/driver/create_iau_fields_mod.F90 index 1071826b5..933f598f9 100755 --- a/science/gungho/source/driver/create_iau_fields_mod.F90 +++ b/science/gungho/source/driver/create_iau_fields_mod.F90 @@ -34,6 +34,7 @@ module create_iau_fields_mod use jules_physics_init_mod, only : snow_lev_tile #endif + use nl_physics_config_mod, only : use_nl_physics implicit none private @@ -108,6 +109,8 @@ subroutine create_iau_fields( mesh, twod_mesh, depository, & read_behaviour=read_behaviour ) #ifdef UM_PHYSICS + +if (use_nl_physics) then if ( iau_wet_density ) then call setup_field( iau_fields, depository, prognostic_fields, & "rho_r2_inc", W3, mesh, checkpoint_restart_flag, & @@ -117,6 +120,7 @@ subroutine create_iau_fields( mesh, twod_mesh, depository, & "rho_inc", W3, mesh, checkpoint_restart_flag, & read_behaviour=read_behaviour ) end if +endif! (use_nl_physics) then #endif call setup_field( iau_fields, depository, prognostic_fields, & @@ -128,6 +132,8 @@ subroutine create_iau_fields( mesh, twod_mesh, depository, & read_behaviour=read_behaviour ) #ifdef UM_PHYSICS + +if (use_nl_physics) then ! IAU control-pert pert increment fields if ( iau_use_pertinc ) then call log_event( 'Create IAU pert fields', LOG_LEVEL_INFO ) @@ -176,6 +182,7 @@ subroutine create_iau_fields( mesh, twod_mesh, depository, & "exner_pert_inc", W3, mesh, checkpoint_restart_flag, & read_behaviour=read_behaviour ) end if ! ( iau_use_pertinc ) +endif! (use_nl_physics) then #endif if (iau_surf) then @@ -189,6 +196,8 @@ subroutine create_iau_fields( mesh, twod_mesh, depository, & read_behaviour => read_field_generic #ifdef UM_PHYSICS + +if (use_nl_physics) then call setup_field( iau_surf_fields, depository, prognostic_fields, & "soil_temperature_inc", W3, mesh, checkpoint_restart_flag, & twod_mesh, read_behaviour=read_behaviour, twod=.true., ndata=sm_levels ) @@ -204,6 +213,7 @@ subroutine create_iau_fields( mesh, twod_mesh, depository, & call setup_field( iau_surf_fields, depository, prognostic_fields, & "tile_temperature_inc", W3, mesh, checkpoint_restart_flag, & twod_mesh, read_behaviour=read_behaviour, twod=.true., ndata=n_land_tile ) +endif! (use_nl_physics) then #endif end if @@ -226,6 +236,8 @@ subroutine create_iau_fields( mesh, twod_mesh, depository, & nullify( iau_fields, iau_surf_fields ) #ifdef UM_PHYSICS + +if (use_nl_physics) then ! Set up name of density increments if ( iau_wet_density ) then rho_inc_name = "rho_r2_inc" @@ -263,11 +275,13 @@ subroutine create_iau_fields( mesh, twod_mesh, depository, & "q_tot_inc", "qcl_tot_inc", & "qcf_tot_inc", "theta_tot_inc", & "exner_tot_inc", rho_inc_name ) +endif! (use_nl_physics) then #endif end subroutine create_iau_fields #ifdef UM_PHYSICS +!! nothing need here.... !> @brief Create additional types of iau increment fields. !> @details Create IAU field collection for additional increment !> types associated with additive inflation and the aggregated diff --git a/science/gungho/source/driver/create_physics_prognostics_mod.F90 b/science/gungho/source/driver/create_physics_prognostics_mod.F90 index a7f803c43..cfb66ae97 100644 --- a/science/gungho/source/driver/create_physics_prognostics_mod.F90 +++ b/science/gungho/source/driver/create_physics_prognostics_mod.F90 @@ -123,7 +123,7 @@ module create_physics_prognostics_mod use initialization_config_mod, only : init_option, & init_option_checkpoint_dump #endif - + use nl_physics_config_mod, only : use_nl_physics implicit none @@ -224,6 +224,8 @@ subroutine process_physics_prognostics(processor) end if #ifdef UM_PHYSICS + +if (use_nl_physics) then !======================================================================== ! Fields owned by the radiation scheme !======================================================================== @@ -1897,6 +1899,7 @@ subroutine process_physics_prognostics(processor) twod=.true., is_int=.true., ckp=checkpoint_flag, empty=is_empty)) end if +endif! (use_nl_physics) then #endif diff --git a/science/gungho/source/driver/field_maker_mod.F90 b/science/gungho/source/driver/field_maker_mod.F90 index a468e8335..92da8aa3a 100644 --- a/science/gungho/source/driver/field_maker_mod.F90 +++ b/science/gungho/source/driver/field_maker_mod.F90 @@ -55,6 +55,7 @@ module field_maker_mod get_ndata_val => get_multidata_field_dimension #endif + use nl_physics_config_mod, only : use_nl_physics implicit none private @@ -157,7 +158,12 @@ subroutine field_maker_apply(self, spec) real(r_second), allocatable :: all_checkpoint_times(:) #ifdef UM_PHYSICS + + if (use_nl_physics) then ndata = get_ndata_val(spec%mult) + else + ndata = 1 + end if #else ndata = 1 #endif diff --git a/science/gungho/source/driver/field_mapper_mod.F90 b/science/gungho/source/driver/field_mapper_mod.F90 index 8cec69f3d..11d50fc66 100644 --- a/science/gungho/source/driver/field_mapper_mod.F90 +++ b/science/gungho/source/driver/field_mapper_mod.F90 @@ -24,6 +24,7 @@ module field_mapper_mod use gungho_time_axes_mod, only : gungho_time_axes_type use lfric_xios_time_axis_mod, only : time_axis_type + use nl_physics_config_mod, only : use_nl_physics implicit none private @@ -223,6 +224,10 @@ subroutine init(self, & ! Create collection of fields to be advected #ifdef UM_PHYSICS + + if (use_nl_physics) then + + end if #endif call gungho_axes%initialise() diff --git a/science/gungho/source/driver/gungho_diagnostics_driver_mod.F90 b/science/gungho/source/driver/gungho_diagnostics_driver_mod.F90 index 1bfca57a2..0cbc7164a 100644 --- a/science/gungho/source/driver/gungho_diagnostics_driver_mod.F90 +++ b/science/gungho/source/driver/gungho_diagnostics_driver_mod.F90 @@ -61,6 +61,7 @@ module gungho_diagnostics_driver_mod use freeze_lev_alg_mod, only : freeze_lev_alg #endif + use nl_physics_config_mod, only : use_nl_physics implicit none private @@ -243,7 +244,14 @@ subroutine gungho_diagnostics_driver( modeldb, & end if call write_vorticity_diagnostic( u, exner, modeldb%clock ) #ifdef UM_PHYSICS +if (use_nl_physics) then call write_pv_diagnostic( u, theta, rho, exner, modeldb%clock ) +else + print*, "I dont think this is required to make it work...." + ! The issue is there are two methods and one is #ifdef out + ! so will need to fix this issue later + !!call write_pv_diagnostic( u, theta, rho, modeldb%clock ) +endif! (use_nl_physics) then #else call write_pv_diagnostic( u, theta, rho, modeldb%clock ) #endif @@ -327,6 +335,8 @@ subroutine gungho_diagnostics_driver( modeldb, & call pressure_diag_alg(exner_in_wth) #ifdef UM_PHYSICS + +if (use_nl_physics) then ! RH diagnostics call rh_diag_alg(exner_in_wth, theta, mr) ! Call PMSL algorithm @@ -335,6 +345,7 @@ subroutine gungho_diagnostics_driver( modeldb, & call pres_lev_diags_alg(derived_fields, theta, exner, mr, moist_dyn) ! Wet bulb freezing level call freeze_lev_alg(theta, mr, moist_dyn, exner_in_wth) +endif! (use_nl_physics) then #endif temp_corr_io_value => get_io_value( modeldb%values, 'temperature_correction_io_value') diff --git a/science/gungho/source/driver/gungho_driver_mod.F90 b/science/gungho/source/driver/gungho_driver_mod.F90 index 2c1e5a37a..dc8a0b2f5 100644 --- a/science/gungho/source/driver/gungho_driver_mod.F90 +++ b/science/gungho/source/driver/gungho_driver_mod.F90 @@ -102,6 +102,7 @@ module gungho_driver_mod use process_send_fields_2d_mod, only : save_sea_ice_frac_previous #endif + use nl_physics_config_mod, only : use_nl_physics implicit none private @@ -216,6 +217,8 @@ subroutine initialise( program_name, modeldb ) #endif #ifdef UM_PHYSICS + +if (use_nl_physics) then ! If IAU is active and increments need to be added instantaneously, to the initial ! state, then do this now. The IAU should not be activated at this stage in ! the case of a checkpoint-restart. @@ -273,6 +276,7 @@ subroutine initialise( program_name, modeldb ) flux_bc_opt == flux_bc_opt_specified_scalars_tstar ) then call flux_calc_init( modeldb ) end if +endif! (use_nl_physics) then #endif nullify(mesh, twod_mesh, aerosol_mesh, aerosol_twod_mesh) @@ -322,6 +326,8 @@ subroutine step( modeldb ) end if end if #ifdef UM_PHYSICS + +if (use_nl_physics) then nullify( surface_fields, ancil_fields ) regrid_operation => map_scalar_intermesh @@ -337,6 +343,7 @@ subroutine step( modeldb ) call setup_step_multifile_io( io_context_name, modeldb ) end if +endif! (use_nl_physics) then #endif ! Get model_axes out of modeldb model_axes => get_time_axes_from_collection(modeldb%values, "model_axes" ) @@ -346,6 +353,8 @@ subroutine step( modeldb ) twod_mesh => mesh_collection%get_mesh(mesh, TWOD) #ifdef UM_PHYSICS + +if (use_nl_physics) then ! Specified sensible and latent heat fluxes if ( flux_bc_opt == flux_bc_opt_specified_scalars .or. & flux_bc_opt == flux_bc_opt_specified_scalars_tstar ) then @@ -358,6 +367,7 @@ subroutine step( modeldb ) call update_tile_temperature_alg ( modeldb%clock, & surface_fields ) end if +endif! (use_nl_physics) then #endif lbc_fields => modeldb%fields%get_field_collection("lbc_fields") @@ -390,6 +400,8 @@ subroutine step( modeldb ) endif #ifdef UM_PHYSICS + +if (use_nl_physics) then ! If IAU is active and increments need to be added over a time window, then do this ! at the start of every ts within the required time window if ( iau ) then @@ -401,6 +413,7 @@ subroutine step( modeldb ) use_random_parameters ) then call stph_rp_main_alg( modeldb ) end if +endif! (use_nl_physics) then #endif ! Perform a timestep @@ -418,6 +431,8 @@ subroutine step( modeldb ) end if #ifdef UM_PHYSICS + +if (use_nl_physics) then ! Update time-varying ancillaries ! This is done last in the timestep, because the time data of the ! ancillaries needs to be that of the start of timestep, but the @@ -439,6 +454,7 @@ subroutine step( modeldb ) ! Update the time varying trace gases call gas_calc_all() +endif! (use_nl_physics) then #endif ! Write out the model state diff --git a/science/gungho/source/driver/gungho_init_fields_mod.X90 b/science/gungho/source/driver/gungho_init_fields_mod.X90 index db9e0d3db..6dd14cc37 100644 --- a/science/gungho/source/driver/gungho_init_fields_mod.X90 +++ b/science/gungho/source/driver/gungho_init_fields_mod.X90 @@ -134,6 +134,7 @@ module gungho_init_fields_mod use section_choice_config_mod, only : aerosol, aerosol_um use dust_transform_kernel_mod, only: dust_transform_kernel_type #endif + use nl_physics_config_mod, only : use_nl_physics implicit none @@ -506,6 +507,7 @@ subroutine create_model_data( modeldb, & modeldb%clock ) #ifdef UM_PHYSICS +if (use_nl_physics) then ! Create FD prognostic fields select case ( prognostic_init_choice ) case ( init_option_fd_start_dump ) @@ -528,6 +530,7 @@ subroutine create_model_data( modeldb, & ancil_fields, & mesh, twod_mesh ) end select +endif! (use_nl_physics) then #endif end if @@ -732,6 +735,7 @@ subroutine create_model_data( modeldb, & fd_fields ) ! Transform UM 2-bin dust to UKCA LFRIC 2-mode dust #ifdef UM_PHYSICS +if (use_nl_physics) then if ( aerosol == aerosol_um .and. & glomap_mode == glomap_mode_dust_and_clim ) then @@ -756,6 +760,7 @@ subroutine create_model_data( modeldb, & call depository%remove_field("dust2_mmr") end if +endif! (use_nl_physics) then #endif else call log_event("Gungho: Prognostic initialisation from an FD dump not valid "// & @@ -832,6 +837,7 @@ subroutine create_model_data( modeldb, & derived_fields) #ifdef UM_PHYSICS +if (use_nl_physics) then ! Initialise Casim numbers if they aren't coming from an LFRic dump if (microphysics_casim .and. & ( prognostic_init_choice /= init_option_checkpoint_dump ) ) then @@ -842,6 +848,7 @@ subroutine create_model_data( modeldb, & convection_fields, & initialise=.true.) end if +endif! (use_nl_physics) then #endif ! Initialise ancillary fields @@ -849,6 +856,8 @@ subroutine create_model_data( modeldb, & case ( ancil_option_none ) call log_event( "Gungho: No ancillaries to be read for this run.", LOG_LEVEL_INFO ) #ifdef UM_PHYSICS +!!! Im going to assume these options are just not called.... +!!! cant really uise: if (use_nl_physics) then ... case ( ancil_option_start_dump ) call log_event( "Gungho: Ancillaries are being read from start dump ", LOG_LEVEL_INFO ) ! Update the tiled surface temperature with the calculated tstar @@ -991,6 +1000,7 @@ subroutine create_model_data( modeldb, & ranseed(1:random_seed_size) = 0 #ifdef UM_PHYSICS +if (use_nl_physics) then if ( .not. checkpoint_read .or. use_random_parameters ) then if ( use_spt .or. use_skeb .or. use_random_parameters ) then ! Random seed will depend on ensemble member number @@ -1007,6 +1017,7 @@ subroutine create_model_data( modeldb, & call stph_rp_init_alg( modeldb ) end if end if +endif! (use_nl_physics) then #endif if ( checkpoint_read ) then ! Read the checkpointed random seed @@ -1040,11 +1051,13 @@ subroutine create_model_data( modeldb, & field_collection_ptr => modeldb%fields%get_field_collection("iau_fields") call read_state( field_collection_ptr ) #ifdef UM_PHYSICS +if (use_nl_physics) then if ( iau_use_pertinc ) then call log_event( 'IAU: read pertinc file in initialise', LOG_LEVEL_INFO ) field_collection_ptr => modeldb%fields%get_field_collection("iau_pert_fields") call read_state( field_collection_ptr ) end if +endif! (use_nl_physics) then #endif end if @@ -1242,10 +1255,12 @@ subroutine create_model_data( modeldb, & end if #ifdef UM_PHYSICS +if (use_nl_physics) then if ( iau_use_pertinc ) then field_collection_ptr => modeldb%fields%get_field_collection("iau_pert_fields") call field_collection_ptr%clear() end if +endif! (use_nl_physics) then #endif lbc_fields => modeldb%fields%get_field_collection("lbc_fields") diff --git a/science/gungho/source/driver/gungho_model_mod.F90 b/science/gungho/source/driver/gungho_model_mod.F90 index 00c9842f7..8833fe1eb 100644 --- a/science/gungho/source/driver/gungho_model_mod.F90 +++ b/science/gungho/source/driver/gungho_model_mod.F90 @@ -113,6 +113,7 @@ module gungho_model_mod use jules_timestep_alg_mod, only : jules_timestep_type #endif + use nl_physics_config_mod, only : use_nl_physics implicit none private @@ -870,6 +871,8 @@ subroutine initialise_infrastructure( io_context_name, modeldb ) call create_runtime_constants() #ifdef UM_PHYSICS + +if (use_nl_physics) then if ( use_physics ) then ! Initialise time-varying trace gases call gas_calc_all() @@ -884,6 +887,7 @@ subroutine initialise_infrastructure( io_context_name, modeldb ) ! Initialisation of UM variables related to the mesh call um_domain_init(mesh) end if +endif! (use_nl_physics) then #endif if ( perturb_init ) then @@ -1039,11 +1043,14 @@ subroutine initialise_model( mesh, modeldb ) call log_event( log_scratch_space, LOG_LEVEL_WARNING ) #ifdef UM_PHYSICS case( method_jules ) ! jules +!!! prob not needed... +if (use_nl_physics) then ! Initialise the jules timestep method allocate( timestep_method, source=jules_timestep_type(modeldb) ) ! Add to the model database call modeldb%values%add_key_value('timestep_method', & timestep_method) +endif! (use_nl_physics) then #endif case default call log_event("Gungho: Incorrect time stepping option chosen, "// & diff --git a/science/gungho/source/driver/gungho_setup_io_mod.F90 b/science/gungho/source/driver/gungho_setup_io_mod.F90 index c169f4323..f33221ffd 100644 --- a/science/gungho/source/driver/gungho_setup_io_mod.F90 +++ b/science/gungho/source/driver/gungho_setup_io_mod.F90 @@ -164,6 +164,7 @@ module gungho_setup_io_mod use iau_config_mod, only: iau_use_pertinc #endif + use nl_physics_config_mod, only : use_nl_physics implicit none private @@ -266,6 +267,8 @@ subroutine init_gungho_files( files_list, modeldb ) end if #ifdef UM_PHYSICS + +if (use_nl_physics) then ! Setup ancillary files if( ancil_option == ancil_option_fixed .or. & ancil_option == ancil_option_updating ) then @@ -746,6 +749,7 @@ subroutine init_gungho_files( files_list, modeldb ) xios_id="int_flux_ancil", & io_mode=FILE_MODE_READ ) ) end if +endif! (use_nl_physics) then #endif ! Setup orography ancillary file @@ -773,12 +777,15 @@ subroutine init_gungho_files( files_list, modeldb ) xios_id="iau", & io_mode=FILE_MODE_READ )) #ifdef UM_PHYSICS + +if (use_nl_physics) then ! Setup the IAU pert increments file if ( iau_use_pertinc ) then call files_list%insert_item( lfric_xios_file_type( trim(iau_pert_path), & xios_id="iau_pert", & io_mode=FILE_MODE_READ )) end if +endif! (use_nl_physics) then #endif end if diff --git a/science/gungho/source/driver/iau_multifile_io/iau_multifile_io_mod.F90 b/science/gungho/source/driver/iau_multifile_io/iau_multifile_io_mod.F90 index f20db5bd3..6163061b7 100644 --- a/science/gungho/source/driver/iau_multifile_io/iau_multifile_io_mod.F90 +++ b/science/gungho/source/driver/iau_multifile_io/iau_multifile_io_mod.F90 @@ -39,6 +39,7 @@ module iau_multifile_io_mod use namelist_mod, only: namelist_type use step_calendar_mod, only: step_calendar_type + use nl_physics_config_mod, only : use_nl_physics implicit none private @@ -63,6 +64,8 @@ subroutine init_multifile_io(io_context_name, modeldb) type(modeldb_type), intent(inout) :: modeldb #ifdef UM_PHYSICS + +if (use_nl_physics) then if ( iau_use_addinf ) then call iau_incs_firstfile_io ( io_context_name, & modeldb, & @@ -86,6 +89,7 @@ subroutine init_multifile_io(io_context_name, modeldb) "iau_bcorr_fields", & "iau_bcorr_io" ) end if +endif! (use_nl_physics) then #endif end subroutine init_multifile_io @@ -152,6 +156,8 @@ subroutine setup_step_multifile_io( io_context_name, modeldb ) type(modeldb_type), intent(inout) :: modeldb #ifdef UM_PHYSICS + +if (use_nl_physics) then if ( iau_use_addinf ) then call step_multifile_io( io_context_name, & modeldb, & @@ -169,6 +175,7 @@ subroutine setup_step_multifile_io( io_context_name, modeldb ) modeldb, & "iau_bcorr_io" ) end if +endif! (use_nl_physics) then #endif end subroutine setup_step_multifile_io diff --git a/science/gungho/source/driver/iau_time_control_mod.F90 b/science/gungho/source/driver/iau_time_control_mod.F90 index 420e58fe7..cdb45c86b 100644 --- a/science/gungho/source/driver/iau_time_control_mod.F90 +++ b/science/gungho/source/driver/iau_time_control_mod.F90 @@ -22,6 +22,7 @@ module iau_time_control_mod iau_mode_instantaneous #endif + use nl_physics_config_mod, only : use_nl_physics implicit none public :: calc_iau_ts_end, & @@ -51,6 +52,8 @@ function calc_iau_ts_num( model_clock, iau_time ) result( timestep_index ) dt = 0.0_r_def timestep_index = 0.0_i_def #ifdef UM_PHYSICS + +if (use_nl_physics) then dt = real(model_clock%get_seconds_per_step(), r_def) if ( dt <= 0.0_r_def ) then @@ -59,6 +62,7 @@ function calc_iau_ts_num( model_clock, iau_time ) result( timestep_index ) end if timestep_index = nint( iau_time / dt ) + 1.0_i_def +endif! (use_nl_physics) then #endif end function calc_iau_ts_num @@ -82,9 +86,12 @@ function calc_iau_ts_end( model_clock ) result( iau_ts_end ) iau_ts_num = 0.0_i_def iau_ts_end = 0.0_i_def #ifdef UM_PHYSICS + +if (use_nl_physics) then iau_time = iau_window_length iau_ts_num = calc_iau_ts_num( model_clock, iau_time ) iau_ts_end = iau_ts_start + iau_ts_num - 1.0_r_def +endif! (use_nl_physics) then #endif end function calc_iau_ts_end @@ -113,6 +120,8 @@ function calc_iau_weight( model_clock, iau_tendency ) result( iau_weight ) iau_ts_num = 0.0_i_def iau_weight = 0.0_r_def #ifdef UM_PHYSICS + +if (use_nl_physics) then if (iau_mode == iau_mode_instantaneous) then iau_weight = 1.0_r_def else if ( iau_tendency ) then @@ -122,6 +131,7 @@ function calc_iau_weight( model_clock, iau_tendency ) result( iau_weight ) iau_ts_num = calc_iau_ts_num( model_clock, iau_time ) iau_weight = 1.0_r_def / real( iau_ts_num, r_def ) end if +endif! (use_nl_physics) then #endif end function calc_iau_weight diff --git a/science/gungho/source/physics/multidata_field_dimensions_mod.F90 b/science/gungho/source/physics/multidata_field_dimensions_mod.F90 index b53cbfbdf..4ad3c311e 100644 --- a/science/gungho/source/physics/multidata_field_dimensions_mod.F90 +++ b/science/gungho/source/physics/multidata_field_dimensions_mod.F90 @@ -20,6 +20,7 @@ module multidata_field_dimensions_mod urban, & urban_canyon #endif + use nl_physics_config_mod, only : use_nl_physics implicit none @@ -77,6 +78,7 @@ subroutine sync_multidata_field_dimensions() #ifdef UM_PHYSICS logical(l_def), parameter :: tolerate_missing_axes = .true. integer(i_def) :: i +if (use_nl_physics) then do i=1,size(multidata_items) call set_axis_dimension( & multidata_items(i), & @@ -121,7 +123,7 @@ subroutine sync_multidata_field_dimensions() 1, & tolerate_missing_axes) end if - +endif! (use_nl_physics) then #endif end subroutine sync_multidata_field_dimensions @@ -175,9 +177,11 @@ function get_multidata_field_dimension(multidata_item) result (dim) character(*), intent(in) :: multidata_item integer(kind=i_def) :: dim - - select case (multidata_item) +!!!! BIT of a mess bit I think this should work... #ifdef UM_PHYSICS +if (use_nl_physics) then + select case (multidata_item) +!#ifdef UM_PHYSICS case ('plant_func_types') dim = npft case ('sea_ice_categories') @@ -275,7 +279,7 @@ function get_multidata_field_dimension(multidata_item) result (dim) end if case ('') dim = 1 ! ordinary (non-multidata) field -#endif +!!!!!#endif case default if (use_xios_io) then ! attempt to get it from XIOS metadata @@ -287,6 +291,30 @@ function get_multidata_field_dimension(multidata_item) result (dim) call log_event(log_scratch_space, LOG_LEVEL_ERROR) end if end select +else! (use_nl_physics) then + if (use_xios_io) then + ! attempt to get it from XIOS metadata + dim = get_axis_dimension(multidata_item) + else + dim = 1 ! silence compiler warning + write(log_scratch_space, '(A, A)') & + 'Unexpected multidata item: ', multidata_item + call log_event(log_scratch_space, LOG_LEVEL_ERROR) + end if +endif! (use_nl_physics) then + +#else + if (use_xios_io) then + ! attempt to get it from XIOS metadata + dim = get_axis_dimension(multidata_item) + else + dim = 1 ! silence compiler warning + write(log_scratch_space, '(A, A)') & + 'Unexpected multidata item: ', multidata_item + call log_event(log_scratch_space, LOG_LEVEL_ERROR) + end if +#endif + end function get_multidata_field_dimension diff --git a/science/gungho/source/physics/time_dimensions_mod.F90 b/science/gungho/source/physics/time_dimensions_mod.F90 index 7a37fe969..05f765a85 100644 --- a/science/gungho/source/physics/time_dimensions_mod.F90 +++ b/science/gungho/source/physics/time_dimensions_mod.F90 @@ -49,6 +49,7 @@ module time_dimensions_mod use chemistry_config_mod, only: chem_scheme, chem_scheme_strattrop, & chem_scheme_strat_test #endif + use nl_physics_config_mod, only : use_nl_physics implicit none private @@ -189,12 +190,15 @@ function get_reynolds_dim() result(tdim) integer(i_def) :: tdim tdim = 0 #ifdef UM_PHYSICS + +if (use_nl_physics) then if(ancil_option == ancil_option_fixed .or. & ancil_option == ancil_option_updating ) then if (.not. get_ancil_dim(ancil_dir, sst_ancil_path, tdim)) return end if +endif! (use_nl_physics) then #endif end function get_reynolds_dim @@ -209,6 +213,8 @@ function get_emiss_dim() result(tdim) integer(i_def) :: tdim tdim = 0 #ifdef UM_PHYSICS + +if (use_nl_physics) then ! conditions and list of emiss files from gungho_setup_io_mod; ! to be safe, we try them all in sequence if (glomap_mode == glomap_mode_ukca .and. & @@ -226,6 +232,7 @@ function get_emiss_dim() result(tdim) if (get_ancil_dim(ancil_dir, emiss_so2_high_ancil_path, tdim)) return end if +endif! (use_nl_physics) then #endif end function get_emiss_dim diff --git a/science/physics_schemes/source/aerosols/grow_particles_mod.F90 b/science/physics_schemes/source/aerosols/grow_particles_mod.F90 index 484897d46..0c1555e60 100644 --- a/science/physics_schemes/source/aerosols/grow_particles_mod.F90 +++ b/science/physics_schemes/source/aerosols/grow_particles_mod.F90 @@ -255,7 +255,7 @@ subroutine grow_particles (aerosol_type, humidity, ln_r0, ln_sigma, & ! linear growth as saturation is approached; in any case, at ! such high humidities the impact of aerosol will be swamped ! by the effect of cloud. - humidity_eff = min (humidity, 0.995) + humidity_eff = min (humidity, real(0.995, kind=real_umphys)) ! Initialise to default values of alpha and beta (1.0 means that ! there is no growth, which will be the case for humidities @@ -374,7 +374,7 @@ subroutine grow_particles (aerosol_type, humidity, ln_r0, ln_sigma, & ( aerosol_type == ip_ocff_aged ) ) then ! Not using Fitzgerald: cap humidity to max value of 100% - humidity_eff = min (humidity, 1.0) + humidity_eff = min (humidity, real(1.0, kind=real_umphys)) ! Verify that 0.0 <= humidity_eff <= 1.0. if ( humidity_eff < 0.0 .or. humidity_eff > 1.0) then @@ -408,7 +408,7 @@ subroutine grow_particles (aerosol_type, humidity, ln_r0, ln_sigma, & else if ( aerosol_type == ip_biogenic ) then ! Not using Fitzgerald: cap humidity to max value of 100% - humidity_eff = min (humidity, 1.0) + humidity_eff = min (humidity, real(1.0, kind=real_umphys)) ! Verify that 0.0 <= humidity_eff <= 1.0. if ( humidity_eff < 0.0 .or. humidity_eff > 1.0) then From ac34472de4bdc19190587a5c1a9409456c087c75 Mon Sep 17 00:00:00 2001 From: ss421 Date: Mon, 27 Apr 2026 16:31:19 +0100 Subject: [PATCH 04/25] Add lfric_atm iodef configuration files --- .../app/jedi_forecast/file/axis_def_plev.xml | 14 + .../jedi_forecast/file/file_def_ancil_gal.xml | 28 ++ .../file/file_def_ancil_hadisst.xml | 17 + .../file/file_def_ancil_main.xml | 301 ++++++++++++++++++ .../file/file_def_check_restart.xml | 15 + .../file/file_def_diags_gal_nwp.xml | 181 +++++++++++ .../file/file_def_diags_name.xml | 46 +++ .../jedi_forecast/file/file_def_diags_ver.xml | 79 +++++ .../file/file_def_initial_diags.xml | 20 ++ .../app/jedi_forecast/file/iodef_gal_nwp.xml | 174 ++++++++++ 10 files changed, 875 insertions(+) create mode 100644 rose-stem/app/jedi_forecast/file/axis_def_plev.xml create mode 100644 rose-stem/app/jedi_forecast/file/file_def_ancil_gal.xml create mode 100644 rose-stem/app/jedi_forecast/file/file_def_ancil_hadisst.xml create mode 100644 rose-stem/app/jedi_forecast/file/file_def_ancil_main.xml create mode 100644 rose-stem/app/jedi_forecast/file/file_def_check_restart.xml create mode 100644 rose-stem/app/jedi_forecast/file/file_def_diags_gal_nwp.xml create mode 100644 rose-stem/app/jedi_forecast/file/file_def_diags_name.xml create mode 100644 rose-stem/app/jedi_forecast/file/file_def_diags_ver.xml create mode 100644 rose-stem/app/jedi_forecast/file/file_def_initial_diags.xml create mode 100644 rose-stem/app/jedi_forecast/file/iodef_gal_nwp.xml diff --git a/rose-stem/app/jedi_forecast/file/axis_def_plev.xml b/rose-stem/app/jedi_forecast/file/axis_def_plev.xml new file mode 100644 index 000000000..b1f446983 --- /dev/null +++ b/rose-stem/app/jedi_forecast/file/axis_def_plev.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/rose-stem/app/jedi_forecast/file/file_def_ancil_gal.xml b/rose-stem/app/jedi_forecast/file/file_def_ancil_gal.xml new file mode 100644 index 000000000..6bcb984da --- /dev/null +++ b/rose-stem/app/jedi_forecast/file/file_def_ancil_gal.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/rose-stem/app/jedi_forecast/file/file_def_ancil_hadisst.xml b/rose-stem/app/jedi_forecast/file/file_def_ancil_hadisst.xml new file mode 100644 index 000000000..043e2911f --- /dev/null +++ b/rose-stem/app/jedi_forecast/file/file_def_ancil_hadisst.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/rose-stem/app/jedi_forecast/file/file_def_ancil_main.xml b/rose-stem/app/jedi_forecast/file/file_def_ancil_main.xml new file mode 100644 index 000000000..b48fa864a --- /dev/null +++ b/rose-stem/app/jedi_forecast/file/file_def_ancil_main.xml @@ -0,0 +1,301 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/rose-stem/app/jedi_forecast/file/file_def_check_restart.xml b/rose-stem/app/jedi_forecast/file/file_def_check_restart.xml new file mode 100644 index 000000000..05ba6dcbc --- /dev/null +++ b/rose-stem/app/jedi_forecast/file/file_def_check_restart.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/rose-stem/app/jedi_forecast/file/file_def_diags_gal_nwp.xml b/rose-stem/app/jedi_forecast/file/file_def_diags_gal_nwp.xml new file mode 100644 index 000000000..6b88af04e --- /dev/null +++ b/rose-stem/app/jedi_forecast/file/file_def_diags_gal_nwp.xml @@ -0,0 +1,181 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/rose-stem/app/jedi_forecast/file/file_def_diags_name.xml b/rose-stem/app/jedi_forecast/file/file_def_diags_name.xml new file mode 100644 index 000000000..fbe16d0e1 --- /dev/null +++ b/rose-stem/app/jedi_forecast/file/file_def_diags_name.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/rose-stem/app/jedi_forecast/file/file_def_diags_ver.xml b/rose-stem/app/jedi_forecast/file/file_def_diags_ver.xml new file mode 100644 index 000000000..5e28ad32e --- /dev/null +++ b/rose-stem/app/jedi_forecast/file/file_def_diags_ver.xml @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/rose-stem/app/jedi_forecast/file/file_def_initial_diags.xml b/rose-stem/app/jedi_forecast/file/file_def_initial_diags.xml new file mode 100644 index 000000000..c1bca4231 --- /dev/null +++ b/rose-stem/app/jedi_forecast/file/file_def_initial_diags.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/rose-stem/app/jedi_forecast/file/iodef_gal_nwp.xml b/rose-stem/app/jedi_forecast/file/iodef_gal_nwp.xml new file mode 100644 index 000000000..1f3b8c677 --- /dev/null +++ b/rose-stem/app/jedi_forecast/file/iodef_gal_nwp.xml @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + performance + 1.0 + + + + true + 50 + true + + + + + From b7d0d1432b7effa38e9089cb6e9bd1fb8208f2d4 Mon Sep 17 00:00:00 2001 From: ss421 Date: Mon, 27 Apr 2026 23:26:24 +0100 Subject: [PATCH 05/25] Add cray fortran mk files... --- .../jedi_lfric_tests/build/fortran/crayftn.mk | 13 +++++ .../build/fortran/crayftn/fast-debug.mk | 55 +++++++++++++++++++ .../build/fortran/crayftn/full-debug.mk | 17 ++++++ .../build/fortran/crayftn/production.mk | 36 ++++++++++++ 4 files changed, 121 insertions(+) create mode 100644 applications/jedi_lfric_tests/build/fortran/crayftn.mk create mode 100644 applications/jedi_lfric_tests/build/fortran/crayftn/fast-debug.mk create mode 100644 applications/jedi_lfric_tests/build/fortran/crayftn/full-debug.mk create mode 100644 applications/jedi_lfric_tests/build/fortran/crayftn/production.mk diff --git a/applications/jedi_lfric_tests/build/fortran/crayftn.mk b/applications/jedi_lfric_tests/build/fortran/crayftn.mk new file mode 100644 index 000000000..49286c047 --- /dev/null +++ b/applications/jedi_lfric_tests/build/fortran/crayftn.mk @@ -0,0 +1,13 @@ +############################################################################## +# (c) Crown copyright 2017 Met Office. All rights reserved. +# The file LICENCE, distributed with this code, contains details of the terms +# under which the code may be used. +############################################################################## +# Various things specific to the Cray Fortran compiler. +############################################################################## + +$(info Project specials for Cray compiler) + +export FFLAGS_UM_PHYSICS = -s real64 + +include $(PROJECT_DIR)/build/fortran/crayftn/$(PROFILE).mk \ No newline at end of file diff --git a/applications/jedi_lfric_tests/build/fortran/crayftn/fast-debug.mk b/applications/jedi_lfric_tests/build/fortran/crayftn/fast-debug.mk new file mode 100644 index 000000000..a627d2556 --- /dev/null +++ b/applications/jedi_lfric_tests/build/fortran/crayftn/fast-debug.mk @@ -0,0 +1,55 @@ +############################################################################## +# (c) Crown copyright 2025 Met Office. All rights reserved. +# The file LICENCE, distributed with this code, contains details of the terms +# under which the code may be used. +############################################################################## +############################################################################## +# Various things specific to fast-debug lfric_atm when using the +# Cray Fortran compiler. +# To override flags specified in LFRic Core, use +# FFLAGS_SAFE_OPTIMISATION, to add an additional flag to what is specified +# in Core, use FFLAGS_EXTRA. If you need to add debugging flags to a module, +# modify FFLAGS_DEBUG for the target module. +# All flag modification should be `private` so they are not inherited by +# submodules. +############################################################################## + +# ========================================================================== +# NON-DEBUG FLAGS +# ========================================================================== +# UKCA +%ukca_emiss_mode_mod.o: private FFLAGS_SAFE_OPTIMISATION = -O0 +%ukca_step_control_mod.o: private FFLAGS_SAFE_OPTIMISATION = -O0 + +# UM +%parcel_ascent_5a.o: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS) -hvector0 + +# LFRic Apps +%aerosol_ukca_alg_mod_psy.o: private FFLAGS_SAFE_OPTIMISATION = -O0 +%bl_exp_alg_mod_psy.o: private FFLAGS_SAFE_OPTIMISATION = -O0 +%bl_imp_alg_mod_psy.o: private FFLAGS_SAFE_OPTIMISATION = -O0 +%conv_comorph_alg_mod_psy.o: private FFLAGS_SAFE_OPTIMISATION = -O0 +%conv_comorph_kernel_mod.o: private FFLAGS_SAFE_OPTIMISATION = -O0 +%conv_gr_alg_mod_psy.o: private FFLAGS_SAFE_OPTIMISATION = -O0 +%gungho_model_mod.o: private FFLAGS_SAFE_OPTIMISATION = -O0 +%init_aerosol_fields_alg_mod_psy.o: private FFLAGS_SAFE_OPTIMISATION = -O0 +%jules_extra_kernel_mod.o: private FFLAGS_SAFE_OPTIMISATION = -O0 +large_scale_precipitation/%.o: private FFLAGS_SAFE_OPTIMISATION = -O2 -hfp0 -hflex_mp=strict + +# ========================================================================== +# DEBUG FLAGS +# ========================================================================== +# UKCA +%ukca_emiss_mode_mod.o: private FFLAGS_DEBUG = -G0 +%ukca_step_control_mod.o: private FFLAGS_DEBUG = -G0 + +# LFRic Apps +%aerosol_ukca_alg_mod_psy.o: private FFLAGS_DEBUG = -G0 +%bl_exp_alg_mod_psy.o: private FFLAGS_DEBUG = -G0 +%bl_imp_alg_mod_psy.o: private FFLAGS_DEBUG = -G0 +%conv_comorph_alg_mod_psy.o: private FFLAGS_DEBUG = -G0 +%conv_comorph_kernel_mod.o: private FFLAGS_DEBUG = -G0 +%conv_gr_alg_mod_psy.o: private FFLAGS_DEBUG = -G0 +%gungho_model_mod.o: private FFLAGS_DEBUG = -G0 +%init_aerosol_fields_alg_mod_psy.o: private FFLAGS_DEBUG = -G0 +%jules_extra_kernel_mod.o: private FFLAGS_DEBUG = -G0 diff --git a/applications/jedi_lfric_tests/build/fortran/crayftn/full-debug.mk b/applications/jedi_lfric_tests/build/fortran/crayftn/full-debug.mk new file mode 100644 index 000000000..a5b3d45a3 --- /dev/null +++ b/applications/jedi_lfric_tests/build/fortran/crayftn/full-debug.mk @@ -0,0 +1,17 @@ +############################################################################## +# (c) Crown copyright 2025 Met Office. All rights reserved. +# The file LICENCE, distributed with this code, contains details of the terms +# under which the code may be used. +############################################################################## +############################################################################## +# Various things specific to full-debug lfric_atm when using the +# Cray Fortran compiler. +############################################################################## + +# ========================================================================== +# NON-DEBUG FLAGS +# ========================================================================== + +# ========================================================================== +# DEBUG FLAGS +# ========================================================================== diff --git a/applications/jedi_lfric_tests/build/fortran/crayftn/production.mk b/applications/jedi_lfric_tests/build/fortran/crayftn/production.mk new file mode 100644 index 000000000..ddf5ca86c --- /dev/null +++ b/applications/jedi_lfric_tests/build/fortran/crayftn/production.mk @@ -0,0 +1,36 @@ +############################################################################## +# (c) Crown copyright 2025 Met Office. All rights reserved. +# The file LICENCE, distributed with this code, contains details of the terms +# under which the code may be used. +############################################################################## +############################################################################## +# Various things specific to production lfric_atm when using the +# Cray Fortran compiler. +############################################################################## + +# ========================================================================== +# DIRECTORIES +# ========================================================================== +gravity_wave_drag/%.o: private FFLAGS_RISKY_OPTIMISATION = -O2 -hflex_mp=strict + +# ========================================================================== +# MODULES +# ========================================================================== +# UKCA +%ukca_emiss_mode_mod.o: private FFLAGS_RISKY_OPTIMISATION = -O0 +%ukca_step_control_mod.o: private FFLAGS_RISKY_OPTIMISATION = -O0 + +# UM +%parcel_ascent_5a.o: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS) -hvector0 + +# LFRic Apps +%aerosol_ukca_alg_mod_psy.o: private FFLAGS_RISKY_OPTIMISATION = -O0 +%bl_exp_alg_mod_psy.o: private FFLAGS_RISKY_OPTIMISATION = -O0 +%bl_imp_alg_mod_psy.o: private FFLAGS_RISKY_OPTIMISATION = -O0 +%conv_comorph_alg_mod_psy.o: private FFLAGS_RISKY_OPTIMISATION = -O0 +%conv_comorph_kernel_mod.o: private FFLAGS_RISKY_OPTIMISATION = -O0 +%conv_gr_alg_mod_psy.o: private FFLAGS_RISKY_OPTIMISATION = -O0 +%gungho_model_mod.o: private FFLAGS_RISKY_OPTIMISATION = -O0 +%init_aerosol_fields_alg_mod_psy.o: private FFLAGS_RISKY_OPTIMISATION = -O0 +%jules_extra_kernel_mod.o: private FFLAGS_RISKY_OPTIMISATION = -O0 +large_scale_precipitation/%.o: private FFLAGS_SAFE_OPTIMISATION = -O3 -hipa3 -hflex_mp=conservative From 443933538e043ecb5cd29a2271912403d42679d0 Mon Sep 17 00:00:00 2001 From: ss421 Date: Tue, 28 Apr 2026 10:12:57 +0100 Subject: [PATCH 06/25] Physics integration: enable NL physics in jedi_forecast and lfric_atm drivers; config updates for gh-si-for-linear-C12 --- .../jedi_lfric_tests/source/jedi_forecast.f90 | 5 ++ applications/lfric_atm/source/lfric_atm.f90 | 4 + .../opt/rose-app-gh-si-for-linear.conf | 84 +------------------ rose-stem/app/jedi_forecast/rose-app.conf | 2 +- .../tasks_jedi_lfric_tests.cylc | 6 +- 5 files changed, 16 insertions(+), 85 deletions(-) diff --git a/applications/jedi_lfric_tests/source/jedi_forecast.f90 b/applications/jedi_lfric_tests/source/jedi_forecast.f90 index 00150b30d..eda417e7b 100644 --- a/applications/jedi_lfric_tests/source/jedi_forecast.f90 +++ b/applications/jedi_lfric_tests/source/jedi_forecast.f90 @@ -36,6 +36,8 @@ program jedi_forecast use jedi_model_mod, only : jedi_model_type use jedi_post_processor_empty_mod, only : jedi_post_processor_empty_type + use nl_physics_config_mod, only: use_nl_physics + implicit none ! Emulator objects @@ -56,6 +58,9 @@ program jedi_forecast character(*), parameter :: program_name = "jedi_forecast" + ! Set use_nl_physics=true to avoid the hacked-out code + use_nl_physics = .true. + ! Infrastructure config call parse_command_line( filename ) diff --git a/applications/lfric_atm/source/lfric_atm.f90 b/applications/lfric_atm/source/lfric_atm.f90 index e77c16ddb..d6376c413 100644 --- a/applications/lfric_atm/source/lfric_atm.f90 +++ b/applications/lfric_atm/source/lfric_atm.f90 @@ -32,6 +32,7 @@ program lfric_atm start_timing, stop_timing, & tik, LPROF use io_config_mod, only: timer_output_path + use nl_physics_config_mod, only: use_nl_physics implicit none @@ -45,6 +46,9 @@ program lfric_atm logical :: lsubroutine_timers + ! Set use_nl_physics=true to avoid the hacked-out code + use_nl_physics = .true. + call parse_command_line( filename ) modeldb%mpi => global_mpi diff --git a/rose-stem/app/jedi_forecast/opt/rose-app-gh-si-for-linear.conf b/rose-stem/app/jedi_forecast/opt/rose-app-gh-si-for-linear.conf index c25ab8db7..fb7cc9d98 100644 --- a/rose-stem/app/jedi_forecast/opt/rose-app-gh-si-for-linear.conf +++ b/rose-stem/app/jedi_forecast/opt/rose-app-gh-si-for-linear.conf @@ -1,82 +1,2 @@ -[!!namelist:damping_layer] - -[namelist:extrusion] -domain_height=10000.0 -method='uniform' -!!stretching_height=17500.0 -stretching_method='linear' - -[namelist:formulation] -dlayer_on=.false. -dry_static_adjust=.false. -exner_from_eos=.true. -lagged_orog=.false. -moisture_formulation='dry' -!!theta_moist_source=.false. -use_physics=.false. - -[namelist:helmholtz_solver] -fail_on_non_converged=.true. -gcrk=18 -method='bicgstab' -monitor_convergence=.true. -si_pressure_a_tol=1.0e-6 -si_pressure_maximum_iterations=800 - -[namelist:initial_pressure] -method='sampled' - -[namelist:initial_temperature] -pert_centre=120.0 - -[namelist:linear] -fixed_ls=.false. -transport_efficiency=.false. - -[namelist:mixed_solver] -gcrk=6 -mixed_solver_a_tol=1.0e-6 -reference_reset_time=90. -si_tolerance=1.0e-3 - -[namelist:physics] -!!limit_drag_incs=.false. -!!sample_physics_scalars=.true. -!!sample_physics_winds=.true. -!!sample_physics_winds_correction=.false. - -[namelist:planet] -scaling_factor=125.0 - -[namelist:section_choice] -!!aerosol='none' -!!boundary_layer='none' -!!chemistry='none' -!!cloud='none' -!!methane_oxidation=.false. -!!orographic_drag='none' -!!radiation='none' -!!spectral_gwd='none' -!!stochastic_physics='none' -!!surface='none' - -[namelist:solver] -maximum_iterations=13 - -[namelist:time] -timestep_end='3' -timestep_start='1' - -[namelist:timestepping] -alpha=0.5 -tau_t=0.5 -tau_u=0.5 - -[namelist:transport] -cfl_mol_1d_stab=2.0 -cfl_mol_2d_stab=2.0 -cfl_mol_3d_stab=2.0 -log_space=5*.false. -max_vert_cfl_calc='uniform' -reversible=5*.false. -runge_kutta_method='ssp5' +[namelist:initialization] +zero_w2v_wind=.true. diff --git a/rose-stem/app/jedi_forecast/rose-app.conf b/rose-stem/app/jedi_forecast/rose-app.conf index 7897c7b07..ab55329cb 100644 --- a/rose-stem/app/jedi_forecast/rose-app.conf +++ b/rose-stem/app/jedi_forecast/rose-app.conf @@ -105,7 +105,7 @@ source=namelist:jedi_lfric_tests [file:iodef.xml] mode=auto -source=$ROSE_SUITE_DIR/app/lfric_atm/file/iodef_gal_nwp.xml +source=$ROSE_SUITE_DIR/app/jedi_forecast/file/iodef_gal_nwp.xml [file:lut] mode=symlink+ diff --git a/rose-stem/site/common/jedi_lfric_tests/tasks_jedi_lfric_tests.cylc b/rose-stem/site/common/jedi_lfric_tests/tasks_jedi_lfric_tests.cylc index 25cf5232d..49daf606e 100644 --- a/rose-stem/site/common/jedi_lfric_tests/tasks_jedi_lfric_tests.cylc +++ b/rose-stem/site/common/jedi_lfric_tests/tasks_jedi_lfric_tests.cylc @@ -25,13 +25,15 @@ }) %} {% elif task_ns.conf_name == "forecast_gh-si-for-linear-C12" %} - +### useing lfric_atm: nwp_gal9-C12 - miss-using the names of things for now... +### gh-si-for-linear == um_dump +### can change the time step... {% do task_dict.update({ "app_name": "jedi_forecast", "opt_confs": ["gh-si-for-linear"], "resolution": "C12", "ancil_resolution": "C12", - "DT": 90, + "DT": 1800, "tsteps": 13, "mpi_parts": 6, }) %} From 360f0313bc2f791d0dd5ea6c4392bb09f09d2b24 Mon Sep 17 00:00:00 2001 From: ss421 Date: Tue, 28 Apr 2026 22:34:44 +0100 Subject: [PATCH 07/25] Update to include physics and code fixes - local build and run of forecast is working --- applications/jedi_lfric_tests/Makefile | 17 ++++++++++++++--- .../source/jedi-interface/jedi_model_mod.f90 | 13 ------------- .../nl/jedi_lfric_nl_modeldb_driver_mod.f90 | 2 +- 3 files changed, 15 insertions(+), 17 deletions(-) diff --git a/applications/jedi_lfric_tests/Makefile b/applications/jedi_lfric_tests/Makefile index d75cb9b13..133599695 100644 --- a/applications/jedi_lfric_tests/Makefile +++ b/applications/jedi_lfric_tests/Makefile @@ -127,6 +127,16 @@ build: ALWAYS $(Q)for SUBPROJECT in $(INTERNAL_DEPENDENCIES) ; do \ $(MAKE) $(QUIET_ARG) -f $$SUBPROJECT/build/import.mk ; done $(call MESSAGE,========================================) + $(call MESSAGE,Extracting coupled_interface component) + $(call MESSAGE,========================================) + $Q$(MAKE) $(QUIET_ARG) -f $(LFRIC_BUILD)/extract.mk \ + SOURCE_DIR=$(APPS_ROOT_DIR)/interfaces/coupled_interface/source + $(call MESSAGE,========================================) + $(call MESSAGE,Extracting Gungho dynamical core) + $(call MESSAGE,========================================) + $Q$(MAKE) $(QUIET_ARG) -f $(LFRIC_BUILD)/extract.mk \ + SOURCE_DIR=$(APPS_ROOT_DIR)/science/gungho/source + $(call MESSAGE,========================================) $(call MESSAGE,Extracting UM physics) $(call MESSAGE,========================================) $Q$(MAKE) $(QUIET_ARG) -f $(APPS_ROOT_DIR)/build/extract/extract_physics.mk @@ -140,13 +150,14 @@ build: ALWAYS $(call MESSAGE,Generating $(PROJECT) namelist loaders) $(call MESSAGE,=========================================================) $Q$(MAKE) $(QUIET_ARG) -f $(LFRIC_BUILD)/configuration.mk \ - PROJECT=$(PROJECT) \ - SOURCE_DIR=source \ - WORKING_DIR=$(WORKING_DIR) \ + SOURCE_DIR=$(APPS_ROOT_DIR)/science/gungho/source \ META_FILE_DIR=$(META_FILE_DIR) $(call MESSAGE,========================================) $(call MESSAGE,PSycloning interface components) $(call MESSAGE,========================================) + $Q$(MAKE) $(QUIET_ARG) -f $(LFRIC_BUILD)/psyclone/psyclone_psykal.mk \ + SOURCE_DIR=$(APPS_ROOT_DIR)/interfaces/coupled_interface/source \ + OPTIMISATION_PATH=$(OPTIMISATION_PATH) $Q$(MAKE) $(QUIET_ARG) -f $(LFRIC_BUILD)/psyclone/psyclone_psykal.mk \ SOURCE_DIR=$(APPS_ROOT_DIR)/interfaces/jules_interface/source \ OPTIMISATION_PATH=$(OPTIMISATION_PATH) diff --git a/applications/jedi_lfric_tests/source/jedi-interface/jedi_model_mod.f90 b/applications/jedi_lfric_tests/source/jedi-interface/jedi_model_mod.f90 index 752286602..7902fb23a 100644 --- a/applications/jedi_lfric_tests/source/jedi-interface/jedi_model_mod.f90 +++ b/applications/jedi_lfric_tests/source/jedi-interface/jedi_model_mod.f90 @@ -104,19 +104,6 @@ subroutine model_step(self, state) class( jedi_model_type ), target, intent(inout) :: self type( jedi_state_type ), intent(inout) :: state - ! Local - logical :: clock_running - - ! check the clock - clock_running = state%modeldb%clock%tick() - ! If the clock has finished then it will just get the - ! data at the end of the file - this prevents that - if ( .not. clock_running ) then - write ( log_scratch_space, '(A)' ) & - "Model::model_step::The LFRic clock has stopped." - call log_event( log_scratch_space, LOG_LEVEL_ERROR ) - endif - ! step gungho call step_nl( state%modeldb ) diff --git a/interfaces/jedi_lfric_interface/source/driver/nl/jedi_lfric_nl_modeldb_driver_mod.f90 b/interfaces/jedi_lfric_interface/source/driver/nl/jedi_lfric_nl_modeldb_driver_mod.f90 index 6d1405ba6..28a92fd67 100644 --- a/interfaces/jedi_lfric_interface/source/driver/nl/jedi_lfric_nl_modeldb_driver_mod.f90 +++ b/interfaces/jedi_lfric_interface/source/driver/nl/jedi_lfric_nl_modeldb_driver_mod.f90 @@ -139,7 +139,7 @@ subroutine finalise_modeldb( modeldb ) type(modeldb_type), intent(inout) :: modeldb call log_event( 'Finalising linear model modeldb', LOG_LEVEL_TRACE ) - +!!! Im not sure why I dont just call gungho_driver_mod: finalise here? ! Model configuration finalisation call finalise_model( modeldb ) From e9a25006e5476eea6feedb7ad19e79e34489f2ff Mon Sep 17 00:00:00 2001 From: ss421 Date: Wed, 29 Apr 2026 12:49:02 +0100 Subject: [PATCH 08/25] Fix config dump issue and remove intergration test --- applications/jedi_lfric_tests/Makefile | 24 +- .../algorithm/algorithm_test.f90 | 248 ------------------ .../algorithm/algorithm_test.py | 78 ------ .../algorithm_test_configuration.nml | 35 --- .../algorithm/resources/mesh_C12.nc | Bin 85792 -> 0 bytes .../algorithm/test_algorithm_mod.x90 | 104 -------- .../jedi_forecast/HEAD/rose-meta.conf | 34 +-- .../tasks_jedi_lfric_tests.cylc | 6 - .../meto/groups/groups_jedi_lfric_tests.cylc | 17 +- .../nci/groups/groups_jedi_lfric_tests.cylc | 10 - 10 files changed, 19 insertions(+), 537 deletions(-) delete mode 100644 applications/jedi_lfric_tests/integration-test/algorithm/algorithm_test.f90 delete mode 100755 applications/jedi_lfric_tests/integration-test/algorithm/algorithm_test.py delete mode 100644 applications/jedi_lfric_tests/integration-test/algorithm/resources/algorithm_test_configuration.nml delete mode 100644 applications/jedi_lfric_tests/integration-test/algorithm/resources/mesh_C12.nc delete mode 100644 applications/jedi_lfric_tests/integration-test/algorithm/test_algorithm_mod.x90 diff --git a/applications/jedi_lfric_tests/Makefile b/applications/jedi_lfric_tests/Makefile index 133599695..d42b4eb99 100644 --- a/applications/jedi_lfric_tests/Makefile +++ b/applications/jedi_lfric_tests/Makefile @@ -46,7 +46,7 @@ ifneq ("$(PSYCLONE_TRANSFORMATION)","none") endif .PHONY: default -default: build integration-tests +default: build $(Q)echo > /dev/null .PHONY: documentation doc docs @@ -239,28 +239,6 @@ unit-tests/%: export WORKING_DIR := $(WORKING_DIR)/unit-test unit-tests: unit-tests/run -############################################################################## -# Integration tests -# -integration-tests/%: export BIN_DIR ?= $(PROJECT_DIR)/test -integration-tests/%: export FFLAGS += -DINT_TEST -integration-tests/%: export IMPORT_PARTS = $(CORE_ROOT_DIR)/infrastructure \ - $(CORE_ROOT_DIR)/components/science \ - $(CORE_ROOT_DIR)/components/driver \ - $(CORE_ROOT_DIR)/components/inventory \ - $(CORE_ROOT_DIR)/components/lfric-xios \ - $(APPS_ROOT_DIR)/interfaces/jedi_lfric_interface \ - $(APPS_ROOT_DIR)/science/gungho \ - $(APPS_ROOT_DIR)/science/linear \ - $(APPS_ROOT_DIR)/science/adjoint -integration-tests/%: export META_FILE_DIR = rose-meta/jedi_lfric_tests/HEAD -integration-tests/%: export PROJECT = $(PROJECT_NAME) -integration-tests/%: export SOURCE_DIR = source -integration-tests/%: export TEST_DIR = integration-test -integration-tests/%: export WORKING_DIR := $(WORKING_DIR)/integration-tests -integration-tests: integration-tests/run - - ############################################################################## # Clean # diff --git a/applications/jedi_lfric_tests/integration-test/algorithm/algorithm_test.f90 b/applications/jedi_lfric_tests/integration-test/algorithm/algorithm_test.f90 deleted file mode 100644 index a62b68ecb..000000000 --- a/applications/jedi_lfric_tests/integration-test/algorithm/algorithm_test.f90 +++ /dev/null @@ -1,248 +0,0 @@ -!----------------------------------------------------------------------------- -! (C) Crown copyright 2023 Met Office. All rights reserved. -! The file LICENCE, distributed with this code, contains details of the terms -! under which the code may be used. -!----------------------------------------------------------------------------- - -!>@brief The top level program for the da dev algorithm -!! integration tests. -!>@details Sets up and runs the integration tests specified in -!! algorithms_test.py. Currently only -!! jedi_lfric_increment_alg_mod.x90 is tested, this algorithm -!! takes a real field and adds one to its value. -program algorithm_test - - use add_mesh_map_mod, only: assign_mesh_maps - use configuration_mod, only: final_configuration, & - read_configuration - use constants_mod, only: i_def, r_def, str_def, l_def - use create_mesh_mod, only: create_extrusion, create_mesh - use test_algorithm_mod, only: test_algorithm_finalise, & - test_algorithm_initialise, & - test_jedi_lfric_increment_alg - use driver_collections_mod, only: init_collections, final_collections - use driver_mesh_mod, only: init_mesh - use extrusion_mod, only: extrusion_type, & - uniform_extrusion_type, & - PRIME_EXTRUSION, TWOD - use halo_comms_mod, only: initialise_halo_comms, & - finalise_halo_comms - use lfric_mpi_mod, only: global_mpi, & - create_comm, destroy_comm, & - lfric_comm_type - use log_mod, only: log_event, & - initialise_logging, & - finalise_logging, & - LOG_LEVEL_ERROR, & - LOG_LEVEL_INFO - use namelist_collection_mod, only: namelist_collection_type - use namelist_mod, only: namelist_type - - use base_mesh_config_mod, only: GEOMETRY_SPHERICAL, & - GEOMETRY_PLANAR - - implicit none - - ! MPI communicator - type(lfric_comm_type) :: comm - - ! Number of processes and local rank - integer(i_def) :: total_ranks, local_rank - - character(:), allocatable :: filename - - type(namelist_collection_type), save :: configuration - - ! Variables used for parsing command line arguments - integer :: length, status, nargs - character(len=0) :: dummy - character(len=:), allocatable :: program_name, test_flag - - ! Flags which determine the tests that will be carried out - logical :: do_test_jedi_lfric_increment_alg_mod = .false. - - class(extrusion_type), allocatable :: extrusion - type(uniform_extrusion_type), allocatable :: extrusion_2d - - character(str_def) :: prime_mesh_name - - logical(l_def) :: apply_partition_check - - integer(i_def) :: geometry - integer(i_def) :: stencil_depth(1) - integer(i_def) :: method - integer(i_def) :: number_of_layers - real(r_def) :: domain_bottom - real(r_def) :: domain_height - real(r_def) :: scaled_radius - - type(namelist_type), pointer :: base_mesh_nml => null() - type(namelist_type), pointer :: planet_nml => null() - type(namelist_type), pointer :: extrusion_nml => null() - - integer(i_def) :: i - integer(i_def), parameter :: one_layer = 1_i_def - - !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - ! Setup for all tests - ! Usage message to print - character(len=256) :: usage_message - - character(str_def) :: base_mesh_names(1) - character(str_def), allocatable :: twod_names(:) - real(r_def), parameter :: tolerance = 1.0e-3_r_def - - !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - ! Communicators and Logging Setup - ! Initialise MPI communicatios and get a valid communicator - call create_comm(comm) - - ! Save the communicator for later use - call global_mpi%initialise(comm) - - ! Initialise halo functionality - call initialise_halo_comms(comm) - - total_ranks = global_mpi%get_comm_size() - local_rank = global_mpi%get_comm_rank() - - call initialise_logging( comm%get_comm_mpi_val(), 'jedi_lfric_test_alg' ) - - call log_event( 'da dev alg testing running ...', LOG_LEVEL_INFO ) - - ! Parse command line parameters - call get_command_argument( 0, dummy, length, status ) - allocate(character(length)::program_name) - call get_command_argument( 0, program_name, length, status ) - nargs = command_argument_count() - - ! Print out usage message if wrong number of arguments is specified - if (nargs /= 2) then - write(usage_message,*) "Usage: ",trim(program_name), & - " " // & - " test_XXX with XXX in { " // & - " jedi_lfric_increment_alg_mod, " // & - " } " - call log_event( trim(usage_message), LOG_LEVEL_ERROR ) - end if - - call get_command_argument( 1, dummy, length, status ) - allocate( character(length) :: filename ) - call get_command_argument( 1, filename, length, status ) - - call get_command_argument( 2, dummy, length, status ) - allocate(character(length)::test_flag) - call get_command_argument( 2, test_flag, length, status ) - - ! Choose test case depending on flag provided in the first command - ! line argument - select case (trim(test_flag)) - case ("test_jedi_lfric_increment_alg_mod") - do_test_jedi_lfric_increment_alg_mod = .true. - case default - call log_event( "Unknown test", LOG_LEVEL_ERROR ) - end select - - ! Setup configuration, mesh, and fem - call configuration%initialise( program_name, table_len=10 ) - call read_configuration( filename, configuration ) - - call init_collections() - - !-------------------------------------- - ! 0.0 Extract namelist variables - !-------------------------------------- - base_mesh_nml => configuration%get_namelist('base_mesh') - planet_nml => configuration%get_namelist('planet') - extrusion_nml => configuration%get_namelist('extrusion') - - call base_mesh_nml%get_value( 'prime_mesh_name', prime_mesh_name ) - call base_mesh_nml%get_value( 'geometry', geometry ) - call extrusion_nml%get_value( 'method', method ) - call extrusion_nml%get_value( 'domain_height', domain_height ) - call extrusion_nml%get_value( 'number_of_layers', number_of_layers ) - call planet_nml%get_value( 'scaled_radius', scaled_radius ) - - base_mesh_nml => null() - planet_nml => null() - extrusion_nml => null() - - !-------------------------------------- - ! 1.0 Create the meshes - !-------------------------------------- - base_mesh_names(1) = prime_mesh_name - allocate( twod_names, source=base_mesh_names ) - - !-------------------------------------- - ! 1.1 Create the required extrusions - !-------------------------------------- - select case (geometry) - case (geometry_planar) - domain_bottom = 0.0_r_def - case (geometry_spherical) - domain_bottom = scaled_radius - case default - call log_event("Invalid geometry for mesh initialisation", LOG_LEVEL_ERROR) - end select - allocate( extrusion, source=create_extrusion( method, & - domain_height, & - domain_bottom, & - number_of_layers, & - PRIME_EXTRUSION ) ) - - extrusion_2d = uniform_extrusion_type( domain_height, & - domain_bottom, & - one_layer, TWOD ) - - !------------------------------------------------------------------------- - ! 1.2 Create the required meshes - !------------------------------------------------------------------------- - stencil_depth = 1 - apply_partition_check = .false. - call init_mesh( configuration, & - local_rank, total_ranks, & - base_mesh_names, extrusion, & - stencil_depth, & - apply_partition_check ) - - do i=1, size(twod_names) - twod_names(i) = trim(twod_names(i))//'_2d' - end do - call create_mesh( base_mesh_names, extrusion_2d, & - alt_name=twod_names ) - call assign_mesh_maps(twod_names) - - - !------------------------------------------------------------------------- - ! Tests - !------------------------------------------------------------------------- - call test_algorithm_initialise(prime_mesh_name) ! fem - - if ( do_test_jedi_lfric_increment_alg_mod ) then - call test_jedi_lfric_increment_alg(tolerance) - endif - - !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - ! Finalise and close down - - call test_algorithm_finalise() - - if (allocated(program_name)) deallocate(program_name) - if (allocated(filename)) deallocate(filename) - if (allocated(test_flag)) deallocate(test_flag) - - call log_event( 'da dev alg functional testing completed ...', LOG_LEVEL_INFO ) - - ! (note that the order of the calls of the following finalisers matters) - - call final_collections() - call final_configuration() - - call finalise_halo_comms() - call global_mpi%finalise() - call configuration%clear() - call destroy_comm() - - call finalise_logging() - -end program algorithm_test diff --git a/applications/jedi_lfric_tests/integration-test/algorithm/algorithm_test.py b/applications/jedi_lfric_tests/integration-test/algorithm/algorithm_test.py deleted file mode 100755 index 6b324ad6d..000000000 --- a/applications/jedi_lfric_tests/integration-test/algorithm/algorithm_test.py +++ /dev/null @@ -1,78 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- -############################################################################## -# (C) Crown copyright 2023 Met Office. All rights reserved. -# The file LICENCE, distributed with this code, contains details of the terms -# under which the code may be used. -############################################################################## -''' -Run the jedi_lfric integration tests -''' - -import os -import re -import sys - -from testframework import LFRicLoggingTest, TestEngine, TestFailed - - -class JediLfricTest(LFRicLoggingTest): - ''' - Run the jedi_lfric integration tests - ''' - - def __init__(self, flag: str) -> None: - self._flag = flag - if 'MPIEXEC_BROKEN' in os.environ: - JediLfricTest.set_mpiexec_broken() - super().__init__([sys.argv[1], - 'resources/algorithm_test_configuration.nml', - 'test_' + self._flag], - processes=1, - name='JediLfricTest.Log') - - def test(self, return_code: int, out: str, err: str) -> str: - ''' - Error messages if the test failed to run - ''' - if return_code != 0: - message = 'Test program failed with exit code: {code}' - raise TestFailed(message.format(code=return_code), - stdout=out, stderr=err, - log=self.getLFRicLoggingLog()) - - # "out" becomes self.getLFRicLoggingLog() when PE>1 - if not self.test_passed(out): - message = 'Test {} failed' - raise TestFailed(message.format(self._flag), - stdout=out, stderr=err, - log=self.getLFRicLoggingLog()) - - return 'da dev test : '+self._flag - - @staticmethod - def test_passed(out: str) -> bool: - ''' - Examine the output to see if the validity test passed - ''' - success = False - pattern = re.compile(r'test\s*PASS\s*$') - for line in out.split("\n"): - match = pattern.search(line) - if match: - success = True - return success - - -class jedi_lfric_increment_alg(JediLfricTest): - ''' - Test running the jedi_lfric_increment_alg_mod.x90 algorithm - ''' - - def __init__(self): - flag = "jedi_lfric_increment_alg_mod" - super().__init__(flag) - - -if __name__ == '__main__': - TestEngine.run(jedi_lfric_increment_alg()) diff --git a/applications/jedi_lfric_tests/integration-test/algorithm/resources/algorithm_test_configuration.nml b/applications/jedi_lfric_tests/integration-test/algorithm/resources/algorithm_test_configuration.nml deleted file mode 100644 index 8f09d097b..000000000 --- a/applications/jedi_lfric_tests/integration-test/algorithm/resources/algorithm_test_configuration.nml +++ /dev/null @@ -1,35 +0,0 @@ -&base_mesh -f_lat_deg=45.0, -file_prefix='resources/mesh_C12', -fplane=.false., -geometry='spherical', -prepartitioned=.false., -prime_mesh_name='dynamics', -topology='fully_periodic', -/ - -&extrusion -planet_radius=6371229.0, -domain_height=1000.0, -method='uniform', -number_of_layers=70, -stretching_method='linear', -/ - -&finite_element -cellshape='quadrilateral', -element_order_h=0, -element_order_v=0, -rehabilitate=.true., -coord_order=1 -coord_system='native' -/ - -&partitioning - partitioner='cubedsphere', - panel_decomposition = 'auto', -/ - -&planet - scaling_factor=125.0, -/ diff --git a/applications/jedi_lfric_tests/integration-test/algorithm/resources/mesh_C12.nc b/applications/jedi_lfric_tests/integration-test/algorithm/resources/mesh_C12.nc deleted file mode 100644 index 6637522a319c78d5f8553d39f211daff2bde262a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 85792 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 diff --git a/applications/jedi_lfric_tests/integration-test/algorithm/test_algorithm_mod.x90 b/applications/jedi_lfric_tests/integration-test/algorithm/test_algorithm_mod.x90 deleted file mode 100644 index dac52dea5..000000000 --- a/applications/jedi_lfric_tests/integration-test/algorithm/test_algorithm_mod.x90 +++ /dev/null @@ -1,104 +0,0 @@ -!----------------------------------------------------------------------------- -! (c) Crown copyright 2023 Met Office. All rights reserved. -! The file LICENCE, distributed with this code, contains details of the terms -! under which the code may be used. -!----------------------------------------------------------------------------- - -!>@brief Drives the execution of the da dev algorithms tests -module test_algorithm_mod - - use constants_mod, only : i_def, r_def, str_def - use driver_fem_mod, only : init_fem, final_fem - use field_mod, only : field_type, field_proxy_type - use fs_continuity_mod, only : Wtheta - use function_space_collection_mod, only : function_space_collection - use function_space_mod, only : function_space_type - use inventory_by_mesh_mod, only : inventory_by_mesh_type - use log_mod, only : log_event, & - LOG_LEVEL_INFO - use mesh_mod, only : mesh_type - use mesh_collection_mod, only : mesh_collection - - implicit none - - private - public test_algorithm_initialise, & - test_algorithm_finalise, & - test_jedi_lfric_increment_alg - - character(len=128) :: output - - ! Coordinate field - type(inventory_by_mesh_type) :: chi_inventory - type(inventory_by_mesh_type) :: panel_id_inventory - type(function_space_type), pointer :: wtheta_fs => null() - integer(i_def), parameter :: element_order_h = 0 - integer(i_def), parameter :: element_order_v = 0 - -contains - - !> @brief Initialise module. - !> @details Initialises the fem & function space wtheta_fs - !> @param[in] mesh Mesh to be used - subroutine test_algorithm_initialise( mesh_name ) - - implicit none - - character(str_def), intent(in) :: mesh_name - type(mesh_type), pointer :: mesh => null() - - call init_fem( mesh_collection, chi_inventory, panel_id_inventory ) - mesh => mesh_collection%get_mesh(mesh_name) - wtheta_fs => function_space_collection%get_fs( mesh, & - element_order_h, & - element_order_v, & - Wtheta ) - - end subroutine test_algorithm_initialise - - !> @brief Finalises the fem & function space - subroutine test_algorithm_finalise() - - implicit none - - call final_fem() - nullify(wtheta_fs) - - end subroutine test_algorithm_finalise - - !> @brief Tests jedi_lfric_increment_alg - !> @param[in] tolerance Tolerance - subroutine test_jedi_lfric_increment_alg( tolerance ) - - use jedi_lfric_increment_alg_mod, only : jedi_lfric_increment_alg - - implicit none - - real(r_def), intent(in) :: tolerance - - type(field_type), target :: test_field - type(field_proxy_type) :: field_proxy - - ! Initialise test field and get proxy - call test_field%initialise( wtheta_fs, name='test_field' ) - field_proxy = test_field%get_proxy() - ! Set first dof to nominal value - call invoke( setval_c(test_field, 1.0_r_def) ) - - call jedi_lfric_increment_alg(test_field) - - write ( output, '("Returned Field Values =", ES15.8)' ) field_proxy%data(1) - - ! Test if value is correct - if ( all( abs(field_proxy%data(:) - 2.0_r_def) <= tolerance ) ) then - call log_event( 'test PASS', LOG_LEVEL_INFO ) - call log_event( output, LOG_LEVEL_INFO ) - else - call log_event( 'test FAIL', LOG_LEVEL_INFO ) - call log_event( 'Expected Field Values = 2.00000000E+00', LOG_LEVEL_INFO ) - call log_event( output, LOG_LEVEL_INFO ) - end if - - end subroutine test_jedi_lfric_increment_alg - -end module test_algorithm_mod \ No newline at end of file diff --git a/applications/jedi_lfric_tests/rose-meta/jedi_forecast/HEAD/rose-meta.conf b/applications/jedi_lfric_tests/rose-meta/jedi_forecast/HEAD/rose-meta.conf index 3ab9c29d7..1b4184a8e 100644 --- a/applications/jedi_lfric_tests/rose-meta/jedi_forecast/HEAD/rose-meta.conf +++ b/applications/jedi_lfric_tests/rose-meta/jedi_forecast/HEAD/rose-meta.conf @@ -85,6 +85,23 @@ help=One of the jedi_lfric_tests fields should contain distinct data for test pu sort-key= type=character +#============================================================================== +# Model for the JEDI-LFRIC Emulator +#============================================================================== +[namelist:jedi_model] +compulsory=true +description=Jedi model configuration +ns=namelist/JEDI-LFRIC-setup/jedi_model +title=jedi_model + +[namelist:jedi_model=time_step] +compulsory=true +description=The models time step duration +help=Format PdDThHmMsS where d=day, h=hours, m=minutes and s=seconds +!kind=default +sort-key= +type=character + #============================================================================== # Pseudo model for the JEDI-LFRIC Emulator #============================================================================== @@ -156,20 +173,3 @@ help=Add a comma separted list of variables to instantiate length=: sort-key= type=character - -#============================================================================== -# Model for the JEDI-LFRIC Emulator -#============================================================================== -[namelist:jedi_model] -compulsory=true -description=Jedi model configuration -ns=namelist/JEDI-LFRIC-setup/jedi_model -title=jedi_model - -[namelist:jedi_model=time_step] -compulsory=true -description=The models time step duration -help=Format PdDThHmMsS where d=day, h=hours, m=minutes and s=seconds -!kind=default -sort-key= -type=character diff --git a/rose-stem/site/common/jedi_lfric_tests/tasks_jedi_lfric_tests.cylc b/rose-stem/site/common/jedi_lfric_tests/tasks_jedi_lfric_tests.cylc index 49daf606e..404d8abb1 100644 --- a/rose-stem/site/common/jedi_lfric_tests/tasks_jedi_lfric_tests.cylc +++ b/rose-stem/site/common/jedi_lfric_tests/tasks_jedi_lfric_tests.cylc @@ -284,12 +284,6 @@ "threads": 4, }) %} -{% elif task_ns.conf_name == "integration_tests" %} - - {% do task_dict.update({ - "placeholder": true, - }) %} - {% elif task.startswith("build") %} {% do task_dict.update({ diff --git a/rose-stem/site/meto/groups/groups_jedi_lfric_tests.cylc b/rose-stem/site/meto/groups/groups_jedi_lfric_tests.cylc index 1fbfc565b..576c8af56 100644 --- a/rose-stem/site/meto/groups/groups_jedi_lfric_tests.cylc +++ b/rose-stem/site/meto/groups/groups_jedi_lfric_tests.cylc @@ -29,7 +29,6 @@ "jedi_lfric_tests_tlm_tests_nwp_gal9-dry-4OMP-C12_MG_azspice_gnu_fast-debug-64bit", "jedi_lfric_tests_tlm_tests_nwp_gal9-dry-1PE-4OMP-C12_MG_azspice_gnu_fast-debug-64bit", "jedi_lfric_tests_tlm_tests_nwp_gal9-strict_solver-4OMP-C12_MG_azspice_gnu_fast-debug-64bit-rsolver64", - "jedi_lfric_tests_azspice_integration_tests", ], "jedi_lfric_tests_op_azspice_developer": [ "jedi_lfric_tests_tlm_forecast_tl_nwp_gal9-C12_MG_op_azspice_gnu_fast-debug-64bit", @@ -39,9 +38,6 @@ "jedi_lfric_tests_azspice_developer", "jedi_lfric_tests_op_azspice_developer" ], - "jedi_lfric_tests_azspice_integration_tests": [ - "jedi_lfric_tests_integration_tests_azspice_gnu_64bit", - ], "jedi_lfric_tests_azspice_build": [ "build_jedi_lfric_tests_azspice_gnu_fast-debug-64bit", "build_jedi_lfric_tests_azspice_gnu_fast-debug-64bit-rsolver64", @@ -71,7 +67,6 @@ "jedi_lfric_tests_tlm_tests_nwp_gal9-dry-4OMP-C12_MG_ex1a_cce_fast-debug-64bit", "jedi_lfric_tests_tlm_tests_nwp_gal9-dry-1PE-4OMP-C12_MG_ex1a_cce_fast-debug-64bit", "jedi_lfric_tests_tlm_tests_nwp_gal9-strict_solver-4OMP-C12_MG_ex1a_cce_fast-debug-64bit-rsolver64", - "jedi_lfric_tests_ex1a_integration_tests", ], "jedi_lfric_tests_op_ex1a_developer": [ "jedi_lfric_tests_tlm_forecast_tl_nwp_gal9-C12_MG_op_ex1a_cce_fast-debug-64bit", @@ -86,9 +81,7 @@ "jedi_lfric_tests_ex1a_developer", "jedi_lfric_tests_op_ex1a_developer" ], - "jedi_lfric_tests_ex1a_integration_tests": [ - "jedi_lfric_tests_integration_tests_ex1a_cce_fast-debug-64bit", - ], + "jedi_lfric_tests_ex1a_build": [ "build_jedi_lfric_tests_ex1a_cce_fast-debug-64bit", "build_jedi_lfric_tests_ex1a_cce_fast-debug-64bit-rsolver64", @@ -101,7 +94,6 @@ "scripts", "jedi_lfric_tests_azspice_developer", "jedi_lfric_tests_ex1a_developer", - "jedi_lfric_tests_integration_tests", ], "jedi_lfric_tests_weekly": [ "jedi_lfric_tests_ex1a_weekly", @@ -111,10 +103,6 @@ "jedi_lfric_tests_azspice", "jedi_lfric_tests_ex1a", ], - "jedi_lfric_tests_integration_tests": [ - "jedi_lfric_tests_azspice_integration_tests", - "jedi_lfric_tests_ex1a_integration_tests", - ], "jedi_lfric_tests_build": [ "jedi_lfric_tests_azspice_build", "jedi_lfric_tests_ex1a_build", @@ -124,19 +112,16 @@ {# Platform Generic Extends #} {% do site_groups.developer.extend(site_groups.jedi_lfric_tests_developer) %} {% do site_groups.all.extend(site_groups.jedi_lfric_tests) %} -{% do site_groups.integration_tests.extend(site_groups.jedi_lfric_tests_integration_tests) %} {% do site_groups.build.extend(site_groups.jedi_lfric_tests_build) %} {# Azspice Extends #} {% do site_groups.azspice_developer.extend(site_groups.jedi_lfric_tests_azspice_developer) %} {% do site_groups.azspice.extend(site_groups.jedi_lfric_tests_azspice) %} -{% do site_groups.azspice_integration_tests.extend(site_groups.jedi_lfric_tests_azspice_integration_tests) %} {% do site_groups.azspice_build.extend(site_groups.jedi_lfric_tests_azspice_build) %} {# EX1A Extends #} {% do site_groups.ex1a_developer.extend(site_groups.jedi_lfric_tests_ex1a_developer) %} {% do site_groups.ex1a.extend(site_groups.jedi_lfric_tests_ex1a) %} -{% do site_groups.ex1a_integration_tests.extend(site_groups.jedi_lfric_tests_ex1a_integration_tests) %} {% do site_groups.ex1a_build.extend(site_groups.jedi_lfric_tests_ex1a_build) %} {% do LOG.debug("Finished in site/meto/groups/groups_jedi_lfric_tests.cylc") %} diff --git a/rose-stem/site/nci/groups/groups_jedi_lfric_tests.cylc b/rose-stem/site/nci/groups/groups_jedi_lfric_tests.cylc index 49084f2ed..6f1a43654 100644 --- a/rose-stem/site/nci/groups/groups_jedi_lfric_tests.cylc +++ b/rose-stem/site/nci/groups/groups_jedi_lfric_tests.cylc @@ -20,14 +20,10 @@ "jedi_lfric_tests_tlm_tests_default-1PE-C12_gadi_intel_fast-debug-64bit", "jedi_lfric_tests_tlm_tests_default-dry-C12_gadi_intel_fast-debug-64bit", "jedi_lfric_tests_tlm_tests_default-dry-1PE-C12_gadi_intel_fast-debug-64bit", - "jedi_lfric_tests_gadi_integration_tests", ], "jedi_lfric_tests_gadi": [ "jedi_lfric_tests_gadi_developer" ], - "jedi_lfric_tests_gadi_integration_tests": [ - "jedi_lfric_tests_integration_tests_gadi_intel_64bit", - ], "jedi_lfric_tests_gadi_build": [ "build_jedi_lfric_tests_gadi_intel_fast-debug-64bit", ], @@ -38,15 +34,11 @@ "jedi_lfric_tests_developer": [ "scripts", "jedi_lfric_tests_gadi_developer", - "jedi_lfric_tests_integration_tests", ], "jedi_lfric_tests": [ "jedi_lfric_tests_developer", "jedi_lfric_tests_gadi", ], - "jedi_lfric_tests_integration_tests": [ - "jedi_lfric_tests_gadi_integration_tests", - ], "jedi_lfric_tests_build": [ "jedi_lfric_tests_gadi_build", ], @@ -55,13 +47,11 @@ {# Platform Generic Extends #} {% do site_groups.developer.extend(site_groups.jedi_lfric_tests_developer) %} {% do site_groups.all.extend(site_groups.jedi_lfric_tests) %} -{% do site_groups.integration_tests.extend(site_groups.jedi_lfric_tests_integration_tests) %} {% do site_groups.build.extend(site_groups.jedi_lfric_tests_build) %} {# gadi Extends #} {% do site_groups.gadi_developer.extend(site_groups.jedi_lfric_tests_gadi_developer) %} {% do site_groups.gadi.extend(site_groups.jedi_lfric_tests_gadi) %} -{% do site_groups.gadi_integration_tests.extend(site_groups.jedi_lfric_tests_gadi_integration_tests) %} {% do site_groups.gadi_build.extend(site_groups.jedi_lfric_tests_gadi_build) %} {% do LOG.debug("Finished iin site/meto/groups/groups_jedi_lfric_tests.cylc") %} From fcb4823dff1899acc4ea1f3ff51594caeb251353 Mon Sep 17 00:00:00 2001 From: ss421 Date: Wed, 29 Apr 2026 23:50:39 +0100 Subject: [PATCH 09/25] Align with lfric_atm. --- applications/jedi_lfric_tests/Makefile | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/applications/jedi_lfric_tests/Makefile b/applications/jedi_lfric_tests/Makefile index d42b4eb99..413cefd3e 100644 --- a/applications/jedi_lfric_tests/Makefile +++ b/applications/jedi_lfric_tests/Makefile @@ -20,6 +20,7 @@ export PSYCLONE_TRANSFORMATION ?= minimum export PROJECT_DIR := $(realpath $(dir $(lastword $(MAKEFILE_LIST)))) +# Note - socrates_interface must come before jules_interface as there are dependencies on each other. export INTERNAL_DEPENDENCIES = $(CORE_ROOT_DIR)/infrastructure \ $(CORE_ROOT_DIR)/components/driver \ $(CORE_ROOT_DIR)/components/science \ @@ -55,7 +56,7 @@ documentation doc docs: document-uml document-latex document-api include $(CORE_ROOT_DIR)/infrastructure/build/lfric.mk include $(INTERNAL_DEPENDENCIES:=/build/import.mk) --include $(PROJECT_DIR)/build/project.mk +include build/project.mk # Include transmute list only if not using minimum or no transformations ifeq ($(filter "$(PSYCLONE_TRANSFORMATION)", "none" "minimum"),) @@ -106,7 +107,7 @@ build: export BIN_DIR ?= $(PROJECT_DIR)/bin build: export LIB_DIR ?= $(PROJECT_DIR)/lib build: export MOD_DIR ?= $(PROJECT_DIR)/mod build: export CXX_LINK = TRUE -build: export PROGRAMS := $(basename $(notdir $(shell find source -maxdepth 1 -name '*.[Ff]90' -print))) +build: export PROGRAMS := $(basename $(notdir $(shell find source -maxdepth 1 -name '*.[Ff]90' -exec egrep -l "^\s*program" {} \;))) build: export PROJECT = $(PROJECT_NAME) build: export WORKING_DIR := $(WORKING_DIR)/jedi_lfric_tests @@ -238,6 +239,11 @@ unit-tests/%: export TEST_DIR = unit-test unit-tests/%: export WORKING_DIR := $(WORKING_DIR)/unit-test unit-tests: unit-tests/run +############################################################################## +# Integration tests +# +integration-tests: + $(call MESSAGE,Testing,"There are no integration tests.") ############################################################################## # Clean From 8093dc97d0f752996aaf180dd5079d936c837260 Mon Sep 17 00:00:00 2001 From: ss421 Date: Fri, 1 May 2026 17:02:52 +0100 Subject: [PATCH 10/25] Tidy and allign with lfric_atm --- .../jedi_lfric_tests/build/fortran/crayftn.mk | 2 +- .../algorithm/random_seed_gen_alg_mod.f90 | 3 +- .../source/legacy/misc/chk_opts_mod.F90 | 9 +-- .../source/legacy/misc/vectlib_mod.F90 | 66 ++++++++++++------- .../source/aerosols/grow_particles_mod.F90 | 6 +- 5 files changed, 55 insertions(+), 31 deletions(-) diff --git a/applications/jedi_lfric_tests/build/fortran/crayftn.mk b/applications/jedi_lfric_tests/build/fortran/crayftn.mk index 49286c047..98e77d011 100644 --- a/applications/jedi_lfric_tests/build/fortran/crayftn.mk +++ b/applications/jedi_lfric_tests/build/fortran/crayftn.mk @@ -10,4 +10,4 @@ $(info Project specials for Cray compiler) export FFLAGS_UM_PHYSICS = -s real64 -include $(PROJECT_DIR)/build/fortran/crayftn/$(PROFILE).mk \ No newline at end of file +include $(PROJECT_DIR)/build/fortran/crayftn/$(PROFILE).mk diff --git a/interfaces/physics_schemes_interface/source/algorithm/random_seed_gen_alg_mod.f90 b/interfaces/physics_schemes_interface/source/algorithm/random_seed_gen_alg_mod.f90 index 695735fb1..8e2693c0a 100644 --- a/interfaces/physics_schemes_interface/source/algorithm/random_seed_gen_alg_mod.f90 +++ b/interfaces/physics_schemes_interface/source/algorithm/random_seed_gen_alg_mod.f90 @@ -38,7 +38,8 @@ subroutine random_seed_gen_alg(iranseed, ensemble_number) integer(i_def), intent(in) :: ensemble_number type(xios_date) :: datetime - integer(i_def) :: year, month, day, hour, minute, & + integer(i_def) :: i + integer(i_def) :: year, month, day, utc_shift, hour, minute, & milli_ensemble_number integer(i_def) :: random_seed_size, iarg, max_iarg integer(i_def), allocatable :: prevseed(:) diff --git a/interfaces/physics_schemes_interface/source/legacy/misc/chk_opts_mod.F90 b/interfaces/physics_schemes_interface/source/legacy/misc/chk_opts_mod.F90 index a98255a03..72cf697ad 100644 --- a/interfaces/physics_schemes_interface/source/legacy/misc/chk_opts_mod.F90 +++ b/interfaces/physics_schemes_interface/source/legacy/misc/chk_opts_mod.F90 @@ -17,7 +17,6 @@ module chk_opts_mod use errormessagelength_mod, only: errormessagelength use umprintmgr, only: umprint, ummessage, newline use ereport_mod, only: ereport -use iso_fortran_env, only: real64 implicit none @@ -54,9 +53,9 @@ module chk_opts_mod ! the code owner specified checks, these checks should be consistent with ! the UM rose-metadata interface chk_var - module procedure chk_int_str ! Integers (values/ranges) - module procedure chk_real_str ! Reals (values/ranges) - module procedure chk_int_arr ! Integers (values only) + module procedure chk_int_str ! Integers (values/ranges) + module procedure chk_real_str ! Reals (values/ranges) + module procedure chk_int_arr ! Integers (values only) end interface character(len=str_len) :: def_src = '' ! Calling routine if specified @@ -477,6 +476,8 @@ subroutine chk_real_str (var, var_name, string, report_pass, cmessage) return end subroutine chk_real_str + + !============================================================================== !============================================================================== diff --git a/interfaces/physics_schemes_interface/source/legacy/misc/vectlib_mod.F90 b/interfaces/physics_schemes_interface/source/legacy/misc/vectlib_mod.F90 index e4401a9fe..ee27fcf4e 100644 --- a/interfaces/physics_schemes_interface/source/legacy/misc/vectlib_mod.F90 +++ b/interfaces/physics_schemes_interface/source/legacy/misc/vectlib_mod.F90 @@ -66,6 +66,7 @@ subroutine exp_v(n,x,y) ! Sets y(i) to the exponential function of x(i), for i=1,..,n integer :: n real (kind=real_64) :: y(n), x(n) +integer (kind=integer_32) :: l_n integer :: i #if defined(MKL_EXP_V) @@ -74,7 +75,8 @@ subroutine exp_v(n,x,y) #endif #if defined(VMASS) -call vexp (y, x, int(n, kind=integer_32)) +l_n=n +call vexp (y, x, l_n) #elif defined(MKL_EXP_V) call vdexp(n, x, y) #else @@ -91,6 +93,7 @@ subroutine exp_v_32b(n,x,y) ! Sets y(i) to the exponential function of x(i), for i=1,..,n integer :: n real (kind=real_32) :: y(n), x(n) +integer (kind=integer_32) :: l_n integer :: i #if defined(MKL_EXP_V) @@ -99,7 +102,8 @@ subroutine exp_v_32b(n,x,y) #endif #if defined(VMASS) -call vsexp (y, x, int(n, kind=integer_32)) +l_n=n +call vsexp (y, x, l_n) #elif defined(MKL_EXP_V) call vsexp(n, x, y) #else @@ -117,10 +121,8 @@ subroutine powr_v(n, x, power, z) implicit none ! Sets z(i) to x(i) raised to the power power, for i=1,..,n integer :: n, i -real (kind=real_64) :: z(n), x(n), power -#if defined(VMASS) -real (kind=real_64) :: y(n) -#endif +real (kind=real_64) :: z(n), x(n), y(n), power +integer (kind=integer_32) :: l_n #if defined(MKL_POWR_V) ! Interfaces for MKL @@ -128,10 +130,11 @@ subroutine powr_v(n, x, power, z) #endif #if defined(VMASS) +l_n=n do i=1, n y(i)=power end do -call vpow (z, x, y, int(n, kind=integer_32)) +call vpow (z, x, y, l_n) #elif defined(MKL_POWR_V) call vdpowx(n, x, power, z) #else @@ -147,10 +150,8 @@ subroutine powr_v_32b(n, x, power, z) implicit none ! Sets z(i) to x(i) raised to the power power, for i=1,..,n integer :: n, i -real (kind=real_32) :: z(n), x(n), power -#if defined(VMASS) -real (kind=real_32) :: y(n) -#endif +real (kind=real_32) :: z(n), x(n), y(n), power +integer (kind=integer_32) :: l_n #if defined(MKL_POWR_V) ! Interfaces for MKL @@ -158,10 +159,11 @@ subroutine powr_v_32b(n, x, power, z) #endif #if defined(VMASS) +l_n=n do i=1, n y(i)=power end do -call vspow (z, x, y, int(n, kind=integer_32)) +call vspow (z, x, y, l_n) #elif defined(MKL_POWR_V) call vspowx(n, x, power, z) #else @@ -187,6 +189,7 @@ subroutine rtor_v(n, x, y, z) integer :: n real (kind=real_64) :: z(n), x(n), y(n) +integer (kind=integer_32) :: l_n integer :: i #if defined(MKL_RTOR_V) @@ -196,7 +199,8 @@ subroutine rtor_v(n, x, y, z) #if defined(VMASS) -call vpow (z, x, y, int(n, kind=integer_32)) +l_n=n +call vpow (z, x, y, l_n) #elif defined(MKL_RTOR_V) @@ -223,6 +227,7 @@ subroutine sqrt_v(n, x, y) integer :: n real (kind=real_64) :: x(n), y(n) +integer (kind=integer_32) :: l_n integer :: i #if defined(MKL_SQRT_V) @@ -232,7 +237,8 @@ subroutine sqrt_v(n, x, y) #if defined(VMASS) -call vsqrt (y, x, int(n, kind=integer_32)) +l_n=n +call vsqrt (y, x, l_n) #elif defined(MKL_SQRT_V) @@ -257,10 +263,12 @@ subroutine oneover_v(n, x, y) ! Sets y(i) to the reciprocal of x(i), for i=1,..,n integer :: n real (kind=real_64) :: x(n), y(n) +integer (kind=integer_32) :: l_n integer :: i #if defined(VMASS) -call vrec (y, x, int(n, kind=integer_32)) +l_n=n +call vrec (y, x, l_n) #else do i=1, n y(i) = 1/x(i) @@ -275,10 +283,12 @@ subroutine oneover_v_32b(n, x, y) ! Sets y(i) to the reciprocal of x(i), for i=1,..,n integer :: n real (kind=real_32) :: x(n), y(n) +integer (kind=integer_32) :: l_n integer :: i #if defined(VMASS) -call vsrec (y, x, int(n, kind=integer_32)) +l_n=n +call vsrec (y, x, l_n) #else do i=1, n y(i) = 1/x(i) @@ -297,6 +307,7 @@ subroutine log_v (n, x, y) integer :: n real (kind=real_64) :: x(n), y(n) +integer (kind=integer_32) :: l_n integer :: i #if defined(MKL_LOG_V) @@ -306,7 +317,8 @@ subroutine log_v (n, x, y) #if defined(VMASS) -call vlog (y, x, int(n, kind=integer_32)) +l_n=n +call vlog (y, x, l_n) #elif defined(MKL_LOG_V) @@ -333,6 +345,7 @@ subroutine sin_v(n,x,y) integer :: n real (kind=real_64) :: y(n), x(n) +integer (kind=integer_32) :: l_n integer :: i #if defined(MKL_SIN_V) @@ -342,7 +355,8 @@ subroutine sin_v(n,x,y) #if defined(VMASS) -call vsin (y, x, int(n, kind=integer_32)) +l_n=n +call vsin (y, x, l_n) #elif defined(MKL_SIN_V) @@ -369,6 +383,7 @@ subroutine cos_v(n,x,y) integer :: n real (kind=real_64) :: y(n), x(n) +integer (kind=integer_32) :: l_n integer :: i #if defined(MKL_COS_V) @@ -378,7 +393,8 @@ subroutine cos_v(n,x,y) #if defined(VMASS) -call vcos (y, x, int(n, kind=integer_32)) +l_n=n +call vcos (y, x, l_n) #elif defined(MKL_COS_V) @@ -404,6 +420,7 @@ subroutine acos_v(n,x,y) integer :: n real (kind=real_64) :: y(n), x(n) +integer (kind=integer_32) :: l_n integer :: i #if defined(MKL_ACOS_V) @@ -415,7 +432,8 @@ subroutine acos_v(n,x,y) #if defined(VMASS) -call vacos (y, x, int(n, kind=integer_32)) +l_n=n +call vacos (y, x, l_n) #elif defined(MKL_ACOS_V) @@ -442,6 +460,7 @@ subroutine asin_v(n,x,y) integer :: n real (kind=real_64) :: y(n), x(n) +integer (kind=integer_32) :: l_n integer :: i #if defined(MKL_ASIN_V) @@ -451,7 +470,8 @@ subroutine asin_v(n,x,y) #if defined(VMASS) -call vasin (y, x, int(n, kind=integer_32)) +l_n=n +call vasin (y, x, l_n) #elif defined(MKL_ASIN_V) @@ -478,6 +498,7 @@ subroutine atan2_v(n,a,b,y) integer :: n real (kind=real_64) :: y(n), a(n),b(n) +integer (kind=integer_32) :: l_n integer :: i #if defined(MKL_ATAN2_V) @@ -487,7 +508,8 @@ subroutine atan2_v(n,a,b,y) #if defined(VMASS) -call vatan2 (y, a, b, int(n, kind=integer_32)) +l_n=n +call vatan2 (y, a, b, l_n) #elif defined(MKL_ATAN2_V) diff --git a/science/physics_schemes/source/aerosols/grow_particles_mod.F90 b/science/physics_schemes/source/aerosols/grow_particles_mod.F90 index 0c1555e60..484897d46 100644 --- a/science/physics_schemes/source/aerosols/grow_particles_mod.F90 +++ b/science/physics_schemes/source/aerosols/grow_particles_mod.F90 @@ -255,7 +255,7 @@ subroutine grow_particles (aerosol_type, humidity, ln_r0, ln_sigma, & ! linear growth as saturation is approached; in any case, at ! such high humidities the impact of aerosol will be swamped ! by the effect of cloud. - humidity_eff = min (humidity, real(0.995, kind=real_umphys)) + humidity_eff = min (humidity, 0.995) ! Initialise to default values of alpha and beta (1.0 means that ! there is no growth, which will be the case for humidities @@ -374,7 +374,7 @@ subroutine grow_particles (aerosol_type, humidity, ln_r0, ln_sigma, & ( aerosol_type == ip_ocff_aged ) ) then ! Not using Fitzgerald: cap humidity to max value of 100% - humidity_eff = min (humidity, real(1.0, kind=real_umphys)) + humidity_eff = min (humidity, 1.0) ! Verify that 0.0 <= humidity_eff <= 1.0. if ( humidity_eff < 0.0 .or. humidity_eff > 1.0) then @@ -408,7 +408,7 @@ subroutine grow_particles (aerosol_type, humidity, ln_r0, ln_sigma, & else if ( aerosol_type == ip_biogenic ) then ! Not using Fitzgerald: cap humidity to max value of 100% - humidity_eff = min (humidity, real(1.0, kind=real_umphys)) + humidity_eff = min (humidity, 1.0) ! Verify that 0.0 <= humidity_eff <= 1.0. if ( humidity_eff < 0.0 .or. humidity_eff > 1.0) then From a8c22eefd1b1f0e61741b86039dd63a9e4708cfb Mon Sep 17 00:00:00 2001 From: ss421 Date: Tue, 5 May 2026 10:14:09 +0100 Subject: [PATCH 11/25] tidy the rose configs --- .../jedi_forecast/HEAD/rose-meta.conf | 43 ------------------- rose-stem/app/jedi_forecast/rose-app.conf | 7 --- 2 files changed, 50 deletions(-) diff --git a/applications/jedi_lfric_tests/rose-meta/jedi_forecast/HEAD/rose-meta.conf b/applications/jedi_lfric_tests/rose-meta/jedi_forecast/HEAD/rose-meta.conf index 1b4184a8e..489521ec5 100644 --- a/applications/jedi_lfric_tests/rose-meta/jedi_forecast/HEAD/rose-meta.conf +++ b/applications/jedi_lfric_tests/rose-meta/jedi_forecast/HEAD/rose-meta.conf @@ -52,14 +52,6 @@ help=Configuration option for JEDI-LFRIC emulator. ns=namelist/JEDI-LFRIC-setup title=JEDI-LFRIC Setings -[namelist:jedi_lfric_settings=adjoint_test_tolerance] -compulsory=false -description=Tolerance for inner product adjoint tests in jedi_tlm_tests -help=Set as appropriate based on configuration -!kind=default -sort-key= -type=real - [namelist:jedi_lfric_settings=forecast_length] compulsory=true description=The forecast duration @@ -102,41 +94,6 @@ help=Format PdDThHmMsS where d=day, h=hours, m=minutes and s=seconds sort-key= type=character -#============================================================================== -# Pseudo model for the JEDI-LFRIC Emulator -#============================================================================== -[namelist:jedi_pseudo_model] -compulsory=true -description=JEDI-LFRIC emulator pseudo model configuration -help=Configuration options for JEDI-LFRIC emulator pseudo model object. -ns=namelist/JEDI-LFRIC-setup/jedi_pseudo_model -title=jedi_pseudo_model - -[namelist:jedi_pseudo_model=initial_time] -compulsory=true -description=The start date for the the model run -help=Add the start date for the the model run - =Format: yyyy-mm-ddThh:mm:ss -!kind=default -sort-key= -type=character - -[namelist:jedi_pseudo_model=number_of_steps] -compulsory=true -description=The number of time steps to run -help=Add the number of time steps -!kind=default -sort-key= -type=integer - -[namelist:jedi_pseudo_model=time_step] -compulsory=true -description=The model time step duration -help=Format PdDThHmMsS where d=day, h=hours, m=minutes and s=seconds -!kind=default -sort-key= -type=character - #============================================================================== # State for the JEDI-LFRIC Emulator #============================================================================== diff --git a/rose-stem/app/jedi_forecast/rose-app.conf b/rose-stem/app/jedi_forecast/rose-app.conf index ab55329cb..2cc6a5b4f 100644 --- a/rose-stem/app/jedi_forecast/rose-app.conf +++ b/rose-stem/app/jedi_forecast/rose-app.conf @@ -21,7 +21,6 @@ source=namelist:jedi_lfric_tests = namelist:jedi_geometry = namelist:jedi_state = namelist:jedi_model - = namelist:jedi_pseudo_model = namelist:jedi_lfric_settings = (namelist:aerosol) = namelist:base_mesh @@ -625,7 +624,6 @@ io_setup_increment=.false. io_time_step='P0DT1H0M0S' [namelist:jedi_lfric_settings] -adjoint_test_tolerance=1.0e-4 forecast_length='P0DT6H0M0S' [namelist:jedi_lfric_tests] @@ -634,11 +632,6 @@ test_field='theta' [namelist:jedi_model] time_step='P0DT1H0M0S' -[namelist:jedi_pseudo_model] -initial_time='2018-04-14T21:00:00' -number_of_steps=9 -time_step='P0DT1H0M0S' - [namelist:jedi_state] state_time='2018-04-14 21:00:00' use_pseudo_model=.false. From 4cab4e34214722aac5450bf361ca6eb9d6beaec7 Mon Sep 17 00:00:00 2001 From: ss421 Date: Tue, 5 May 2026 10:34:51 +0100 Subject: [PATCH 12/25] Rename tests --- applications/jedi_lfric_tests/build/project.mk | 2 +- ...rose-app-gh-si-for-linear.conf => rose-app-um_dump.conf} | 0 .../common/jedi_lfric_tests/tasks_jedi_lfric_tests.cylc | 5 ++--- rose-stem/site/meto/groups/groups_jedi_lfric_tests.cylc | 6 +++--- rose-stem/site/nci/groups/groups_jedi_lfric_tests.cylc | 2 +- 5 files changed, 7 insertions(+), 8 deletions(-) rename rose-stem/app/jedi_forecast/opt/{rose-app-gh-si-for-linear.conf => rose-app-um_dump.conf} (100%) diff --git a/applications/jedi_lfric_tests/build/project.mk b/applications/jedi_lfric_tests/build/project.mk index e4a05cfed..527597e32 100644 --- a/applications/jedi_lfric_tests/build/project.mk +++ b/applications/jedi_lfric_tests/build/project.mk @@ -1,5 +1,5 @@ ############################################################################## -# (c) Crown copyright 2017 Met Office. All rights reserved. +# (c) Crown copyright 2022 Met Office. All rights reserved. # The file LICENCE, distributed with this code, contains details of the terms # under which the code may be used. ############################################################################## diff --git a/rose-stem/app/jedi_forecast/opt/rose-app-gh-si-for-linear.conf b/rose-stem/app/jedi_forecast/opt/rose-app-um_dump.conf similarity index 100% rename from rose-stem/app/jedi_forecast/opt/rose-app-gh-si-for-linear.conf rename to rose-stem/app/jedi_forecast/opt/rose-app-um_dump.conf diff --git a/rose-stem/site/common/jedi_lfric_tests/tasks_jedi_lfric_tests.cylc b/rose-stem/site/common/jedi_lfric_tests/tasks_jedi_lfric_tests.cylc index 404d8abb1..ee8e49fd7 100644 --- a/rose-stem/site/common/jedi_lfric_tests/tasks_jedi_lfric_tests.cylc +++ b/rose-stem/site/common/jedi_lfric_tests/tasks_jedi_lfric_tests.cylc @@ -24,13 +24,12 @@ "tsteps": 20, }) %} -{% elif task_ns.conf_name == "forecast_gh-si-for-linear-C12" %} +{% elif task_ns.conf_name == "forecast_nwp_gal9-C12" %} ### useing lfric_atm: nwp_gal9-C12 - miss-using the names of things for now... -### gh-si-for-linear == um_dump ### can change the time step... {% do task_dict.update({ "app_name": "jedi_forecast", - "opt_confs": ["gh-si-for-linear"], + "opt_confs": ["um_dump"], "resolution": "C12", "ancil_resolution": "C12", "DT": 1800, diff --git a/rose-stem/site/meto/groups/groups_jedi_lfric_tests.cylc b/rose-stem/site/meto/groups/groups_jedi_lfric_tests.cylc index 576c8af56..c7196a606 100644 --- a/rose-stem/site/meto/groups/groups_jedi_lfric_tests.cylc +++ b/rose-stem/site/meto/groups/groups_jedi_lfric_tests.cylc @@ -11,8 +11,8 @@ "jedi_lfric_tests_nwp_gal9-C12_MG_azspice_gnu_fast-debug-64bit", "jedi_lfric_tests_runge-kutta-C12_azspice_gnu_fast-debug-64bit", "jedi_lfric_tests_runge-kutta-C12_azspice_gnu_full-debug-64bit", - "jedi_lfric_tests_forecast_gh-si-for-linear-C12_azspice_gnu_fast-debug-64bit", - "jedi_lfric_tests_forecast_gh-si-for-linear-C12_azspice_gnu_full-debug-64bit", + "jedi_lfric_tests_forecast_nwp_gal9-C12_azspice_gnu_fast-debug-64bit", + "jedi_lfric_tests_forecast_nwp_gal9-C12_azspice_gnu_full-debug-64bit", "jedi_lfric_tests_forecast_pseudo_default-C12_azspice_gnu_fast-debug-64bit", "jedi_lfric_tests_forecast_pseudo_pseudomodel-C12_azspice_gnu_fast-debug-64bit", "jedi_lfric_tests_forecast_pseudo_pseudomodel-C12_azspice_gnu_full-debug-64bit", @@ -51,7 +51,7 @@ "jedi_lfric_tests_ex1a_developer": [ "jedi_lfric_tests_nwp_gal9-C12_MG_ex1a_cce_fast-debug-64bit", "jedi_lfric_tests_runge-kutta-C12_ex1a_cce_fast-debug-64bit", - "jedi_lfric_tests_forecast_gh-si-for-linear-C12_ex1a_cce_fast-debug-64bit", + "jedi_lfric_tests_forecast_nwp_gal9-C12_ex1a_cce_fast-debug-64bit", "jedi_lfric_tests_forecast_pseudo_default-C12_ex1a_cce_fast-debug-64bit", "jedi_lfric_tests_forecast_pseudo_pseudomodel-C12_ex1a_cce_fast-debug-64bit", "jedi_lfric_tests_tlm_forecast_tl_nwp_gal9-C12_MG_ex1a_cce_fast-debug-64bit", diff --git a/rose-stem/site/nci/groups/groups_jedi_lfric_tests.cylc b/rose-stem/site/nci/groups/groups_jedi_lfric_tests.cylc index 6f1a43654..96c210593 100644 --- a/rose-stem/site/nci/groups/groups_jedi_lfric_tests.cylc +++ b/rose-stem/site/nci/groups/groups_jedi_lfric_tests.cylc @@ -10,7 +10,7 @@ "jedi_lfric_tests_gadi_developer": [ "jedi_lfric_tests_nwp_gal9-C12_gadi_intel_fast-debug-64bit", "jedi_lfric_tests_runge-kutta-C12_gadi_intel_fast-debug-64bit", - "jedi_lfric_tests_forecast_gh-si-for-linear-C12_gadi_intel_fast-debug-64bit", + "jedi_lfric_tests_forecast_nwp_gal9-C12_gadi_intel_fast-debug-64bit", "jedi_lfric_tests_forecast_pseudo_default-C12_gadi_intel_fast-debug-64bit", "jedi_lfric_tests_forecast_pseudo_pseudomodel-C12_gadi_intel_fast-debug-64bit", "jedi_lfric_tests_tlm_forecast_tl_default-C12_gadi_intel_fast-debug-64bit", From 8cd5bd710f543d3b3a242db064b99857ea3c78f6 Mon Sep 17 00:00:00 2001 From: ss421 Date: Tue, 5 May 2026 11:20:25 +0100 Subject: [PATCH 13/25] Update the kgos - rname and update the values --- ...orecast_gh-si-for-linear-C12_azspice_gnu_fast-debug-64bit.txt | 1 - ...orecast_gh-si-for-linear-C12_azspice_gnu_full-debug-64bit.txt | 1 - ..._tests_forecast_nwp_gal9-C12_azspice_gnu_fast-debug-64bit.txt | 1 + ..._tests_forecast_nwp_gal9-C12_azspice_gnu_full-debug-64bit.txt | 1 + ...s_forecast_gh-si-for-linear-C12_ex1a_cce_fast-debug-64bit.txt | 1 - ...ric_tests_forecast_nwp_gal9-C12_ex1a_cce_fast-debug-64bit.txt | 1 + 6 files changed, 3 insertions(+), 3 deletions(-) delete mode 100644 rose-stem/site/meto/kgos/jedi_lfric_tests/azspice/checksum_jedi_lfric_tests_forecast_gh-si-for-linear-C12_azspice_gnu_fast-debug-64bit.txt delete mode 100644 rose-stem/site/meto/kgos/jedi_lfric_tests/azspice/checksum_jedi_lfric_tests_forecast_gh-si-for-linear-C12_azspice_gnu_full-debug-64bit.txt create mode 100644 rose-stem/site/meto/kgos/jedi_lfric_tests/azspice/checksum_jedi_lfric_tests_forecast_nwp_gal9-C12_azspice_gnu_fast-debug-64bit.txt create mode 100644 rose-stem/site/meto/kgos/jedi_lfric_tests/azspice/checksum_jedi_lfric_tests_forecast_nwp_gal9-C12_azspice_gnu_full-debug-64bit.txt delete mode 100644 rose-stem/site/meto/kgos/jedi_lfric_tests/ex1a/checksum_jedi_lfric_tests_forecast_gh-si-for-linear-C12_ex1a_cce_fast-debug-64bit.txt create mode 100644 rose-stem/site/meto/kgos/jedi_lfric_tests/ex1a/checksum_jedi_lfric_tests_forecast_nwp_gal9-C12_ex1a_cce_fast-debug-64bit.txt diff --git a/rose-stem/site/meto/kgos/jedi_lfric_tests/azspice/checksum_jedi_lfric_tests_forecast_gh-si-for-linear-C12_azspice_gnu_fast-debug-64bit.txt b/rose-stem/site/meto/kgos/jedi_lfric_tests/azspice/checksum_jedi_lfric_tests_forecast_gh-si-for-linear-C12_azspice_gnu_fast-debug-64bit.txt deleted file mode 100644 index 76a23cf15..000000000 --- a/rose-stem/site/meto/kgos/jedi_lfric_tests/azspice/checksum_jedi_lfric_tests_forecast_gh-si-for-linear-C12_azspice_gnu_fast-debug-64bit.txt +++ /dev/null @@ -1 +0,0 @@ -Inner product checksum theta = 41F6D12301909313 diff --git a/rose-stem/site/meto/kgos/jedi_lfric_tests/azspice/checksum_jedi_lfric_tests_forecast_gh-si-for-linear-C12_azspice_gnu_full-debug-64bit.txt b/rose-stem/site/meto/kgos/jedi_lfric_tests/azspice/checksum_jedi_lfric_tests_forecast_gh-si-for-linear-C12_azspice_gnu_full-debug-64bit.txt deleted file mode 100644 index 76a23cf15..000000000 --- a/rose-stem/site/meto/kgos/jedi_lfric_tests/azspice/checksum_jedi_lfric_tests_forecast_gh-si-for-linear-C12_azspice_gnu_full-debug-64bit.txt +++ /dev/null @@ -1 +0,0 @@ -Inner product checksum theta = 41F6D12301909313 diff --git a/rose-stem/site/meto/kgos/jedi_lfric_tests/azspice/checksum_jedi_lfric_tests_forecast_nwp_gal9-C12_azspice_gnu_fast-debug-64bit.txt b/rose-stem/site/meto/kgos/jedi_lfric_tests/azspice/checksum_jedi_lfric_tests_forecast_nwp_gal9-C12_azspice_gnu_fast-debug-64bit.txt new file mode 100644 index 000000000..1bc51da90 --- /dev/null +++ b/rose-stem/site/meto/kgos/jedi_lfric_tests/azspice/checksum_jedi_lfric_tests_forecast_nwp_gal9-C12_azspice_gnu_fast-debug-64bit.txt @@ -0,0 +1 @@ +Inner product checksum theta = 42329DA72885B909 diff --git a/rose-stem/site/meto/kgos/jedi_lfric_tests/azspice/checksum_jedi_lfric_tests_forecast_nwp_gal9-C12_azspice_gnu_full-debug-64bit.txt b/rose-stem/site/meto/kgos/jedi_lfric_tests/azspice/checksum_jedi_lfric_tests_forecast_nwp_gal9-C12_azspice_gnu_full-debug-64bit.txt new file mode 100644 index 000000000..1bc51da90 --- /dev/null +++ b/rose-stem/site/meto/kgos/jedi_lfric_tests/azspice/checksum_jedi_lfric_tests_forecast_nwp_gal9-C12_azspice_gnu_full-debug-64bit.txt @@ -0,0 +1 @@ +Inner product checksum theta = 42329DA72885B909 diff --git a/rose-stem/site/meto/kgos/jedi_lfric_tests/ex1a/checksum_jedi_lfric_tests_forecast_gh-si-for-linear-C12_ex1a_cce_fast-debug-64bit.txt b/rose-stem/site/meto/kgos/jedi_lfric_tests/ex1a/checksum_jedi_lfric_tests_forecast_gh-si-for-linear-C12_ex1a_cce_fast-debug-64bit.txt deleted file mode 100644 index 223d31dbd..000000000 --- a/rose-stem/site/meto/kgos/jedi_lfric_tests/ex1a/checksum_jedi_lfric_tests_forecast_gh-si-for-linear-C12_ex1a_cce_fast-debug-64bit.txt +++ /dev/null @@ -1 +0,0 @@ -Inner product checksum theta = 41F6D123019048BD diff --git a/rose-stem/site/meto/kgos/jedi_lfric_tests/ex1a/checksum_jedi_lfric_tests_forecast_nwp_gal9-C12_ex1a_cce_fast-debug-64bit.txt b/rose-stem/site/meto/kgos/jedi_lfric_tests/ex1a/checksum_jedi_lfric_tests_forecast_nwp_gal9-C12_ex1a_cce_fast-debug-64bit.txt new file mode 100644 index 000000000..b77dc21b5 --- /dev/null +++ b/rose-stem/site/meto/kgos/jedi_lfric_tests/ex1a/checksum_jedi_lfric_tests_forecast_nwp_gal9-C12_ex1a_cce_fast-debug-64bit.txt @@ -0,0 +1 @@ +Inner product checksum theta = 42329DA7125119BA From bb50c191dff0a09b4dcf773a1064201fb00731fc Mon Sep 17 00:00:00 2001 From: ss421 Date: Tue, 5 May 2026 11:38:20 +0100 Subject: [PATCH 14/25] Add C48 tests case --- .../file/file_def_diags_idealised.xml | 54 ++++++ .../app/jedi_forecast/file/iodef_test.xml | 172 ++++++++++++++++++ .../jedi_forecast/opt/rose-app-C48_MG.conf | 8 + .../opt/rose-app-test_diags.conf | 2 + .../tasks_jedi_lfric_tests.cylc | 15 +- 5 files changed, 249 insertions(+), 2 deletions(-) create mode 100644 rose-stem/app/jedi_forecast/file/file_def_diags_idealised.xml create mode 100644 rose-stem/app/jedi_forecast/file/iodef_test.xml create mode 100644 rose-stem/app/jedi_forecast/opt/rose-app-C48_MG.conf create mode 100644 rose-stem/app/jedi_forecast/opt/rose-app-test_diags.conf diff --git a/rose-stem/app/jedi_forecast/file/file_def_diags_idealised.xml b/rose-stem/app/jedi_forecast/file/file_def_diags_idealised.xml new file mode 100644 index 000000000..76e92d218 --- /dev/null +++ b/rose-stem/app/jedi_forecast/file/file_def_diags_idealised.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/rose-stem/app/jedi_forecast/file/iodef_test.xml b/rose-stem/app/jedi_forecast/file/iodef_test.xml new file mode 100644 index 000000000..39a1cd009 --- /dev/null +++ b/rose-stem/app/jedi_forecast/file/iodef_test.xml @@ -0,0 +1,172 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + performance + 1.0 + + + + true + 50 + true + + + + + diff --git a/rose-stem/app/jedi_forecast/opt/rose-app-C48_MG.conf b/rose-stem/app/jedi_forecast/opt/rose-app-C48_MG.conf new file mode 100644 index 000000000..19a7bfee9 --- /dev/null +++ b/rose-stem/app/jedi_forecast/opt/rose-app-C48_MG.conf @@ -0,0 +1,8 @@ +[file:mesh_C48_MG.nc] +mode=auto +source=$MESH_DIR/mesh_C48_MG.nc + +[namelist:base_mesh] +!!f_lat_deg= +file_prefix='mesh_C48_MG' +!!fplane= diff --git a/rose-stem/app/jedi_forecast/opt/rose-app-test_diags.conf b/rose-stem/app/jedi_forecast/opt/rose-app-test_diags.conf new file mode 100644 index 000000000..60de29e7a --- /dev/null +++ b/rose-stem/app/jedi_forecast/opt/rose-app-test_diags.conf @@ -0,0 +1,2 @@ +[file:iodef.xml] +source=$ROSE_SUITE_DIR/app/lfric_atm/file/iodef_test.xml diff --git a/rose-stem/site/common/jedi_lfric_tests/tasks_jedi_lfric_tests.cylc b/rose-stem/site/common/jedi_lfric_tests/tasks_jedi_lfric_tests.cylc index ee8e49fd7..907aedbc5 100644 --- a/rose-stem/site/common/jedi_lfric_tests/tasks_jedi_lfric_tests.cylc +++ b/rose-stem/site/common/jedi_lfric_tests/tasks_jedi_lfric_tests.cylc @@ -25,8 +25,7 @@ }) %} {% elif task_ns.conf_name == "forecast_nwp_gal9-C12" %} -### useing lfric_atm: nwp_gal9-C12 - miss-using the names of things for now... -### can change the time step... + # This is based on the lfric_atm: nwp_gal9-C12 configuration {% do task_dict.update({ "app_name": "jedi_forecast", "opt_confs": ["um_dump"], @@ -37,6 +36,18 @@ "mpi_parts": 6, }) %} +{% elif task_ns.conf_name == "forecast_nwp_gal9-C48" %} + # This is based on the lfric_atm: nwp_gal9-C48_MG configuration + {% do task_dict.update({ + "app_name": "jedi_forecast", + "opt_confs": ["um_dump"], + "resolution": "C48_MG", + "ancil_resolution": "C48", + "DT": 1800, + "tsteps": 13, + "mpi_parts": 6, + }) %} + {% elif task_ns.conf_name == "forecast_pseudo_default-C12" %} {% do task_dict.update({ From 116741aee99c8ff91c188d556a82922e941cecaf Mon Sep 17 00:00:00 2001 From: ss421 Date: Tue, 5 May 2026 22:57:49 +0100 Subject: [PATCH 15/25] Add JEDI_C48 to read a C48 file --- rose-stem/app/jedi_forecast/opt/rose-app-JEDI_C48.conf | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 rose-stem/app/jedi_forecast/opt/rose-app-JEDI_C48.conf diff --git a/rose-stem/app/jedi_forecast/opt/rose-app-JEDI_C48.conf b/rose-stem/app/jedi_forecast/opt/rose-app-JEDI_C48.conf new file mode 100644 index 000000000..e43344f87 --- /dev/null +++ b/rose-stem/app/jedi_forecast/opt/rose-app-JEDI_C48.conf @@ -0,0 +1,2 @@ +[namelist:jedi_geometry] +io_path_state_read='/home/users/darth/srv/mobb-data/lfric-jedi/lfric-diag/lfric_bg_mi-be607_C48_20210602_la354' From d40ba28adc457f1fa96b9b4de110fe16aab1f61e Mon Sep 17 00:00:00 2001 From: ss421 Date: Tue, 5 May 2026 23:29:11 +0100 Subject: [PATCH 16/25] Add checksums for spice.... cce has odd error... --- ...sts_forecast_nwp_gal9-C48_MG_azspice_gnu_fast-debug-64bit.txt | 1 + ...sts_forecast_nwp_gal9-C48_MG_azspice_gnu_full-debug-64bit.txt | 1 + 2 files changed, 2 insertions(+) create mode 100644 rose-stem/site/meto/kgos/jedi_lfric_tests/azspice/checksum_jedi_lfric_tests_forecast_nwp_gal9-C48_MG_azspice_gnu_fast-debug-64bit.txt create mode 100644 rose-stem/site/meto/kgos/jedi_lfric_tests/azspice/checksum_jedi_lfric_tests_forecast_nwp_gal9-C48_MG_azspice_gnu_full-debug-64bit.txt diff --git a/rose-stem/site/meto/kgos/jedi_lfric_tests/azspice/checksum_jedi_lfric_tests_forecast_nwp_gal9-C48_MG_azspice_gnu_fast-debug-64bit.txt b/rose-stem/site/meto/kgos/jedi_lfric_tests/azspice/checksum_jedi_lfric_tests_forecast_nwp_gal9-C48_MG_azspice_gnu_fast-debug-64bit.txt new file mode 100644 index 000000000..052f4ad79 --- /dev/null +++ b/rose-stem/site/meto/kgos/jedi_lfric_tests/azspice/checksum_jedi_lfric_tests_forecast_nwp_gal9-C48_MG_azspice_gnu_fast-debug-64bit.txt @@ -0,0 +1 @@ +Inner product checksum theta = 42729F5496073B08 diff --git a/rose-stem/site/meto/kgos/jedi_lfric_tests/azspice/checksum_jedi_lfric_tests_forecast_nwp_gal9-C48_MG_azspice_gnu_full-debug-64bit.txt b/rose-stem/site/meto/kgos/jedi_lfric_tests/azspice/checksum_jedi_lfric_tests_forecast_nwp_gal9-C48_MG_azspice_gnu_full-debug-64bit.txt new file mode 100644 index 000000000..052f4ad79 --- /dev/null +++ b/rose-stem/site/meto/kgos/jedi_lfric_tests/azspice/checksum_jedi_lfric_tests_forecast_nwp_gal9-C48_MG_azspice_gnu_full-debug-64bit.txt @@ -0,0 +1 @@ +Inner product checksum theta = 42729F5496073B08 From 44c2a01bd1302d12e38db32b5bb82b75a102c821 Mon Sep 17 00:00:00 2001 From: ss421 Date: Wed, 6 May 2026 00:25:58 +0100 Subject: [PATCH 17/25] Add cce checkum --- ..._tests_forecast_nwp_gal9-C48_MG_ex1a_cce_fast-debug-64bit.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 rose-stem/site/meto/kgos/jedi_lfric_tests/ex1a/checksum_jedi_lfric_tests_forecast_nwp_gal9-C48_MG_ex1a_cce_fast-debug-64bit.txt diff --git a/rose-stem/site/meto/kgos/jedi_lfric_tests/ex1a/checksum_jedi_lfric_tests_forecast_nwp_gal9-C48_MG_ex1a_cce_fast-debug-64bit.txt b/rose-stem/site/meto/kgos/jedi_lfric_tests/ex1a/checksum_jedi_lfric_tests_forecast_nwp_gal9-C48_MG_ex1a_cce_fast-debug-64bit.txt new file mode 100644 index 000000000..3b1489625 --- /dev/null +++ b/rose-stem/site/meto/kgos/jedi_lfric_tests/ex1a/checksum_jedi_lfric_tests_forecast_nwp_gal9-C48_MG_ex1a_cce_fast-debug-64bit.txt @@ -0,0 +1 @@ +Inner product checksum theta = 42729F549626108 From 4acc9101a00ad326a7a23f8961f3caa7bad38745 Mon Sep 17 00:00:00 2001 From: ss421 Date: Wed, 6 May 2026 10:37:56 +0100 Subject: [PATCH 18/25] Code tidy and add C48 inc previous commits.. --- applications/jedi_lfric_tests/build/compile_options.mk | 2 +- applications/jedi_lfric_tests/build/fortran/crayftn.mk | 2 +- .../jedi_lfric_tests/build/fortran/crayftn/fast-debug.mk | 2 +- .../jedi_lfric_tests/build/fortran/crayftn/full-debug.mk | 2 +- .../jedi_lfric_tests/build/fortran/crayftn/production.mk | 2 +- applications/jedi_lfric_tests/build/fortran/gfortran.mk | 2 +- rose-stem/app/jedi_forecast/opt/rose-app-test_diags.conf | 2 +- .../common/jedi_lfric_tests/tasks_jedi_lfric_tests.cylc | 6 +++--- rose-stem/site/common/lfric_atm/tasks_lfric_atm.cylc | 4 ++-- rose-stem/site/meto/groups/groups_jedi_lfric_tests.cylc | 3 +++ .../meto/jedi_lfric_tests/tasks_jedi_lfric_tests_ex1a.cylc | 7 +++++++ ..._forecast_nwp_gal9-C48_MG_ex1a_cce_fast-debug-64bit.txt | 2 +- rose-stem/site/nci/groups/groups_jedi_lfric_tests.cylc | 1 + 13 files changed, 24 insertions(+), 13 deletions(-) diff --git a/applications/jedi_lfric_tests/build/compile_options.mk b/applications/jedi_lfric_tests/build/compile_options.mk index ec2e95b9e..d9d1e0540 100644 --- a/applications/jedi_lfric_tests/build/compile_options.mk +++ b/applications/jedi_lfric_tests/build/compile_options.mk @@ -1,5 +1,5 @@ ############################################################################## -# (c) Crown copyright 2017 Met Office. All rights reserved. +# (c) Crown copyright 2026 Met Office. All rights reserved. # The file LICENCE, distributed with this code, contains details of the terms # under which the code may be used. ############################################################################## diff --git a/applications/jedi_lfric_tests/build/fortran/crayftn.mk b/applications/jedi_lfric_tests/build/fortran/crayftn.mk index 98e77d011..f70b99e21 100644 --- a/applications/jedi_lfric_tests/build/fortran/crayftn.mk +++ b/applications/jedi_lfric_tests/build/fortran/crayftn.mk @@ -1,5 +1,5 @@ ############################################################################## -# (c) Crown copyright 2017 Met Office. All rights reserved. +# (c) Crown copyright 2026 Met Office. All rights reserved. # The file LICENCE, distributed with this code, contains details of the terms # under which the code may be used. ############################################################################## diff --git a/applications/jedi_lfric_tests/build/fortran/crayftn/fast-debug.mk b/applications/jedi_lfric_tests/build/fortran/crayftn/fast-debug.mk index a627d2556..5530bd016 100644 --- a/applications/jedi_lfric_tests/build/fortran/crayftn/fast-debug.mk +++ b/applications/jedi_lfric_tests/build/fortran/crayftn/fast-debug.mk @@ -1,5 +1,5 @@ ############################################################################## -# (c) Crown copyright 2025 Met Office. All rights reserved. +# (c) Crown copyright 2026 Met Office. All rights reserved. # The file LICENCE, distributed with this code, contains details of the terms # under which the code may be used. ############################################################################## diff --git a/applications/jedi_lfric_tests/build/fortran/crayftn/full-debug.mk b/applications/jedi_lfric_tests/build/fortran/crayftn/full-debug.mk index a5b3d45a3..b556c200a 100644 --- a/applications/jedi_lfric_tests/build/fortran/crayftn/full-debug.mk +++ b/applications/jedi_lfric_tests/build/fortran/crayftn/full-debug.mk @@ -1,5 +1,5 @@ ############################################################################## -# (c) Crown copyright 2025 Met Office. All rights reserved. +# (c) Crown copyright 2026 Met Office. All rights reserved. # The file LICENCE, distributed with this code, contains details of the terms # under which the code may be used. ############################################################################## diff --git a/applications/jedi_lfric_tests/build/fortran/crayftn/production.mk b/applications/jedi_lfric_tests/build/fortran/crayftn/production.mk index ddf5ca86c..f82e56866 100644 --- a/applications/jedi_lfric_tests/build/fortran/crayftn/production.mk +++ b/applications/jedi_lfric_tests/build/fortran/crayftn/production.mk @@ -1,5 +1,5 @@ ############################################################################## -# (c) Crown copyright 2025 Met Office. All rights reserved. +# (c) Crown copyright 2026 Met Office. All rights reserved. # The file LICENCE, distributed with this code, contains details of the terms # under which the code may be used. ############################################################################## diff --git a/applications/jedi_lfric_tests/build/fortran/gfortran.mk b/applications/jedi_lfric_tests/build/fortran/gfortran.mk index 79f02dc5a..797618aeb 100644 --- a/applications/jedi_lfric_tests/build/fortran/gfortran.mk +++ b/applications/jedi_lfric_tests/build/fortran/gfortran.mk @@ -1,5 +1,5 @@ ############################################################################## -# (c) Crown copyright 2017 Met Office. All rights reserved. +# (c) Crown copyright 2026 Met Office. All rights reserved. # The file LICENCE, distributed with this code, contains details of the terms # under which the code may be used. ############################################################################## diff --git a/rose-stem/app/jedi_forecast/opt/rose-app-test_diags.conf b/rose-stem/app/jedi_forecast/opt/rose-app-test_diags.conf index 60de29e7a..cd1c163e7 100644 --- a/rose-stem/app/jedi_forecast/opt/rose-app-test_diags.conf +++ b/rose-stem/app/jedi_forecast/opt/rose-app-test_diags.conf @@ -1,2 +1,2 @@ [file:iodef.xml] -source=$ROSE_SUITE_DIR/app/lfric_atm/file/iodef_test.xml +source=$ROSE_SUITE_DIR/app/jedi_forecast/file/iodef_test.xml diff --git a/rose-stem/site/common/jedi_lfric_tests/tasks_jedi_lfric_tests.cylc b/rose-stem/site/common/jedi_lfric_tests/tasks_jedi_lfric_tests.cylc index 907aedbc5..c9e3f55f6 100644 --- a/rose-stem/site/common/jedi_lfric_tests/tasks_jedi_lfric_tests.cylc +++ b/rose-stem/site/common/jedi_lfric_tests/tasks_jedi_lfric_tests.cylc @@ -36,16 +36,16 @@ "mpi_parts": 6, }) %} -{% elif task_ns.conf_name == "forecast_nwp_gal9-C48" %} +{% elif task_ns.conf_name == "forecast_nwp_gal9-C48_MG" %} # This is based on the lfric_atm: nwp_gal9-C48_MG configuration {% do task_dict.update({ "app_name": "jedi_forecast", - "opt_confs": ["um_dump"], + "opt_confs": ["um_dump","JEDI_C48","test_diags"], "resolution": "C48_MG", "ancil_resolution": "C48", "DT": 1800, "tsteps": 13, - "mpi_parts": 6, + "mpi_parts": 24, }) %} {% elif task_ns.conf_name == "forecast_pseudo_default-C12" %} diff --git a/rose-stem/site/common/lfric_atm/tasks_lfric_atm.cylc b/rose-stem/site/common/lfric_atm/tasks_lfric_atm.cylc index a49293d58..b7d87669b 100644 --- a/rose-stem/site/common/lfric_atm/tasks_lfric_atm.cylc +++ b/rose-stem/site/common/lfric_atm/tasks_lfric_atm.cylc @@ -24,9 +24,9 @@ }) %} {% elif task_ns.conf_name == "nwp_gal9-C48_MG" %} - +## ,"ls_and_jedi"... {% do task_dict.update({ - "opt_confs": ["um_dump","test_diags"], + "opt_confs": ["um_dump","ls_and_jedi"], "resolution": "C48_MG", "DT": 1800, "tsteps": 36, diff --git a/rose-stem/site/meto/groups/groups_jedi_lfric_tests.cylc b/rose-stem/site/meto/groups/groups_jedi_lfric_tests.cylc index c7196a606..a45c978d1 100644 --- a/rose-stem/site/meto/groups/groups_jedi_lfric_tests.cylc +++ b/rose-stem/site/meto/groups/groups_jedi_lfric_tests.cylc @@ -13,6 +13,8 @@ "jedi_lfric_tests_runge-kutta-C12_azspice_gnu_full-debug-64bit", "jedi_lfric_tests_forecast_nwp_gal9-C12_azspice_gnu_fast-debug-64bit", "jedi_lfric_tests_forecast_nwp_gal9-C12_azspice_gnu_full-debug-64bit", + "jedi_lfric_tests_forecast_nwp_gal9-C48_MG_azspice_gnu_fast-debug-64bit", + "jedi_lfric_tests_forecast_nwp_gal9-C48_MG_azspice_gnu_full-debug-64bit", "jedi_lfric_tests_forecast_pseudo_default-C12_azspice_gnu_fast-debug-64bit", "jedi_lfric_tests_forecast_pseudo_pseudomodel-C12_azspice_gnu_fast-debug-64bit", "jedi_lfric_tests_forecast_pseudo_pseudomodel-C12_azspice_gnu_full-debug-64bit", @@ -52,6 +54,7 @@ "jedi_lfric_tests_nwp_gal9-C12_MG_ex1a_cce_fast-debug-64bit", "jedi_lfric_tests_runge-kutta-C12_ex1a_cce_fast-debug-64bit", "jedi_lfric_tests_forecast_nwp_gal9-C12_ex1a_cce_fast-debug-64bit", + "jedi_lfric_tests_forecast_nwp_gal9-C48_MG_ex1a_cce_fast-debug-64bit", "jedi_lfric_tests_forecast_pseudo_default-C12_ex1a_cce_fast-debug-64bit", "jedi_lfric_tests_forecast_pseudo_pseudomodel-C12_ex1a_cce_fast-debug-64bit", "jedi_lfric_tests_tlm_forecast_tl_nwp_gal9-C12_MG_ex1a_cce_fast-debug-64bit", diff --git a/rose-stem/site/meto/jedi_lfric_tests/tasks_jedi_lfric_tests_ex1a.cylc b/rose-stem/site/meto/jedi_lfric_tests/tasks_jedi_lfric_tests_ex1a.cylc index 0e1d21dc2..bb675e869 100644 --- a/rose-stem/site/meto/jedi_lfric_tests/tasks_jedi_lfric_tests_ex1a.cylc +++ b/rose-stem/site/meto/jedi_lfric_tests/tasks_jedi_lfric_tests_ex1a.cylc @@ -5,4 +5,11 @@ {# ########################################################################### #} {% do LOG.debug("Entered site/meto/jedi_lfric_tests/tasks_jedi_lfric_tests_ex1a.cylc") %} +{% if task_ns.conf_name == "forecast_nwp_gal9-C48_MG" %} + {% do task_dict.update({ + "memory": [40, "GB"], + }) %} + +{% endif %} + {% do LOG.debug("Finised in site/meto/jedi_lfric_tests/tasks_jedi_lfric_tests_ex1a.cylc") %} diff --git a/rose-stem/site/meto/kgos/jedi_lfric_tests/ex1a/checksum_jedi_lfric_tests_forecast_nwp_gal9-C48_MG_ex1a_cce_fast-debug-64bit.txt b/rose-stem/site/meto/kgos/jedi_lfric_tests/ex1a/checksum_jedi_lfric_tests_forecast_nwp_gal9-C48_MG_ex1a_cce_fast-debug-64bit.txt index 3b1489625..3148932bd 100644 --- a/rose-stem/site/meto/kgos/jedi_lfric_tests/ex1a/checksum_jedi_lfric_tests_forecast_nwp_gal9-C48_MG_ex1a_cce_fast-debug-64bit.txt +++ b/rose-stem/site/meto/kgos/jedi_lfric_tests/ex1a/checksum_jedi_lfric_tests_forecast_nwp_gal9-C48_MG_ex1a_cce_fast-debug-64bit.txt @@ -1 +1 @@ -Inner product checksum theta = 42729F549626108 +Inner product checksum theta = 42729F549626108A diff --git a/rose-stem/site/nci/groups/groups_jedi_lfric_tests.cylc b/rose-stem/site/nci/groups/groups_jedi_lfric_tests.cylc index 96c210593..e0e32f538 100644 --- a/rose-stem/site/nci/groups/groups_jedi_lfric_tests.cylc +++ b/rose-stem/site/nci/groups/groups_jedi_lfric_tests.cylc @@ -11,6 +11,7 @@ "jedi_lfric_tests_nwp_gal9-C12_gadi_intel_fast-debug-64bit", "jedi_lfric_tests_runge-kutta-C12_gadi_intel_fast-debug-64bit", "jedi_lfric_tests_forecast_nwp_gal9-C12_gadi_intel_fast-debug-64bit", + "jedi_lfric_tests_forecast_nwp_gal9-C48_MG_gadi_intel_fast-debug-64bit", "jedi_lfric_tests_forecast_pseudo_default-C12_gadi_intel_fast-debug-64bit", "jedi_lfric_tests_forecast_pseudo_pseudomodel-C12_gadi_intel_fast-debug-64bit", "jedi_lfric_tests_tlm_forecast_tl_default-C12_gadi_intel_fast-debug-64bit", From 79e1bc71752049044907b16357d2e497de8769df Mon Sep 17 00:00:00 2001 From: ss421 Date: Wed, 6 May 2026 16:49:24 +0100 Subject: [PATCH 19/25] Code tidy --- .../build/psyclone_transmute_file_list.mk | 10 +++++----- .../driver/nl/jedi_lfric_nl_modeldb_driver_mod.f90 | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/applications/jedi_lfric_tests/build/psyclone_transmute_file_list.mk b/applications/jedi_lfric_tests/build/psyclone_transmute_file_list.mk index 3e99bf874..f69100102 100644 --- a/applications/jedi_lfric_tests/build/psyclone_transmute_file_list.mk +++ b/applications/jedi_lfric_tests/build/psyclone_transmute_file_list.mk @@ -12,8 +12,8 @@ # For CPU OMP, we want to choose which files get run through PSyclone, # and preserve existing hand coded optimisations. -# Choose which files to pre-process and PSyclone from physics_schemes / other -# source (e.g. UKCA) +# Choose which files to Pre-proccess and PSyclone from physics_schemes / other +# physics source (e.g. UKCA) export PSYCLONE_PHYSICS_FILES = @@ -25,15 +25,15 @@ export PSYCLONE_PHYSICS_FILES = export PSYCLONE_PASS_NO_SCRIPT = ##### TRANSMUTE_INCLUDE_METHOD specify_exclude ##### -# For GPU, we may want to use more generic local.py transformation scripts and -# PSyclone by directory. +# For GPU, we may want to use more generic local.py transformation scripts +# and psyclone by directory. # Advise which directories to pass to PSyclone. # All files in these directories will be run through PSyclone using the # transmute method. # Also provide an optional exception list. # These files will be filtered, and will NOT be run through PSyclone. -# Directories to PSyclone +# Directories to psyclone export PSYCLONE_DIRECTORIES = # A general file exception list diff --git a/interfaces/jedi_lfric_interface/source/driver/nl/jedi_lfric_nl_modeldb_driver_mod.f90 b/interfaces/jedi_lfric_interface/source/driver/nl/jedi_lfric_nl_modeldb_driver_mod.f90 index 28a92fd67..6d1405ba6 100644 --- a/interfaces/jedi_lfric_interface/source/driver/nl/jedi_lfric_nl_modeldb_driver_mod.f90 +++ b/interfaces/jedi_lfric_interface/source/driver/nl/jedi_lfric_nl_modeldb_driver_mod.f90 @@ -139,7 +139,7 @@ subroutine finalise_modeldb( modeldb ) type(modeldb_type), intent(inout) :: modeldb call log_event( 'Finalising linear model modeldb', LOG_LEVEL_TRACE ) -!!! Im not sure why I dont just call gungho_driver_mod: finalise here? + ! Model configuration finalisation call finalise_model( modeldb ) From a732ba7efecb15df855f4d365fd0ad520912a851 Mon Sep 17 00:00:00 2001 From: ss421 Date: Thu, 7 May 2026 00:07:35 +0100 Subject: [PATCH 20/25] Fix code style task --- science/gungho/source/driver/gungho_diagnostics_driver_mod.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/science/gungho/source/driver/gungho_diagnostics_driver_mod.F90 b/science/gungho/source/driver/gungho_diagnostics_driver_mod.F90 index 0cbc7164a..96d641ea4 100644 --- a/science/gungho/source/driver/gungho_diagnostics_driver_mod.F90 +++ b/science/gungho/source/driver/gungho_diagnostics_driver_mod.F90 @@ -248,7 +248,7 @@ subroutine gungho_diagnostics_driver( modeldb, & call write_pv_diagnostic( u, theta, rho, exner, modeldb%clock ) else print*, "I dont think this is required to make it work...." - ! The issue is there are two methods and one is #ifdef out + ! The issue is there are two methods and one is #ifdef out ! so will need to fix this issue later !!call write_pv_diagnostic( u, theta, rho, modeldb%clock ) endif! (use_nl_physics) then From 59cb3417724543ed3fa0f32d2eccb67fa7fc4722 Mon Sep 17 00:00:00 2001 From: ss421 Date: Fri, 8 May 2026 00:38:11 +0100 Subject: [PATCH 21/25] Fix issue post merge to HEAD --- applications/jedi_lfric_tests/Makefile | 10 +++++----- rose-stem/app/jedi_forecast/rose-app.conf | 3 +-- .../timestepping/semi_implicit_timestep_alg_mod.X90 | 4 ++++ .../gungho/source/diagnostics/diagnostics_calc_mod.F90 | 4 +++- science/gungho/source/driver/create_iau_fields_mod.F90 | 4 ++++ science/gungho/source/driver/gungho_driver_mod.F90 | 2 ++ .../gungho/source/driver/gungho_init_fields_mod.X90 | 4 ++++ science/gungho/source/driver/gungho_model_mod.F90 | 4 ++++ 8 files changed, 27 insertions(+), 8 deletions(-) diff --git a/applications/jedi_lfric_tests/Makefile b/applications/jedi_lfric_tests/Makefile index 3ca0b1f89..d342f30c1 100644 --- a/applications/jedi_lfric_tests/Makefile +++ b/applications/jedi_lfric_tests/Makefile @@ -20,11 +20,11 @@ export PSYCLONE_TRANSFORMATION ?= minimum export PROJECT_DIR := $(realpath $(dir $(lastword $(MAKEFILE_LIST)))) -# Note - socrates_interface must come before jules_interface as there are dependencies on each other. export EXTRA_ROSE_META = jules export META_DIR = $(WORKING_DIR)/../rose-meta export ROSE_META_DIRS = $(APPS_ROOT_DIR)/rose-meta $(META_DIR) +# Note - socrates_interface must come before jules_interface as there are dependencies on each other. export INTERNAL_DEPENDENCIES = $(CORE_ROOT_DIR)/infrastructure \ $(CORE_ROOT_DIR)/components/driver \ $(CORE_ROOT_DIR)/components/science \ @@ -163,7 +163,7 @@ build: ALWAYS SOURCE_DIR=$(APPS_ROOT_DIR)/science/gungho/source \ META_FILE_DIR=$(META_FILE_DIR) $(call MESSAGE,========================================) - $(call MESSAGE,PSycloning interface components)ss421_update_forecast_config_HEAD + $(call MESSAGE,PSycloning interface components) $(call MESSAGE,========================================) $Q$(MAKE) $(QUIET_ARG) -f $(LFRIC_BUILD)/psyclone/psyclone_psykal.mk \ SOURCE_DIR=$(APPS_ROOT_DIR)/interfaces/coupled_interface/source \ @@ -192,16 +192,16 @@ build: ALWAYS $(call MESSAGE,========================================) $(call MESSAGE,Preprocess and PSyclone Transmute) $(call MESSAGE,========================================) - $Q$(MAKE) $(QUIET_ARG) -f $(APPS_ROOT_DIR)/interfaces/physics_schemes_interface/build/pre_process_phys.mk \ + $Q$(MAKE) $(QUIET_ARG) -f $(APPS_ROOT_DIR)/interfaces/build/pre_process_phys.mk \ SOURCE_DIR=$(WORKING_DIR) \ PSYCLONE_PHYSICS_FILES="$(PSYCLONE_PHYSICS_FILES)" \ PSYCLONE_DIRECTORIES="$(PSYCLONE_DIRECTORIES)" \ PSYCLONE_PHYSICS_EXCEPTION="$(PSYCLONE_PHYSICS_EXCEPTION)" - $Q$(MAKE) $(QUIET_ARG) -f $(APPS_ROOT_DIR)/interfaces/physics_schemes_interface/build/psyclone_transmute_pass.mk \ + $Q$(MAKE) $(QUIET_ARG) -f $(APPS_ROOT_DIR)/interfaces/build/psyclone_transmute_pass.mk \ SOURCE_DIR=$(WORKING_DIR) \ OPTIMISATION_PATH_PSY=$(APPS_ROOT_DIR)/applications/$(PROJECT)/$(OPTIMISATION_PATH) \ PSYCLONE_PASS_NO_SCRIPT="$(PSYCLONE_PASS_NO_SCRIPT)" - $Q$(MAKE) $(QUIET_ARG) -f $(APPS_ROOT_DIR)/interfaces/physics_schemes_interface/build/psyclone_transmute.mk \ + $Q$(MAKE) $(QUIET_ARG) -f $(APPS_ROOT_DIR)/interfaces/build/psyclone_transmute.mk \ SOURCE_DIR=$(WORKING_DIR) \ OPTIMISATION_PATH_PSY=$(APPS_ROOT_DIR)/applications/$(PROJECT)/$(OPTIMISATION_PATH) \ PSYCLONE_PHYSICS_FILES="$(PSYCLONE_PHYSICS_FILES)" \ diff --git a/rose-stem/app/jedi_forecast/rose-app.conf b/rose-stem/app/jedi_forecast/rose-app.conf index a9325deff..5fa0f8285 100644 --- a/rose-stem/app/jedi_forecast/rose-app.conf +++ b/rose-stem/app/jedi_forecast/rose-app.conf @@ -17,8 +17,7 @@ mode=mkdir [file:configuration.nml] mode=auto -source=namelist:adjoint - =namelist:jedi_lfric_tests +source=namelist:jedi_lfric_tests = namelist:jedi_geometry = namelist:jedi_state = namelist:jedi_model diff --git a/science/gungho/source/algorithm/timestepping/semi_implicit_timestep_alg_mod.X90 b/science/gungho/source/algorithm/timestepping/semi_implicit_timestep_alg_mod.X90 index 4155fb5f4..8f4d8f66c 100644 --- a/science/gungho/source/algorithm/timestepping/semi_implicit_timestep_alg_mod.X90 +++ b/science/gungho/source/algorithm/timestepping/semi_implicit_timestep_alg_mod.X90 @@ -351,6 +351,7 @@ contains dtemp_encorr = dt * temp_corr_io_value%data(1) #ifdef UM_PHYSICS +if (use_nl_physics) then if (use_spt) then ! Get spectral coefficients and power law from the model database call get_stph_values(modeldb, spt_array_names, spt_spectral_coeffc, & @@ -361,6 +362,7 @@ contains call get_stph_values(modeldb, skeb_array_names, skeb_spectral_coeffc, & skeb_spectral_coeffs, skeb_power_law) end if +endif! (use_nl_physics) then #endif ! Run the timestep @@ -384,6 +386,7 @@ contains mesh, twod_mesh) #ifdef UM_PHYSICS +if (use_nl_physics) then if (use_spt) then ! Put spectral coefficients and power law back into model database call put_stph_values(modeldb, spt_array_names, spt_spectral_coeffc, & @@ -395,6 +398,7 @@ contains call put_stph_values(modeldb, skeb_array_names, skeb_spectral_coeffc, & skeb_spectral_coeffs, skeb_power_law) end if +endif! (use_nl_physics) then #endif nullify( model_clock, mesh, & diff --git a/science/gungho/source/diagnostics/diagnostics_calc_mod.F90 b/science/gungho/source/diagnostics/diagnostics_calc_mod.F90 index 96fee1f3a..c60e55c9a 100755 --- a/science/gungho/source/diagnostics/diagnostics_calc_mod.F90 +++ b/science/gungho/source/diagnostics/diagnostics_calc_mod.F90 @@ -280,6 +280,8 @@ subroutine write_pv_diagnostic(u_field, theta, rho, exner, clock) logical(l_def), parameter :: xi3_axis = .false. logical(l_def), parameter :: add_W3_version = .false. +if (use_nl_physics) then + pv_modlev_flag = diagnostic_to_be_sampled('potential_vorticity') .or. & diagnostic_to_be_sampled('init_potential_vorticity') @@ -297,7 +299,7 @@ subroutine write_pv_diagnostic(u_field, theta, rho, exner, clock) end if end if - +endif! (use_nl_physics) then end subroutine write_pv_diagnostic #else !------------------------------------------------------------------------------- diff --git a/science/gungho/source/driver/create_iau_fields_mod.F90 b/science/gungho/source/driver/create_iau_fields_mod.F90 index 933f598f9..4d7ea9777 100755 --- a/science/gungho/source/driver/create_iau_fields_mod.F90 +++ b/science/gungho/source/driver/create_iau_fields_mod.F90 @@ -337,6 +337,8 @@ subroutine create_iau_additional_fields( mesh, modeldb, iau_incs, & procedure(read_interface), pointer :: tmp_read_ptr +if (use_nl_physics) then + call modeldb%fields%add_empty_field_collection(iau_incs) iau_inc_fields => modeldb%fields%get_field_collection(iau_incs) @@ -394,6 +396,8 @@ subroutine create_iau_additional_fields( mesh, modeldb, iau_incs, & call rho_inc%set_read_behaviour(tmp_read_ptr) call iau_inc_fields%add_field(rho_inc) +endif! (use_nl_physics) then + end subroutine create_iau_additional_fields #endif diff --git a/science/gungho/source/driver/gungho_driver_mod.F90 b/science/gungho/source/driver/gungho_driver_mod.F90 index ac0f1d32b..8bb477267 100644 --- a/science/gungho/source/driver/gungho_driver_mod.F90 +++ b/science/gungho/source/driver/gungho_driver_mod.F90 @@ -200,6 +200,7 @@ subroutine initialise( program_name, modeldb ) random_seed_io_value ) deallocate(real_array) #ifdef UM_PHYSICS +if (use_nl_physics) then if (use_spt) then allocate(real_array(stph_spectral_dim)) real_array = 0.0_r_def @@ -220,6 +221,7 @@ subroutine initialise( program_name, modeldb ) end do deallocate(real_array) end if +endif! (use_nl_physics) then #endif end if diff --git a/science/gungho/source/driver/gungho_init_fields_mod.X90 b/science/gungho/source/driver/gungho_init_fields_mod.X90 index 566b6924d..421f9a881 100644 --- a/science/gungho/source/driver/gungho_init_fields_mod.X90 +++ b/science/gungho/source/driver/gungho_init_fields_mod.X90 @@ -703,6 +703,7 @@ endif! (use_nl_physics) then call random_seed_io_value%set_checkpoint_write_behaviour(io_op_write_ptr) #ifdef UM_PHYSICS +if (use_nl_physics) then if (use_spt) then do i = 1, spt_array_count stph_io_value => get_io_value(modeldb%values, trim(spt_array_names(i))) @@ -717,6 +718,7 @@ endif! (use_nl_physics) then call stph_io_value%set_checkpoint_write_behaviour(io_op_write_ptr) end do end if +endif! (use_nl_physics) then #endif end if ! Initialise prognostic fields appropriately @@ -1057,6 +1059,7 @@ endif! (use_nl_physics) then end do #ifdef UM_PHYSICS +if (use_nl_physics) then ! Read arrays for SPT and SKEB schemes if (use_spt) then do i = 1, spt_array_count @@ -1085,6 +1088,7 @@ endif! (use_nl_physics) then stph_io_value%data = power_law deallocate(power_law) end if +endif! (use_nl_physics) then #endif end if diff --git a/science/gungho/source/driver/gungho_model_mod.F90 b/science/gungho/source/driver/gungho_model_mod.F90 index c5fe993ff..e08280e9c 100644 --- a/science/gungho/source/driver/gungho_model_mod.F90 +++ b/science/gungho/source/driver/gungho_model_mod.F90 @@ -287,6 +287,7 @@ subroutine before_context_close(clock) mode=CHECKPOINTING, operation="once", & id_as_name=.true.) #ifdef UM_PHYSICS +if (use_nl_physics) then if (use_spt) then do i = 1, spt_array_count call add_field( persistor%ckp_out, spt_array_names(i), & @@ -301,6 +302,7 @@ subroutine before_context_close(clock) id_as_name=.true.) end do end if +endif! (use_nl_physics) then #endif end if end if @@ -315,6 +317,7 @@ subroutine before_context_close(clock) mode=RESTARTING, operation="once", & id_as_name=.true.) #ifdef UM_PHYSICS +if (use_nl_physics) then if (use_spt) then do i = 1, spt_array_count call add_field( persistor%ckp_inp, spt_array_names(i), & @@ -329,6 +332,7 @@ subroutine before_context_close(clock) id_as_name=.true.) end do end if +endif! (use_nl_physics) then #endif end if end if From aee1c8518f8ab20977f091132cd955c6d32c39ee Mon Sep 17 00:00:00 2001 From: ss421 Date: Wed, 13 May 2026 12:02:20 +0100 Subject: [PATCH 22/25] ADD da verion of the configuration --- .../app/jedi_forecast/opt/rose-app-da.conf | 34 +++++++++++++++++++ .../tasks_jedi_lfric_tests.cylc | 13 +++++++ .../meto/groups/groups_jedi_lfric_tests.cylc | 3 ++ ...l9_da-C12_azspice_gnu_fast-debug-64bit.txt | 1 + ...l9_da-C12_azspice_gnu_full-debug-64bit.txt | 1 + ..._gal9_da-C12_ex1a_cce_fast-debug-64bit.txt | 1 + .../nci/groups/groups_jedi_lfric_tests.cylc | 1 + 7 files changed, 54 insertions(+) create mode 100644 rose-stem/app/jedi_forecast/opt/rose-app-da.conf create mode 100644 rose-stem/site/meto/kgos/jedi_lfric_tests/azspice/checksum_jedi_lfric_tests_forecast_nwp_gal9_da-C12_azspice_gnu_fast-debug-64bit.txt create mode 100644 rose-stem/site/meto/kgos/jedi_lfric_tests/azspice/checksum_jedi_lfric_tests_forecast_nwp_gal9_da-C12_azspice_gnu_full-debug-64bit.txt create mode 100644 rose-stem/site/meto/kgos/jedi_lfric_tests/ex1a/checksum_jedi_lfric_tests_forecast_nwp_gal9_da-C12_ex1a_cce_fast-debug-64bit.txt diff --git a/rose-stem/app/jedi_forecast/opt/rose-app-da.conf b/rose-stem/app/jedi_forecast/opt/rose-app-da.conf new file mode 100644 index 000000000..07526f5d9 --- /dev/null +++ b/rose-stem/app/jedi_forecast/opt/rose-app-da.conf @@ -0,0 +1,34 @@ +[file:iodef.xml] +source=$ROSE_SUITE_DIR/app/lfric_atm/file/iodef_gal_nwp_cycling.xml + +[namelist:files] +iau_path='$BIG_DATA_DIR/start_dumps/basic-gal/yak/20210324T0600Z_um2lfric_iau_000001' +sea_ice_ancil_path='$BIG_DATA_DIR/start_dumps/basic-gal/yak/glu_ice' +snow_analysis_ancil_path='$BIG_DATA_DIR/start_dumps/basic-gal/yak/20210324T0600Z_glu_snow_um2lfric_fixed' +sst_ancil_path='$BIG_DATA_DIR/start_dumps/basic-gal/yak/sst_ugrid_postqa_fixed' +start_dump_directory='$BIG_DATA_DIR/start_dumps/basic-gal/yak/PR202' +start_dump_filename='20210324T0000Z_lfric_ice_dust_t+3' + +[namelist:iau] +iau_ainc_multifile=.false. +iau_mode='instantaneous' +iau_pc2=.true. +iau_tendency_ainc=.false. +iau_use_addinf=.false. +iau_use_bcorr=.false. +iau_use_level_one_temp=.false. +iau_wet_density=.true. + +[namelist:initialization] +init_option='checkpoint_dump' +!!model_eos_height=100 +sea_ice_source='surf' +snow_source='surf' +sst_source='surf' + +[namelist:section_choice] +iau=.true. + +[namelist:time] +calendar_origin='2021-03-24 06:00:00' +calendar_start='2021-03-24 03:00:00' diff --git a/rose-stem/site/common/jedi_lfric_tests/tasks_jedi_lfric_tests.cylc b/rose-stem/site/common/jedi_lfric_tests/tasks_jedi_lfric_tests.cylc index c9e3f55f6..d8e6d7b72 100644 --- a/rose-stem/site/common/jedi_lfric_tests/tasks_jedi_lfric_tests.cylc +++ b/rose-stem/site/common/jedi_lfric_tests/tasks_jedi_lfric_tests.cylc @@ -36,6 +36,19 @@ "mpi_parts": 6, }) %} +{% elif task_ns.conf_name == "forecast_nwp_gal9_da-C12" %} + # This is based on the lfric_atm: nwp_gal9-C12_da configuration + # This includes the IAU + {% do task_dict.update({ + "app_name": "jedi_forecast", + "opt_confs": ["da"], + "resolution": "C12", + "ancil_resolution": "C12", + "DT": 1800, + "tsteps": 13, + "mpi_parts": 6, + }) %} + {% elif task_ns.conf_name == "forecast_nwp_gal9-C48_MG" %} # This is based on the lfric_atm: nwp_gal9-C48_MG configuration {% do task_dict.update({ diff --git a/rose-stem/site/meto/groups/groups_jedi_lfric_tests.cylc b/rose-stem/site/meto/groups/groups_jedi_lfric_tests.cylc index a45c978d1..14be80e6c 100644 --- a/rose-stem/site/meto/groups/groups_jedi_lfric_tests.cylc +++ b/rose-stem/site/meto/groups/groups_jedi_lfric_tests.cylc @@ -13,6 +13,8 @@ "jedi_lfric_tests_runge-kutta-C12_azspice_gnu_full-debug-64bit", "jedi_lfric_tests_forecast_nwp_gal9-C12_azspice_gnu_fast-debug-64bit", "jedi_lfric_tests_forecast_nwp_gal9-C12_azspice_gnu_full-debug-64bit", + "jedi_lfric_tests_forecast_nwp_gal9_da-C12_azspice_gnu_fast-debug-64bit", + "jedi_lfric_tests_forecast_nwp_gal9_da-C12_azspice_gnu_full-debug-64bit", "jedi_lfric_tests_forecast_nwp_gal9-C48_MG_azspice_gnu_fast-debug-64bit", "jedi_lfric_tests_forecast_nwp_gal9-C48_MG_azspice_gnu_full-debug-64bit", "jedi_lfric_tests_forecast_pseudo_default-C12_azspice_gnu_fast-debug-64bit", @@ -54,6 +56,7 @@ "jedi_lfric_tests_nwp_gal9-C12_MG_ex1a_cce_fast-debug-64bit", "jedi_lfric_tests_runge-kutta-C12_ex1a_cce_fast-debug-64bit", "jedi_lfric_tests_forecast_nwp_gal9-C12_ex1a_cce_fast-debug-64bit", + "jedi_lfric_tests_forecast_nwp_gal9_da-C12_ex1a_cce_fast-debug-64bit", "jedi_lfric_tests_forecast_nwp_gal9-C48_MG_ex1a_cce_fast-debug-64bit", "jedi_lfric_tests_forecast_pseudo_default-C12_ex1a_cce_fast-debug-64bit", "jedi_lfric_tests_forecast_pseudo_pseudomodel-C12_ex1a_cce_fast-debug-64bit", diff --git a/rose-stem/site/meto/kgos/jedi_lfric_tests/azspice/checksum_jedi_lfric_tests_forecast_nwp_gal9_da-C12_azspice_gnu_fast-debug-64bit.txt b/rose-stem/site/meto/kgos/jedi_lfric_tests/azspice/checksum_jedi_lfric_tests_forecast_nwp_gal9_da-C12_azspice_gnu_fast-debug-64bit.txt new file mode 100644 index 000000000..1bc51da90 --- /dev/null +++ b/rose-stem/site/meto/kgos/jedi_lfric_tests/azspice/checksum_jedi_lfric_tests_forecast_nwp_gal9_da-C12_azspice_gnu_fast-debug-64bit.txt @@ -0,0 +1 @@ +Inner product checksum theta = 42329DA72885B909 diff --git a/rose-stem/site/meto/kgos/jedi_lfric_tests/azspice/checksum_jedi_lfric_tests_forecast_nwp_gal9_da-C12_azspice_gnu_full-debug-64bit.txt b/rose-stem/site/meto/kgos/jedi_lfric_tests/azspice/checksum_jedi_lfric_tests_forecast_nwp_gal9_da-C12_azspice_gnu_full-debug-64bit.txt new file mode 100644 index 000000000..1bc51da90 --- /dev/null +++ b/rose-stem/site/meto/kgos/jedi_lfric_tests/azspice/checksum_jedi_lfric_tests_forecast_nwp_gal9_da-C12_azspice_gnu_full-debug-64bit.txt @@ -0,0 +1 @@ +Inner product checksum theta = 42329DA72885B909 diff --git a/rose-stem/site/meto/kgos/jedi_lfric_tests/ex1a/checksum_jedi_lfric_tests_forecast_nwp_gal9_da-C12_ex1a_cce_fast-debug-64bit.txt b/rose-stem/site/meto/kgos/jedi_lfric_tests/ex1a/checksum_jedi_lfric_tests_forecast_nwp_gal9_da-C12_ex1a_cce_fast-debug-64bit.txt new file mode 100644 index 000000000..b77dc21b5 --- /dev/null +++ b/rose-stem/site/meto/kgos/jedi_lfric_tests/ex1a/checksum_jedi_lfric_tests_forecast_nwp_gal9_da-C12_ex1a_cce_fast-debug-64bit.txt @@ -0,0 +1 @@ +Inner product checksum theta = 42329DA7125119BA diff --git a/rose-stem/site/nci/groups/groups_jedi_lfric_tests.cylc b/rose-stem/site/nci/groups/groups_jedi_lfric_tests.cylc index e0e32f538..d41e365b9 100644 --- a/rose-stem/site/nci/groups/groups_jedi_lfric_tests.cylc +++ b/rose-stem/site/nci/groups/groups_jedi_lfric_tests.cylc @@ -11,6 +11,7 @@ "jedi_lfric_tests_nwp_gal9-C12_gadi_intel_fast-debug-64bit", "jedi_lfric_tests_runge-kutta-C12_gadi_intel_fast-debug-64bit", "jedi_lfric_tests_forecast_nwp_gal9-C12_gadi_intel_fast-debug-64bit", + "jedi_lfric_tests_forecast_nwp_gal9_da-C12_gadi_intel_fast-debug-64bit", "jedi_lfric_tests_forecast_nwp_gal9-C48_MG_gadi_intel_fast-debug-64bit", "jedi_lfric_tests_forecast_pseudo_default-C12_gadi_intel_fast-debug-64bit", "jedi_lfric_tests_forecast_pseudo_pseudomodel-C12_gadi_intel_fast-debug-64bit", From c6bc12dd081de2d970f305cf770a8f0e631e732b Mon Sep 17 00:00:00 2001 From: ss421 Date: Wed, 13 May 2026 16:21:21 +0100 Subject: [PATCH 23/25] Add the updated iodef file --- .../file/file_def_ancil_surf.xml | 15 ++ .../file/file_def_diags_var_ops.xml | 108 +++++++++++ .../app/jedi_forecast/file/file_def_iau.xml | 51 +++++ .../file/iodef_gal_nwp_cycling.xml | 176 ++++++++++++++++++ .../app/jedi_forecast/opt/rose-app-da.conf | 2 +- 5 files changed, 351 insertions(+), 1 deletion(-) create mode 100644 rose-stem/app/jedi_forecast/file/file_def_ancil_surf.xml create mode 100644 rose-stem/app/jedi_forecast/file/file_def_diags_var_ops.xml create mode 100644 rose-stem/app/jedi_forecast/file/file_def_iau.xml create mode 100644 rose-stem/app/jedi_forecast/file/iodef_gal_nwp_cycling.xml diff --git a/rose-stem/app/jedi_forecast/file/file_def_ancil_surf.xml b/rose-stem/app/jedi_forecast/file/file_def_ancil_surf.xml new file mode 100644 index 000000000..7553e3709 --- /dev/null +++ b/rose-stem/app/jedi_forecast/file/file_def_ancil_surf.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/rose-stem/app/jedi_forecast/file/file_def_diags_var_ops.xml b/rose-stem/app/jedi_forecast/file/file_def_diags_var_ops.xml new file mode 100644 index 000000000..4d49c665b --- /dev/null +++ b/rose-stem/app/jedi_forecast/file/file_def_diags_var_ops.xml @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/rose-stem/app/jedi_forecast/file/file_def_iau.xml b/rose-stem/app/jedi_forecast/file/file_def_iau.xml new file mode 100644 index 000000000..92f2e15f1 --- /dev/null +++ b/rose-stem/app/jedi_forecast/file/file_def_iau.xml @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/rose-stem/app/jedi_forecast/file/iodef_gal_nwp_cycling.xml b/rose-stem/app/jedi_forecast/file/iodef_gal_nwp_cycling.xml new file mode 100644 index 000000000..2449235a0 --- /dev/null +++ b/rose-stem/app/jedi_forecast/file/iodef_gal_nwp_cycling.xml @@ -0,0 +1,176 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + performance + 1.0 + + + + true + 50 + true + + + + + diff --git a/rose-stem/app/jedi_forecast/opt/rose-app-da.conf b/rose-stem/app/jedi_forecast/opt/rose-app-da.conf index 07526f5d9..677c6f10e 100644 --- a/rose-stem/app/jedi_forecast/opt/rose-app-da.conf +++ b/rose-stem/app/jedi_forecast/opt/rose-app-da.conf @@ -1,5 +1,5 @@ [file:iodef.xml] -source=$ROSE_SUITE_DIR/app/lfric_atm/file/iodef_gal_nwp_cycling.xml +source=$ROSE_SUITE_DIR/app/jedi_forecast/file/iodef_gal_nwp_cycling.xml [namelist:files] iau_path='$BIG_DATA_DIR/start_dumps/basic-gal/yak/20210324T0600Z_um2lfric_iau_000001' From a6e1a5b663432fc76ab90ac01ee75c56262e68fe Mon Sep 17 00:00:00 2001 From: ss421 Date: Wed, 13 May 2026 17:23:09 +0100 Subject: [PATCH 24/25] Update kgos - ex still failing. Fresh build... --- ...tests_forecast_nwp_gal9-C12_azspice_gnu_fast-debug-64bit.txt | 2 +- ...tests_forecast_nwp_gal9-C12_azspice_gnu_full-debug-64bit.txt | 2 +- ...ts_forecast_nwp_gal9-C48_MG_azspice_gnu_fast-debug-64bit.txt | 2 +- ...ts_forecast_nwp_gal9-C48_MG_azspice_gnu_full-debug-64bit.txt | 2 +- ...ts_forecast_nwp_gal9_da-C12_azspice_gnu_fast-debug-64bit.txt | 2 +- ...ts_forecast_nwp_gal9_da-C12_azspice_gnu_full-debug-64bit.txt | 2 +- ...ic_tests_forecast_nwp_gal9-C12_ex1a_cce_fast-debug-64bit.txt | 2 +- ...tests_forecast_nwp_gal9-C48_MG_ex1a_cce_fast-debug-64bit.txt | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/rose-stem/site/meto/kgos/jedi_lfric_tests/azspice/checksum_jedi_lfric_tests_forecast_nwp_gal9-C12_azspice_gnu_fast-debug-64bit.txt b/rose-stem/site/meto/kgos/jedi_lfric_tests/azspice/checksum_jedi_lfric_tests_forecast_nwp_gal9-C12_azspice_gnu_fast-debug-64bit.txt index 1bc51da90..1026d3bea 100644 --- a/rose-stem/site/meto/kgos/jedi_lfric_tests/azspice/checksum_jedi_lfric_tests_forecast_nwp_gal9-C12_azspice_gnu_fast-debug-64bit.txt +++ b/rose-stem/site/meto/kgos/jedi_lfric_tests/azspice/checksum_jedi_lfric_tests_forecast_nwp_gal9-C12_azspice_gnu_fast-debug-64bit.txt @@ -1 +1 @@ -Inner product checksum theta = 42329DA72885B909 +Inner product checksum theta = 42329DA6E8DF0DE4 diff --git a/rose-stem/site/meto/kgos/jedi_lfric_tests/azspice/checksum_jedi_lfric_tests_forecast_nwp_gal9-C12_azspice_gnu_full-debug-64bit.txt b/rose-stem/site/meto/kgos/jedi_lfric_tests/azspice/checksum_jedi_lfric_tests_forecast_nwp_gal9-C12_azspice_gnu_full-debug-64bit.txt index 1bc51da90..1026d3bea 100644 --- a/rose-stem/site/meto/kgos/jedi_lfric_tests/azspice/checksum_jedi_lfric_tests_forecast_nwp_gal9-C12_azspice_gnu_full-debug-64bit.txt +++ b/rose-stem/site/meto/kgos/jedi_lfric_tests/azspice/checksum_jedi_lfric_tests_forecast_nwp_gal9-C12_azspice_gnu_full-debug-64bit.txt @@ -1 +1 @@ -Inner product checksum theta = 42329DA72885B909 +Inner product checksum theta = 42329DA6E8DF0DE4 diff --git a/rose-stem/site/meto/kgos/jedi_lfric_tests/azspice/checksum_jedi_lfric_tests_forecast_nwp_gal9-C48_MG_azspice_gnu_fast-debug-64bit.txt b/rose-stem/site/meto/kgos/jedi_lfric_tests/azspice/checksum_jedi_lfric_tests_forecast_nwp_gal9-C48_MG_azspice_gnu_fast-debug-64bit.txt index 052f4ad79..c179e5aa2 100644 --- a/rose-stem/site/meto/kgos/jedi_lfric_tests/azspice/checksum_jedi_lfric_tests_forecast_nwp_gal9-C48_MG_azspice_gnu_fast-debug-64bit.txt +++ b/rose-stem/site/meto/kgos/jedi_lfric_tests/azspice/checksum_jedi_lfric_tests_forecast_nwp_gal9-C48_MG_azspice_gnu_fast-debug-64bit.txt @@ -1 +1 @@ -Inner product checksum theta = 42729F5496073B08 +Inner product checksum theta = 42729F54951824E9 diff --git a/rose-stem/site/meto/kgos/jedi_lfric_tests/azspice/checksum_jedi_lfric_tests_forecast_nwp_gal9-C48_MG_azspice_gnu_full-debug-64bit.txt b/rose-stem/site/meto/kgos/jedi_lfric_tests/azspice/checksum_jedi_lfric_tests_forecast_nwp_gal9-C48_MG_azspice_gnu_full-debug-64bit.txt index 052f4ad79..c179e5aa2 100644 --- a/rose-stem/site/meto/kgos/jedi_lfric_tests/azspice/checksum_jedi_lfric_tests_forecast_nwp_gal9-C48_MG_azspice_gnu_full-debug-64bit.txt +++ b/rose-stem/site/meto/kgos/jedi_lfric_tests/azspice/checksum_jedi_lfric_tests_forecast_nwp_gal9-C48_MG_azspice_gnu_full-debug-64bit.txt @@ -1 +1 @@ -Inner product checksum theta = 42729F5496073B08 +Inner product checksum theta = 42729F54951824E9 diff --git a/rose-stem/site/meto/kgos/jedi_lfric_tests/azspice/checksum_jedi_lfric_tests_forecast_nwp_gal9_da-C12_azspice_gnu_fast-debug-64bit.txt b/rose-stem/site/meto/kgos/jedi_lfric_tests/azspice/checksum_jedi_lfric_tests_forecast_nwp_gal9_da-C12_azspice_gnu_fast-debug-64bit.txt index 1bc51da90..508439c31 100644 --- a/rose-stem/site/meto/kgos/jedi_lfric_tests/azspice/checksum_jedi_lfric_tests_forecast_nwp_gal9_da-C12_azspice_gnu_fast-debug-64bit.txt +++ b/rose-stem/site/meto/kgos/jedi_lfric_tests/azspice/checksum_jedi_lfric_tests_forecast_nwp_gal9_da-C12_azspice_gnu_fast-debug-64bit.txt @@ -1 +1 @@ -Inner product checksum theta = 42329DA72885B909 +Inner product checksum theta = 423279EDF80A725F diff --git a/rose-stem/site/meto/kgos/jedi_lfric_tests/azspice/checksum_jedi_lfric_tests_forecast_nwp_gal9_da-C12_azspice_gnu_full-debug-64bit.txt b/rose-stem/site/meto/kgos/jedi_lfric_tests/azspice/checksum_jedi_lfric_tests_forecast_nwp_gal9_da-C12_azspice_gnu_full-debug-64bit.txt index 1bc51da90..508439c31 100644 --- a/rose-stem/site/meto/kgos/jedi_lfric_tests/azspice/checksum_jedi_lfric_tests_forecast_nwp_gal9_da-C12_azspice_gnu_full-debug-64bit.txt +++ b/rose-stem/site/meto/kgos/jedi_lfric_tests/azspice/checksum_jedi_lfric_tests_forecast_nwp_gal9_da-C12_azspice_gnu_full-debug-64bit.txt @@ -1 +1 @@ -Inner product checksum theta = 42329DA72885B909 +Inner product checksum theta = 423279EDF80A725F diff --git a/rose-stem/site/meto/kgos/jedi_lfric_tests/ex1a/checksum_jedi_lfric_tests_forecast_nwp_gal9-C12_ex1a_cce_fast-debug-64bit.txt b/rose-stem/site/meto/kgos/jedi_lfric_tests/ex1a/checksum_jedi_lfric_tests_forecast_nwp_gal9-C12_ex1a_cce_fast-debug-64bit.txt index b77dc21b5..bcc7a11c6 100644 --- a/rose-stem/site/meto/kgos/jedi_lfric_tests/ex1a/checksum_jedi_lfric_tests_forecast_nwp_gal9-C12_ex1a_cce_fast-debug-64bit.txt +++ b/rose-stem/site/meto/kgos/jedi_lfric_tests/ex1a/checksum_jedi_lfric_tests_forecast_nwp_gal9-C12_ex1a_cce_fast-debug-64bit.txt @@ -1 +1 @@ -Inner product checksum theta = 42329DA7125119BA +Inner product checksum theta = 42329DA6F445ECB0 diff --git a/rose-stem/site/meto/kgos/jedi_lfric_tests/ex1a/checksum_jedi_lfric_tests_forecast_nwp_gal9-C48_MG_ex1a_cce_fast-debug-64bit.txt b/rose-stem/site/meto/kgos/jedi_lfric_tests/ex1a/checksum_jedi_lfric_tests_forecast_nwp_gal9-C48_MG_ex1a_cce_fast-debug-64bit.txt index 3148932bd..1e02f64ea 100644 --- a/rose-stem/site/meto/kgos/jedi_lfric_tests/ex1a/checksum_jedi_lfric_tests_forecast_nwp_gal9-C48_MG_ex1a_cce_fast-debug-64bit.txt +++ b/rose-stem/site/meto/kgos/jedi_lfric_tests/ex1a/checksum_jedi_lfric_tests_forecast_nwp_gal9-C48_MG_ex1a_cce_fast-debug-64bit.txt @@ -1 +1 @@ -Inner product checksum theta = 42729F549626108A +Inner product checksum theta = 42729F54A00B4DD8 From 142c658f8f5f6640f675976c106114c1af9701e6 Mon Sep 17 00:00:00 2001 From: ss421 Date: Wed, 13 May 2026 22:22:47 +0100 Subject: [PATCH 25/25] Add da KGO --- ...tests_forecast_nwp_gal9_da-C12_ex1a_cce_fast-debug-64bit.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rose-stem/site/meto/kgos/jedi_lfric_tests/ex1a/checksum_jedi_lfric_tests_forecast_nwp_gal9_da-C12_ex1a_cce_fast-debug-64bit.txt b/rose-stem/site/meto/kgos/jedi_lfric_tests/ex1a/checksum_jedi_lfric_tests_forecast_nwp_gal9_da-C12_ex1a_cce_fast-debug-64bit.txt index b77dc21b5..36d9de1f2 100644 --- a/rose-stem/site/meto/kgos/jedi_lfric_tests/ex1a/checksum_jedi_lfric_tests_forecast_nwp_gal9_da-C12_ex1a_cce_fast-debug-64bit.txt +++ b/rose-stem/site/meto/kgos/jedi_lfric_tests/ex1a/checksum_jedi_lfric_tests_forecast_nwp_gal9_da-C12_ex1a_cce_fast-debug-64bit.txt @@ -1 +1 @@ -Inner product checksum theta = 42329DA7125119BA +Inner product checksum theta = 423279EDF0F39374