diff --git a/applications/lfric2lfric/source/driver/lfric2lfric_driver_mod.F90 b/applications/lfric2lfric/source/driver/lfric2lfric_driver_mod.F90 index e02dd5580..216b048b6 100644 --- a/applications/lfric2lfric/source/driver/lfric2lfric_driver_mod.F90 +++ b/applications/lfric2lfric/source/driver/lfric2lfric_driver_mod.F90 @@ -33,6 +33,7 @@ module lfric2lfric_driver_mod use lfric2lfric_config_mod, only: mode_ics, mode_lbc use lfric2lfric_infrastructure_mod, only: initialise_infrastructure, & context_dst, context_src, & + context_lbc, & source_collection_name, & target_collection_name use lfric2lfric_regrid_mod, only: lfric2lfric_regrid @@ -153,7 +154,7 @@ subroutine run( modeldb, oasis_clock ) is_running = modeldb%clock%tick() - call modeldb%io_contexts%get_io_context(context_dst, io_context) + call modeldb%io_contexts%get_io_context(context_lbc, io_context) call io_context%set_current() call advance(io_context, modeldb%clock) diff --git a/applications/lfric2lfric/source/initialisation/lfric2lfric_file_init_mod.f90 b/applications/lfric2lfric/source/initialisation/lfric2lfric_file_init_mod.f90 index 10adc1eb6..5a10c23f7 100644 --- a/applications/lfric2lfric/source/initialisation/lfric2lfric_file_init_mod.f90 +++ b/applications/lfric2lfric/source/initialisation/lfric2lfric_file_init_mod.f90 @@ -33,7 +33,8 @@ module lfric2lfric_file_init_mod implicit none private - public :: init_lfric2lfric_src_files, init_lfric2lfric_dst_files + public :: init_lfric2lfric_src_files, init_lfric2lfric_dst_files, & + init_lfric2lfric_lbc_files contains @@ -151,14 +152,6 @@ subroutine init_lfric2lfric_dst_files( files_list, modeldb ) io_mode=FILE_MODE_WRITE, & freq=checkpoint_frequency ) ) end if - else if (mode == mode_lbc) then - ! Setup lbc writing context information - call files_list%insert_item( & - lfric_xios_file_type( "lfric2lfric_lbc", & - xios_id="lfric_lbc_write", & - io_mode=FILE_MODE_WRITE, & - operation=OPERATION_TIMESERIES, & - freq=diagnostic_frequency ) ) endif ! Setup orography ancillary file @@ -176,4 +169,31 @@ subroutine init_lfric2lfric_dst_files( files_list, modeldb ) end subroutine init_lfric2lfric_dst_files + !> @brief Sets up lbc I/O configuration. + !> @details Initialises the file list for the lbc I/O context, using + !! the checkpoint_stem_name extracted from the `files` namelist. + !> @param [out] files_list The list of I/O files. + !> @param [in,out] modeldb Required by init_io. + subroutine init_lfric2lfric_lbc_files( files_list, modeldb ) + + implicit none + + type(linked_list_type), intent(out) :: files_list + type(modeldb_type), optional, intent(inout) :: modeldb + + + if( use_xios_io ) then + + ! Setup lbc writing context information + call files_list%insert_item( & + lfric_xios_file_type( "lfric2lfric_lbc", & + xios_id="lfric_lbc_write", & + io_mode=FILE_MODE_WRITE, & + operation=OPERATION_TIMESERIES, & + freq=diagnostic_frequency ) ) + + endif + + end subroutine init_lfric2lfric_lbc_files + end module lfric2lfric_file_init_mod diff --git a/applications/lfric2lfric/source/initialisation/lfric2lfric_infrastructure_mod.X90 b/applications/lfric2lfric/source/initialisation/lfric2lfric_infrastructure_mod.X90 index 83f7f6c1f..280cb5454 100644 --- a/applications/lfric2lfric/source/initialisation/lfric2lfric_infrastructure_mod.X90 +++ b/applications/lfric2lfric/source/initialisation/lfric2lfric_infrastructure_mod.X90 @@ -14,7 +14,6 @@ module lfric2lfric_infrastructure_mod use add_mesh_map_mod, only: assign_mesh_maps use blend_orography_alg_mod, only: blend_orography - use check_configuration_mod, only: get_required_stencil_depth use constants_mod, only: str_def, r_def, i_def, l_def, r_second use create_mesh_mod, only: create_extrusion, & create_mesh @@ -38,8 +37,6 @@ module lfric2lfric_infrastructure_mod um_L120_99t_21s_40km_extrusion_type, & um_L140_122t_18s_40km_extrusion_type, & um_L70_50t_20s_80km_extrusion_type - use sci_geometric_constants_mod, only: get_chi_inventory, & - get_panel_id_inventory use init_altitude_mod, only: init_altitude use inventory_by_mesh_mod, only: inventory_by_mesh_type use io_context_mod, only: callback_clock_arg @@ -49,7 +46,8 @@ module lfric2lfric_infrastructure_mod use log_mod, only: log_event, & log_scratch_space, & log_level_error, & - log_level_debug + log_level_debug, & + log_level_info use mesh_mod, only: mesh_type use mesh_collection_mod, only: mesh_collection use model_clock_mod, only: model_clock_type @@ -68,7 +66,8 @@ module lfric2lfric_infrastructure_mod use lfric2lfric_init_mesh_mod, only: init_mesh use lfric2lfric_check_conf_mod, only: lfric2lfric_check_configuration use lfric2lfric_file_init_mod, only: init_lfric2lfric_dst_files, & - init_lfric2lfric_src_files + init_lfric2lfric_src_files, & + init_lfric2lfric_lbc_files use lfric2lfric_init_mod, only: init_lfric2lfric use lfric2lfric_init_coupler_mod,only: lfric2lfric_init_coupler_src, & lfric2lfric_init_coupler_dst, & @@ -109,6 +108,7 @@ module lfric2lfric_infrastructure_mod ! Source and destination XIOS context names character(len=*), public, parameter :: context_dst = "lfric2lfric_destination" character(len=*), public, parameter :: context_src = "lfric2lfric_source" + character(len=*), public, parameter :: context_lbc = "lfric2lfric_boundaries" ! Source and destination field collection names character(len=*), public, parameter :: source_collection_name = "source_fields" @@ -152,6 +152,8 @@ contains type(mesh_type), pointer :: twod_mesh_src type(mesh_type), pointer :: mesh_dst type(mesh_type), pointer :: twod_mesh_dst + type(mesh_type), pointer :: mesh_lbc + type(mesh_type), pointer :: twod_mesh_lbc type(mesh_type), pointer :: orography_twod_mesh type(mesh_type), pointer :: orography_mesh @@ -166,10 +168,10 @@ contains type(namelist_type), pointer :: finite_element_nml ! Namelist parameters - character(len=str_def) :: mesh_names(2) - character(len=str_def), allocatable :: twod_names(:) - character(len=str_def) :: start_dump_filename - character(len=str_def) :: source_file_lbc + character(len=str_def), allocatable :: mesh_names(:) + character(len=str_def), allocatable :: twod_names(:) + character(len=str_def) :: start_dump_filename + character(len=str_def) :: source_file_lbc ! lfric2lfric namelist parameters integer(kind=i_def) :: stencil_depth(1) @@ -188,8 +190,9 @@ contains integer(kind=i_def) :: i integer(kind=i_def), parameter :: one_layer = 1_i_def - integer(kind=i_def), parameter :: dst = 1 - integer(kind=i_def), parameter :: src = 2 + integer(kind=i_def), parameter :: src = 1 + integer(kind=i_def), parameter :: dst = 2 + integer(kind=i_def), parameter :: lbc = 3 type(coupling_type), pointer :: coupling_ptr type(field_collection_type), pointer :: cpl_snd_2d @@ -208,8 +211,10 @@ contains ! Source context pointer and temporary context for setup type(lfric_xios_context_type) :: tmp_io_context_src + type(lfric_xios_context_type) :: tmp_io_context_lbc type(lfric_xios_context_type), pointer :: io_context_src type(lfric_xios_context_type), pointer :: io_context_dst + type(lfric_xios_context_type), pointer :: io_context_lbc type(linked_list_type), pointer :: file_list @@ -230,10 +235,28 @@ contains ! Check lfric2lfric configuration settings are allowed call lfric2lfric_check_configuration( lfric2lfric_nml ) - call lfric2lfric_nml%get_value( 'mode', mode ) call lfric2lfric_nml%get_value( 'regrid_method', regrid_method ) - call lfric2lfric_nml%get_value( 'destination_mesh_name', & - mesh_names(dst) ) + call lfric2lfric_nml%get_value( 'mode', mode ) + + if (mode == mode_ics) then + allocate(mesh_names(2)) + call lfric2lfric_nml%get_value( 'destination_mesh_name', & + mesh_names(dst) ) + else if (mode == mode_lbc) then + allocate(mesh_names(3)) + call lfric2lfric_nml%get_value( 'destination_mesh_name', & + mesh_names(lbc) ) + ! The name of the destination mesh is the name of the lbc mesh + ! without the suffix '-lbc' + i = index(mesh_names(lbc), '-lbc', .true.) + if (i > 0) then + mesh_names(dst) = mesh_names(lbc)(:i-1) + else + mesh_names(dst) = mesh_names(lbc) + end if + call log_event('JMCS Mesh name: ' // mesh_names(dst), & + log_level_info) + end if call lfric2lfric_nml%get_value( 'source_mesh_name', & mesh_names(src) ) call lfric2lfric_nml%get_value( 'source_geometry', source_geometry ) @@ -349,6 +372,10 @@ contains twod_mesh_src => mesh_collection%get_mesh(trim(twod_names(src))) mesh_dst => mesh_collection%get_mesh(trim(mesh_names(dst))) twod_mesh_dst => mesh_collection%get_mesh(trim(twod_names(dst))) + if (mode == mode_lbc) then + mesh_lbc => mesh_collection%get_mesh(trim(mesh_names(lbc))) + twod_mesh_lbc => mesh_collection%get_mesh(trim(twod_names(lbc))) + end if ! Log this change call log_event('Source mesh set to: ' // mesh_names(src), & @@ -359,6 +386,12 @@ contains log_level_debug) call log_event('Destination 2D mesh set to: ' // twod_names(dst), & log_level_debug) + if (mode == mode_lbc) then + call log_event('LBC mesh set to: ' // mesh_names(lbc), & + log_level_debug) + call log_event('LBC 2D mesh set to: ' // twod_names(lbc), & + log_level_debug) + end if !======================================================================= ! Setup I/O system @@ -458,6 +491,37 @@ contains call init_altitude( orography_twod_mesh, surface_altitude_src ) end if + if (mode == mode_lbc) then + !----------------------------------------------------------------------- + ! Create the IO context for lbc files + !----------------------------------------------------------------------- + ! Because the source lbc are not the same as the 'prime mesh', we have + ! to initialise the lbc context manually with the desired mesh + + ! Add the lbc context to modeldb and return a pointer to it + call tmp_io_context_lbc%initialise(context_lbc) + call modeldb%io_contexts%add_context(tmp_io_context_lbc) + call modeldb%io_contexts%get_io_context(context_lbc, io_context_lbc) + + ! Get the file list of context and populate + file_list => io_context_lbc%get_filelist() + call init_lfric2lfric_lbc_files( file_list, modeldb ) + + ! Get panel_id and chi from correct mesh + call chi_inventory%get_field_array(mesh_lbc, chi) + call panel_id_inventory%get_field(mesh_lbc, panel_id) + + ! Using correct chi and panel_id, initialise xios context for lbc mesh + nullify( before_close ) + call io_context_lbc%initialise_xios_context( modeldb%mpi%get_comm(), & + chi, & + panel_id, & + modeldb%clock, & + modeldb%calendar, & + before_close ) + call io_context_src%set_current() + end if + !======================================================================= ! Create and initialise prognostic fields !======================================================================= @@ -468,10 +532,10 @@ contains target_collection_name, mesh_dst, twod_mesh_dst ) else if (mode == mode_lbc) then call lfric2lfric_nml%get_value( 'source_file_lbc', source_file_lbc ) - call init_lfric2lfric( modeldb, context_src, context_dst, & + call init_lfric2lfric( modeldb, context_src, context_lbc, & source_file_lbc, mode, & source_collection_name, mesh_src, twod_mesh_src, & - target_collection_name, mesh_dst, twod_mesh_dst ) + target_collection_name, mesh_lbc, twod_mesh_lbc ) end if !======================================================================= @@ -493,9 +557,15 @@ contains element_order_h, element_order_v, & modeldb) ! Destination fields - call lfric2lfric_init_coupler_dst(twod_mesh_dst, "coupling_dst", & - element_order_h, element_order_v, & - modeldb) + if (mode == mode_ics) then + call lfric2lfric_init_coupler_dst(twod_mesh_dst, "coupling_dst", & + element_order_h, element_order_v, & + modeldb) + else if (mode == mode_lbc) then + call lfric2lfric_init_coupler_dst(twod_mesh_lbc, "coupling_dst", & + element_order_h, element_order_v, & + modeldb) + end if ! Finish coupling definition call lfric2lfric_end_coupler_init(modeldb, "coupling") diff --git a/applications/lfric2lfric/source/initialisation/lfric2lfric_init_mesh.f90 b/applications/lfric2lfric/source/initialisation/lfric2lfric_init_mesh.f90 index 3b20a554e..1b332c242 100644 --- a/applications/lfric2lfric/source/initialisation/lfric2lfric_init_mesh.f90 +++ b/applications/lfric2lfric/source/initialisation/lfric2lfric_init_mesh.f90 @@ -38,22 +38,27 @@ module lfric2lfric_init_mesh_mod log_level_error, & log_level_debug use namelist_collection_mod, only: namelist_collection_type + use namelist_item_mod, only: namelist_item_type use namelist_mod, only: namelist_type - use panel_decomposition_mod, only: panel_decomposition_type - use partition_mod, only: partitioner_interface + use panel_decomposition_mod, only: lfric2lfric_lbc_decomposition_type, & + panel_decomposition_type + use partitioning_config_mod, only: panel_decomposition_auto + use partition_mod, only: partitioner_lfric2lfric_lbc, & + partitioner_interface use runtime_partition_mod, only: mesh_cubedsphere, & mesh_planar, & + mesh_lfric2lfric_lbc, & create_local_mesh_maps, & create_local_mesh use runtime_partition_lfric_mod, only: get_partition_parameters - use global_mesh_collection_mod, only: global_mesh_collection ! Lfric2lfric modules use lfric2lfric_config_mod, only: regrid_method_map, & source_geometry_spherical, & destination_geometry_spherical, & source_topology_fully_periodic, & - destination_topology_fully_periodic + destination_topology_fully_periodic, & + mode_ics, mode_lbc implicit none @@ -96,7 +101,7 @@ subroutine init_mesh( configuration, & integer(kind=i_def), intent(in) :: local_rank integer(kind=i_def), intent(in) :: total_ranks - character(len=*), intent(in) :: mesh_names(2) + character(len=*), intent(in) :: mesh_names(:) class(extrusion_type), intent(in) :: extrusion integer(kind=i_def), intent(in) :: stencil_depths_in(:) integer(kind=i_def), intent(in) :: regrid_method @@ -104,8 +109,9 @@ subroutine init_mesh( configuration, & ! Parameters character(len=9), parameter :: routine_name = 'init_mesh' - integer(kind=i_def), parameter :: dst = 1 - integer(kind=i_def), parameter :: src = 2 + integer(kind=i_def), parameter :: src = 1 + integer(kind=i_def), parameter :: dst = 2 + integer(kind=i_def), parameter :: lbc = 3 ! Namelist variables type(namelist_type), pointer :: lfric2lfric_nml => null() @@ -121,18 +127,22 @@ subroutine init_mesh( configuration, & character(len=str_max_filename) :: meshfile_prefix(2) integer(kind=i_def) :: geometry(2) integer(kind=i_def) :: topology(2) - integer(kind=i_def) :: mesh_selection(2) + integer(kind=i_def) :: mesh_selection(3) + integer(kind=i_def) :: mode + logical(kind=l_def) :: read_lbc_mesh ! Local variables integer(kind=i_def) :: i character(len=str_max_filename) :: mesh_file(2) - integer(kind=i_def) :: stencil_depths(2) + integer(kind=i_def) :: stencil_depths(size(mesh_names)) procedure(partitioner_interface), pointer :: partitioner_src => null() procedure(partitioner_interface), pointer :: partitioner_dst => null() + procedure(partitioner_interface), pointer :: partitioner_lbc => null() class(panel_decomposition_type), allocatable :: decomposition_src, & - decomposition_dst + decomposition_dst, & + decomposition_lbc !============================================================================ @@ -166,6 +176,7 @@ subroutine init_mesh( configuration, & geometry(src) ) call lfric2lfric_nml%get_value( 'source_topology', & topology(src) ) + call lfric2lfric_nml%get_value( 'mode', mode ) if ( regrid_method == regrid_method_map .and. & trim(meshfile_prefix(src)) /= trim(meshfile_prefix(dst)) ) then @@ -177,12 +188,12 @@ subroutine init_mesh( configuration, & end if ! Set up stencil depths - if ( size(stencil_depths) == 1 ) then + if ( size(stencil_depths_in) == 1 ) then ! Single stencil depth specified, apply to all meshes do i = 1, size(mesh_names) stencil_depths(i) = stencil_depths_in(1) end do - else if ( size(stencil_depths) == size(mesh_names) ) then + else if ( size(stencil_depths_in) == size(mesh_names) ) then ! Stencil depths specified per mesh stencil_depths(:) = stencil_depths_in(:) else @@ -192,6 +203,13 @@ subroutine init_mesh( configuration, & call log_event(log_scratch_space, log_level_error) end if + ! Decide if a lbc mesh has to be set up + read_lbc_mesh = .false. + if (mode == mode_lbc) then + if (mesh_names(lbc) /= mesh_names(dst)) then + read_lbc_mesh = .true. + end if + end if !=========================================================================== ! Create local mesh objects: @@ -237,7 +255,11 @@ subroutine init_mesh( configuration, & if (mesh_file(dst) == mesh_file(src)) then call load_local_mesh( mesh_file(dst), mesh_names ) else - call load_local_mesh( mesh_file(dst), mesh_names(dst) ) + if (read_lbc_mesh) then + call load_local_mesh( mesh_file(dst), mesh_names(dst:lbc) ) + else + call load_local_mesh( mesh_file(dst), mesh_names(dst) ) + end if call log_event( 'Using pre-partitioned mesh file:', log_level_info ) call log_event( ' '//trim(mesh_file(src)), log_level_info ) @@ -289,6 +311,15 @@ subroutine init_mesh( configuration, & call log_event( "Setting up planar partition mesh(es)", & log_level_debug ) end if + if (mode == mode_lbc) then + if (mesh_names(lbc) == mesh_names(dst)) then + mesh_selection(lbc) = mesh_selection(dst) + else + mesh_selection(lbc) = mesh_lfric2lfric_lbc + end if + call log_event( "Setting up planar lbc partition mesh(es)", & + log_level_debug ) + end if call log_event( "Setting up partition mesh(es)", log_level_info ) write(mesh_file(src),'(A)') trim(meshfile_prefix(src)) // '.nc' @@ -302,6 +333,13 @@ subroutine init_mesh( configuration, & decomposition_src, & partitioner_src ) + if (read_lbc_mesh) then + decomposition_lbc = lfric2lfric_lbc_decomposition_type() + partitioner_lbc => partitioner_lfric2lfric_lbc + call log_event( "Using lfric2lfric lbc mesh partitioner ", & + log_level_debug ) + end if + call get_partition_parameters( dst_partitioning_nml, & mesh_selection(dst), & total_ranks, & @@ -313,7 +351,11 @@ subroutine init_mesh( configuration, & if (mesh_file(dst) == mesh_file(src)) then call load_global_mesh( mesh_file(dst), mesh_names ) else - call load_global_mesh( mesh_file(dst), mesh_names(dst) ) + if (read_lbc_mesh) then + call load_global_mesh( mesh_file(dst), mesh_names(dst:lbc) ) + else + call load_global_mesh( mesh_file(dst), mesh_names(dst) ) + end if call load_global_mesh( mesh_file(src), mesh_names(src) ) endif @@ -326,6 +368,15 @@ subroutine init_mesh( configuration, & generate_inner_halos(dst), & partitioner_dst ) + if (read_lbc_mesh) then + call create_local_mesh( mesh_names(lbc:lbc), & + local_rank, total_ranks, & + decomposition_lbc, & + stencil_depths, & + generate_inner_halos(dst), & + partitioner_lbc ) + end if + call create_local_mesh( mesh_names(src:src), & local_rank, total_ranks, & decomposition_src, & diff --git a/applications/solver/rose-meta/lfric-solver/HEAD/rose-meta.conf b/applications/solver/rose-meta/lfric-solver/HEAD/rose-meta.conf index e068d8a6e..c74154fd4 100644 --- a/applications/solver/rose-meta/lfric-solver/HEAD/rose-meta.conf +++ b/applications/solver/rose-meta/lfric-solver/HEAD/rose-meta.conf @@ -645,7 +645,8 @@ description=Global mesh panel partitioning. help=For parallel computing, the 2D global mesh is divided up into partitions. =Each process rank runs an instance of the model on one partition. The =partition decompostion is specified on a `per panel` basis. - =i.e. The cubedsphere has six panels; the planar mesh has one panel. + =i.e. The cubedsphere has six panels; the planar and lfric2lfric lbc meshes + =have one panel. ns=namelist/Model/Mesh/Partitioning sort-key=Section-A02 diff --git a/dependencies.yaml b/dependencies.yaml index 8455aefc4..0b4ca63c8 100644 --- a/dependencies.yaml +++ b/dependencies.yaml @@ -30,8 +30,8 @@ lfric_apps: ref: lfric_core: - source: git@github.com:MetOffice/lfric_core.git - ref: 2026.03.1 + source: git@github.com:ukmo-juan-castillo/lfric_core.git + ref: 4f271ed371a9eb46254dd71050c3adfeee4ba0e2 moci: source: git@github.com:MetOffice/moci.git diff --git a/rose-stem/app/lfric2lfric/file/iodef_lbc.xml b/rose-stem/app/lfric2lfric/file/iodef_lbc.xml index 3d2e14bd0..591717e21 100644 --- a/rose-stem/app/lfric2lfric/file/iodef_lbc.xml +++ b/rose-stem/app/lfric2lfric/file/iodef_lbc.xml @@ -44,6 +44,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -56,14 +76,6 @@ - - - - - - - - diff --git a/rose-stem/app/lfric2lfric/opt/rose-app-lbc_mesh.conf b/rose-stem/app/lfric2lfric/opt/rose-app-lbc_mesh.conf new file mode 100644 index 000000000..b2ff57e86 --- /dev/null +++ b/rose-stem/app/lfric2lfric/opt/rose-app-lbc_mesh.conf @@ -0,0 +1,21 @@ +[env] +RESTART_STOP=2 + +[file:iodef.xml] +source=$ROSE_SUITE_DIR/app/lfric2lfric/file/iodef_lbc.xml + +[file:source_file_lbc.nc] +mode=auto +source=$BIG_DATA_DIR/lfric2lfric/lfric_gal_diagnostics.nc + +[namelist:lfric2lfric] +destination_mesh_name='dynamics-lbc' +mode='lbc' +source_file_lbc='source_file_lbc' +source_mesh_name='C12' + +[namelist:time] +timestep_end='2' + +[namelist:timestepping] +dt=64800.0 diff --git a/rose-stem/app/lfric2lfric/opt/rose-app-suite_controlled.conf b/rose-stem/app/lfric2lfric/opt/rose-app-suite_controlled.conf index eceb8d060..4952cb522 100644 --- a/rose-stem/app/lfric2lfric/opt/rose-app-suite_controlled.conf +++ b/rose-stem/app/lfric2lfric/opt/rose-app-suite_controlled.conf @@ -30,7 +30,6 @@ panel_xproc=${XPROC} panel_yproc=${YPROC} [namelist:partitioning(source)] -panel_decomposition='${PANEL_DECOMP}' panel_xproc=${XPROC} panel_yproc=${YPROC} diff --git a/rose-stem/site/common/lfric2lfric/tasks_lfric2lfric.cylc b/rose-stem/site/common/lfric2lfric/tasks_lfric2lfric.cylc index b68dc1efc..7c622a087 100644 --- a/rose-stem/site/common/lfric2lfric/tasks_lfric2lfric.cylc +++ b/rose-stem/site/common/lfric2lfric/tasks_lfric2lfric.cylc @@ -111,11 +111,23 @@ {% elif task_ns.conf_name == "oasis_clim_gal9_C12-ral_seuk_C16_lam-lbc" %} - {# dst_name will need to change to "dynamics-lbc" when lbc meshes can be read #} {% do task_dict.update({ "opt_confs": ["clim_gal9_ral_seuk","oasis","lbc"], "resolution": "C12_C16_lam", "dst_mesh": "seuk_MG", + "dst_name": "dynamics", + "dst_type": "regional", + "src_mesh": "C24_C12", + "src_name": "C12", + "src_type": "global", + }) %} + +{% elif task_ns.conf_name == "oasis_clim_gal9_C12-ral_seuk_C16_lam-lbc_mesh" %} + + {% do task_dict.update({ + "opt_confs": ["clim_gal9_ral_seuk","oasis","lbc_mesh"], + "resolution": "C12_C16_lam", + "dst_mesh": "seuk_MG", "dst_name": "dynamics-lbc", "dst_type": "regional", "src_mesh": "C24_C12", diff --git a/rose-stem/site/meto/groups/groups_lfric2lfric.cylc b/rose-stem/site/meto/groups/groups_lfric2lfric.cylc index eca0b1d27..ed396baa2 100644 --- a/rose-stem/site/meto/groups/groups_lfric2lfric.cylc +++ b/rose-stem/site/meto/groups/groups_lfric2lfric.cylc @@ -15,6 +15,7 @@ "lfric2lfric_oasis_clim_gal9-C24_C12_azspice_gnu_fast-debug-64bit", "lfric2lfric_oasis_clim_gal9_C12-ral_seuk_C16_lam_azspice_gnu_fast-debug-64bit", "lfric2lfric_oasis_clim_gal9_C12-ral_seuk_C16_lam-lbc_azspice_gnu_fast-debug-64bit", + "lfric2lfric_oasis_clim_gal9_C12-ral_seuk_C16_lam-lbc_mesh_azspice_gnu_fast-debug-64bit", "lfric2lfric_azspice_canned", ], "lfric2lfric_azspice_extra": [ @@ -43,6 +44,7 @@ "lfric2lfric_oasis_clim_gal9-C24_C12_ex1a_cce_fast-debug-64bit", "lfric2lfric_oasis_clim_gal9_C12-ral_seuk_C16_lam_ex1a_cce_fast-debug-64bit", "lfric2lfric_oasis_clim_gal9_C12-ral_seuk_C16_lam-lbc_ex1a_cce_fast-debug-64bit", + "lfric2lfric_oasis_clim_gal9_C12-ral_seuk_C16_lam-lbc_mesh_ex1a_cce_fast-debug-64bit", "lfric2lfric_ex1a_canned", ], "lfric2lfric_ex1a_extra": [