From eb54ca3c837957808e41fd49fb0b1cc901a7ffc7 Mon Sep 17 00:00:00 2001 From: EdHone Date: Wed, 7 Jan 2026 17:20:10 +0000 Subject: [PATCH 1/5] Fix issues from XIOS integration --- components/lfric-xios/integration-test/iodef.xml | 2 +- components/lfric-xios/source/lfric_xios_field_mod.f90 | 5 +++-- components/lfric-xios/source/lfric_xios_file_mod.f90 | 4 ++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/components/lfric-xios/integration-test/iodef.xml b/components/lfric-xios/integration-test/iodef.xml index babba32a1..6c7a904f0 100644 --- a/components/lfric-xios/integration-test/iodef.xml +++ b/components/lfric-xios/integration-test/iodef.xml @@ -5,7 +5,7 @@ performance - 1.0 + 1.0 diff --git a/components/lfric-xios/source/lfric_xios_field_mod.f90 b/components/lfric-xios/source/lfric_xios_field_mod.f90 index e49a5aae8..54d3da144 100644 --- a/components/lfric-xios/source/lfric_xios_field_mod.f90 +++ b/components/lfric-xios/source/lfric_xios_field_mod.f90 @@ -112,11 +112,12 @@ end function lfric_xios_field_constructor !> Registers a representation of the model field with the associated XIOS field !> group -subroutine register(self) +subroutine register(self, field_is_read) implicit none class(lfric_xios_field_type), intent(inout) :: self + logical, intent(in) :: field_is_read type(xios_fieldgroup) :: fieldgroup_hdl type(xios_domain) :: domain @@ -135,7 +136,7 @@ subroutine register(self) ! Get field group handle and add field call xios_get_handle(trim(adjustl(self%fieldgroup_id)), fieldgroup_hdl) call xios_add_child(fieldgroup_hdl, self%handle, trim(self%xios_id)) - call xios_set_attr(self%handle, name=trim(adjustl(self%model_field%get_name()))) + call xios_set_attr(self%handle, name=trim(adjustl(self%model_field%get_name())), read_access=field_is_read) ! Set up dimensions of output field vspace => self%model_field%get_function_space() diff --git a/components/lfric-xios/source/lfric_xios_file_mod.f90 b/components/lfric-xios/source/lfric_xios_file_mod.f90 index cc1e9a820..5dc876c81 100644 --- a/components/lfric-xios/source/lfric_xios_file_mod.f90 +++ b/components/lfric-xios/source/lfric_xios_file_mod.f90 @@ -315,7 +315,7 @@ subroutine file_close(self) call log_event( "Waiting for XIOS to close file ["//trim(self%path)//".nc]", & log_level_debug ) call init_wait() - call process_output_file(trim(self%path)//".nc") + !call process_output_file(trim(self%path)//".nc") end if self%is_closed = .true. @@ -410,7 +410,7 @@ subroutine register_with_context(self) ! Iterate over field collection and register fields do i = 1, size(self%fields) - call self%fields(i)%register() + call self%fields(i)%register((self%io_mode == FILE_MODE_READ)) end do ! Set up time axis if needed From 9da3999b284c35e736d165d58de3dbda95d0efaf Mon Sep 17 00:00:00 2001 From: EdHone Date: Fri, 9 Jan 2026 10:56:03 +0000 Subject: [PATCH 2/5] Working tests --- components/lfric-xios/source/lfric_xios_file_mod.f90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/lfric-xios/source/lfric_xios_file_mod.f90 b/components/lfric-xios/source/lfric_xios_file_mod.f90 index 5dc876c81..194f12554 100644 --- a/components/lfric-xios/source/lfric_xios_file_mod.f90 +++ b/components/lfric-xios/source/lfric_xios_file_mod.f90 @@ -315,7 +315,7 @@ subroutine file_close(self) call log_event( "Waiting for XIOS to close file ["//trim(self%path)//".nc]", & log_level_debug ) call init_wait() - !call process_output_file(trim(self%path)//".nc") + call process_output_file(trim(self%path)//".nc") end if self%is_closed = .true. From 152212018973eca47b256e927dfb67c650ce0f91 Mon Sep 17 00:00:00 2001 From: EdHone Date: Wed, 14 Jan 2026 15:11:03 +0000 Subject: [PATCH 3/5] tweak api --- components/lfric-xios/source/lfric_xios_field_mod.f90 | 8 +++++--- components/lfric-xios/source/lfric_xios_file_mod.f90 | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/components/lfric-xios/source/lfric_xios_field_mod.f90 b/components/lfric-xios/source/lfric_xios_field_mod.f90 index 54d3da144..c24946a60 100644 --- a/components/lfric-xios/source/lfric_xios_field_mod.f90 +++ b/components/lfric-xios/source/lfric_xios_field_mod.f90 @@ -112,12 +112,12 @@ end function lfric_xios_field_constructor !> Registers a representation of the model field with the associated XIOS field !> group -subroutine register(self, field_is_read) +subroutine register(self, field_read_access) implicit none class(lfric_xios_field_type), intent(inout) :: self - logical, intent(in) :: field_is_read + logical, intent(in) :: field_read_access type(xios_fieldgroup) :: fieldgroup_hdl type(xios_domain) :: domain @@ -136,7 +136,9 @@ subroutine register(self, field_is_read) ! Get field group handle and add field call xios_get_handle(trim(adjustl(self%fieldgroup_id)), fieldgroup_hdl) call xios_add_child(fieldgroup_hdl, self%handle, trim(self%xios_id)) - call xios_set_attr(self%handle, name=trim(adjustl(self%model_field%get_name())), read_access=field_is_read) + call xios_set_attr( self%handle, & + name=trim(adjustl(self%model_field%get_name())), & + read_access=field_read_access ) ! Set up dimensions of output field vspace => self%model_field%get_function_space() diff --git a/components/lfric-xios/source/lfric_xios_file_mod.f90 b/components/lfric-xios/source/lfric_xios_file_mod.f90 index 194f12554..121c8bcbf 100644 --- a/components/lfric-xios/source/lfric_xios_file_mod.f90 +++ b/components/lfric-xios/source/lfric_xios_file_mod.f90 @@ -410,7 +410,7 @@ subroutine register_with_context(self) ! Iterate over field collection and register fields do i = 1, size(self%fields) - call self%fields(i)%register((self%io_mode == FILE_MODE_READ)) + call self%fields(i)%register(field_read_access=self%mode_is_read()) end do ! Set up time axis if needed From 2e5671f8196a5efa0a789104078108513fa9fbf4 Mon Sep 17 00:00:00 2001 From: EdHone Date: Wed, 14 Jan 2026 15:36:35 +0000 Subject: [PATCH 4/5] Fix buffer factor in iodef.xml --- rose-stem/app/coupled/file/iodef.xml | 2 +- rose-stem/app/io_demo/file/iodef.xml | 2 +- rose-stem/app/lbc_demo/file/iodef.xml | 2 +- rose-stem/app/simple_diffusion/file/iodef.xml | 2 +- rose-stem/app/skeleton/file/iodef.xml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/rose-stem/app/coupled/file/iodef.xml b/rose-stem/app/coupled/file/iodef.xml index a223c9ebc..76b7fa544 100644 --- a/rose-stem/app/coupled/file/iodef.xml +++ b/rose-stem/app/coupled/file/iodef.xml @@ -59,7 +59,7 @@ performance - 1.0 + 1.0 diff --git a/rose-stem/app/io_demo/file/iodef.xml b/rose-stem/app/io_demo/file/iodef.xml index f944d70c8..19a6dc5d2 100644 --- a/rose-stem/app/io_demo/file/iodef.xml +++ b/rose-stem/app/io_demo/file/iodef.xml @@ -25,7 +25,7 @@ performance - 1.0 + 1.0 diff --git a/rose-stem/app/lbc_demo/file/iodef.xml b/rose-stem/app/lbc_demo/file/iodef.xml index 2c60bbd11..05f272079 100644 --- a/rose-stem/app/lbc_demo/file/iodef.xml +++ b/rose-stem/app/lbc_demo/file/iodef.xml @@ -47,7 +47,7 @@ performance - 1.0 + 1.0 diff --git a/rose-stem/app/simple_diffusion/file/iodef.xml b/rose-stem/app/simple_diffusion/file/iodef.xml index e616648cd..436ac43e7 100644 --- a/rose-stem/app/simple_diffusion/file/iodef.xml +++ b/rose-stem/app/simple_diffusion/file/iodef.xml @@ -25,7 +25,7 @@ performance - 1.0 + 1.0 diff --git a/rose-stem/app/skeleton/file/iodef.xml b/rose-stem/app/skeleton/file/iodef.xml index 6ed58c278..ecbeb5424 100644 --- a/rose-stem/app/skeleton/file/iodef.xml +++ b/rose-stem/app/skeleton/file/iodef.xml @@ -59,7 +59,7 @@ performance - 1.0 + 1.0 From f5a25da5a7dabaf6c7dee996de983cacbd2b53e9 Mon Sep 17 00:00:00 2001 From: EdHone Date: Tue, 20 Jan 2026 13:15:47 +0000 Subject: [PATCH 5/5] Cover additional checkpointing read_access --- components/lfric-xios/source/lfric_xios_metafile_mod.F90 | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/components/lfric-xios/source/lfric_xios_metafile_mod.F90 b/components/lfric-xios/source/lfric_xios_metafile_mod.F90 index ae5841734..a138ccf00 100644 --- a/components/lfric-xios/source/lfric_xios_metafile_mod.F90 +++ b/components/lfric-xios/source/lfric_xios_metafile_mod.F90 @@ -269,6 +269,12 @@ subroutine add_field(metafile, dict_field_id, mode, operation, id_as_name, legac end if end if end if + + ! Enable read_access if field is being added for restarting + if (mode == RESTARTING) then + call xios_set_field_attr(field_id, read_access=.true.) + end if + end do end subroutine add_field