From 344d93bf0a86e957a07b3724e6382d26237928b3 Mon Sep 17 00:00:00 2001 From: Jim Edwards Date: Mon, 8 Jun 2009 21:05:14 +0000 Subject: [PATCH 01/17] create a trunk dir From 9bb89c2f8a1481e1f00e616b587b1b52d83e60bf Mon Sep 17 00:00:00 2001 From: Michael Levy Date: Tue, 25 Aug 2015 15:06:18 -0600 Subject: [PATCH 02/17] A few tweaks needed to run 01col grid 1) shr_map_mod assumes units are degrees for single column grids 2) seq_domain_mct loosens tolerance on some domain checks 3) config_grid.xml supports g37_g37 grid --- share/csm_share/shr/shr_map_mod.F90 | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/share/csm_share/shr/shr_map_mod.F90 b/share/csm_share/shr/shr_map_mod.F90 index 7c8d3675748f..8d02fda586cf 100644 --- a/share/csm_share/shr/shr_map_mod.F90 +++ b/share/csm_share/shr/shr_map_mod.F90 @@ -2945,6 +2945,7 @@ subroutine shr_map_getWts(Xdst,Ydst,Xsrc,Ysrc,pti,ptj,ptw,pnum,units) if (yd > cpole + 1.0e-3 .or. & yd < -cpole - 1.0e-3) then write(s_logunit,*) trim(subname),' ERROR: yd outside bounds ',yd + write(s_logunit,*) trim(subname),' cpole = ', cpole call shr_map_abort(subName//' ERROR yd outside 90 degree bounds') endif if (yd > cpole) yd = cpole @@ -3375,7 +3376,11 @@ logical function shr_map_checkRad(Grid) shr_map_checkRad = .false. rmin = minval(Grid) rmax = maxval(Grid) - if ((rmax - rmin) < 1.01_SHR_KIND_R8*c2*pi) shr_map_checkRad = .true. + if (rmax.ne.rmin) then + shr_map_checkRad = ((rmax - rmin) < 1.01_SHR_KIND_R8*c2*pi) + else + shr_map_checkRad = .true. + end if end function shr_map_checkRad From aa81e8a48732a46fd4490dc9c067b39fbbb315fe Mon Sep 17 00:00:00 2001 From: Michael Levy Date: Tue, 15 Sep 2015 14:00:40 -0600 Subject: [PATCH 03/17] Update C1DIAF streams Use Svetlana's data files for C1DIAF compset. Also updated how csm_share looks for units of degrees (so it accepts degrees_north and degrees_east as well). I also added "factorfn" back to the datm namelist, not sure why that change got removed... --- share/csm_share/shr/shr_map_mod.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/share/csm_share/shr/shr_map_mod.F90 b/share/csm_share/shr/shr_map_mod.F90 index 8d02fda586cf..ca0c1b357177 100644 --- a/share/csm_share/shr/shr_map_mod.F90 +++ b/share/csm_share/shr/shr_map_mod.F90 @@ -2919,7 +2919,7 @@ subroutine shr_map_getWts(Xdst,Ydst,Xsrc,Ysrc,pti,ptj,ptw,pnum,units) !--- is lat/lon degrees or radians? needed for X wraparound --- if (present(units)) then - if (trim(units) == 'degrees') then + if (index(units,'degrees').ne.0) then csize = 360._SHR_KIND_R8 elseif (trim(units) == 'radians') then csize = c2*pi From 6b7d811fe1f5b86bd187a9c481b242bf2f4da3ba Mon Sep 17 00:00:00 2001 From: Jim Edwards Date: Wed, 9 Dec 2015 16:16:51 -0700 Subject: [PATCH 04/17] add pio_rearranger option to pio namelists fix issues with testing --- share/csm_share/shr/shr_pio_mod.F90 | 44 +++++++++++++++++++---------- 1 file changed, 29 insertions(+), 15 deletions(-) diff --git a/share/csm_share/shr/shr_pio_mod.F90 b/share/csm_share/shr/shr_pio_mod.F90 index 07a75a7a4bf1..79b4d9789b4c 100644 --- a/share/csm_share/shr/shr_pio_mod.F90 +++ b/share/csm_share/shr/shr_pio_mod.F90 @@ -41,6 +41,7 @@ module shr_pio_mod integer :: pio_stride integer :: pio_numiotasks integer :: pio_iotype + integer :: pio_rearranger end type pio_comp_t character(len=16), allocatable :: io_compname(:) @@ -74,13 +75,13 @@ subroutine shr_pio_init1(ncomps, nlfilename, Global_Comm) integer, intent(inout) :: Global_Comm - integer :: i, pio_root, pio_stride, pio_numiotasks, pio_iotype + integer :: i, pio_root, pio_stride, pio_numiotasks, pio_iotype, pio_rearranger integer :: mpigrp_world, mpigrp, ierr, mpicom character(*),parameter :: subName = '(shr_pio_init1) ' integer :: pelist(3,1) call shr_pio_read_default_namelist(nlfilename, Global_Comm, pio_stride, pio_root, pio_numiotasks, & - pio_iotype, pio_async_interface) + pio_iotype, pio_async_interface, pio_rearranger) call MPI_comm_rank(Global_Comm, drank, ierr) @@ -92,6 +93,7 @@ subroutine shr_pio_init1(ncomps, nlfilename, Global_Comm) pio_comp_settings(i)%pio_stride = pio_stride pio_comp_settings(i)%pio_numiotasks = pio_numiotasks pio_comp_settings(i)%pio_iotype = pio_iotype + pio_comp_settings(i)%pio_rearranger = pio_rearranger end do if(pio_async_interface) then #ifdef NO_MPI2 @@ -192,10 +194,12 @@ subroutine shr_pio_init2(comp_id, comp_name, comp_iamin, comp_comm, comp_comm_ia call shr_pio_read_component_namelist(nlfilename , comp_comm(i), pio_comp_settings(i)%pio_stride, & pio_comp_settings(i)%pio_root, pio_comp_settings(i)%pio_numiotasks, & - pio_comp_settings(i)%pio_iotype) + pio_comp_settings(i)%pio_iotype, pio_comp_settings(i)%pio_rearranger) + + call pio_init(comp_comm_iam(i), comp_comm(i), pio_comp_settings(i)%pio_numiotasks, 0, & pio_comp_settings(i)%pio_stride, & - pio_rearr_subset, iosystems(i), & + pio_comp_settings(i)%pio_rearranger, iosystems(i), & base=pio_comp_settings(i)%pio_root) if(comp_comm_iam(i)==0) then @@ -351,21 +355,22 @@ end function shr_pio_getiosys_fromname subroutine shr_pio_read_default_namelist(nlfilename, Comm, pio_stride, pio_root, pio_numiotasks, & - pio_iotype, pio_async_interface) + pio_iotype, pio_async_interface, pio_rearranger) character(len=*), intent(in) :: nlfilename integer, intent(in) :: Comm logical, intent(out) :: pio_async_interface - integer, intent(out) :: pio_stride, pio_root, pio_numiotasks, pio_iotype + integer, intent(out) :: pio_stride, pio_root, pio_numiotasks, pio_iotype, pio_rearranger character(len=shr_kind_cs) :: pio_typename character(*),parameter :: subName = '(shr_pio_read_default_namelist) ' integer :: iam, ierr, npes, unitn logical :: iamroot - + namelist /pio_default_inparm/ pio_stride, pio_root, pio_numiotasks, & - pio_typename, pio_async_interface, pio_debug_level, pio_blocksize, pio_buffer_size_limit + pio_typename, pio_async_interface, pio_debug_level, pio_blocksize, & + pio_buffer_size_limit, pio_rearranger @@ -391,6 +396,7 @@ subroutine shr_pio_read_default_namelist(nlfilename, Comm, pio_stride, pio_root, pio_buffer_size_limit = -99 ! io task memory buffer maximum set internally in pio when < 0 pio_debug_level = 0 ! no debug info by default pio_async_interface = .false. ! pio tasks are a subset of component tasks + pio_rearranger = pio_rearr_subset if(iamroot) then unitn=shr_file_getunit() @@ -427,7 +433,8 @@ subroutine shr_pio_read_default_namelist(nlfilename, Comm, pio_stride, pio_root, end if end if - call shr_pio_namelist_set(npes, Comm, pio_stride, pio_root, pio_numiotasks, pio_iotype, iamroot) + call shr_pio_namelist_set(npes, Comm, pio_stride, pio_root, pio_numiotasks, pio_iotype, & + iamroot, pio_rearranger) call shr_mpi_bcast(pio_debug_level, Comm) call shr_mpi_bcast(pio_blocksize, Comm) @@ -435,15 +442,16 @@ subroutine shr_pio_read_default_namelist(nlfilename, Comm, pio_stride, pio_root, call shr_mpi_bcast(pio_buffer_size_limit, Comm) call shr_mpi_bcast(pio_async_interface, Comm) + call shr_mpi_bcast(pio_rearranger, Comm) end subroutine shr_pio_read_default_namelist - subroutine shr_pio_read_component_namelist(nlfilename, Comm, pio_stride, pio_root, pio_numiotasks, pio_iotype) + subroutine shr_pio_read_component_namelist(nlfilename, Comm, pio_stride, pio_root, pio_numiotasks, pio_iotype, pio_rearranger) character(len=*), intent(in) :: nlfilename integer, intent(in) :: Comm - integer, intent(inout) :: pio_stride, pio_root, pio_numiotasks, pio_iotype + integer, intent(inout) :: pio_stride, pio_root, pio_numiotasks, pio_iotype, pio_rearranger character(len=SHR_KIND_CS) :: pio_typename integer :: unitn @@ -451,9 +459,10 @@ subroutine shr_pio_read_component_namelist(nlfilename, Comm, pio_stride, pio_roo logical :: iamroot character(*),parameter :: subName = '(shr_pio_read_component_namelist) ' integer :: pio_default_stride, pio_default_root, pio_default_numiotasks, pio_default_iotype + integer :: pio_default_rearranger namelist /pio_inparm/ pio_stride, pio_root, pio_numiotasks, & - pio_typename + pio_typename, pio_rearranger @@ -472,6 +481,7 @@ subroutine shr_pio_read_component_namelist(nlfilename, Comm, pio_stride, pio_roo pio_default_root = pio_root pio_default_numiotasks = pio_numiotasks pio_default_iotype = pio_iotype + pio_default_rearranger = pio_rearranger !-------------------------------------------------------------------------- @@ -481,6 +491,7 @@ subroutine shr_pio_read_component_namelist(nlfilename, Comm, pio_stride, pio_roo pio_numiotasks = -99 ! set based on pio_stride value when initialized < 0 pio_root = -99 pio_typename = 'nothing' + pio_rearranger = PIO_REARR_SUBSET if(iamroot) then unitn=shr_file_getunit() @@ -532,7 +543,8 @@ subroutine shr_pio_read_component_namelist(nlfilename, Comm, pio_stride, pio_roo endif end if - call shr_pio_namelist_set(npes, Comm, pio_stride, pio_root, pio_numiotasks, pio_iotype, iamroot) + call shr_pio_namelist_set(npes, Comm, pio_stride, pio_root, pio_numiotasks, pio_iotype, & + iamroot, pio_rearranger) end subroutine shr_pio_read_component_namelist @@ -567,10 +579,11 @@ subroutine shr_pio_getiotypefromname(typename, iotype, defaulttype) end subroutine shr_pio_getiotypefromname !=============================================================================== - subroutine shr_pio_namelist_set(npes,mycomm, pio_stride, pio_root, pio_numiotasks, pio_iotype, iamroot) + subroutine shr_pio_namelist_set(npes,mycomm, pio_stride, pio_root, pio_numiotasks, & + pio_iotype, iamroot, pio_rearranger) integer, intent(in) :: npes, mycomm integer, intent(inout) :: pio_stride, pio_root, pio_numiotasks - integer, intent(inout) :: pio_iotype + integer, intent(inout) :: pio_iotype, pio_rearranger logical, intent(in) :: iamroot character(*),parameter :: subName = '(shr_pio_namelist_set) ' @@ -578,6 +591,7 @@ subroutine shr_pio_namelist_set(npes,mycomm, pio_stride, pio_root, pio_numiotask call shr_mpi_bcast(pio_stride , mycomm) call shr_mpi_bcast(pio_root , mycomm) call shr_mpi_bcast(pio_numiotasks, mycomm) + call shr_mpi_bcast(pio_rearranger, mycomm) if (pio_root<0) then pio_root = 1 From 26cd035ec3a156e33c5e90ad799d96eebf0ba824 Mon Sep 17 00:00:00 2001 From: Jim Edwards Date: Thu, 17 Dec 2015 09:47:47 -0700 Subject: [PATCH 05/17] Add pio_rearranger setting to stdout --- share/csm_share/shr/shr_pio_mod.F90 | 35 ++++++++++++----------------- 1 file changed, 14 insertions(+), 21 deletions(-) diff --git a/share/csm_share/shr/shr_pio_mod.F90 b/share/csm_share/shr/shr_pio_mod.F90 index 79b4d9789b4c..2c4c3d483233 100644 --- a/share/csm_share/shr/shr_pio_mod.F90 +++ b/share/csm_share/shr/shr_pio_mod.F90 @@ -175,13 +175,6 @@ subroutine shr_pio_init2(comp_id, comp_name, comp_iamin, comp_comm, comp_comm_ia if(pio_async_interface) then call pio_init(total_comps,mpi_comm_world, comp_comm, io_comm, iosystems) i=1 - if(comp_comm_iam(i)==0) then - write(shr_log_unit,*) io_compname(i),' : pio_numiotasks = ',pio_comp_settings(i)%pio_numiotasks - write(shr_log_unit,*) io_compname(i),' : pio_stride = ',pio_comp_settings(i)%pio_stride - write(shr_log_unit,*) io_compname(i),' : pio_root = ',pio_comp_settings(i)%pio_root - write(shr_log_unit,*) io_compname(i),' : pio_iotype = ',pio_comp_settings(i)%pio_iotype - end if - else do i=1,total_comps if(comp_iamin(i)) then @@ -201,21 +194,18 @@ subroutine shr_pio_init2(comp_id, comp_name, comp_iamin, comp_comm, comp_comm_ia pio_comp_settings(i)%pio_stride, & pio_comp_settings(i)%pio_rearranger, iosystems(i), & base=pio_comp_settings(i)%pio_root) - - if(comp_comm_iam(i)==0) then - write(shr_log_unit,*) io_compname(i),' : pio_numiotasks = ',pio_comp_settings(i)%pio_numiotasks - write(shr_log_unit,*) io_compname(i),' : pio_stride = ',pio_comp_settings(i)%pio_stride - write(shr_log_unit,*) io_compname(i),' : pio_root = ',pio_comp_settings(i)%pio_root - write(shr_log_unit,*) io_compname(i),' : pio_iotype = ',pio_comp_settings(i)%pio_iotype - end if - - - end if end do end if - - + do i=1,total_comps + if(comp_comm_iam(i)==0) then + write(shr_log_unit,*) io_compname(i),' : pio_numiotasks = ',pio_comp_settings(i)%pio_numiotasks + write(shr_log_unit,*) io_compname(i),' : pio_stride = ',pio_comp_settings(i)%pio_stride + write(shr_log_unit,*) io_compname(i),' : pio_rearranger = ',pio_comp_settings(i)%pio_rearranger + write(shr_log_unit,*) io_compname(i),' : pio_root = ',pio_comp_settings(i)%pio_root + write(shr_log_unit,*) io_compname(i),' : pio_iotype = ',pio_comp_settings(i)%pio_iotype + end if + enddo end subroutine shr_pio_init2 @@ -607,7 +597,7 @@ subroutine shr_pio_namelist_set(npes,mycomm, pio_stride, pio_root, pio_numiotask else #endif - + @@ -623,8 +613,11 @@ subroutine shr_pio_namelist_set(npes,mycomm, pio_stride, pio_root, pio_numiotask pio_numiotasks = npes/pio_stride pio_numiotasks = max(1, pio_numiotasks) end if + if(pio_stride == 1) then + pio_root = 0 + endif - + if (pio_root + (pio_stride)*(pio_numiotasks-1) >= npes .or. & pio_stride<=0 .or. pio_numiotasks<=0 .or. pio_root < 0 .or. & pio_root > npes-1) then From a837581aef2506db03e33e1217009196a4b63045 Mon Sep 17 00:00:00 2001 From: Jim Edwards Date: Thu, 17 Dec 2015 11:24:56 -0700 Subject: [PATCH 06/17] additional changes to set pio_rearranger --- share/csm_share/shr/shr_pio_mod.F90 | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/share/csm_share/shr/shr_pio_mod.F90 b/share/csm_share/shr/shr_pio_mod.F90 index 2c4c3d483233..d8815f272c6e 100644 --- a/share/csm_share/shr/shr_pio_mod.F90 +++ b/share/csm_share/shr/shr_pio_mod.F90 @@ -386,7 +386,7 @@ subroutine shr_pio_read_default_namelist(nlfilename, Comm, pio_stride, pio_root, pio_buffer_size_limit = -99 ! io task memory buffer maximum set internally in pio when < 0 pio_debug_level = 0 ! no debug info by default pio_async_interface = .false. ! pio tasks are a subset of component tasks - pio_rearranger = pio_rearr_subset + pio_rearranger = PIO_REARR_SUBSET if(iamroot) then unitn=shr_file_getunit() @@ -481,7 +481,7 @@ subroutine shr_pio_read_component_namelist(nlfilename, Comm, pio_stride, pio_roo pio_numiotasks = -99 ! set based on pio_stride value when initialized < 0 pio_root = -99 pio_typename = 'nothing' - pio_rearranger = PIO_REARR_SUBSET + pio_rearranger = -99 if(iamroot) then unitn=shr_file_getunit() @@ -519,6 +519,7 @@ subroutine shr_pio_read_component_namelist(nlfilename, Comm, pio_stride, pio_roo if(pio_stride== -99) pio_stride = pio_default_stride if(pio_root == -99) pio_root = pio_default_root + if(pio_rearranger == -99) pio_rearranger = pio_default_rearranger if(pio_numiotasks == -99) then #if defined(BGP) || defined(BGL) if(pio_default_numiotasks < 0 ) then @@ -616,6 +617,9 @@ subroutine shr_pio_namelist_set(npes,mycomm, pio_stride, pio_root, pio_numiotask if(pio_stride == 1) then pio_root = 0 endif + if(pio_rearranger .ne. PIO_REARR_SUBSET .and. pio_rearranger .ne. PIO_REARR_BOX) then + call shr_sys_abort( subname//':: pio_rearranger setting not defined') + endif if (pio_root + (pio_stride)*(pio_numiotasks-1) >= npes .or. & From 9e5352eb995cb0fefc8b392bbaaae837caffb76b Mon Sep 17 00:00:00 2001 From: Jim Edwards Date: Wed, 30 Dec 2015 10:32:17 -0700 Subject: [PATCH 07/17] fine tuning for pio --- share/csm_share/shr/shr_pio_mod.F90 | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/share/csm_share/shr/shr_pio_mod.F90 b/share/csm_share/shr/shr_pio_mod.F90 index d8815f272c6e..a924fad30dfb 100644 --- a/share/csm_share/shr/shr_pio_mod.F90 +++ b/share/csm_share/shr/shr_pio_mod.F90 @@ -589,19 +589,11 @@ subroutine shr_pio_namelist_set(npes,mycomm, pio_stride, pio_root, pio_numiotask endif pio_root = min(pio_root,npes-1) - -#if defined(BGP) || defined(BGL) -! On Bluegene machines a negative numiotasks refers to the number of iotasks per ionode, this code -! allows for that special case. - if(pio_numiotasks<0) then - pio_stride=0 - else -#endif - - - - - + if(npes > 1 .and. pio_stride>= npes .and. & + (pio_iotype .eq. PIO_IOTYPE_PNETCDF .or. & + pio_iotype .eq. PIO_IOTYPE_NETCDF4P)) then + pio_stride = pio_stride/2 + endif !-------------------------------------------------------------------------- ! check/set/correct io pio parameters !-------------------------------------------------------------------------- From 42d05beed786e9e750aec36cd1061a0538270701 Mon Sep 17 00:00:00 2001 From: Jim Edwards Date: Mon, 11 Jan 2016 08:40:41 -0700 Subject: [PATCH 08/17] correct a bug in settng pio defaults --- share/csm_share/shr/shr_pio_mod.F90 | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/share/csm_share/shr/shr_pio_mod.F90 b/share/csm_share/shr/shr_pio_mod.F90 index d8815f272c6e..781fecc7feae 100644 --- a/share/csm_share/shr/shr_pio_mod.F90 +++ b/share/csm_share/shr/shr_pio_mod.F90 @@ -488,6 +488,11 @@ subroutine shr_pio_read_component_namelist(nlfilename, Comm, pio_stride, pio_roo open( unitn, file=trim(nlfilename), status='old' , iostat=ierr) if( ierr /= 0) then write(shr_log_unit,*) 'No ',trim(nlfilename),' found, using defaults for pio settings' + pio_stride = pio_default_stride + pio_root = pio_default_root + pio_numiotasks = pio_default_numiotasks + pio_iotype = pio_default_iotype + pio_rearranger = pio_default_rearranger else ierr = 1 do while( ierr /= 0 ) @@ -589,18 +594,11 @@ subroutine shr_pio_namelist_set(npes,mycomm, pio_stride, pio_root, pio_numiotask endif pio_root = min(pio_root,npes-1) - -#if defined(BGP) || defined(BGL) -! On Bluegene machines a negative numiotasks refers to the number of iotasks per ionode, this code -! allows for that special case. - if(pio_numiotasks<0) then - pio_stride=0 - else -#endif - - - - + if(npes > 1 .and. pio_stride>= npes .and. & + (pio_iotype .eq. PIO_IOTYPE_PNETCDF .or. & + pio_iotype .eq. PIO_IOTYPE_NETCDF4P)) then + pio_stride = pio_stride/2 + endif !-------------------------------------------------------------------------- ! check/set/correct io pio parameters From 818cdd98180dc687123d7e5e1b7d3976c177e875 Mon Sep 17 00:00:00 2001 From: Bill Sacks Date: Tue, 12 Jan 2016 05:42:50 -0700 Subject: [PATCH 09/17] Add pio_rearr_box to stub pio to get cime unit tests to pass Also fix do_genf90 in that directory Test suite: cime unit tests on my mac Test baseline: N/A Test namelist changes: N/A Test status: pass Fixes: None User interface changes?: No Code review: None --- share/csm_share/unit_test_stubs/pio/do_genf90 | 2 +- share/csm_share/unit_test_stubs/pio/pio.F90 | 1233 +++++++++-------- .../csm_share/unit_test_stubs/pio/pio.F90.in | 1 + 3 files changed, 619 insertions(+), 617 deletions(-) diff --git a/share/csm_share/unit_test_stubs/pio/do_genf90 b/share/csm_share/unit_test_stubs/pio/do_genf90 index da92f3ed9a9c..987458315b83 100755 --- a/share/csm_share/unit_test_stubs/pio/do_genf90 +++ b/share/csm_share/unit_test_stubs/pio/do_genf90 @@ -2,7 +2,7 @@ # Run genf90 on all files that need it in this directory -genf90=../../../../tools/cprnc/genf90/genf90.pl +genf90=../../../../externals/genf90/genf90.pl for fl in *.in; do echo $fl diff --git a/share/csm_share/unit_test_stubs/pio/pio.F90 b/share/csm_share/unit_test_stubs/pio/pio.F90 index defa959c3fcc..9ffcec1b3490 100644 --- a/share/csm_share/unit_test_stubs/pio/pio.F90 +++ b/share/csm_share/unit_test_stubs/pio/pio.F90 @@ -1,5 +1,5 @@ !=================================================== -! DO NOT EDIT THIS FILE, it was generated using ../../../../tools/cprnc/genf90/genf90.pl +! DO NOT EDIT THIS FILE, it was generated using ../../../../externals/genf90/genf90.pl ! Any changes you make to this file may be lost !=================================================== module pio @@ -68,6 +68,7 @@ module pio integer, parameter, public :: pio_offset = MPI_OFFSET_KIND integer, parameter, public :: pio_offset_kind = pio_offset integer, parameter, public :: pio_rearr_subset = 0 + integer, parameter, public :: pio_rearr_box = 1 integer, parameter, public :: PIO_WRITE = 0 public :: PIO_def_dim @@ -78,19 +79,19 @@ module pio public :: pio_set_blocksize public :: PIO_closefile -# 77 "pio.F90.in" +# 78 "pio.F90.in" interface PIO_closefile module procedure closefile end interface PIO_closefile public :: PIO_createfile -# 82 "pio.F90.in" +# 83 "pio.F90.in" interface PIO_createfile module procedure createfile end interface public :: pio_def_var -# 87 "pio.F90.in" +# 88 "pio.F90.in" interface pio_def_var module procedure & def_var_0d, & @@ -98,20 +99,20 @@ module pio end interface public :: PIO_finalize -# 94 "pio.F90.in" +# 95 "pio.F90.in" interface PIO_finalize module procedure finalize end interface public :: PIO_freedecomp -# 99 "pio.F90.in" +# 100 "pio.F90.in" interface PIO_freedecomp module procedure freedecomp_ios module procedure freedecomp_file end interface public :: pio_get_att -# 105 "pio.F90.in" +# 106 "pio.F90.in" interface pio_get_att module procedure get_att_text, get_att_desc_text module procedure get_att_real, get_att_desc_real @@ -126,7 +127,7 @@ module pio end interface public :: pio_get_var -# 112 "pio.F90.in" +# 113 "pio.F90.in" interface pio_get_var module procedure get_var_0d_text, get_var_vdesc_0d_text module procedure get_var_1d_text, get_var_vdesc_1d_text @@ -199,14 +200,14 @@ module pio end interface public :: PIO_init -# 120 "pio.F90.in" +# 121 "pio.F90.in" interface PIO_init module procedure init_intracom module procedure init_intercom end interface public :: PIO_initdecomp -# 126 "pio.F90.in" +# 127 "pio.F90.in" interface PIO_initdecomp module procedure PIO_initdecomp_dof_i4 ! previous name: initdecomop_1dof_nf_box module procedure PIO_initdecomp_dof_i8 ! previous name: initdecomop_1dof_nf_box @@ -224,20 +225,20 @@ module pio end interface public :: pio_inq_varid -# 143 "pio.F90.in" +# 144 "pio.F90.in" interface pio_inq_varid module procedure inq_varid_vid, & inq_varid_vardesc end interface pio_inq_varid public :: PIO_openfile -# 149 "pio.F90.in" +# 150 "pio.F90.in" interface PIO_openfile module procedure PIO_openfile end interface public :: PIO_put_att -# 154 "pio.F90.in" +# 155 "pio.F90.in" interface PIO_put_att module procedure put_att_text, put_att_desc_text module procedure put_att_real, put_att_desc_real @@ -252,7 +253,7 @@ module pio end interface public :: pio_put_var -# 161 "pio.F90.in" +# 162 "pio.F90.in" interface pio_put_var ! DIMS 0,1,2,3,4,5 module procedure put_var_0d_text, put_var_vdesc_0d_text @@ -349,7 +350,7 @@ module pio end interface public :: PIO_read_darray -# 170 "pio.F90.in" +# 171 "pio.F90.in" interface PIO_read_darray ! TYPE real,int,double ! DIMS 1,2,3,4,5,6,7 @@ -417,27 +418,27 @@ module pio end interface public :: pio_set_buffer_size_limit -# 177 "pio.F90.in" +# 178 "pio.F90.in" interface pio_set_buffer_size_limit module procedure pio_set_buffer_size_limit_i4 module procedure pio_set_buffer_size_limit_i8 end interface public :: PIO_setdebuglevel -# 183 "pio.F90.in" +# 184 "pio.F90.in" interface PIO_setdebuglevel module procedure setdebuglevel end interface PIO_setdebuglevel public :: PIO_seterrorhandling -# 188 "pio.F90.in" +# 189 "pio.F90.in" interface PIO_seterrorhandling module procedure seterrorhandlingf module procedure seterrorhandlingi end interface public :: PIO_write_darray -# 194 "pio.F90.in" +# 195 "pio.F90.in" interface PIO_write_darray ! TYPE real,int,double ! DIMS 1,2,3,4,5,6,7 @@ -504,16 +505,16 @@ module pio module procedure write_darray_7d_double end interface -# 200 "pio.F90.in" +# 201 "pio.F90.in" contains -# 202 "pio.F90.in" +# 203 "pio.F90.in" subroutine closefile(file) type (file_desc_t),intent(inout) :: file -# 204 "pio.F90.in" +# 205 "pio.F90.in" end subroutine closefile -# 206 "pio.F90.in" +# 207 "pio.F90.in" integer function createfile(iosystem, file,iotype, fname, amode_in) result(ierr) type (iosystem_desc_t), intent(inout), target :: iosystem type (file_desc_t), intent(inout) :: file @@ -522,10 +523,10 @@ integer function createfile(iosystem, file,iotype, fname, amode_in) result(ierr) integer, optional, intent(in) :: amode_in ierr = 0 -# 214 "pio.F90.in" +# 215 "pio.F90.in" end function createfile -# 216 "pio.F90.in" +# 217 "pio.F90.in" integer function def_var_0d(File,name,type,vardesc) result(ierr) type (File_desc_t), intent(in) :: File @@ -534,10 +535,10 @@ integer function def_var_0d(File,name,type,vardesc) result(ierr) type (Var_desc_t), intent(inout) :: vardesc ierr = 0 -# 224 "pio.F90.in" +# 225 "pio.F90.in" end function def_var_0d -# 226 "pio.F90.in" +# 227 "pio.F90.in" integer function def_var_md(File,name,type,dimids,vardesc) result(ierr) type (File_desc_t), intent(in) :: File character(len=*), intent(in) :: name @@ -546,33 +547,33 @@ integer function def_var_md(File,name,type,dimids,vardesc) result(ierr) type (Var_desc_t), intent(inout) :: vardesc ierr = 0 -# 234 "pio.F90.in" +# 235 "pio.F90.in" end function def_var_md -# 236 "pio.F90.in" +# 237 "pio.F90.in" subroutine finalize(iosystem,ierr) type (iosystem_desc_t), intent(inout) :: iosystem integer(i4), intent(out) :: ierr ierr = 0 -# 241 "pio.F90.in" +# 242 "pio.F90.in" end subroutine finalize -# 243 "pio.F90.in" +# 244 "pio.F90.in" subroutine freedecomp_ios(ios,iodesc) type (iosystem_desc_t) :: ios type (io_desc_t) :: iodesc -# 246 "pio.F90.in" +# 247 "pio.F90.in" end subroutine freedecomp_ios -# 248 "pio.F90.in" +# 249 "pio.F90.in" subroutine freedecomp_file(file,iodesc) type (file_desc_t) :: file type (io_desc_t) :: iodesc -# 251 "pio.F90.in" +# 252 "pio.F90.in" end subroutine freedecomp_file -# 253 "pio.F90.in" +# 254 "pio.F90.in" integer function get_att_desc_text (File,varDesc,name,value) result(ierr) type (File_desc_t), intent(inout) , target :: File type (VAR_desc_t), intent(in) :: varDesc @@ -580,9 +581,9 @@ integer function get_att_desc_text (File,varDesc,name,value) result(ierr) character(len=*), intent(inout) :: value ierr = 0 -# 260 "pio.F90.in" +# 261 "pio.F90.in" end function get_att_desc_text -# 253 "pio.F90.in" +# 254 "pio.F90.in" integer function get_att_desc_real (File,varDesc,name,value) result(ierr) type (File_desc_t), intent(inout) , target :: File type (VAR_desc_t), intent(in) :: varDesc @@ -590,9 +591,9 @@ integer function get_att_desc_real (File,varDesc,name,value) result(ierr) real(r4), intent(inout) :: value ierr = 0 -# 260 "pio.F90.in" +# 261 "pio.F90.in" end function get_att_desc_real -# 253 "pio.F90.in" +# 254 "pio.F90.in" integer function get_att_desc_double (File,varDesc,name,value) result(ierr) type (File_desc_t), intent(inout) , target :: File type (VAR_desc_t), intent(in) :: varDesc @@ -600,9 +601,9 @@ integer function get_att_desc_double (File,varDesc,name,value) result(ierr) real(r8), intent(inout) :: value ierr = 0 -# 260 "pio.F90.in" +# 261 "pio.F90.in" end function get_att_desc_double -# 253 "pio.F90.in" +# 254 "pio.F90.in" integer function get_att_desc_int (File,varDesc,name,value) result(ierr) type (File_desc_t), intent(inout) , target :: File type (VAR_desc_t), intent(in) :: varDesc @@ -610,11 +611,11 @@ integer function get_att_desc_int (File,varDesc,name,value) result(ierr) integer(i4), intent(inout) :: value ierr = 0 -# 260 "pio.F90.in" +# 261 "pio.F90.in" end function get_att_desc_int ! TYPE real,int,double -# 263 "pio.F90.in" +# 264 "pio.F90.in" integer function get_att_desc_1d_real (File,varDesc,name,value) result(ierr) type (File_desc_t), intent(inout) , target :: File type (VAR_desc_t), intent(in) :: varDesc @@ -622,10 +623,10 @@ integer function get_att_desc_1d_real (File,varDesc,name,value) result(ierr) real(r4), intent(inout) :: value(:) ierr = 0 -# 270 "pio.F90.in" +# 271 "pio.F90.in" end function get_att_desc_1d_real ! TYPE real,int,double -# 263 "pio.F90.in" +# 264 "pio.F90.in" integer function get_att_desc_1d_int (File,varDesc,name,value) result(ierr) type (File_desc_t), intent(inout) , target :: File type (VAR_desc_t), intent(in) :: varDesc @@ -633,10 +634,10 @@ integer function get_att_desc_1d_int (File,varDesc,name,value) result(ierr) integer(i4), intent(inout) :: value(:) ierr = 0 -# 270 "pio.F90.in" +# 271 "pio.F90.in" end function get_att_desc_1d_int ! TYPE real,int,double -# 263 "pio.F90.in" +# 264 "pio.F90.in" integer function get_att_desc_1d_double (File,varDesc,name,value) result(ierr) type (File_desc_t), intent(inout) , target :: File type (VAR_desc_t), intent(in) :: varDesc @@ -644,10 +645,10 @@ integer function get_att_desc_1d_double (File,varDesc,name,value) result(ierr) real(r8), intent(inout) :: value(:) ierr = 0 -# 270 "pio.F90.in" +# 271 "pio.F90.in" end function get_att_desc_1d_double -# 272 "pio.F90.in" +# 273 "pio.F90.in" integer function get_att_text (File,varid,name,value) result(ierr) type (File_desc_t), intent(in) , target :: File integer(i4), intent(in) :: varid @@ -655,9 +656,9 @@ integer function get_att_text (File,varid,name,value) result(ierr) character(len=*), intent(inout) :: value ierr = 0 -# 279 "pio.F90.in" +# 280 "pio.F90.in" end function get_att_text -# 272 "pio.F90.in" +# 273 "pio.F90.in" integer function get_att_real (File,varid,name,value) result(ierr) type (File_desc_t), intent(in) , target :: File integer(i4), intent(in) :: varid @@ -665,9 +666,9 @@ integer function get_att_real (File,varid,name,value) result(ierr) real(r4), intent(inout) :: value ierr = 0 -# 279 "pio.F90.in" +# 280 "pio.F90.in" end function get_att_real -# 272 "pio.F90.in" +# 273 "pio.F90.in" integer function get_att_double (File,varid,name,value) result(ierr) type (File_desc_t), intent(in) , target :: File integer(i4), intent(in) :: varid @@ -675,9 +676,9 @@ integer function get_att_double (File,varid,name,value) result(ierr) real(r8), intent(inout) :: value ierr = 0 -# 279 "pio.F90.in" +# 280 "pio.F90.in" end function get_att_double -# 272 "pio.F90.in" +# 273 "pio.F90.in" integer function get_att_int (File,varid,name,value) result(ierr) type (File_desc_t), intent(in) , target :: File integer(i4), intent(in) :: varid @@ -685,11 +686,11 @@ integer function get_att_int (File,varid,name,value) result(ierr) integer(i4), intent(inout) :: value ierr = 0 -# 279 "pio.F90.in" +# 280 "pio.F90.in" end function get_att_int ! TYPE real,int,double -# 282 "pio.F90.in" +# 283 "pio.F90.in" integer function get_att_1d_real (File,varid,name,value) result(ierr) type (File_desc_t), intent(in) , target :: File integer(i4), intent(in) :: varid @@ -697,10 +698,10 @@ integer function get_att_1d_real (File,varid,name,value) result(ierr) real(r4), intent(inout) :: value(:) ierr = 0 -# 289 "pio.F90.in" +# 290 "pio.F90.in" end function get_att_1d_real ! TYPE real,int,double -# 282 "pio.F90.in" +# 283 "pio.F90.in" integer function get_att_1d_int (File,varid,name,value) result(ierr) type (File_desc_t), intent(in) , target :: File integer(i4), intent(in) :: varid @@ -708,10 +709,10 @@ integer function get_att_1d_int (File,varid,name,value) result(ierr) integer(i4), intent(inout) :: value(:) ierr = 0 -# 289 "pio.F90.in" +# 290 "pio.F90.in" end function get_att_1d_int ! TYPE real,int,double -# 282 "pio.F90.in" +# 283 "pio.F90.in" integer function get_att_1d_double (File,varid,name,value) result(ierr) type (File_desc_t), intent(in) , target :: File integer(i4), intent(in) :: varid @@ -719,47 +720,47 @@ integer function get_att_1d_double (File,varid,name,value) result(ierr) real(r8), intent(inout) :: value(:) ierr = 0 -# 289 "pio.F90.in" +# 290 "pio.F90.in" end function get_att_1d_double -# 291 "pio.F90.in" +# 292 "pio.F90.in" integer function get_var1_text (File,varid, index, ival) result(ierr) type (File_desc_t), intent(in) :: File integer, intent(in) :: varid, index(:) character(len=*), intent(inout) :: ival ierr = 0 -# 297 "pio.F90.in" +# 298 "pio.F90.in" end function get_var1_text -# 291 "pio.F90.in" +# 292 "pio.F90.in" integer function get_var1_real (File,varid, index, ival) result(ierr) type (File_desc_t), intent(in) :: File integer, intent(in) :: varid, index(:) real(r4), intent(inout) :: ival ierr = 0 -# 297 "pio.F90.in" +# 298 "pio.F90.in" end function get_var1_real -# 291 "pio.F90.in" +# 292 "pio.F90.in" integer function get_var1_double (File,varid, index, ival) result(ierr) type (File_desc_t), intent(in) :: File integer, intent(in) :: varid, index(:) real(r8), intent(inout) :: ival ierr = 0 -# 297 "pio.F90.in" +# 298 "pio.F90.in" end function get_var1_double -# 291 "pio.F90.in" +# 292 "pio.F90.in" integer function get_var1_int (File,varid, index, ival) result(ierr) type (File_desc_t), intent(in) :: File integer, intent(in) :: varid, index(:) integer(i4), intent(inout) :: ival ierr = 0 -# 297 "pio.F90.in" +# 298 "pio.F90.in" end function get_var1_int -# 299 "pio.F90.in" +# 300 "pio.F90.in" integer function get_var1_vdesc_text (File,vardesc, index, ival) result(ierr) type (File_desc_t), intent(in) :: File type(var_desc_t), intent(in) :: vardesc @@ -767,9 +768,9 @@ integer function get_var1_vdesc_text (File,vardesc, index, ival) result(ierr) character(len=*), intent(inout) :: ival ierr = 0 -# 306 "pio.F90.in" +# 307 "pio.F90.in" end function get_var1_vdesc_text -# 299 "pio.F90.in" +# 300 "pio.F90.in" integer function get_var1_vdesc_real (File,vardesc, index, ival) result(ierr) type (File_desc_t), intent(in) :: File type(var_desc_t), intent(in) :: vardesc @@ -777,9 +778,9 @@ integer function get_var1_vdesc_real (File,vardesc, index, ival) result(ierr) real(r4), intent(inout) :: ival ierr = 0 -# 306 "pio.F90.in" +# 307 "pio.F90.in" end function get_var1_vdesc_real -# 299 "pio.F90.in" +# 300 "pio.F90.in" integer function get_var1_vdesc_double (File,vardesc, index, ival) result(ierr) type (File_desc_t), intent(in) :: File type(var_desc_t), intent(in) :: vardesc @@ -787,9 +788,9 @@ integer function get_var1_vdesc_double (File,vardesc, index, ival) result(ierr) real(r8), intent(inout) :: ival ierr = 0 -# 306 "pio.F90.in" +# 307 "pio.F90.in" end function get_var1_vdesc_double -# 299 "pio.F90.in" +# 300 "pio.F90.in" integer function get_var1_vdesc_int (File,vardesc, index, ival) result(ierr) type (File_desc_t), intent(in) :: File type(var_desc_t), intent(in) :: vardesc @@ -797,212 +798,212 @@ integer function get_var1_vdesc_int (File,vardesc, index, ival) result(ierr) integer(i4), intent(inout) :: ival ierr = 0 -# 306 "pio.F90.in" +# 307 "pio.F90.in" end function get_var1_vdesc_int ! DIMS 1,2,3,4,5 -# 309 "pio.F90.in" +# 310 "pio.F90.in" integer function get_vara_1d_text (File,varid, start, count, ival) result(ierr) type (File_desc_t), intent(in) :: File integer, intent(in) :: varid, start(:), count(:) character(len=*), intent(inout) :: ival(:) ierr = 0 -# 315 "pio.F90.in" +# 316 "pio.F90.in" end function get_vara_1d_text ! DIMS 1,2,3,4,5 -# 309 "pio.F90.in" +# 310 "pio.F90.in" integer function get_vara_2d_text (File,varid, start, count, ival) result(ierr) type (File_desc_t), intent(in) :: File integer, intent(in) :: varid, start(:), count(:) character(len=*), intent(inout) :: ival(:,:) ierr = 0 -# 315 "pio.F90.in" +# 316 "pio.F90.in" end function get_vara_2d_text ! DIMS 1,2,3,4,5 -# 309 "pio.F90.in" +# 310 "pio.F90.in" integer function get_vara_3d_text (File,varid, start, count, ival) result(ierr) type (File_desc_t), intent(in) :: File integer, intent(in) :: varid, start(:), count(:) character(len=*), intent(inout) :: ival(:,:,:) ierr = 0 -# 315 "pio.F90.in" +# 316 "pio.F90.in" end function get_vara_3d_text ! DIMS 1,2,3,4,5 -# 309 "pio.F90.in" +# 310 "pio.F90.in" integer function get_vara_4d_text (File,varid, start, count, ival) result(ierr) type (File_desc_t), intent(in) :: File integer, intent(in) :: varid, start(:), count(:) character(len=*), intent(inout) :: ival(:,:,:,:) ierr = 0 -# 315 "pio.F90.in" +# 316 "pio.F90.in" end function get_vara_4d_text ! DIMS 1,2,3,4,5 -# 309 "pio.F90.in" +# 310 "pio.F90.in" integer function get_vara_5d_text (File,varid, start, count, ival) result(ierr) type (File_desc_t), intent(in) :: File integer, intent(in) :: varid, start(:), count(:) character(len=*), intent(inout) :: ival(:,:,:,:,:) ierr = 0 -# 315 "pio.F90.in" +# 316 "pio.F90.in" end function get_vara_5d_text ! DIMS 1,2,3,4,5 -# 309 "pio.F90.in" +# 310 "pio.F90.in" integer function get_vara_1d_real (File,varid, start, count, ival) result(ierr) type (File_desc_t), intent(in) :: File integer, intent(in) :: varid, start(:), count(:) real(r4), intent(inout) :: ival(:) ierr = 0 -# 315 "pio.F90.in" +# 316 "pio.F90.in" end function get_vara_1d_real ! DIMS 1,2,3,4,5 -# 309 "pio.F90.in" +# 310 "pio.F90.in" integer function get_vara_2d_real (File,varid, start, count, ival) result(ierr) type (File_desc_t), intent(in) :: File integer, intent(in) :: varid, start(:), count(:) real(r4), intent(inout) :: ival(:,:) ierr = 0 -# 315 "pio.F90.in" +# 316 "pio.F90.in" end function get_vara_2d_real ! DIMS 1,2,3,4,5 -# 309 "pio.F90.in" +# 310 "pio.F90.in" integer function get_vara_3d_real (File,varid, start, count, ival) result(ierr) type (File_desc_t), intent(in) :: File integer, intent(in) :: varid, start(:), count(:) real(r4), intent(inout) :: ival(:,:,:) ierr = 0 -# 315 "pio.F90.in" +# 316 "pio.F90.in" end function get_vara_3d_real ! DIMS 1,2,3,4,5 -# 309 "pio.F90.in" +# 310 "pio.F90.in" integer function get_vara_4d_real (File,varid, start, count, ival) result(ierr) type (File_desc_t), intent(in) :: File integer, intent(in) :: varid, start(:), count(:) real(r4), intent(inout) :: ival(:,:,:,:) ierr = 0 -# 315 "pio.F90.in" +# 316 "pio.F90.in" end function get_vara_4d_real ! DIMS 1,2,3,4,5 -# 309 "pio.F90.in" +# 310 "pio.F90.in" integer function get_vara_5d_real (File,varid, start, count, ival) result(ierr) type (File_desc_t), intent(in) :: File integer, intent(in) :: varid, start(:), count(:) real(r4), intent(inout) :: ival(:,:,:,:,:) ierr = 0 -# 315 "pio.F90.in" +# 316 "pio.F90.in" end function get_vara_5d_real ! DIMS 1,2,3,4,5 -# 309 "pio.F90.in" +# 310 "pio.F90.in" integer function get_vara_1d_double (File,varid, start, count, ival) result(ierr) type (File_desc_t), intent(in) :: File integer, intent(in) :: varid, start(:), count(:) real(r8), intent(inout) :: ival(:) ierr = 0 -# 315 "pio.F90.in" +# 316 "pio.F90.in" end function get_vara_1d_double ! DIMS 1,2,3,4,5 -# 309 "pio.F90.in" +# 310 "pio.F90.in" integer function get_vara_2d_double (File,varid, start, count, ival) result(ierr) type (File_desc_t), intent(in) :: File integer, intent(in) :: varid, start(:), count(:) real(r8), intent(inout) :: ival(:,:) ierr = 0 -# 315 "pio.F90.in" +# 316 "pio.F90.in" end function get_vara_2d_double ! DIMS 1,2,3,4,5 -# 309 "pio.F90.in" +# 310 "pio.F90.in" integer function get_vara_3d_double (File,varid, start, count, ival) result(ierr) type (File_desc_t), intent(in) :: File integer, intent(in) :: varid, start(:), count(:) real(r8), intent(inout) :: ival(:,:,:) ierr = 0 -# 315 "pio.F90.in" +# 316 "pio.F90.in" end function get_vara_3d_double ! DIMS 1,2,3,4,5 -# 309 "pio.F90.in" +# 310 "pio.F90.in" integer function get_vara_4d_double (File,varid, start, count, ival) result(ierr) type (File_desc_t), intent(in) :: File integer, intent(in) :: varid, start(:), count(:) real(r8), intent(inout) :: ival(:,:,:,:) ierr = 0 -# 315 "pio.F90.in" +# 316 "pio.F90.in" end function get_vara_4d_double ! DIMS 1,2,3,4,5 -# 309 "pio.F90.in" +# 310 "pio.F90.in" integer function get_vara_5d_double (File,varid, start, count, ival) result(ierr) type (File_desc_t), intent(in) :: File integer, intent(in) :: varid, start(:), count(:) real(r8), intent(inout) :: ival(:,:,:,:,:) ierr = 0 -# 315 "pio.F90.in" +# 316 "pio.F90.in" end function get_vara_5d_double ! DIMS 1,2,3,4,5 -# 309 "pio.F90.in" +# 310 "pio.F90.in" integer function get_vara_1d_int (File,varid, start, count, ival) result(ierr) type (File_desc_t), intent(in) :: File integer, intent(in) :: varid, start(:), count(:) integer(i4), intent(inout) :: ival(:) ierr = 0 -# 315 "pio.F90.in" +# 316 "pio.F90.in" end function get_vara_1d_int ! DIMS 1,2,3,4,5 -# 309 "pio.F90.in" +# 310 "pio.F90.in" integer function get_vara_2d_int (File,varid, start, count, ival) result(ierr) type (File_desc_t), intent(in) :: File integer, intent(in) :: varid, start(:), count(:) integer(i4), intent(inout) :: ival(:,:) ierr = 0 -# 315 "pio.F90.in" +# 316 "pio.F90.in" end function get_vara_2d_int ! DIMS 1,2,3,4,5 -# 309 "pio.F90.in" +# 310 "pio.F90.in" integer function get_vara_3d_int (File,varid, start, count, ival) result(ierr) type (File_desc_t), intent(in) :: File integer, intent(in) :: varid, start(:), count(:) integer(i4), intent(inout) :: ival(:,:,:) ierr = 0 -# 315 "pio.F90.in" +# 316 "pio.F90.in" end function get_vara_3d_int ! DIMS 1,2,3,4,5 -# 309 "pio.F90.in" +# 310 "pio.F90.in" integer function get_vara_4d_int (File,varid, start, count, ival) result(ierr) type (File_desc_t), intent(in) :: File integer, intent(in) :: varid, start(:), count(:) integer(i4), intent(inout) :: ival(:,:,:,:) ierr = 0 -# 315 "pio.F90.in" +# 316 "pio.F90.in" end function get_vara_4d_int ! DIMS 1,2,3,4,5 -# 309 "pio.F90.in" +# 310 "pio.F90.in" integer function get_vara_5d_int (File,varid, start, count, ival) result(ierr) type (File_desc_t), intent(in) :: File integer, intent(in) :: varid, start(:), count(:) integer(i4), intent(inout) :: ival(:,:,:,:,:) ierr = 0 -# 315 "pio.F90.in" +# 316 "pio.F90.in" end function get_vara_5d_int ! DIMS 1,2,3,4,5 -# 318 "pio.F90.in" +# 319 "pio.F90.in" integer function get_vara_vdesc_1d_text (File,vardesc, start, count, ival) result(ierr) type (File_desc_t), intent(in) :: File type(var_desc_t), intent(in) :: vardesc @@ -1010,10 +1011,10 @@ integer function get_vara_vdesc_1d_text (File,vardesc, start, count, ival) resul character(len=*), intent(inout) :: ival(:) ierr = 0 -# 325 "pio.F90.in" +# 326 "pio.F90.in" end function get_vara_vdesc_1d_text ! DIMS 1,2,3,4,5 -# 318 "pio.F90.in" +# 319 "pio.F90.in" integer function get_vara_vdesc_2d_text (File,vardesc, start, count, ival) result(ierr) type (File_desc_t), intent(in) :: File type(var_desc_t), intent(in) :: vardesc @@ -1021,10 +1022,10 @@ integer function get_vara_vdesc_2d_text (File,vardesc, start, count, ival) resul character(len=*), intent(inout) :: ival(:,:) ierr = 0 -# 325 "pio.F90.in" +# 326 "pio.F90.in" end function get_vara_vdesc_2d_text ! DIMS 1,2,3,4,5 -# 318 "pio.F90.in" +# 319 "pio.F90.in" integer function get_vara_vdesc_3d_text (File,vardesc, start, count, ival) result(ierr) type (File_desc_t), intent(in) :: File type(var_desc_t), intent(in) :: vardesc @@ -1032,10 +1033,10 @@ integer function get_vara_vdesc_3d_text (File,vardesc, start, count, ival) resul character(len=*), intent(inout) :: ival(:,:,:) ierr = 0 -# 325 "pio.F90.in" +# 326 "pio.F90.in" end function get_vara_vdesc_3d_text ! DIMS 1,2,3,4,5 -# 318 "pio.F90.in" +# 319 "pio.F90.in" integer function get_vara_vdesc_4d_text (File,vardesc, start, count, ival) result(ierr) type (File_desc_t), intent(in) :: File type(var_desc_t), intent(in) :: vardesc @@ -1043,10 +1044,10 @@ integer function get_vara_vdesc_4d_text (File,vardesc, start, count, ival) resul character(len=*), intent(inout) :: ival(:,:,:,:) ierr = 0 -# 325 "pio.F90.in" +# 326 "pio.F90.in" end function get_vara_vdesc_4d_text ! DIMS 1,2,3,4,5 -# 318 "pio.F90.in" +# 319 "pio.F90.in" integer function get_vara_vdesc_5d_text (File,vardesc, start, count, ival) result(ierr) type (File_desc_t), intent(in) :: File type(var_desc_t), intent(in) :: vardesc @@ -1054,10 +1055,10 @@ integer function get_vara_vdesc_5d_text (File,vardesc, start, count, ival) resul character(len=*), intent(inout) :: ival(:,:,:,:,:) ierr = 0 -# 325 "pio.F90.in" +# 326 "pio.F90.in" end function get_vara_vdesc_5d_text ! DIMS 1,2,3,4,5 -# 318 "pio.F90.in" +# 319 "pio.F90.in" integer function get_vara_vdesc_1d_real (File,vardesc, start, count, ival) result(ierr) type (File_desc_t), intent(in) :: File type(var_desc_t), intent(in) :: vardesc @@ -1065,10 +1066,10 @@ integer function get_vara_vdesc_1d_real (File,vardesc, start, count, ival) resul real(r4), intent(inout) :: ival(:) ierr = 0 -# 325 "pio.F90.in" +# 326 "pio.F90.in" end function get_vara_vdesc_1d_real ! DIMS 1,2,3,4,5 -# 318 "pio.F90.in" +# 319 "pio.F90.in" integer function get_vara_vdesc_2d_real (File,vardesc, start, count, ival) result(ierr) type (File_desc_t), intent(in) :: File type(var_desc_t), intent(in) :: vardesc @@ -1076,10 +1077,10 @@ integer function get_vara_vdesc_2d_real (File,vardesc, start, count, ival) resul real(r4), intent(inout) :: ival(:,:) ierr = 0 -# 325 "pio.F90.in" +# 326 "pio.F90.in" end function get_vara_vdesc_2d_real ! DIMS 1,2,3,4,5 -# 318 "pio.F90.in" +# 319 "pio.F90.in" integer function get_vara_vdesc_3d_real (File,vardesc, start, count, ival) result(ierr) type (File_desc_t), intent(in) :: File type(var_desc_t), intent(in) :: vardesc @@ -1087,10 +1088,10 @@ integer function get_vara_vdesc_3d_real (File,vardesc, start, count, ival) resul real(r4), intent(inout) :: ival(:,:,:) ierr = 0 -# 325 "pio.F90.in" +# 326 "pio.F90.in" end function get_vara_vdesc_3d_real ! DIMS 1,2,3,4,5 -# 318 "pio.F90.in" +# 319 "pio.F90.in" integer function get_vara_vdesc_4d_real (File,vardesc, start, count, ival) result(ierr) type (File_desc_t), intent(in) :: File type(var_desc_t), intent(in) :: vardesc @@ -1098,10 +1099,10 @@ integer function get_vara_vdesc_4d_real (File,vardesc, start, count, ival) resul real(r4), intent(inout) :: ival(:,:,:,:) ierr = 0 -# 325 "pio.F90.in" +# 326 "pio.F90.in" end function get_vara_vdesc_4d_real ! DIMS 1,2,3,4,5 -# 318 "pio.F90.in" +# 319 "pio.F90.in" integer function get_vara_vdesc_5d_real (File,vardesc, start, count, ival) result(ierr) type (File_desc_t), intent(in) :: File type(var_desc_t), intent(in) :: vardesc @@ -1109,10 +1110,10 @@ integer function get_vara_vdesc_5d_real (File,vardesc, start, count, ival) resul real(r4), intent(inout) :: ival(:,:,:,:,:) ierr = 0 -# 325 "pio.F90.in" +# 326 "pio.F90.in" end function get_vara_vdesc_5d_real ! DIMS 1,2,3,4,5 -# 318 "pio.F90.in" +# 319 "pio.F90.in" integer function get_vara_vdesc_1d_double (File,vardesc, start, count, ival) result(ierr) type (File_desc_t), intent(in) :: File type(var_desc_t), intent(in) :: vardesc @@ -1120,10 +1121,10 @@ integer function get_vara_vdesc_1d_double (File,vardesc, start, count, ival) res real(r8), intent(inout) :: ival(:) ierr = 0 -# 325 "pio.F90.in" +# 326 "pio.F90.in" end function get_vara_vdesc_1d_double ! DIMS 1,2,3,4,5 -# 318 "pio.F90.in" +# 319 "pio.F90.in" integer function get_vara_vdesc_2d_double (File,vardesc, start, count, ival) result(ierr) type (File_desc_t), intent(in) :: File type(var_desc_t), intent(in) :: vardesc @@ -1131,10 +1132,10 @@ integer function get_vara_vdesc_2d_double (File,vardesc, start, count, ival) res real(r8), intent(inout) :: ival(:,:) ierr = 0 -# 325 "pio.F90.in" +# 326 "pio.F90.in" end function get_vara_vdesc_2d_double ! DIMS 1,2,3,4,5 -# 318 "pio.F90.in" +# 319 "pio.F90.in" integer function get_vara_vdesc_3d_double (File,vardesc, start, count, ival) result(ierr) type (File_desc_t), intent(in) :: File type(var_desc_t), intent(in) :: vardesc @@ -1142,10 +1143,10 @@ integer function get_vara_vdesc_3d_double (File,vardesc, start, count, ival) res real(r8), intent(inout) :: ival(:,:,:) ierr = 0 -# 325 "pio.F90.in" +# 326 "pio.F90.in" end function get_vara_vdesc_3d_double ! DIMS 1,2,3,4,5 -# 318 "pio.F90.in" +# 319 "pio.F90.in" integer function get_vara_vdesc_4d_double (File,vardesc, start, count, ival) result(ierr) type (File_desc_t), intent(in) :: File type(var_desc_t), intent(in) :: vardesc @@ -1153,10 +1154,10 @@ integer function get_vara_vdesc_4d_double (File,vardesc, start, count, ival) res real(r8), intent(inout) :: ival(:,:,:,:) ierr = 0 -# 325 "pio.F90.in" +# 326 "pio.F90.in" end function get_vara_vdesc_4d_double ! DIMS 1,2,3,4,5 -# 318 "pio.F90.in" +# 319 "pio.F90.in" integer function get_vara_vdesc_5d_double (File,vardesc, start, count, ival) result(ierr) type (File_desc_t), intent(in) :: File type(var_desc_t), intent(in) :: vardesc @@ -1164,10 +1165,10 @@ integer function get_vara_vdesc_5d_double (File,vardesc, start, count, ival) res real(r8), intent(inout) :: ival(:,:,:,:,:) ierr = 0 -# 325 "pio.F90.in" +# 326 "pio.F90.in" end function get_vara_vdesc_5d_double ! DIMS 1,2,3,4,5 -# 318 "pio.F90.in" +# 319 "pio.F90.in" integer function get_vara_vdesc_1d_int (File,vardesc, start, count, ival) result(ierr) type (File_desc_t), intent(in) :: File type(var_desc_t), intent(in) :: vardesc @@ -1175,10 +1176,10 @@ integer function get_vara_vdesc_1d_int (File,vardesc, start, count, ival) result integer(i4), intent(inout) :: ival(:) ierr = 0 -# 325 "pio.F90.in" +# 326 "pio.F90.in" end function get_vara_vdesc_1d_int ! DIMS 1,2,3,4,5 -# 318 "pio.F90.in" +# 319 "pio.F90.in" integer function get_vara_vdesc_2d_int (File,vardesc, start, count, ival) result(ierr) type (File_desc_t), intent(in) :: File type(var_desc_t), intent(in) :: vardesc @@ -1186,10 +1187,10 @@ integer function get_vara_vdesc_2d_int (File,vardesc, start, count, ival) result integer(i4), intent(inout) :: ival(:,:) ierr = 0 -# 325 "pio.F90.in" +# 326 "pio.F90.in" end function get_vara_vdesc_2d_int ! DIMS 1,2,3,4,5 -# 318 "pio.F90.in" +# 319 "pio.F90.in" integer function get_vara_vdesc_3d_int (File,vardesc, start, count, ival) result(ierr) type (File_desc_t), intent(in) :: File type(var_desc_t), intent(in) :: vardesc @@ -1197,10 +1198,10 @@ integer function get_vara_vdesc_3d_int (File,vardesc, start, count, ival) result integer(i4), intent(inout) :: ival(:,:,:) ierr = 0 -# 325 "pio.F90.in" +# 326 "pio.F90.in" end function get_vara_vdesc_3d_int ! DIMS 1,2,3,4,5 -# 318 "pio.F90.in" +# 319 "pio.F90.in" integer function get_vara_vdesc_4d_int (File,vardesc, start, count, ival) result(ierr) type (File_desc_t), intent(in) :: File type(var_desc_t), intent(in) :: vardesc @@ -1208,10 +1209,10 @@ integer function get_vara_vdesc_4d_int (File,vardesc, start, count, ival) result integer(i4), intent(inout) :: ival(:,:,:,:) ierr = 0 -# 325 "pio.F90.in" +# 326 "pio.F90.in" end function get_vara_vdesc_4d_int ! DIMS 1,2,3,4,5 -# 318 "pio.F90.in" +# 319 "pio.F90.in" integer function get_vara_vdesc_5d_int (File,vardesc, start, count, ival) result(ierr) type (File_desc_t), intent(in) :: File type(var_desc_t), intent(in) :: vardesc @@ -1219,444 +1220,444 @@ integer function get_vara_vdesc_5d_int (File,vardesc, start, count, ival) result integer(i4), intent(inout) :: ival(:,:,:,:,:) ierr = 0 -# 325 "pio.F90.in" +# 326 "pio.F90.in" end function get_vara_vdesc_5d_int -# 327 "pio.F90.in" +# 328 "pio.F90.in" integer function get_var_0d_text (File,varid, ival) result(ierr) type (File_desc_t), intent(in) :: File integer, intent(in) :: varid character(len=*), intent(inout) :: ival ierr = 0 -# 333 "pio.F90.in" +# 334 "pio.F90.in" end function get_var_0d_text -# 327 "pio.F90.in" +# 328 "pio.F90.in" integer function get_var_1d_text (File,varid, ival) result(ierr) type (File_desc_t), intent(in) :: File integer, intent(in) :: varid character(len=*), intent(inout) :: ival(:) ierr = 0 -# 333 "pio.F90.in" +# 334 "pio.F90.in" end function get_var_1d_text -# 327 "pio.F90.in" +# 328 "pio.F90.in" integer function get_var_2d_text (File,varid, ival) result(ierr) type (File_desc_t), intent(in) :: File integer, intent(in) :: varid character(len=*), intent(inout) :: ival(:,:) ierr = 0 -# 333 "pio.F90.in" +# 334 "pio.F90.in" end function get_var_2d_text -# 327 "pio.F90.in" +# 328 "pio.F90.in" integer function get_var_3d_text (File,varid, ival) result(ierr) type (File_desc_t), intent(in) :: File integer, intent(in) :: varid character(len=*), intent(inout) :: ival(:,:,:) ierr = 0 -# 333 "pio.F90.in" +# 334 "pio.F90.in" end function get_var_3d_text -# 327 "pio.F90.in" +# 328 "pio.F90.in" integer function get_var_4d_text (File,varid, ival) result(ierr) type (File_desc_t), intent(in) :: File integer, intent(in) :: varid character(len=*), intent(inout) :: ival(:,:,:,:) ierr = 0 -# 333 "pio.F90.in" +# 334 "pio.F90.in" end function get_var_4d_text -# 327 "pio.F90.in" +# 328 "pio.F90.in" integer function get_var_5d_text (File,varid, ival) result(ierr) type (File_desc_t), intent(in) :: File integer, intent(in) :: varid character(len=*), intent(inout) :: ival(:,:,:,:,:) ierr = 0 -# 333 "pio.F90.in" +# 334 "pio.F90.in" end function get_var_5d_text -# 327 "pio.F90.in" +# 328 "pio.F90.in" integer function get_var_0d_real (File,varid, ival) result(ierr) type (File_desc_t), intent(in) :: File integer, intent(in) :: varid real(r4), intent(inout) :: ival ierr = 0 -# 333 "pio.F90.in" +# 334 "pio.F90.in" end function get_var_0d_real -# 327 "pio.F90.in" +# 328 "pio.F90.in" integer function get_var_1d_real (File,varid, ival) result(ierr) type (File_desc_t), intent(in) :: File integer, intent(in) :: varid real(r4), intent(inout) :: ival(:) ierr = 0 -# 333 "pio.F90.in" +# 334 "pio.F90.in" end function get_var_1d_real -# 327 "pio.F90.in" +# 328 "pio.F90.in" integer function get_var_2d_real (File,varid, ival) result(ierr) type (File_desc_t), intent(in) :: File integer, intent(in) :: varid real(r4), intent(inout) :: ival(:,:) ierr = 0 -# 333 "pio.F90.in" +# 334 "pio.F90.in" end function get_var_2d_real -# 327 "pio.F90.in" +# 328 "pio.F90.in" integer function get_var_3d_real (File,varid, ival) result(ierr) type (File_desc_t), intent(in) :: File integer, intent(in) :: varid real(r4), intent(inout) :: ival(:,:,:) ierr = 0 -# 333 "pio.F90.in" +# 334 "pio.F90.in" end function get_var_3d_real -# 327 "pio.F90.in" +# 328 "pio.F90.in" integer function get_var_4d_real (File,varid, ival) result(ierr) type (File_desc_t), intent(in) :: File integer, intent(in) :: varid real(r4), intent(inout) :: ival(:,:,:,:) ierr = 0 -# 333 "pio.F90.in" +# 334 "pio.F90.in" end function get_var_4d_real -# 327 "pio.F90.in" +# 328 "pio.F90.in" integer function get_var_5d_real (File,varid, ival) result(ierr) type (File_desc_t), intent(in) :: File integer, intent(in) :: varid real(r4), intent(inout) :: ival(:,:,:,:,:) ierr = 0 -# 333 "pio.F90.in" +# 334 "pio.F90.in" end function get_var_5d_real -# 327 "pio.F90.in" +# 328 "pio.F90.in" integer function get_var_0d_double (File,varid, ival) result(ierr) type (File_desc_t), intent(in) :: File integer, intent(in) :: varid real(r8), intent(inout) :: ival ierr = 0 -# 333 "pio.F90.in" +# 334 "pio.F90.in" end function get_var_0d_double -# 327 "pio.F90.in" +# 328 "pio.F90.in" integer function get_var_1d_double (File,varid, ival) result(ierr) type (File_desc_t), intent(in) :: File integer, intent(in) :: varid real(r8), intent(inout) :: ival(:) ierr = 0 -# 333 "pio.F90.in" +# 334 "pio.F90.in" end function get_var_1d_double -# 327 "pio.F90.in" +# 328 "pio.F90.in" integer function get_var_2d_double (File,varid, ival) result(ierr) type (File_desc_t), intent(in) :: File integer, intent(in) :: varid real(r8), intent(inout) :: ival(:,:) ierr = 0 -# 333 "pio.F90.in" +# 334 "pio.F90.in" end function get_var_2d_double -# 327 "pio.F90.in" +# 328 "pio.F90.in" integer function get_var_3d_double (File,varid, ival) result(ierr) type (File_desc_t), intent(in) :: File integer, intent(in) :: varid real(r8), intent(inout) :: ival(:,:,:) ierr = 0 -# 333 "pio.F90.in" +# 334 "pio.F90.in" end function get_var_3d_double -# 327 "pio.F90.in" +# 328 "pio.F90.in" integer function get_var_4d_double (File,varid, ival) result(ierr) type (File_desc_t), intent(in) :: File integer, intent(in) :: varid real(r8), intent(inout) :: ival(:,:,:,:) ierr = 0 -# 333 "pio.F90.in" +# 334 "pio.F90.in" end function get_var_4d_double -# 327 "pio.F90.in" +# 328 "pio.F90.in" integer function get_var_5d_double (File,varid, ival) result(ierr) type (File_desc_t), intent(in) :: File integer, intent(in) :: varid real(r8), intent(inout) :: ival(:,:,:,:,:) ierr = 0 -# 333 "pio.F90.in" +# 334 "pio.F90.in" end function get_var_5d_double -# 327 "pio.F90.in" +# 328 "pio.F90.in" integer function get_var_0d_int (File,varid, ival) result(ierr) type (File_desc_t), intent(in) :: File integer, intent(in) :: varid integer(i4), intent(inout) :: ival ierr = 0 -# 333 "pio.F90.in" +# 334 "pio.F90.in" end function get_var_0d_int -# 327 "pio.F90.in" +# 328 "pio.F90.in" integer function get_var_1d_int (File,varid, ival) result(ierr) type (File_desc_t), intent(in) :: File integer, intent(in) :: varid integer(i4), intent(inout) :: ival(:) ierr = 0 -# 333 "pio.F90.in" +# 334 "pio.F90.in" end function get_var_1d_int -# 327 "pio.F90.in" +# 328 "pio.F90.in" integer function get_var_2d_int (File,varid, ival) result(ierr) type (File_desc_t), intent(in) :: File integer, intent(in) :: varid integer(i4), intent(inout) :: ival(:,:) ierr = 0 -# 333 "pio.F90.in" +# 334 "pio.F90.in" end function get_var_2d_int -# 327 "pio.F90.in" +# 328 "pio.F90.in" integer function get_var_3d_int (File,varid, ival) result(ierr) type (File_desc_t), intent(in) :: File integer, intent(in) :: varid integer(i4), intent(inout) :: ival(:,:,:) ierr = 0 -# 333 "pio.F90.in" +# 334 "pio.F90.in" end function get_var_3d_int -# 327 "pio.F90.in" +# 328 "pio.F90.in" integer function get_var_4d_int (File,varid, ival) result(ierr) type (File_desc_t), intent(in) :: File integer, intent(in) :: varid integer(i4), intent(inout) :: ival(:,:,:,:) ierr = 0 -# 333 "pio.F90.in" +# 334 "pio.F90.in" end function get_var_4d_int -# 327 "pio.F90.in" +# 328 "pio.F90.in" integer function get_var_5d_int (File,varid, ival) result(ierr) type (File_desc_t), intent(in) :: File integer, intent(in) :: varid integer(i4), intent(inout) :: ival(:,:,:,:,:) ierr = 0 -# 333 "pio.F90.in" +# 334 "pio.F90.in" end function get_var_5d_int -# 335 "pio.F90.in" +# 336 "pio.F90.in" integer function get_var_vdesc_0d_text (File,vardesc, ival) result(ierr) type (File_desc_t), intent(in) :: File type(var_desc_t), intent(in) :: vardesc character(len=*), intent(inout) :: ival ierr = 0 -# 341 "pio.F90.in" +# 342 "pio.F90.in" end function get_var_vdesc_0d_text -# 335 "pio.F90.in" +# 336 "pio.F90.in" integer function get_var_vdesc_1d_text (File,vardesc, ival) result(ierr) type (File_desc_t), intent(in) :: File type(var_desc_t), intent(in) :: vardesc character(len=*), intent(inout) :: ival(:) ierr = 0 -# 341 "pio.F90.in" +# 342 "pio.F90.in" end function get_var_vdesc_1d_text -# 335 "pio.F90.in" +# 336 "pio.F90.in" integer function get_var_vdesc_2d_text (File,vardesc, ival) result(ierr) type (File_desc_t), intent(in) :: File type(var_desc_t), intent(in) :: vardesc character(len=*), intent(inout) :: ival(:,:) ierr = 0 -# 341 "pio.F90.in" +# 342 "pio.F90.in" end function get_var_vdesc_2d_text -# 335 "pio.F90.in" +# 336 "pio.F90.in" integer function get_var_vdesc_3d_text (File,vardesc, ival) result(ierr) type (File_desc_t), intent(in) :: File type(var_desc_t), intent(in) :: vardesc character(len=*), intent(inout) :: ival(:,:,:) ierr = 0 -# 341 "pio.F90.in" +# 342 "pio.F90.in" end function get_var_vdesc_3d_text -# 335 "pio.F90.in" +# 336 "pio.F90.in" integer function get_var_vdesc_4d_text (File,vardesc, ival) result(ierr) type (File_desc_t), intent(in) :: File type(var_desc_t), intent(in) :: vardesc character(len=*), intent(inout) :: ival(:,:,:,:) ierr = 0 -# 341 "pio.F90.in" +# 342 "pio.F90.in" end function get_var_vdesc_4d_text -# 335 "pio.F90.in" +# 336 "pio.F90.in" integer function get_var_vdesc_5d_text (File,vardesc, ival) result(ierr) type (File_desc_t), intent(in) :: File type(var_desc_t), intent(in) :: vardesc character(len=*), intent(inout) :: ival(:,:,:,:,:) ierr = 0 -# 341 "pio.F90.in" +# 342 "pio.F90.in" end function get_var_vdesc_5d_text -# 335 "pio.F90.in" +# 336 "pio.F90.in" integer function get_var_vdesc_0d_real (File,vardesc, ival) result(ierr) type (File_desc_t), intent(in) :: File type(var_desc_t), intent(in) :: vardesc real(r4), intent(inout) :: ival ierr = 0 -# 341 "pio.F90.in" +# 342 "pio.F90.in" end function get_var_vdesc_0d_real -# 335 "pio.F90.in" +# 336 "pio.F90.in" integer function get_var_vdesc_1d_real (File,vardesc, ival) result(ierr) type (File_desc_t), intent(in) :: File type(var_desc_t), intent(in) :: vardesc real(r4), intent(inout) :: ival(:) ierr = 0 -# 341 "pio.F90.in" +# 342 "pio.F90.in" end function get_var_vdesc_1d_real -# 335 "pio.F90.in" +# 336 "pio.F90.in" integer function get_var_vdesc_2d_real (File,vardesc, ival) result(ierr) type (File_desc_t), intent(in) :: File type(var_desc_t), intent(in) :: vardesc real(r4), intent(inout) :: ival(:,:) ierr = 0 -# 341 "pio.F90.in" +# 342 "pio.F90.in" end function get_var_vdesc_2d_real -# 335 "pio.F90.in" +# 336 "pio.F90.in" integer function get_var_vdesc_3d_real (File,vardesc, ival) result(ierr) type (File_desc_t), intent(in) :: File type(var_desc_t), intent(in) :: vardesc real(r4), intent(inout) :: ival(:,:,:) ierr = 0 -# 341 "pio.F90.in" +# 342 "pio.F90.in" end function get_var_vdesc_3d_real -# 335 "pio.F90.in" +# 336 "pio.F90.in" integer function get_var_vdesc_4d_real (File,vardesc, ival) result(ierr) type (File_desc_t), intent(in) :: File type(var_desc_t), intent(in) :: vardesc real(r4), intent(inout) :: ival(:,:,:,:) ierr = 0 -# 341 "pio.F90.in" +# 342 "pio.F90.in" end function get_var_vdesc_4d_real -# 335 "pio.F90.in" +# 336 "pio.F90.in" integer function get_var_vdesc_5d_real (File,vardesc, ival) result(ierr) type (File_desc_t), intent(in) :: File type(var_desc_t), intent(in) :: vardesc real(r4), intent(inout) :: ival(:,:,:,:,:) ierr = 0 -# 341 "pio.F90.in" +# 342 "pio.F90.in" end function get_var_vdesc_5d_real -# 335 "pio.F90.in" +# 336 "pio.F90.in" integer function get_var_vdesc_0d_double (File,vardesc, ival) result(ierr) type (File_desc_t), intent(in) :: File type(var_desc_t), intent(in) :: vardesc real(r8), intent(inout) :: ival ierr = 0 -# 341 "pio.F90.in" +# 342 "pio.F90.in" end function get_var_vdesc_0d_double -# 335 "pio.F90.in" +# 336 "pio.F90.in" integer function get_var_vdesc_1d_double (File,vardesc, ival) result(ierr) type (File_desc_t), intent(in) :: File type(var_desc_t), intent(in) :: vardesc real(r8), intent(inout) :: ival(:) ierr = 0 -# 341 "pio.F90.in" +# 342 "pio.F90.in" end function get_var_vdesc_1d_double -# 335 "pio.F90.in" +# 336 "pio.F90.in" integer function get_var_vdesc_2d_double (File,vardesc, ival) result(ierr) type (File_desc_t), intent(in) :: File type(var_desc_t), intent(in) :: vardesc real(r8), intent(inout) :: ival(:,:) ierr = 0 -# 341 "pio.F90.in" +# 342 "pio.F90.in" end function get_var_vdesc_2d_double -# 335 "pio.F90.in" +# 336 "pio.F90.in" integer function get_var_vdesc_3d_double (File,vardesc, ival) result(ierr) type (File_desc_t), intent(in) :: File type(var_desc_t), intent(in) :: vardesc real(r8), intent(inout) :: ival(:,:,:) ierr = 0 -# 341 "pio.F90.in" +# 342 "pio.F90.in" end function get_var_vdesc_3d_double -# 335 "pio.F90.in" +# 336 "pio.F90.in" integer function get_var_vdesc_4d_double (File,vardesc, ival) result(ierr) type (File_desc_t), intent(in) :: File type(var_desc_t), intent(in) :: vardesc real(r8), intent(inout) :: ival(:,:,:,:) ierr = 0 -# 341 "pio.F90.in" +# 342 "pio.F90.in" end function get_var_vdesc_4d_double -# 335 "pio.F90.in" +# 336 "pio.F90.in" integer function get_var_vdesc_5d_double (File,vardesc, ival) result(ierr) type (File_desc_t), intent(in) :: File type(var_desc_t), intent(in) :: vardesc real(r8), intent(inout) :: ival(:,:,:,:,:) ierr = 0 -# 341 "pio.F90.in" +# 342 "pio.F90.in" end function get_var_vdesc_5d_double -# 335 "pio.F90.in" +# 336 "pio.F90.in" integer function get_var_vdesc_0d_int (File,vardesc, ival) result(ierr) type (File_desc_t), intent(in) :: File type(var_desc_t), intent(in) :: vardesc integer(i4), intent(inout) :: ival ierr = 0 -# 341 "pio.F90.in" +# 342 "pio.F90.in" end function get_var_vdesc_0d_int -# 335 "pio.F90.in" +# 336 "pio.F90.in" integer function get_var_vdesc_1d_int (File,vardesc, ival) result(ierr) type (File_desc_t), intent(in) :: File type(var_desc_t), intent(in) :: vardesc integer(i4), intent(inout) :: ival(:) ierr = 0 -# 341 "pio.F90.in" +# 342 "pio.F90.in" end function get_var_vdesc_1d_int -# 335 "pio.F90.in" +# 336 "pio.F90.in" integer function get_var_vdesc_2d_int (File,vardesc, ival) result(ierr) type (File_desc_t), intent(in) :: File type(var_desc_t), intent(in) :: vardesc integer(i4), intent(inout) :: ival(:,:) ierr = 0 -# 341 "pio.F90.in" +# 342 "pio.F90.in" end function get_var_vdesc_2d_int -# 335 "pio.F90.in" +# 336 "pio.F90.in" integer function get_var_vdesc_3d_int (File,vardesc, ival) result(ierr) type (File_desc_t), intent(in) :: File type(var_desc_t), intent(in) :: vardesc integer(i4), intent(inout) :: ival(:,:,:) ierr = 0 -# 341 "pio.F90.in" +# 342 "pio.F90.in" end function get_var_vdesc_3d_int -# 335 "pio.F90.in" +# 336 "pio.F90.in" integer function get_var_vdesc_4d_int (File,vardesc, ival) result(ierr) type (File_desc_t), intent(in) :: File type(var_desc_t), intent(in) :: vardesc integer(i4), intent(inout) :: ival(:,:,:,:) ierr = 0 -# 341 "pio.F90.in" +# 342 "pio.F90.in" end function get_var_vdesc_4d_int -# 335 "pio.F90.in" +# 336 "pio.F90.in" integer function get_var_vdesc_5d_int (File,vardesc, ival) result(ierr) type (File_desc_t), intent(in) :: File type(var_desc_t), intent(in) :: vardesc integer(i4), intent(inout) :: ival(:,:,:,:,:) ierr = 0 -# 341 "pio.F90.in" +# 342 "pio.F90.in" end function get_var_vdesc_5d_int -# 343 "pio.F90.in" +# 344 "pio.F90.in" subroutine init_intracom(comp_rank, comp_comm, num_iotasks, num_aggregator, stride, rearr, iosystem,base) integer(i4), intent(in) :: comp_rank integer(i4), intent(in) :: comp_comm @@ -1667,10 +1668,10 @@ subroutine init_intracom(comp_rank, comp_comm, num_iotasks, num_aggregator, stri type (iosystem_desc_t), intent(inout) :: iosystem ! io descriptor to initalize integer(i4), intent(in),optional :: base -# 353 "pio.F90.in" +# 354 "pio.F90.in" end subroutine init_intracom -# 355 "pio.F90.in" +# 356 "pio.F90.in" subroutine init_intercom(component_count, peer_comm, comp_comms, io_comm, iosystem) integer, intent(in) :: component_count integer, intent(in) :: peer_comm @@ -1678,10 +1679,10 @@ subroutine init_intercom(component_count, peer_comm, comp_comms, io_comm, iosyst integer, intent(in) :: io_comm ! The io communicator type (iosystem_desc_t), intent(inout) :: iosystem(component_count) ! io descriptor to initalize -# 362 "pio.F90.in" +# 363 "pio.F90.in" end subroutine init_intercom -# 364 "pio.F90.in" +# 365 "pio.F90.in" subroutine PIO_initdecomp_bc(iosystem,basepiotype,dims,compstart,compcount,iodesc,iostart,iocount) type (iosystem_desc_t), intent(inout) :: iosystem integer(i4), intent(in) :: basepiotype @@ -1691,10 +1692,10 @@ subroutine PIO_initdecomp_bc(iosystem,basepiotype,dims,compstart,compcount,iodes type (IO_desc_t), intent(inout) :: iodesc integer (kind=PIO_OFFSET),optional :: iostart(:) integer (kind=PIO_OFFSET),optional :: iocount(:) -# 373 "pio.F90.in" +# 374 "pio.F90.in" end subroutine PIO_initdecomp_bc -# 375 "pio.F90.in" +# 376 "pio.F90.in" subroutine PIO_initdecomp_dof_dof(iosystem,basepiotype,dims,compdof,iodesc,iodof) type (iosystem_desc_t), intent(inout) :: iosystem integer(i4), intent(in) :: basepiotype @@ -1702,10 +1703,10 @@ subroutine PIO_initdecomp_dof_dof(iosystem,basepiotype,dims,compdof,iodesc,iodof integer(i4), intent(in) :: compdof(:) type (IO_desc_t), intent(inout) :: iodesc integer(i4), intent(in) :: iodof(:) -# 382 "pio.F90.in" +# 383 "pio.F90.in" end subroutine PIO_initdecomp_dof_dof -# 384 "pio.F90.in" +# 385 "pio.F90.in" subroutine initdecomp_2dof_bin_i4(iosystem,basepiotype,dims,lenblocks,compdof,iodofr,iodofw,iodesc) type (iosystem_desc_t), intent(in) :: iosystem integer(i4), intent(in) :: basepiotype @@ -1715,10 +1716,10 @@ subroutine initdecomp_2dof_bin_i4(iosystem,basepiotype,dims,lenblocks,compdof,io integer (i4), intent(in) :: iodofr(:) !> global degrees of freedom for io decomposition integer (i4), intent(in) :: iodofw(:) !> global degrees of freedom for io decomposition type (io_desc_t), intent(inout) :: iodesc -# 393 "pio.F90.in" +# 394 "pio.F90.in" end subroutine initdecomp_2dof_bin_i4 -# 395 "pio.F90.in" +# 396 "pio.F90.in" subroutine initdecomp_2dof_bin_i8(iosystem,basepiotype,dims,lenblocks,compdof,iodofr,iodofw,iodesc) type (iosystem_desc_t), intent(in) :: iosystem integer(i4), intent(in) :: basepiotype @@ -1728,10 +1729,10 @@ subroutine initdecomp_2dof_bin_i8(iosystem,basepiotype,dims,lenblocks,compdof,io integer (kind=pio_offset), intent(in) :: iodofr(:) !> global degrees of freedom for io decomposition integer (kind=pio_offset), intent(in) :: iodofw(:) !> global degrees of freedom for io decomposition type (io_desc_t), intent(inout) :: iodesc -# 404 "pio.F90.in" +# 405 "pio.F90.in" end subroutine initdecomp_2dof_bin_i8 -# 406 "pio.F90.in" +# 407 "pio.F90.in" subroutine initdecomp_1dof_bin_i8(iosystem,basepiotype,dims,lenblocks,compdof,iodofr,iodesc) type (iosystem_desc_t), intent(in) :: iosystem integer(i4), intent(in) :: basepiotype @@ -1740,10 +1741,10 @@ subroutine initdecomp_1dof_bin_i8(iosystem,basepiotype,dims,lenblocks,compdof,io integer(kind=pio_offset), intent(in) :: compdof(:) ! global degrees of freedom for computational decomposition integer(kind=pio_offset), intent(in) :: iodofr(:) ! global degrees of freedom for io decomposition type (io_desc_t), intent(inout) :: iodesc -# 414 "pio.F90.in" +# 415 "pio.F90.in" end subroutine initdecomp_1dof_bin_i8 -# 416 "pio.F90.in" +# 417 "pio.F90.in" subroutine initdecomp_1dof_bin_i4(iosystem,basepiotype,dims,lenblocks,compdof,iodofr,iodesc) type (iosystem_desc_t), intent(in) :: iosystem integer(i4), intent(in) :: basepiotype @@ -1752,10 +1753,10 @@ subroutine initdecomp_1dof_bin_i4(iosystem,basepiotype,dims,lenblocks,compdof,io integer (i4), intent(in) :: compdof(:) ! global degrees of freedom for computational decomposition integer (i4), intent(in) :: iodofr(:) ! global degrees of freedom for io decomposition type (io_desc_t), intent(inout) :: iodesc -# 424 "pio.F90.in" +# 425 "pio.F90.in" end subroutine initdecomp_1dof_bin_i4 -# 426 "pio.F90.in" +# 427 "pio.F90.in" subroutine initdecomp_2dof_nf_i4(iosystem,basepiotype,dims,lenblocks,compdof,iodofr,iodofw,start, count, iodesc) type (iosystem_desc_t), intent(in) :: iosystem integer(i4), intent(in) :: basepiotype @@ -1768,10 +1769,10 @@ subroutine initdecomp_2dof_nf_i4(iosystem,basepiotype,dims,lenblocks,compdof,iod type (io_desc_t), intent(inout) :: iodesc integer(kind=PIO_offset), intent(in) :: start(:), count(:) -# 438 "pio.F90.in" +# 439 "pio.F90.in" end subroutine initdecomp_2dof_nf_i4 -# 440 "pio.F90.in" +# 441 "pio.F90.in" subroutine initdecomp_2dof_nf_i8(iosystem,basepiotype,dims,lenblocks,compdof,iodofr,iodofw,start, count, iodesc) type (iosystem_desc_t), intent(in) :: iosystem integer(i4), intent(in) :: basepiotype @@ -1784,10 +1785,10 @@ subroutine initdecomp_2dof_nf_i8(iosystem,basepiotype,dims,lenblocks,compdof,iod type (io_desc_t), intent(inout) :: iodesc integer(kind=PIO_offset), intent(in) :: start(:), count(:) -# 452 "pio.F90.in" +# 453 "pio.F90.in" end subroutine initdecomp_2dof_nf_i8 -# 454 "pio.F90.in" +# 455 "pio.F90.in" subroutine initdecomp_1dof_nf_i4(iosystem,basepiotype,dims,lenblocks,compdof,iodof,start, count, iodesc) type (iosystem_desc_t), intent(in) :: iosystem integer(i4), intent(in) :: basepiotype @@ -1798,10 +1799,10 @@ subroutine initdecomp_1dof_nf_i4(iosystem,basepiotype,dims,lenblocks,compdof,iod type (io_desc_t), intent(inout) :: iodesc integer :: piotype integer(kind=PIO_offset), intent(in) :: start(:), count(:) -# 464 "pio.F90.in" +# 465 "pio.F90.in" end subroutine initdecomp_1dof_nf_i4 -# 466 "pio.F90.in" +# 467 "pio.F90.in" subroutine initdecomp_1dof_nf_i8(iosystem,basepiotype,dims,lenblocks,compdof,iodof,start, count, iodesc) type (iosystem_desc_t), intent(in) :: iosystem integer(i4), intent(in) :: basepiotype @@ -1812,10 +1813,10 @@ subroutine initdecomp_1dof_nf_i8(iosystem,basepiotype,dims,lenblocks,compdof,iod type (io_desc_t), intent(inout) :: iodesc integer :: piotype integer(kind=PIO_offset), intent(in) :: start(:), count(:) -# 476 "pio.F90.in" +# 477 "pio.F90.in" end subroutine initdecomp_1dof_nf_i8 -# 478 "pio.F90.in" +# 479 "pio.F90.in" subroutine PIO_initdecomp_dof_i4(iosystem,basepiotype,dims,compdof, iodesc, iostart, iocount, num_ts, bsize, rearr) type (iosystem_desc_t), intent(inout) :: iosystem integer(i4), intent(in) :: basepiotype @@ -1826,10 +1827,10 @@ subroutine PIO_initdecomp_dof_i4(iosystem,basepiotype,dims,compdof, iodesc, iost integer, intent(in), optional :: rearr !vdf optionals integer(i4), intent(in), optional:: num_ts, bsize(3) -# 488 "pio.F90.in" +# 489 "pio.F90.in" end subroutine PIO_initdecomp_dof_i4 -# 490 "pio.F90.in" +# 491 "pio.F90.in" subroutine PIO_initdecomp_dof_i8(iosystem,basepiotype,dims,compdof, iodesc, iostart, iocount, rearr) type (iosystem_desc_t), intent(inout) :: iosystem integer(i4), intent(in) :: basepiotype @@ -1838,10 +1839,10 @@ subroutine PIO_initdecomp_dof_i8(iosystem,basepiotype,dims,compdof, iodesc, iost integer (kind=PIO_offset), optional :: iostart(:), iocount(:) type (io_desc_t), intent(inout) :: iodesc integer, intent(in), optional :: rearr -# 498 "pio.F90.in" +# 499 "pio.F90.in" end subroutine PIO_initdecomp_dof_i8 -# 500 "pio.F90.in" +# 501 "pio.F90.in" subroutine PIO_initdecomp_dof_i8_vdc(iosystem,dims,compdof, iodesc, num_ts, bsize) type (iosystem_desc_t), intent(inout) :: iosystem integer(i4), intent(in) :: dims(:) @@ -1851,10 +1852,10 @@ subroutine PIO_initdecomp_dof_i8_vdc(iosystem,dims,compdof, iodesc, num_ts, bsiz !vdc args integer(i4), intent(in) :: num_ts integer(i4), intent(in), optional:: bsize(3) -# 509 "pio.F90.in" +# 510 "pio.F90.in" end subroutine PIO_initdecomp_dof_i8_vdc -# 511 "pio.F90.in" +# 512 "pio.F90.in" integer function inq_varid_vardesc(File,name,vardesc) result(ierr) type (File_desc_t), intent(in) :: File @@ -1862,10 +1863,10 @@ integer function inq_varid_vardesc(File,name,vardesc) result(ierr) type (Var_desc_t), intent(inout) :: vardesc ierr = 0 -# 518 "pio.F90.in" +# 519 "pio.F90.in" end function inq_varid_vardesc -# 520 "pio.F90.in" +# 521 "pio.F90.in" integer function inq_varid_vid(File,name,varid) result(ierr) type (File_desc_t), intent(in) :: File @@ -1874,11 +1875,11 @@ integer function inq_varid_vid(File,name,varid) result(ierr) varid = 0 ierr = 0 -# 528 "pio.F90.in" +# 529 "pio.F90.in" end function inq_varid_vid -# 531 "pio.F90.in" +# 532 "pio.F90.in" integer function PIO_def_dim(File,name,len,dimid) result(ierr) type (File_desc_t), intent(in) :: File @@ -1888,26 +1889,26 @@ integer function PIO_def_dim(File,name,len,dimid) result(ierr) dimid = 0 ierr = 0 -# 540 "pio.F90.in" +# 541 "pio.F90.in" end function PIO_def_dim -# 542 "pio.F90.in" +# 543 "pio.F90.in" integer function PIO_enddef(File) result(ierr) type (File_desc_t), intent(inout) :: File ierr = 0 -# 546 "pio.F90.in" +# 547 "pio.F90.in" end function PIO_enddef -# 548 "pio.F90.in" +# 549 "pio.F90.in" logical function PIO_FILE_IS_OPEN(File) type(file_desc_t), intent(in) :: file PIO_FILE_IS_OPEN = .false. -# 552 "pio.F90.in" +# 553 "pio.F90.in" end function PIO_FILE_IS_OPEN -# 554 "pio.F90.in" +# 555 "pio.F90.in" integer function pio_inq_dimid(File,name,dimid) result(ierr) type (File_desc_t), intent(in) :: File @@ -1916,10 +1917,10 @@ integer function pio_inq_dimid(File,name,dimid) result(ierr) dimid = 0 ierr = 0 -# 562 "pio.F90.in" +# 563 "pio.F90.in" end function pio_inq_dimid -# 564 "pio.F90.in" +# 565 "pio.F90.in" integer function pio_inq_dimlen(File,dimid,dimlen) result(ierr) type (File_desc_t), intent(in) :: File @@ -1928,10 +1929,10 @@ integer function pio_inq_dimlen(File,dimid,dimlen) result(ierr) dimlen = 0 ierr = 0 -# 572 "pio.F90.in" +# 573 "pio.F90.in" end function pio_inq_dimlen -# 574 "pio.F90.in" +# 575 "pio.F90.in" integer function PIO_openfile(iosystem, file, iotype, fname,mode, CheckMPI) result(ierr) type (iosystem_desc_t), intent(inout), target :: iosystem type (file_desc_t), intent(out) :: file @@ -1941,28 +1942,28 @@ integer function PIO_openfile(iosystem, file, iotype, fname,mode, CheckMPI) resu logical, optional, intent(in) :: CheckMPI ierr = 0 -# 583 "pio.F90.in" +# 584 "pio.F90.in" end function PIO_openfile -# 585 "pio.F90.in" +# 586 "pio.F90.in" subroutine pio_set_blocksize(newsize) integer, intent(in) :: newsize -# 587 "pio.F90.in" +# 588 "pio.F90.in" end subroutine pio_set_blocksize -# 589 "pio.F90.in" +# 590 "pio.F90.in" subroutine pio_set_buffer_size_limit_i4(limit) integer, intent(in) :: limit -# 591 "pio.F90.in" +# 592 "pio.F90.in" end subroutine pio_set_buffer_size_limit_i4 -# 593 "pio.F90.in" +# 594 "pio.F90.in" subroutine pio_set_buffer_size_limit_i8(limit) integer(pio_offset), intent(in) :: limit -# 595 "pio.F90.in" +# 596 "pio.F90.in" end subroutine pio_set_buffer_size_limit_i8 -# 597 "pio.F90.in" +# 598 "pio.F90.in" integer function put_att_text (File, varid, name, value) result(ierr) type (File_desc_t), intent(inout) , target :: File integer, intent(in) :: varid @@ -1970,9 +1971,9 @@ integer function put_att_text (File, varid, name, value) result(ierr) character(len=*), intent(in) :: value ierr = 0 -# 604 "pio.F90.in" +# 605 "pio.F90.in" end function put_att_text -# 597 "pio.F90.in" +# 598 "pio.F90.in" integer function put_att_real (File, varid, name, value) result(ierr) type (File_desc_t), intent(inout) , target :: File integer, intent(in) :: varid @@ -1980,9 +1981,9 @@ integer function put_att_real (File, varid, name, value) result(ierr) real(r4), intent(in) :: value ierr = 0 -# 604 "pio.F90.in" +# 605 "pio.F90.in" end function put_att_real -# 597 "pio.F90.in" +# 598 "pio.F90.in" integer function put_att_double (File, varid, name, value) result(ierr) type (File_desc_t), intent(inout) , target :: File integer, intent(in) :: varid @@ -1990,9 +1991,9 @@ integer function put_att_double (File, varid, name, value) result(ierr) real(r8), intent(in) :: value ierr = 0 -# 604 "pio.F90.in" +# 605 "pio.F90.in" end function put_att_double -# 597 "pio.F90.in" +# 598 "pio.F90.in" integer function put_att_int (File, varid, name, value) result(ierr) type (File_desc_t), intent(inout) , target :: File integer, intent(in) :: varid @@ -2000,11 +2001,11 @@ integer function put_att_int (File, varid, name, value) result(ierr) integer(i4), intent(in) :: value ierr = 0 -# 604 "pio.F90.in" +# 605 "pio.F90.in" end function put_att_int ! TYPE real,double,int -# 607 "pio.F90.in" +# 608 "pio.F90.in" integer function put_att_1d_real (File, varid, name, value) result(ierr) type (File_desc_t), intent(inout) , target :: File integer, intent(in) :: varid @@ -2012,10 +2013,10 @@ integer function put_att_1d_real (File, varid, name, value) result(ierr) real(r4), intent(in) :: value(:) ierr = 0 -# 614 "pio.F90.in" +# 615 "pio.F90.in" end function put_att_1d_real ! TYPE real,double,int -# 607 "pio.F90.in" +# 608 "pio.F90.in" integer function put_att_1d_double (File, varid, name, value) result(ierr) type (File_desc_t), intent(inout) , target :: File integer, intent(in) :: varid @@ -2023,10 +2024,10 @@ integer function put_att_1d_double (File, varid, name, value) result(ierr) real(r8), intent(in) :: value(:) ierr = 0 -# 614 "pio.F90.in" +# 615 "pio.F90.in" end function put_att_1d_double ! TYPE real,double,int -# 607 "pio.F90.in" +# 608 "pio.F90.in" integer function put_att_1d_int (File, varid, name, value) result(ierr) type (File_desc_t), intent(inout) , target :: File integer, intent(in) :: varid @@ -2034,10 +2035,10 @@ integer function put_att_1d_int (File, varid, name, value) result(ierr) integer(i4), intent(in) :: value(:) ierr = 0 -# 614 "pio.F90.in" +# 615 "pio.F90.in" end function put_att_1d_int -# 616 "pio.F90.in" +# 617 "pio.F90.in" integer function put_att_desc_text (File,varDesc,name,value) result(ierr) type (File_desc_t), intent(inout) , target :: File type (VAR_desc_t), intent(in) :: varDesc @@ -2045,9 +2046,9 @@ integer function put_att_desc_text (File,varDesc,name,value) result(ierr) character(len=*), intent(in) :: value ierr = 0 -# 623 "pio.F90.in" +# 624 "pio.F90.in" end function put_att_desc_text -# 616 "pio.F90.in" +# 617 "pio.F90.in" integer function put_att_desc_real (File,varDesc,name,value) result(ierr) type (File_desc_t), intent(inout) , target :: File type (VAR_desc_t), intent(in) :: varDesc @@ -2055,9 +2056,9 @@ integer function put_att_desc_real (File,varDesc,name,value) result(ierr) real(r4), intent(in) :: value ierr = 0 -# 623 "pio.F90.in" +# 624 "pio.F90.in" end function put_att_desc_real -# 616 "pio.F90.in" +# 617 "pio.F90.in" integer function put_att_desc_double (File,varDesc,name,value) result(ierr) type (File_desc_t), intent(inout) , target :: File type (VAR_desc_t), intent(in) :: varDesc @@ -2065,9 +2066,9 @@ integer function put_att_desc_double (File,varDesc,name,value) result(ierr) real(r8), intent(in) :: value ierr = 0 -# 623 "pio.F90.in" +# 624 "pio.F90.in" end function put_att_desc_double -# 616 "pio.F90.in" +# 617 "pio.F90.in" integer function put_att_desc_int (File,varDesc,name,value) result(ierr) type (File_desc_t), intent(inout) , target :: File type (VAR_desc_t), intent(in) :: varDesc @@ -2075,11 +2076,11 @@ integer function put_att_desc_int (File,varDesc,name,value) result(ierr) integer(i4), intent(in) :: value ierr = 0 -# 623 "pio.F90.in" +# 624 "pio.F90.in" end function put_att_desc_int ! TYPE real,int,double -# 626 "pio.F90.in" +# 627 "pio.F90.in" integer function put_att_desc_1d_real (File,varDesc,name,value) result(ierr) type (File_desc_t), intent(inout) , target :: File type (VAR_desc_t), intent(in) :: varDesc @@ -2087,10 +2088,10 @@ integer function put_att_desc_1d_real (File,varDesc,name,value) result(ierr) real(r4), intent(in) :: value(:) ierr = 0 -# 633 "pio.F90.in" +# 634 "pio.F90.in" end function put_att_desc_1d_real ! TYPE real,int,double -# 626 "pio.F90.in" +# 627 "pio.F90.in" integer function put_att_desc_1d_int (File,varDesc,name,value) result(ierr) type (File_desc_t), intent(inout) , target :: File type (VAR_desc_t), intent(in) :: varDesc @@ -2098,10 +2099,10 @@ integer function put_att_desc_1d_int (File,varDesc,name,value) result(ierr) integer(i4), intent(in) :: value(:) ierr = 0 -# 633 "pio.F90.in" +# 634 "pio.F90.in" end function put_att_desc_1d_int ! TYPE real,int,double -# 626 "pio.F90.in" +# 627 "pio.F90.in" integer function put_att_desc_1d_double (File,varDesc,name,value) result(ierr) type (File_desc_t), intent(inout) , target :: File type (VAR_desc_t), intent(in) :: varDesc @@ -2109,51 +2110,51 @@ integer function put_att_desc_1d_double (File,varDesc,name,value) result(ierr) real(r8), intent(in) :: value(:) ierr = 0 -# 633 "pio.F90.in" +# 634 "pio.F90.in" end function put_att_desc_1d_double -# 635 "pio.F90.in" +# 636 "pio.F90.in" integer function put_var1_text (File,varid, index, ival) result(ierr) type (File_desc_t), intent(inout) :: File integer, intent(in) :: varid, index(:) character(len=*), intent(in) :: ival ierr = 0 -# 641 "pio.F90.in" +# 642 "pio.F90.in" end function put_var1_text ! TYPE int,real,double -# 644 "pio.F90.in" +# 645 "pio.F90.in" integer function put_var1_int (File,varid, index, ival) result(ierr) type (File_desc_t), intent(inout) :: File integer, intent(in) :: varid, index(:) integer(i4), intent(in) :: ival ierr = 0 -# 650 "pio.F90.in" +# 651 "pio.F90.in" end function put_var1_int ! TYPE int,real,double -# 644 "pio.F90.in" +# 645 "pio.F90.in" integer function put_var1_real (File,varid, index, ival) result(ierr) type (File_desc_t), intent(inout) :: File integer, intent(in) :: varid, index(:) real(r4), intent(in) :: ival ierr = 0 -# 650 "pio.F90.in" +# 651 "pio.F90.in" end function put_var1_real ! TYPE int,real,double -# 644 "pio.F90.in" +# 645 "pio.F90.in" integer function put_var1_double (File,varid, index, ival) result(ierr) type (File_desc_t), intent(inout) :: File integer, intent(in) :: varid, index(:) real(r8), intent(in) :: ival ierr = 0 -# 650 "pio.F90.in" +# 651 "pio.F90.in" end function put_var1_double -# 652 "pio.F90.in" +# 653 "pio.F90.in" integer function put_var1_vdesc_text (File,vardesc, start, ival) result(ierr) type (File_desc_t), intent(inout) :: File type(var_desc_t), intent(in) :: vardesc @@ -2161,9 +2162,9 @@ integer function put_var1_vdesc_text (File,vardesc, start, ival) result(ierr) character(len=*), intent(in) :: ival ierr = 0 -# 659 "pio.F90.in" +# 660 "pio.F90.in" end function put_var1_vdesc_text -# 652 "pio.F90.in" +# 653 "pio.F90.in" integer function put_var1_vdesc_real (File,vardesc, start, ival) result(ierr) type (File_desc_t), intent(inout) :: File type(var_desc_t), intent(in) :: vardesc @@ -2171,9 +2172,9 @@ integer function put_var1_vdesc_real (File,vardesc, start, ival) result(ierr) real(r4), intent(in) :: ival ierr = 0 -# 659 "pio.F90.in" +# 660 "pio.F90.in" end function put_var1_vdesc_real -# 652 "pio.F90.in" +# 653 "pio.F90.in" integer function put_var1_vdesc_double (File,vardesc, start, ival) result(ierr) type (File_desc_t), intent(inout) :: File type(var_desc_t), intent(in) :: vardesc @@ -2181,9 +2182,9 @@ integer function put_var1_vdesc_double (File,vardesc, start, ival) result(ierr) real(r8), intent(in) :: ival ierr = 0 -# 659 "pio.F90.in" +# 660 "pio.F90.in" end function put_var1_vdesc_double -# 652 "pio.F90.in" +# 653 "pio.F90.in" integer function put_var1_vdesc_int (File,vardesc, start, ival) result(ierr) type (File_desc_t), intent(inout) :: File type(var_desc_t), intent(in) :: vardesc @@ -2191,738 +2192,738 @@ integer function put_var1_vdesc_int (File,vardesc, start, ival) result(ierr) integer(i4), intent(in) :: ival ierr = 0 -# 659 "pio.F90.in" +# 660 "pio.F90.in" end function put_var1_vdesc_int ! DIMS 0,1,2,3,4,5 ! TYPE text -# 663 "pio.F90.in" +# 664 "pio.F90.in" integer function put_var_0d_text (File,varid, ival) result(ierr) type (File_desc_t), intent(inout) :: File integer, intent(in) :: varid character(len=*), intent(in) :: ival ierr = 0 -# 669 "pio.F90.in" +# 670 "pio.F90.in" end function put_var_0d_text ! DIMS 0,1,2,3,4,5 ! TYPE text -# 663 "pio.F90.in" +# 664 "pio.F90.in" integer function put_var_1d_text (File,varid, ival) result(ierr) type (File_desc_t), intent(inout) :: File integer, intent(in) :: varid character(len=*), intent(in) :: ival(:) ierr = 0 -# 669 "pio.F90.in" +# 670 "pio.F90.in" end function put_var_1d_text ! DIMS 0,1,2,3,4,5 ! TYPE text -# 663 "pio.F90.in" +# 664 "pio.F90.in" integer function put_var_2d_text (File,varid, ival) result(ierr) type (File_desc_t), intent(inout) :: File integer, intent(in) :: varid character(len=*), intent(in) :: ival(:,:) ierr = 0 -# 669 "pio.F90.in" +# 670 "pio.F90.in" end function put_var_2d_text ! DIMS 0,1,2,3,4,5 ! TYPE text -# 663 "pio.F90.in" +# 664 "pio.F90.in" integer function put_var_3d_text (File,varid, ival) result(ierr) type (File_desc_t), intent(inout) :: File integer, intent(in) :: varid character(len=*), intent(in) :: ival(:,:,:) ierr = 0 -# 669 "pio.F90.in" +# 670 "pio.F90.in" end function put_var_3d_text ! DIMS 0,1,2,3,4,5 ! TYPE text -# 663 "pio.F90.in" +# 664 "pio.F90.in" integer function put_var_4d_text (File,varid, ival) result(ierr) type (File_desc_t), intent(inout) :: File integer, intent(in) :: varid character(len=*), intent(in) :: ival(:,:,:,:) ierr = 0 -# 669 "pio.F90.in" +# 670 "pio.F90.in" end function put_var_4d_text ! DIMS 0,1,2,3,4,5 ! TYPE text -# 663 "pio.F90.in" +# 664 "pio.F90.in" integer function put_var_5d_text (File,varid, ival) result(ierr) type (File_desc_t), intent(inout) :: File integer, intent(in) :: varid character(len=*), intent(in) :: ival(:,:,:,:,:) ierr = 0 -# 669 "pio.F90.in" +# 670 "pio.F90.in" end function put_var_5d_text ! DIMS 1,2,3,4,5 ! TYPE int,real,double -# 673 "pio.F90.in" +# 674 "pio.F90.in" integer function put_var_1d_int (File,varid, ival) result(ierr) type (File_desc_t), intent(inout) :: File integer, intent(in) :: varid integer(i4), intent(in) :: ival(:) ierr = 0 -# 679 "pio.F90.in" +# 680 "pio.F90.in" end function put_var_1d_int ! DIMS 1,2,3,4,5 ! TYPE int,real,double -# 673 "pio.F90.in" +# 674 "pio.F90.in" integer function put_var_2d_int (File,varid, ival) result(ierr) type (File_desc_t), intent(inout) :: File integer, intent(in) :: varid integer(i4), intent(in) :: ival(:,:) ierr = 0 -# 679 "pio.F90.in" +# 680 "pio.F90.in" end function put_var_2d_int ! DIMS 1,2,3,4,5 ! TYPE int,real,double -# 673 "pio.F90.in" +# 674 "pio.F90.in" integer function put_var_3d_int (File,varid, ival) result(ierr) type (File_desc_t), intent(inout) :: File integer, intent(in) :: varid integer(i4), intent(in) :: ival(:,:,:) ierr = 0 -# 679 "pio.F90.in" +# 680 "pio.F90.in" end function put_var_3d_int ! DIMS 1,2,3,4,5 ! TYPE int,real,double -# 673 "pio.F90.in" +# 674 "pio.F90.in" integer function put_var_4d_int (File,varid, ival) result(ierr) type (File_desc_t), intent(inout) :: File integer, intent(in) :: varid integer(i4), intent(in) :: ival(:,:,:,:) ierr = 0 -# 679 "pio.F90.in" +# 680 "pio.F90.in" end function put_var_4d_int ! DIMS 1,2,3,4,5 ! TYPE int,real,double -# 673 "pio.F90.in" +# 674 "pio.F90.in" integer function put_var_5d_int (File,varid, ival) result(ierr) type (File_desc_t), intent(inout) :: File integer, intent(in) :: varid integer(i4), intent(in) :: ival(:,:,:,:,:) ierr = 0 -# 679 "pio.F90.in" +# 680 "pio.F90.in" end function put_var_5d_int ! DIMS 1,2,3,4,5 ! TYPE int,real,double -# 673 "pio.F90.in" +# 674 "pio.F90.in" integer function put_var_1d_real (File,varid, ival) result(ierr) type (File_desc_t), intent(inout) :: File integer, intent(in) :: varid real(r4), intent(in) :: ival(:) ierr = 0 -# 679 "pio.F90.in" +# 680 "pio.F90.in" end function put_var_1d_real ! DIMS 1,2,3,4,5 ! TYPE int,real,double -# 673 "pio.F90.in" +# 674 "pio.F90.in" integer function put_var_2d_real (File,varid, ival) result(ierr) type (File_desc_t), intent(inout) :: File integer, intent(in) :: varid real(r4), intent(in) :: ival(:,:) ierr = 0 -# 679 "pio.F90.in" +# 680 "pio.F90.in" end function put_var_2d_real ! DIMS 1,2,3,4,5 ! TYPE int,real,double -# 673 "pio.F90.in" +# 674 "pio.F90.in" integer function put_var_3d_real (File,varid, ival) result(ierr) type (File_desc_t), intent(inout) :: File integer, intent(in) :: varid real(r4), intent(in) :: ival(:,:,:) ierr = 0 -# 679 "pio.F90.in" +# 680 "pio.F90.in" end function put_var_3d_real ! DIMS 1,2,3,4,5 ! TYPE int,real,double -# 673 "pio.F90.in" +# 674 "pio.F90.in" integer function put_var_4d_real (File,varid, ival) result(ierr) type (File_desc_t), intent(inout) :: File integer, intent(in) :: varid real(r4), intent(in) :: ival(:,:,:,:) ierr = 0 -# 679 "pio.F90.in" +# 680 "pio.F90.in" end function put_var_4d_real ! DIMS 1,2,3,4,5 ! TYPE int,real,double -# 673 "pio.F90.in" +# 674 "pio.F90.in" integer function put_var_5d_real (File,varid, ival) result(ierr) type (File_desc_t), intent(inout) :: File integer, intent(in) :: varid real(r4), intent(in) :: ival(:,:,:,:,:) ierr = 0 -# 679 "pio.F90.in" +# 680 "pio.F90.in" end function put_var_5d_real ! DIMS 1,2,3,4,5 ! TYPE int,real,double -# 673 "pio.F90.in" +# 674 "pio.F90.in" integer function put_var_1d_double (File,varid, ival) result(ierr) type (File_desc_t), intent(inout) :: File integer, intent(in) :: varid real(r8), intent(in) :: ival(:) ierr = 0 -# 679 "pio.F90.in" +# 680 "pio.F90.in" end function put_var_1d_double ! DIMS 1,2,3,4,5 ! TYPE int,real,double -# 673 "pio.F90.in" +# 674 "pio.F90.in" integer function put_var_2d_double (File,varid, ival) result(ierr) type (File_desc_t), intent(inout) :: File integer, intent(in) :: varid real(r8), intent(in) :: ival(:,:) ierr = 0 -# 679 "pio.F90.in" +# 680 "pio.F90.in" end function put_var_2d_double ! DIMS 1,2,3,4,5 ! TYPE int,real,double -# 673 "pio.F90.in" +# 674 "pio.F90.in" integer function put_var_3d_double (File,varid, ival) result(ierr) type (File_desc_t), intent(inout) :: File integer, intent(in) :: varid real(r8), intent(in) :: ival(:,:,:) ierr = 0 -# 679 "pio.F90.in" +# 680 "pio.F90.in" end function put_var_3d_double ! DIMS 1,2,3,4,5 ! TYPE int,real,double -# 673 "pio.F90.in" +# 674 "pio.F90.in" integer function put_var_4d_double (File,varid, ival) result(ierr) type (File_desc_t), intent(inout) :: File integer, intent(in) :: varid real(r8), intent(in) :: ival(:,:,:,:) ierr = 0 -# 679 "pio.F90.in" +# 680 "pio.F90.in" end function put_var_4d_double ! DIMS 1,2,3,4,5 ! TYPE int,real,double -# 673 "pio.F90.in" +# 674 "pio.F90.in" integer function put_var_5d_double (File,varid, ival) result(ierr) type (File_desc_t), intent(inout) :: File integer, intent(in) :: varid real(r8), intent(in) :: ival(:,:,:,:,:) ierr = 0 -# 679 "pio.F90.in" +# 680 "pio.F90.in" end function put_var_5d_double ! TYPE int,real,double -# 682 "pio.F90.in" +# 683 "pio.F90.in" integer function put_var_0d_int (File,varid, ival) result(ierr) type (File_desc_t), intent(inout) :: File integer, intent(in) :: varid integer(i4), intent(in) :: ival ierr = 0 -# 688 "pio.F90.in" +# 689 "pio.F90.in" end function put_var_0d_int ! TYPE int,real,double -# 682 "pio.F90.in" +# 683 "pio.F90.in" integer function put_var_0d_real (File,varid, ival) result(ierr) type (File_desc_t), intent(inout) :: File integer, intent(in) :: varid real(r4), intent(in) :: ival ierr = 0 -# 688 "pio.F90.in" +# 689 "pio.F90.in" end function put_var_0d_real ! TYPE int,real,double -# 682 "pio.F90.in" +# 683 "pio.F90.in" integer function put_var_0d_double (File,varid, ival) result(ierr) type (File_desc_t), intent(inout) :: File integer, intent(in) :: varid real(r8), intent(in) :: ival ierr = 0 -# 688 "pio.F90.in" +# 689 "pio.F90.in" end function put_var_0d_double ! DIMS 0,1,2,3,4,5 -# 691 "pio.F90.in" +# 692 "pio.F90.in" integer function put_var_vdesc_0d_text (File, vardesc, ival) result(ierr) type (File_desc_t), intent(inout) :: File type(var_desc_t) , intent(in) :: vardesc character(len=*), intent(in) :: ival ierr = 0 -# 697 "pio.F90.in" +# 698 "pio.F90.in" end function put_var_vdesc_0d_text ! DIMS 0,1,2,3,4,5 -# 691 "pio.F90.in" +# 692 "pio.F90.in" integer function put_var_vdesc_1d_text (File, vardesc, ival) result(ierr) type (File_desc_t), intent(inout) :: File type(var_desc_t) , intent(in) :: vardesc character(len=*), intent(in) :: ival(:) ierr = 0 -# 697 "pio.F90.in" +# 698 "pio.F90.in" end function put_var_vdesc_1d_text ! DIMS 0,1,2,3,4,5 -# 691 "pio.F90.in" +# 692 "pio.F90.in" integer function put_var_vdesc_2d_text (File, vardesc, ival) result(ierr) type (File_desc_t), intent(inout) :: File type(var_desc_t) , intent(in) :: vardesc character(len=*), intent(in) :: ival(:,:) ierr = 0 -# 697 "pio.F90.in" +# 698 "pio.F90.in" end function put_var_vdesc_2d_text ! DIMS 0,1,2,3,4,5 -# 691 "pio.F90.in" +# 692 "pio.F90.in" integer function put_var_vdesc_3d_text (File, vardesc, ival) result(ierr) type (File_desc_t), intent(inout) :: File type(var_desc_t) , intent(in) :: vardesc character(len=*), intent(in) :: ival(:,:,:) ierr = 0 -# 697 "pio.F90.in" +# 698 "pio.F90.in" end function put_var_vdesc_3d_text ! DIMS 0,1,2,3,4,5 -# 691 "pio.F90.in" +# 692 "pio.F90.in" integer function put_var_vdesc_4d_text (File, vardesc, ival) result(ierr) type (File_desc_t), intent(inout) :: File type(var_desc_t) , intent(in) :: vardesc character(len=*), intent(in) :: ival(:,:,:,:) ierr = 0 -# 697 "pio.F90.in" +# 698 "pio.F90.in" end function put_var_vdesc_4d_text ! DIMS 0,1,2,3,4,5 -# 691 "pio.F90.in" +# 692 "pio.F90.in" integer function put_var_vdesc_5d_text (File, vardesc, ival) result(ierr) type (File_desc_t), intent(inout) :: File type(var_desc_t) , intent(in) :: vardesc character(len=*), intent(in) :: ival(:,:,:,:,:) ierr = 0 -# 697 "pio.F90.in" +# 698 "pio.F90.in" end function put_var_vdesc_5d_text ! DIMS 0,1,2,3,4,5 -# 691 "pio.F90.in" +# 692 "pio.F90.in" integer function put_var_vdesc_0d_real (File, vardesc, ival) result(ierr) type (File_desc_t), intent(inout) :: File type(var_desc_t) , intent(in) :: vardesc real(r4), intent(in) :: ival ierr = 0 -# 697 "pio.F90.in" +# 698 "pio.F90.in" end function put_var_vdesc_0d_real ! DIMS 0,1,2,3,4,5 -# 691 "pio.F90.in" +# 692 "pio.F90.in" integer function put_var_vdesc_1d_real (File, vardesc, ival) result(ierr) type (File_desc_t), intent(inout) :: File type(var_desc_t) , intent(in) :: vardesc real(r4), intent(in) :: ival(:) ierr = 0 -# 697 "pio.F90.in" +# 698 "pio.F90.in" end function put_var_vdesc_1d_real ! DIMS 0,1,2,3,4,5 -# 691 "pio.F90.in" +# 692 "pio.F90.in" integer function put_var_vdesc_2d_real (File, vardesc, ival) result(ierr) type (File_desc_t), intent(inout) :: File type(var_desc_t) , intent(in) :: vardesc real(r4), intent(in) :: ival(:,:) ierr = 0 -# 697 "pio.F90.in" +# 698 "pio.F90.in" end function put_var_vdesc_2d_real ! DIMS 0,1,2,3,4,5 -# 691 "pio.F90.in" +# 692 "pio.F90.in" integer function put_var_vdesc_3d_real (File, vardesc, ival) result(ierr) type (File_desc_t), intent(inout) :: File type(var_desc_t) , intent(in) :: vardesc real(r4), intent(in) :: ival(:,:,:) ierr = 0 -# 697 "pio.F90.in" +# 698 "pio.F90.in" end function put_var_vdesc_3d_real ! DIMS 0,1,2,3,4,5 -# 691 "pio.F90.in" +# 692 "pio.F90.in" integer function put_var_vdesc_4d_real (File, vardesc, ival) result(ierr) type (File_desc_t), intent(inout) :: File type(var_desc_t) , intent(in) :: vardesc real(r4), intent(in) :: ival(:,:,:,:) ierr = 0 -# 697 "pio.F90.in" +# 698 "pio.F90.in" end function put_var_vdesc_4d_real ! DIMS 0,1,2,3,4,5 -# 691 "pio.F90.in" +# 692 "pio.F90.in" integer function put_var_vdesc_5d_real (File, vardesc, ival) result(ierr) type (File_desc_t), intent(inout) :: File type(var_desc_t) , intent(in) :: vardesc real(r4), intent(in) :: ival(:,:,:,:,:) ierr = 0 -# 697 "pio.F90.in" +# 698 "pio.F90.in" end function put_var_vdesc_5d_real ! DIMS 0,1,2,3,4,5 -# 691 "pio.F90.in" +# 692 "pio.F90.in" integer function put_var_vdesc_0d_double (File, vardesc, ival) result(ierr) type (File_desc_t), intent(inout) :: File type(var_desc_t) , intent(in) :: vardesc real(r8), intent(in) :: ival ierr = 0 -# 697 "pio.F90.in" +# 698 "pio.F90.in" end function put_var_vdesc_0d_double ! DIMS 0,1,2,3,4,5 -# 691 "pio.F90.in" +# 692 "pio.F90.in" integer function put_var_vdesc_1d_double (File, vardesc, ival) result(ierr) type (File_desc_t), intent(inout) :: File type(var_desc_t) , intent(in) :: vardesc real(r8), intent(in) :: ival(:) ierr = 0 -# 697 "pio.F90.in" +# 698 "pio.F90.in" end function put_var_vdesc_1d_double ! DIMS 0,1,2,3,4,5 -# 691 "pio.F90.in" +# 692 "pio.F90.in" integer function put_var_vdesc_2d_double (File, vardesc, ival) result(ierr) type (File_desc_t), intent(inout) :: File type(var_desc_t) , intent(in) :: vardesc real(r8), intent(in) :: ival(:,:) ierr = 0 -# 697 "pio.F90.in" +# 698 "pio.F90.in" end function put_var_vdesc_2d_double ! DIMS 0,1,2,3,4,5 -# 691 "pio.F90.in" +# 692 "pio.F90.in" integer function put_var_vdesc_3d_double (File, vardesc, ival) result(ierr) type (File_desc_t), intent(inout) :: File type(var_desc_t) , intent(in) :: vardesc real(r8), intent(in) :: ival(:,:,:) ierr = 0 -# 697 "pio.F90.in" +# 698 "pio.F90.in" end function put_var_vdesc_3d_double ! DIMS 0,1,2,3,4,5 -# 691 "pio.F90.in" +# 692 "pio.F90.in" integer function put_var_vdesc_4d_double (File, vardesc, ival) result(ierr) type (File_desc_t), intent(inout) :: File type(var_desc_t) , intent(in) :: vardesc real(r8), intent(in) :: ival(:,:,:,:) ierr = 0 -# 697 "pio.F90.in" +# 698 "pio.F90.in" end function put_var_vdesc_4d_double ! DIMS 0,1,2,3,4,5 -# 691 "pio.F90.in" +# 692 "pio.F90.in" integer function put_var_vdesc_5d_double (File, vardesc, ival) result(ierr) type (File_desc_t), intent(inout) :: File type(var_desc_t) , intent(in) :: vardesc real(r8), intent(in) :: ival(:,:,:,:,:) ierr = 0 -# 697 "pio.F90.in" +# 698 "pio.F90.in" end function put_var_vdesc_5d_double ! DIMS 0,1,2,3,4,5 -# 691 "pio.F90.in" +# 692 "pio.F90.in" integer function put_var_vdesc_0d_int (File, vardesc, ival) result(ierr) type (File_desc_t), intent(inout) :: File type(var_desc_t) , intent(in) :: vardesc integer(i4), intent(in) :: ival ierr = 0 -# 697 "pio.F90.in" +# 698 "pio.F90.in" end function put_var_vdesc_0d_int ! DIMS 0,1,2,3,4,5 -# 691 "pio.F90.in" +# 692 "pio.F90.in" integer function put_var_vdesc_1d_int (File, vardesc, ival) result(ierr) type (File_desc_t), intent(inout) :: File type(var_desc_t) , intent(in) :: vardesc integer(i4), intent(in) :: ival(:) ierr = 0 -# 697 "pio.F90.in" +# 698 "pio.F90.in" end function put_var_vdesc_1d_int ! DIMS 0,1,2,3,4,5 -# 691 "pio.F90.in" +# 692 "pio.F90.in" integer function put_var_vdesc_2d_int (File, vardesc, ival) result(ierr) type (File_desc_t), intent(inout) :: File type(var_desc_t) , intent(in) :: vardesc integer(i4), intent(in) :: ival(:,:) ierr = 0 -# 697 "pio.F90.in" +# 698 "pio.F90.in" end function put_var_vdesc_2d_int ! DIMS 0,1,2,3,4,5 -# 691 "pio.F90.in" +# 692 "pio.F90.in" integer function put_var_vdesc_3d_int (File, vardesc, ival) result(ierr) type (File_desc_t), intent(inout) :: File type(var_desc_t) , intent(in) :: vardesc integer(i4), intent(in) :: ival(:,:,:) ierr = 0 -# 697 "pio.F90.in" +# 698 "pio.F90.in" end function put_var_vdesc_3d_int ! DIMS 0,1,2,3,4,5 -# 691 "pio.F90.in" +# 692 "pio.F90.in" integer function put_var_vdesc_4d_int (File, vardesc, ival) result(ierr) type (File_desc_t), intent(inout) :: File type(var_desc_t) , intent(in) :: vardesc integer(i4), intent(in) :: ival(:,:,:,:) ierr = 0 -# 697 "pio.F90.in" +# 698 "pio.F90.in" end function put_var_vdesc_4d_int ! DIMS 0,1,2,3,4,5 -# 691 "pio.F90.in" +# 692 "pio.F90.in" integer function put_var_vdesc_5d_int (File, vardesc, ival) result(ierr) type (File_desc_t), intent(inout) :: File type(var_desc_t) , intent(in) :: vardesc integer(i4), intent(in) :: ival(:,:,:,:,:) ierr = 0 -# 697 "pio.F90.in" +# 698 "pio.F90.in" end function put_var_vdesc_5d_int ! DIMS 1,2,3,4,5 ! TYPE text -# 701 "pio.F90.in" +# 702 "pio.F90.in" integer function put_vara_1d_text (File,varid, start, count, ival) result(ierr) type (File_desc_t), intent(inout) :: File integer, intent(in) :: varid, start(:), count(:) character(len=*), intent(in) :: ival(:) ierr = 0 -# 707 "pio.F90.in" +# 708 "pio.F90.in" end function put_vara_1d_text ! DIMS 1,2,3,4,5 ! TYPE text -# 701 "pio.F90.in" +# 702 "pio.F90.in" integer function put_vara_2d_text (File,varid, start, count, ival) result(ierr) type (File_desc_t), intent(inout) :: File integer, intent(in) :: varid, start(:), count(:) character(len=*), intent(in) :: ival(:,:) ierr = 0 -# 707 "pio.F90.in" +# 708 "pio.F90.in" end function put_vara_2d_text ! DIMS 1,2,3,4,5 ! TYPE text -# 701 "pio.F90.in" +# 702 "pio.F90.in" integer function put_vara_3d_text (File,varid, start, count, ival) result(ierr) type (File_desc_t), intent(inout) :: File integer, intent(in) :: varid, start(:), count(:) character(len=*), intent(in) :: ival(:,:,:) ierr = 0 -# 707 "pio.F90.in" +# 708 "pio.F90.in" end function put_vara_3d_text ! DIMS 1,2,3,4,5 ! TYPE text -# 701 "pio.F90.in" +# 702 "pio.F90.in" integer function put_vara_4d_text (File,varid, start, count, ival) result(ierr) type (File_desc_t), intent(inout) :: File integer, intent(in) :: varid, start(:), count(:) character(len=*), intent(in) :: ival(:,:,:,:) ierr = 0 -# 707 "pio.F90.in" +# 708 "pio.F90.in" end function put_vara_4d_text ! DIMS 1,2,3,4,5 ! TYPE text -# 701 "pio.F90.in" +# 702 "pio.F90.in" integer function put_vara_5d_text (File,varid, start, count, ival) result(ierr) type (File_desc_t), intent(inout) :: File integer, intent(in) :: varid, start(:), count(:) character(len=*), intent(in) :: ival(:,:,:,:,:) ierr = 0 -# 707 "pio.F90.in" +# 708 "pio.F90.in" end function put_vara_5d_text ! TYPE int,real,double ! DIMS 1,2,3,4,5 -# 711 "pio.F90.in" +# 712 "pio.F90.in" integer function put_vara_1d_int (File,varid, start, count, ival) result(ierr) type (File_desc_t), intent(inout) :: File integer, intent(in) :: varid, start(:), count(:) integer(i4), intent(in) :: ival(:) ierr = 0 -# 717 "pio.F90.in" +# 718 "pio.F90.in" end function put_vara_1d_int ! TYPE int,real,double ! DIMS 1,2,3,4,5 -# 711 "pio.F90.in" +# 712 "pio.F90.in" integer function put_vara_2d_int (File,varid, start, count, ival) result(ierr) type (File_desc_t), intent(inout) :: File integer, intent(in) :: varid, start(:), count(:) integer(i4), intent(in) :: ival(:,:) ierr = 0 -# 717 "pio.F90.in" +# 718 "pio.F90.in" end function put_vara_2d_int ! TYPE int,real,double ! DIMS 1,2,3,4,5 -# 711 "pio.F90.in" +# 712 "pio.F90.in" integer function put_vara_3d_int (File,varid, start, count, ival) result(ierr) type (File_desc_t), intent(inout) :: File integer, intent(in) :: varid, start(:), count(:) integer(i4), intent(in) :: ival(:,:,:) ierr = 0 -# 717 "pio.F90.in" +# 718 "pio.F90.in" end function put_vara_3d_int ! TYPE int,real,double ! DIMS 1,2,3,4,5 -# 711 "pio.F90.in" +# 712 "pio.F90.in" integer function put_vara_4d_int (File,varid, start, count, ival) result(ierr) type (File_desc_t), intent(inout) :: File integer, intent(in) :: varid, start(:), count(:) integer(i4), intent(in) :: ival(:,:,:,:) ierr = 0 -# 717 "pio.F90.in" +# 718 "pio.F90.in" end function put_vara_4d_int ! TYPE int,real,double ! DIMS 1,2,3,4,5 -# 711 "pio.F90.in" +# 712 "pio.F90.in" integer function put_vara_5d_int (File,varid, start, count, ival) result(ierr) type (File_desc_t), intent(inout) :: File integer, intent(in) :: varid, start(:), count(:) integer(i4), intent(in) :: ival(:,:,:,:,:) ierr = 0 -# 717 "pio.F90.in" +# 718 "pio.F90.in" end function put_vara_5d_int ! TYPE int,real,double ! DIMS 1,2,3,4,5 -# 711 "pio.F90.in" +# 712 "pio.F90.in" integer function put_vara_1d_real (File,varid, start, count, ival) result(ierr) type (File_desc_t), intent(inout) :: File integer, intent(in) :: varid, start(:), count(:) real(r4), intent(in) :: ival(:) ierr = 0 -# 717 "pio.F90.in" +# 718 "pio.F90.in" end function put_vara_1d_real ! TYPE int,real,double ! DIMS 1,2,3,4,5 -# 711 "pio.F90.in" +# 712 "pio.F90.in" integer function put_vara_2d_real (File,varid, start, count, ival) result(ierr) type (File_desc_t), intent(inout) :: File integer, intent(in) :: varid, start(:), count(:) real(r4), intent(in) :: ival(:,:) ierr = 0 -# 717 "pio.F90.in" +# 718 "pio.F90.in" end function put_vara_2d_real ! TYPE int,real,double ! DIMS 1,2,3,4,5 -# 711 "pio.F90.in" +# 712 "pio.F90.in" integer function put_vara_3d_real (File,varid, start, count, ival) result(ierr) type (File_desc_t), intent(inout) :: File integer, intent(in) :: varid, start(:), count(:) real(r4), intent(in) :: ival(:,:,:) ierr = 0 -# 717 "pio.F90.in" +# 718 "pio.F90.in" end function put_vara_3d_real ! TYPE int,real,double ! DIMS 1,2,3,4,5 -# 711 "pio.F90.in" +# 712 "pio.F90.in" integer function put_vara_4d_real (File,varid, start, count, ival) result(ierr) type (File_desc_t), intent(inout) :: File integer, intent(in) :: varid, start(:), count(:) real(r4), intent(in) :: ival(:,:,:,:) ierr = 0 -# 717 "pio.F90.in" +# 718 "pio.F90.in" end function put_vara_4d_real ! TYPE int,real,double ! DIMS 1,2,3,4,5 -# 711 "pio.F90.in" +# 712 "pio.F90.in" integer function put_vara_5d_real (File,varid, start, count, ival) result(ierr) type (File_desc_t), intent(inout) :: File integer, intent(in) :: varid, start(:), count(:) real(r4), intent(in) :: ival(:,:,:,:,:) ierr = 0 -# 717 "pio.F90.in" +# 718 "pio.F90.in" end function put_vara_5d_real ! TYPE int,real,double ! DIMS 1,2,3,4,5 -# 711 "pio.F90.in" +# 712 "pio.F90.in" integer function put_vara_1d_double (File,varid, start, count, ival) result(ierr) type (File_desc_t), intent(inout) :: File integer, intent(in) :: varid, start(:), count(:) real(r8), intent(in) :: ival(:) ierr = 0 -# 717 "pio.F90.in" +# 718 "pio.F90.in" end function put_vara_1d_double ! TYPE int,real,double ! DIMS 1,2,3,4,5 -# 711 "pio.F90.in" +# 712 "pio.F90.in" integer function put_vara_2d_double (File,varid, start, count, ival) result(ierr) type (File_desc_t), intent(inout) :: File integer, intent(in) :: varid, start(:), count(:) real(r8), intent(in) :: ival(:,:) ierr = 0 -# 717 "pio.F90.in" +# 718 "pio.F90.in" end function put_vara_2d_double ! TYPE int,real,double ! DIMS 1,2,3,4,5 -# 711 "pio.F90.in" +# 712 "pio.F90.in" integer function put_vara_3d_double (File,varid, start, count, ival) result(ierr) type (File_desc_t), intent(inout) :: File integer, intent(in) :: varid, start(:), count(:) real(r8), intent(in) :: ival(:,:,:) ierr = 0 -# 717 "pio.F90.in" +# 718 "pio.F90.in" end function put_vara_3d_double ! TYPE int,real,double ! DIMS 1,2,3,4,5 -# 711 "pio.F90.in" +# 712 "pio.F90.in" integer function put_vara_4d_double (File,varid, start, count, ival) result(ierr) type (File_desc_t), intent(inout) :: File integer, intent(in) :: varid, start(:), count(:) real(r8), intent(in) :: ival(:,:,:,:) ierr = 0 -# 717 "pio.F90.in" +# 718 "pio.F90.in" end function put_vara_4d_double ! TYPE int,real,double ! DIMS 1,2,3,4,5 -# 711 "pio.F90.in" +# 712 "pio.F90.in" integer function put_vara_5d_double (File,varid, start, count, ival) result(ierr) type (File_desc_t), intent(inout) :: File integer, intent(in) :: varid, start(:), count(:) real(r8), intent(in) :: ival(:,:,:,:,:) ierr = 0 -# 717 "pio.F90.in" +# 718 "pio.F90.in" end function put_vara_5d_double ! DIMS 1,2,3,4,5 -# 720 "pio.F90.in" +# 721 "pio.F90.in" integer function put_vara_vdesc_1d_text (File,vardesc, start, count, ival) result(ierr) type (File_desc_t), intent(inout) :: File type(var_desc_t), intent(in) :: vardesc @@ -2930,10 +2931,10 @@ integer function put_vara_vdesc_1d_text (File,vardesc, start, count, ival) resul character(len=*), intent(in) :: ival(:) ierr = 0 -# 727 "pio.F90.in" +# 728 "pio.F90.in" end function put_vara_vdesc_1d_text ! DIMS 1,2,3,4,5 -# 720 "pio.F90.in" +# 721 "pio.F90.in" integer function put_vara_vdesc_2d_text (File,vardesc, start, count, ival) result(ierr) type (File_desc_t), intent(inout) :: File type(var_desc_t), intent(in) :: vardesc @@ -2941,10 +2942,10 @@ integer function put_vara_vdesc_2d_text (File,vardesc, start, count, ival) resul character(len=*), intent(in) :: ival(:,:) ierr = 0 -# 727 "pio.F90.in" +# 728 "pio.F90.in" end function put_vara_vdesc_2d_text ! DIMS 1,2,3,4,5 -# 720 "pio.F90.in" +# 721 "pio.F90.in" integer function put_vara_vdesc_3d_text (File,vardesc, start, count, ival) result(ierr) type (File_desc_t), intent(inout) :: File type(var_desc_t), intent(in) :: vardesc @@ -2952,10 +2953,10 @@ integer function put_vara_vdesc_3d_text (File,vardesc, start, count, ival) resul character(len=*), intent(in) :: ival(:,:,:) ierr = 0 -# 727 "pio.F90.in" +# 728 "pio.F90.in" end function put_vara_vdesc_3d_text ! DIMS 1,2,3,4,5 -# 720 "pio.F90.in" +# 721 "pio.F90.in" integer function put_vara_vdesc_4d_text (File,vardesc, start, count, ival) result(ierr) type (File_desc_t), intent(inout) :: File type(var_desc_t), intent(in) :: vardesc @@ -2963,10 +2964,10 @@ integer function put_vara_vdesc_4d_text (File,vardesc, start, count, ival) resul character(len=*), intent(in) :: ival(:,:,:,:) ierr = 0 -# 727 "pio.F90.in" +# 728 "pio.F90.in" end function put_vara_vdesc_4d_text ! DIMS 1,2,3,4,5 -# 720 "pio.F90.in" +# 721 "pio.F90.in" integer function put_vara_vdesc_5d_text (File,vardesc, start, count, ival) result(ierr) type (File_desc_t), intent(inout) :: File type(var_desc_t), intent(in) :: vardesc @@ -2974,10 +2975,10 @@ integer function put_vara_vdesc_5d_text (File,vardesc, start, count, ival) resul character(len=*), intent(in) :: ival(:,:,:,:,:) ierr = 0 -# 727 "pio.F90.in" +# 728 "pio.F90.in" end function put_vara_vdesc_5d_text ! DIMS 1,2,3,4,5 -# 720 "pio.F90.in" +# 721 "pio.F90.in" integer function put_vara_vdesc_1d_real (File,vardesc, start, count, ival) result(ierr) type (File_desc_t), intent(inout) :: File type(var_desc_t), intent(in) :: vardesc @@ -2985,10 +2986,10 @@ integer function put_vara_vdesc_1d_real (File,vardesc, start, count, ival) resul real(r4), intent(in) :: ival(:) ierr = 0 -# 727 "pio.F90.in" +# 728 "pio.F90.in" end function put_vara_vdesc_1d_real ! DIMS 1,2,3,4,5 -# 720 "pio.F90.in" +# 721 "pio.F90.in" integer function put_vara_vdesc_2d_real (File,vardesc, start, count, ival) result(ierr) type (File_desc_t), intent(inout) :: File type(var_desc_t), intent(in) :: vardesc @@ -2996,10 +2997,10 @@ integer function put_vara_vdesc_2d_real (File,vardesc, start, count, ival) resul real(r4), intent(in) :: ival(:,:) ierr = 0 -# 727 "pio.F90.in" +# 728 "pio.F90.in" end function put_vara_vdesc_2d_real ! DIMS 1,2,3,4,5 -# 720 "pio.F90.in" +# 721 "pio.F90.in" integer function put_vara_vdesc_3d_real (File,vardesc, start, count, ival) result(ierr) type (File_desc_t), intent(inout) :: File type(var_desc_t), intent(in) :: vardesc @@ -3007,10 +3008,10 @@ integer function put_vara_vdesc_3d_real (File,vardesc, start, count, ival) resul real(r4), intent(in) :: ival(:,:,:) ierr = 0 -# 727 "pio.F90.in" +# 728 "pio.F90.in" end function put_vara_vdesc_3d_real ! DIMS 1,2,3,4,5 -# 720 "pio.F90.in" +# 721 "pio.F90.in" integer function put_vara_vdesc_4d_real (File,vardesc, start, count, ival) result(ierr) type (File_desc_t), intent(inout) :: File type(var_desc_t), intent(in) :: vardesc @@ -3018,10 +3019,10 @@ integer function put_vara_vdesc_4d_real (File,vardesc, start, count, ival) resul real(r4), intent(in) :: ival(:,:,:,:) ierr = 0 -# 727 "pio.F90.in" +# 728 "pio.F90.in" end function put_vara_vdesc_4d_real ! DIMS 1,2,3,4,5 -# 720 "pio.F90.in" +# 721 "pio.F90.in" integer function put_vara_vdesc_5d_real (File,vardesc, start, count, ival) result(ierr) type (File_desc_t), intent(inout) :: File type(var_desc_t), intent(in) :: vardesc @@ -3029,10 +3030,10 @@ integer function put_vara_vdesc_5d_real (File,vardesc, start, count, ival) resul real(r4), intent(in) :: ival(:,:,:,:,:) ierr = 0 -# 727 "pio.F90.in" +# 728 "pio.F90.in" end function put_vara_vdesc_5d_real ! DIMS 1,2,3,4,5 -# 720 "pio.F90.in" +# 721 "pio.F90.in" integer function put_vara_vdesc_1d_double (File,vardesc, start, count, ival) result(ierr) type (File_desc_t), intent(inout) :: File type(var_desc_t), intent(in) :: vardesc @@ -3040,10 +3041,10 @@ integer function put_vara_vdesc_1d_double (File,vardesc, start, count, ival) res real(r8), intent(in) :: ival(:) ierr = 0 -# 727 "pio.F90.in" +# 728 "pio.F90.in" end function put_vara_vdesc_1d_double ! DIMS 1,2,3,4,5 -# 720 "pio.F90.in" +# 721 "pio.F90.in" integer function put_vara_vdesc_2d_double (File,vardesc, start, count, ival) result(ierr) type (File_desc_t), intent(inout) :: File type(var_desc_t), intent(in) :: vardesc @@ -3051,10 +3052,10 @@ integer function put_vara_vdesc_2d_double (File,vardesc, start, count, ival) res real(r8), intent(in) :: ival(:,:) ierr = 0 -# 727 "pio.F90.in" +# 728 "pio.F90.in" end function put_vara_vdesc_2d_double ! DIMS 1,2,3,4,5 -# 720 "pio.F90.in" +# 721 "pio.F90.in" integer function put_vara_vdesc_3d_double (File,vardesc, start, count, ival) result(ierr) type (File_desc_t), intent(inout) :: File type(var_desc_t), intent(in) :: vardesc @@ -3062,10 +3063,10 @@ integer function put_vara_vdesc_3d_double (File,vardesc, start, count, ival) res real(r8), intent(in) :: ival(:,:,:) ierr = 0 -# 727 "pio.F90.in" +# 728 "pio.F90.in" end function put_vara_vdesc_3d_double ! DIMS 1,2,3,4,5 -# 720 "pio.F90.in" +# 721 "pio.F90.in" integer function put_vara_vdesc_4d_double (File,vardesc, start, count, ival) result(ierr) type (File_desc_t), intent(inout) :: File type(var_desc_t), intent(in) :: vardesc @@ -3073,10 +3074,10 @@ integer function put_vara_vdesc_4d_double (File,vardesc, start, count, ival) res real(r8), intent(in) :: ival(:,:,:,:) ierr = 0 -# 727 "pio.F90.in" +# 728 "pio.F90.in" end function put_vara_vdesc_4d_double ! DIMS 1,2,3,4,5 -# 720 "pio.F90.in" +# 721 "pio.F90.in" integer function put_vara_vdesc_5d_double (File,vardesc, start, count, ival) result(ierr) type (File_desc_t), intent(inout) :: File type(var_desc_t), intent(in) :: vardesc @@ -3084,10 +3085,10 @@ integer function put_vara_vdesc_5d_double (File,vardesc, start, count, ival) res real(r8), intent(in) :: ival(:,:,:,:,:) ierr = 0 -# 727 "pio.F90.in" +# 728 "pio.F90.in" end function put_vara_vdesc_5d_double ! DIMS 1,2,3,4,5 -# 720 "pio.F90.in" +# 721 "pio.F90.in" integer function put_vara_vdesc_1d_int (File,vardesc, start, count, ival) result(ierr) type (File_desc_t), intent(inout) :: File type(var_desc_t), intent(in) :: vardesc @@ -3095,10 +3096,10 @@ integer function put_vara_vdesc_1d_int (File,vardesc, start, count, ival) result integer(i4), intent(in) :: ival(:) ierr = 0 -# 727 "pio.F90.in" +# 728 "pio.F90.in" end function put_vara_vdesc_1d_int ! DIMS 1,2,3,4,5 -# 720 "pio.F90.in" +# 721 "pio.F90.in" integer function put_vara_vdesc_2d_int (File,vardesc, start, count, ival) result(ierr) type (File_desc_t), intent(inout) :: File type(var_desc_t), intent(in) :: vardesc @@ -3106,10 +3107,10 @@ integer function put_vara_vdesc_2d_int (File,vardesc, start, count, ival) result integer(i4), intent(in) :: ival(:,:) ierr = 0 -# 727 "pio.F90.in" +# 728 "pio.F90.in" end function put_vara_vdesc_2d_int ! DIMS 1,2,3,4,5 -# 720 "pio.F90.in" +# 721 "pio.F90.in" integer function put_vara_vdesc_3d_int (File,vardesc, start, count, ival) result(ierr) type (File_desc_t), intent(inout) :: File type(var_desc_t), intent(in) :: vardesc @@ -3117,10 +3118,10 @@ integer function put_vara_vdesc_3d_int (File,vardesc, start, count, ival) result integer(i4), intent(in) :: ival(:,:,:) ierr = 0 -# 727 "pio.F90.in" +# 728 "pio.F90.in" end function put_vara_vdesc_3d_int ! DIMS 1,2,3,4,5 -# 720 "pio.F90.in" +# 721 "pio.F90.in" integer function put_vara_vdesc_4d_int (File,vardesc, start, count, ival) result(ierr) type (File_desc_t), intent(inout) :: File type(var_desc_t), intent(in) :: vardesc @@ -3128,10 +3129,10 @@ integer function put_vara_vdesc_4d_int (File,vardesc, start, count, ival) result integer(i4), intent(in) :: ival(:,:,:,:) ierr = 0 -# 727 "pio.F90.in" +# 728 "pio.F90.in" end function put_vara_vdesc_4d_int ! DIMS 1,2,3,4,5 -# 720 "pio.F90.in" +# 721 "pio.F90.in" integer function put_vara_vdesc_5d_int (File,vardesc, start, count, ival) result(ierr) type (File_desc_t), intent(inout) :: File type(var_desc_t), intent(in) :: vardesc @@ -3139,11 +3140,11 @@ integer function put_vara_vdesc_5d_int (File,vardesc, start, count, ival) result integer(i4), intent(in) :: ival(:,:,:,:,:) ierr = 0 -# 727 "pio.F90.in" +# 728 "pio.F90.in" end function put_vara_vdesc_5d_int ! TYPE real,int,double -# 730 "pio.F90.in" +# 731 "pio.F90.in" subroutine read_darray_1d_real (File,varDesc, ioDesc, array, iostat) type (File_desc_t), intent(inout) :: & File ! file information @@ -3160,10 +3161,10 @@ subroutine read_darray_1d_real (File,varDesc, ioDesc, array, iostat) integer(i4), intent(out) :: iostat iostat = 0 -# 746 "pio.F90.in" +# 747 "pio.F90.in" end subroutine read_darray_1d_real ! TYPE real,int,double -# 730 "pio.F90.in" +# 731 "pio.F90.in" subroutine read_darray_1d_int (File,varDesc, ioDesc, array, iostat) type (File_desc_t), intent(inout) :: & File ! file information @@ -3180,10 +3181,10 @@ subroutine read_darray_1d_int (File,varDesc, ioDesc, array, iostat) integer(i4), intent(out) :: iostat iostat = 0 -# 746 "pio.F90.in" +# 747 "pio.F90.in" end subroutine read_darray_1d_int ! TYPE real,int,double -# 730 "pio.F90.in" +# 731 "pio.F90.in" subroutine read_darray_1d_double (File,varDesc, ioDesc, array, iostat) type (File_desc_t), intent(inout) :: & File ! file information @@ -3200,12 +3201,12 @@ subroutine read_darray_1d_double (File,varDesc, ioDesc, array, iostat) integer(i4), intent(out) :: iostat iostat = 0 -# 746 "pio.F90.in" +# 747 "pio.F90.in" end subroutine read_darray_1d_double ! TYPE real,int,double ! DIMS 2,3,4,5,6,7 -# 750 "pio.F90.in" +# 751 "pio.F90.in" subroutine read_darray_2d_real (File,varDesc,ioDesc, array, iostat) type (File_desc_t), intent(inout) :: & File ! file information @@ -3221,11 +3222,11 @@ subroutine read_darray_2d_real (File,varDesc,ioDesc, array, iostat) integer(i4), intent(out) :: iostat iostat = 0 -# 765 "pio.F90.in" +# 766 "pio.F90.in" end subroutine read_darray_2d_real ! TYPE real,int,double ! DIMS 2,3,4,5,6,7 -# 750 "pio.F90.in" +# 751 "pio.F90.in" subroutine read_darray_3d_real (File,varDesc,ioDesc, array, iostat) type (File_desc_t), intent(inout) :: & File ! file information @@ -3241,11 +3242,11 @@ subroutine read_darray_3d_real (File,varDesc,ioDesc, array, iostat) integer(i4), intent(out) :: iostat iostat = 0 -# 765 "pio.F90.in" +# 766 "pio.F90.in" end subroutine read_darray_3d_real ! TYPE real,int,double ! DIMS 2,3,4,5,6,7 -# 750 "pio.F90.in" +# 751 "pio.F90.in" subroutine read_darray_4d_real (File,varDesc,ioDesc, array, iostat) type (File_desc_t), intent(inout) :: & File ! file information @@ -3261,11 +3262,11 @@ subroutine read_darray_4d_real (File,varDesc,ioDesc, array, iostat) integer(i4), intent(out) :: iostat iostat = 0 -# 765 "pio.F90.in" +# 766 "pio.F90.in" end subroutine read_darray_4d_real ! TYPE real,int,double ! DIMS 2,3,4,5,6,7 -# 750 "pio.F90.in" +# 751 "pio.F90.in" subroutine read_darray_5d_real (File,varDesc,ioDesc, array, iostat) type (File_desc_t), intent(inout) :: & File ! file information @@ -3281,11 +3282,11 @@ subroutine read_darray_5d_real (File,varDesc,ioDesc, array, iostat) integer(i4), intent(out) :: iostat iostat = 0 -# 765 "pio.F90.in" +# 766 "pio.F90.in" end subroutine read_darray_5d_real ! TYPE real,int,double ! DIMS 2,3,4,5,6,7 -# 750 "pio.F90.in" +# 751 "pio.F90.in" subroutine read_darray_6d_real (File,varDesc,ioDesc, array, iostat) type (File_desc_t), intent(inout) :: & File ! file information @@ -3301,11 +3302,11 @@ subroutine read_darray_6d_real (File,varDesc,ioDesc, array, iostat) integer(i4), intent(out) :: iostat iostat = 0 -# 765 "pio.F90.in" +# 766 "pio.F90.in" end subroutine read_darray_6d_real ! TYPE real,int,double ! DIMS 2,3,4,5,6,7 -# 750 "pio.F90.in" +# 751 "pio.F90.in" subroutine read_darray_7d_real (File,varDesc,ioDesc, array, iostat) type (File_desc_t), intent(inout) :: & File ! file information @@ -3321,11 +3322,11 @@ subroutine read_darray_7d_real (File,varDesc,ioDesc, array, iostat) integer(i4), intent(out) :: iostat iostat = 0 -# 765 "pio.F90.in" +# 766 "pio.F90.in" end subroutine read_darray_7d_real ! TYPE real,int,double ! DIMS 2,3,4,5,6,7 -# 750 "pio.F90.in" +# 751 "pio.F90.in" subroutine read_darray_2d_int (File,varDesc,ioDesc, array, iostat) type (File_desc_t), intent(inout) :: & File ! file information @@ -3341,11 +3342,11 @@ subroutine read_darray_2d_int (File,varDesc,ioDesc, array, iostat) integer(i4), intent(out) :: iostat iostat = 0 -# 765 "pio.F90.in" +# 766 "pio.F90.in" end subroutine read_darray_2d_int ! TYPE real,int,double ! DIMS 2,3,4,5,6,7 -# 750 "pio.F90.in" +# 751 "pio.F90.in" subroutine read_darray_3d_int (File,varDesc,ioDesc, array, iostat) type (File_desc_t), intent(inout) :: & File ! file information @@ -3361,11 +3362,11 @@ subroutine read_darray_3d_int (File,varDesc,ioDesc, array, iostat) integer(i4), intent(out) :: iostat iostat = 0 -# 765 "pio.F90.in" +# 766 "pio.F90.in" end subroutine read_darray_3d_int ! TYPE real,int,double ! DIMS 2,3,4,5,6,7 -# 750 "pio.F90.in" +# 751 "pio.F90.in" subroutine read_darray_4d_int (File,varDesc,ioDesc, array, iostat) type (File_desc_t), intent(inout) :: & File ! file information @@ -3381,11 +3382,11 @@ subroutine read_darray_4d_int (File,varDesc,ioDesc, array, iostat) integer(i4), intent(out) :: iostat iostat = 0 -# 765 "pio.F90.in" +# 766 "pio.F90.in" end subroutine read_darray_4d_int ! TYPE real,int,double ! DIMS 2,3,4,5,6,7 -# 750 "pio.F90.in" +# 751 "pio.F90.in" subroutine read_darray_5d_int (File,varDesc,ioDesc, array, iostat) type (File_desc_t), intent(inout) :: & File ! file information @@ -3401,11 +3402,11 @@ subroutine read_darray_5d_int (File,varDesc,ioDesc, array, iostat) integer(i4), intent(out) :: iostat iostat = 0 -# 765 "pio.F90.in" +# 766 "pio.F90.in" end subroutine read_darray_5d_int ! TYPE real,int,double ! DIMS 2,3,4,5,6,7 -# 750 "pio.F90.in" +# 751 "pio.F90.in" subroutine read_darray_6d_int (File,varDesc,ioDesc, array, iostat) type (File_desc_t), intent(inout) :: & File ! file information @@ -3421,11 +3422,11 @@ subroutine read_darray_6d_int (File,varDesc,ioDesc, array, iostat) integer(i4), intent(out) :: iostat iostat = 0 -# 765 "pio.F90.in" +# 766 "pio.F90.in" end subroutine read_darray_6d_int ! TYPE real,int,double ! DIMS 2,3,4,5,6,7 -# 750 "pio.F90.in" +# 751 "pio.F90.in" subroutine read_darray_7d_int (File,varDesc,ioDesc, array, iostat) type (File_desc_t), intent(inout) :: & File ! file information @@ -3441,11 +3442,11 @@ subroutine read_darray_7d_int (File,varDesc,ioDesc, array, iostat) integer(i4), intent(out) :: iostat iostat = 0 -# 765 "pio.F90.in" +# 766 "pio.F90.in" end subroutine read_darray_7d_int ! TYPE real,int,double ! DIMS 2,3,4,5,6,7 -# 750 "pio.F90.in" +# 751 "pio.F90.in" subroutine read_darray_2d_double (File,varDesc,ioDesc, array, iostat) type (File_desc_t), intent(inout) :: & File ! file information @@ -3461,11 +3462,11 @@ subroutine read_darray_2d_double (File,varDesc,ioDesc, array, iostat) integer(i4), intent(out) :: iostat iostat = 0 -# 765 "pio.F90.in" +# 766 "pio.F90.in" end subroutine read_darray_2d_double ! TYPE real,int,double ! DIMS 2,3,4,5,6,7 -# 750 "pio.F90.in" +# 751 "pio.F90.in" subroutine read_darray_3d_double (File,varDesc,ioDesc, array, iostat) type (File_desc_t), intent(inout) :: & File ! file information @@ -3481,11 +3482,11 @@ subroutine read_darray_3d_double (File,varDesc,ioDesc, array, iostat) integer(i4), intent(out) :: iostat iostat = 0 -# 765 "pio.F90.in" +# 766 "pio.F90.in" end subroutine read_darray_3d_double ! TYPE real,int,double ! DIMS 2,3,4,5,6,7 -# 750 "pio.F90.in" +# 751 "pio.F90.in" subroutine read_darray_4d_double (File,varDesc,ioDesc, array, iostat) type (File_desc_t), intent(inout) :: & File ! file information @@ -3501,11 +3502,11 @@ subroutine read_darray_4d_double (File,varDesc,ioDesc, array, iostat) integer(i4), intent(out) :: iostat iostat = 0 -# 765 "pio.F90.in" +# 766 "pio.F90.in" end subroutine read_darray_4d_double ! TYPE real,int,double ! DIMS 2,3,4,5,6,7 -# 750 "pio.F90.in" +# 751 "pio.F90.in" subroutine read_darray_5d_double (File,varDesc,ioDesc, array, iostat) type (File_desc_t), intent(inout) :: & File ! file information @@ -3521,11 +3522,11 @@ subroutine read_darray_5d_double (File,varDesc,ioDesc, array, iostat) integer(i4), intent(out) :: iostat iostat = 0 -# 765 "pio.F90.in" +# 766 "pio.F90.in" end subroutine read_darray_5d_double ! TYPE real,int,double ! DIMS 2,3,4,5,6,7 -# 750 "pio.F90.in" +# 751 "pio.F90.in" subroutine read_darray_6d_double (File,varDesc,ioDesc, array, iostat) type (File_desc_t), intent(inout) :: & File ! file information @@ -3541,11 +3542,11 @@ subroutine read_darray_6d_double (File,varDesc,ioDesc, array, iostat) integer(i4), intent(out) :: iostat iostat = 0 -# 765 "pio.F90.in" +# 766 "pio.F90.in" end subroutine read_darray_6d_double ! TYPE real,int,double ! DIMS 2,3,4,5,6,7 -# 750 "pio.F90.in" +# 751 "pio.F90.in" subroutine read_darray_7d_double (File,varDesc,ioDesc, array, iostat) type (File_desc_t), intent(inout) :: & File ! file information @@ -3561,31 +3562,31 @@ subroutine read_darray_7d_double (File,varDesc,ioDesc, array, iostat) integer(i4), intent(out) :: iostat iostat = 0 -# 765 "pio.F90.in" +# 766 "pio.F90.in" end subroutine read_darray_7d_double -# 767 "pio.F90.in" +# 768 "pio.F90.in" subroutine setdebuglevel(level) integer(i4), intent(in) :: level -# 769 "pio.F90.in" +# 770 "pio.F90.in" end subroutine setdebuglevel -# 771 "pio.F90.in" +# 772 "pio.F90.in" subroutine seterrorhandlingf(file, method) type(file_desc_t), intent(inout) :: file integer, intent(in) :: method -# 774 "pio.F90.in" +# 775 "pio.F90.in" end subroutine seterrorhandlingf -# 776 "pio.F90.in" +# 777 "pio.F90.in" subroutine seterrorhandlingi(ios, method) type(iosystem_desc_t), intent(inout) :: ios integer, intent(in) :: method -# 779 "pio.F90.in" +# 780 "pio.F90.in" end subroutine seterrorhandlingi ! TYPE real,int,double -# 782 "pio.F90.in" +# 783 "pio.F90.in" subroutine write_darray_1d_real (File,varDesc,ioDesc, array, iostat, fillval) type (File_desc_t), intent(inout) :: & File ! file information @@ -3604,10 +3605,10 @@ subroutine write_darray_1d_real (File,varDesc,ioDesc, array, iostat, fillval) integer(i4), intent(out) :: iostat iostat = 0 -# 800 "pio.F90.in" +# 801 "pio.F90.in" end subroutine write_darray_1d_real ! TYPE real,int,double -# 782 "pio.F90.in" +# 783 "pio.F90.in" subroutine write_darray_1d_int (File,varDesc,ioDesc, array, iostat, fillval) type (File_desc_t), intent(inout) :: & File ! file information @@ -3626,10 +3627,10 @@ subroutine write_darray_1d_int (File,varDesc,ioDesc, array, iostat, fillval) integer(i4), intent(out) :: iostat iostat = 0 -# 800 "pio.F90.in" +# 801 "pio.F90.in" end subroutine write_darray_1d_int ! TYPE real,int,double -# 782 "pio.F90.in" +# 783 "pio.F90.in" subroutine write_darray_1d_double (File,varDesc,ioDesc, array, iostat, fillval) type (File_desc_t), intent(inout) :: & File ! file information @@ -3648,12 +3649,12 @@ subroutine write_darray_1d_double (File,varDesc,ioDesc, array, iostat, fillval) integer(i4), intent(out) :: iostat iostat = 0 -# 800 "pio.F90.in" +# 801 "pio.F90.in" end subroutine write_darray_1d_double ! TYPE real,int,double ! DIMS 2,3,4,5,6,7 -# 804 "pio.F90.in" +# 805 "pio.F90.in" subroutine write_darray_2d_real (File,varDesc,ioDesc, array, iostat, fillval) type (File_desc_t), intent(inout) :: & File ! file information @@ -3672,11 +3673,11 @@ subroutine write_darray_2d_real (File,varDesc,ioDesc, array, iostat, fillval) integer(i4), intent(out) :: iostat iostat = 0 -# 822 "pio.F90.in" +# 823 "pio.F90.in" end subroutine write_darray_2d_real ! TYPE real,int,double ! DIMS 2,3,4,5,6,7 -# 804 "pio.F90.in" +# 805 "pio.F90.in" subroutine write_darray_3d_real (File,varDesc,ioDesc, array, iostat, fillval) type (File_desc_t), intent(inout) :: & File ! file information @@ -3695,11 +3696,11 @@ subroutine write_darray_3d_real (File,varDesc,ioDesc, array, iostat, fillval) integer(i4), intent(out) :: iostat iostat = 0 -# 822 "pio.F90.in" +# 823 "pio.F90.in" end subroutine write_darray_3d_real ! TYPE real,int,double ! DIMS 2,3,4,5,6,7 -# 804 "pio.F90.in" +# 805 "pio.F90.in" subroutine write_darray_4d_real (File,varDesc,ioDesc, array, iostat, fillval) type (File_desc_t), intent(inout) :: & File ! file information @@ -3718,11 +3719,11 @@ subroutine write_darray_4d_real (File,varDesc,ioDesc, array, iostat, fillval) integer(i4), intent(out) :: iostat iostat = 0 -# 822 "pio.F90.in" +# 823 "pio.F90.in" end subroutine write_darray_4d_real ! TYPE real,int,double ! DIMS 2,3,4,5,6,7 -# 804 "pio.F90.in" +# 805 "pio.F90.in" subroutine write_darray_5d_real (File,varDesc,ioDesc, array, iostat, fillval) type (File_desc_t), intent(inout) :: & File ! file information @@ -3741,11 +3742,11 @@ subroutine write_darray_5d_real (File,varDesc,ioDesc, array, iostat, fillval) integer(i4), intent(out) :: iostat iostat = 0 -# 822 "pio.F90.in" +# 823 "pio.F90.in" end subroutine write_darray_5d_real ! TYPE real,int,double ! DIMS 2,3,4,5,6,7 -# 804 "pio.F90.in" +# 805 "pio.F90.in" subroutine write_darray_6d_real (File,varDesc,ioDesc, array, iostat, fillval) type (File_desc_t), intent(inout) :: & File ! file information @@ -3764,11 +3765,11 @@ subroutine write_darray_6d_real (File,varDesc,ioDesc, array, iostat, fillval) integer(i4), intent(out) :: iostat iostat = 0 -# 822 "pio.F90.in" +# 823 "pio.F90.in" end subroutine write_darray_6d_real ! TYPE real,int,double ! DIMS 2,3,4,5,6,7 -# 804 "pio.F90.in" +# 805 "pio.F90.in" subroutine write_darray_7d_real (File,varDesc,ioDesc, array, iostat, fillval) type (File_desc_t), intent(inout) :: & File ! file information @@ -3787,11 +3788,11 @@ subroutine write_darray_7d_real (File,varDesc,ioDesc, array, iostat, fillval) integer(i4), intent(out) :: iostat iostat = 0 -# 822 "pio.F90.in" +# 823 "pio.F90.in" end subroutine write_darray_7d_real ! TYPE real,int,double ! DIMS 2,3,4,5,6,7 -# 804 "pio.F90.in" +# 805 "pio.F90.in" subroutine write_darray_2d_int (File,varDesc,ioDesc, array, iostat, fillval) type (File_desc_t), intent(inout) :: & File ! file information @@ -3810,11 +3811,11 @@ subroutine write_darray_2d_int (File,varDesc,ioDesc, array, iostat, fillval) integer(i4), intent(out) :: iostat iostat = 0 -# 822 "pio.F90.in" +# 823 "pio.F90.in" end subroutine write_darray_2d_int ! TYPE real,int,double ! DIMS 2,3,4,5,6,7 -# 804 "pio.F90.in" +# 805 "pio.F90.in" subroutine write_darray_3d_int (File,varDesc,ioDesc, array, iostat, fillval) type (File_desc_t), intent(inout) :: & File ! file information @@ -3833,11 +3834,11 @@ subroutine write_darray_3d_int (File,varDesc,ioDesc, array, iostat, fillval) integer(i4), intent(out) :: iostat iostat = 0 -# 822 "pio.F90.in" +# 823 "pio.F90.in" end subroutine write_darray_3d_int ! TYPE real,int,double ! DIMS 2,3,4,5,6,7 -# 804 "pio.F90.in" +# 805 "pio.F90.in" subroutine write_darray_4d_int (File,varDesc,ioDesc, array, iostat, fillval) type (File_desc_t), intent(inout) :: & File ! file information @@ -3856,11 +3857,11 @@ subroutine write_darray_4d_int (File,varDesc,ioDesc, array, iostat, fillval) integer(i4), intent(out) :: iostat iostat = 0 -# 822 "pio.F90.in" +# 823 "pio.F90.in" end subroutine write_darray_4d_int ! TYPE real,int,double ! DIMS 2,3,4,5,6,7 -# 804 "pio.F90.in" +# 805 "pio.F90.in" subroutine write_darray_5d_int (File,varDesc,ioDesc, array, iostat, fillval) type (File_desc_t), intent(inout) :: & File ! file information @@ -3879,11 +3880,11 @@ subroutine write_darray_5d_int (File,varDesc,ioDesc, array, iostat, fillval) integer(i4), intent(out) :: iostat iostat = 0 -# 822 "pio.F90.in" +# 823 "pio.F90.in" end subroutine write_darray_5d_int ! TYPE real,int,double ! DIMS 2,3,4,5,6,7 -# 804 "pio.F90.in" +# 805 "pio.F90.in" subroutine write_darray_6d_int (File,varDesc,ioDesc, array, iostat, fillval) type (File_desc_t), intent(inout) :: & File ! file information @@ -3902,11 +3903,11 @@ subroutine write_darray_6d_int (File,varDesc,ioDesc, array, iostat, fillval) integer(i4), intent(out) :: iostat iostat = 0 -# 822 "pio.F90.in" +# 823 "pio.F90.in" end subroutine write_darray_6d_int ! TYPE real,int,double ! DIMS 2,3,4,5,6,7 -# 804 "pio.F90.in" +# 805 "pio.F90.in" subroutine write_darray_7d_int (File,varDesc,ioDesc, array, iostat, fillval) type (File_desc_t), intent(inout) :: & File ! file information @@ -3925,11 +3926,11 @@ subroutine write_darray_7d_int (File,varDesc,ioDesc, array, iostat, fillval) integer(i4), intent(out) :: iostat iostat = 0 -# 822 "pio.F90.in" +# 823 "pio.F90.in" end subroutine write_darray_7d_int ! TYPE real,int,double ! DIMS 2,3,4,5,6,7 -# 804 "pio.F90.in" +# 805 "pio.F90.in" subroutine write_darray_2d_double (File,varDesc,ioDesc, array, iostat, fillval) type (File_desc_t), intent(inout) :: & File ! file information @@ -3948,11 +3949,11 @@ subroutine write_darray_2d_double (File,varDesc,ioDesc, array, iostat, fillval) integer(i4), intent(out) :: iostat iostat = 0 -# 822 "pio.F90.in" +# 823 "pio.F90.in" end subroutine write_darray_2d_double ! TYPE real,int,double ! DIMS 2,3,4,5,6,7 -# 804 "pio.F90.in" +# 805 "pio.F90.in" subroutine write_darray_3d_double (File,varDesc,ioDesc, array, iostat, fillval) type (File_desc_t), intent(inout) :: & File ! file information @@ -3971,11 +3972,11 @@ subroutine write_darray_3d_double (File,varDesc,ioDesc, array, iostat, fillval) integer(i4), intent(out) :: iostat iostat = 0 -# 822 "pio.F90.in" +# 823 "pio.F90.in" end subroutine write_darray_3d_double ! TYPE real,int,double ! DIMS 2,3,4,5,6,7 -# 804 "pio.F90.in" +# 805 "pio.F90.in" subroutine write_darray_4d_double (File,varDesc,ioDesc, array, iostat, fillval) type (File_desc_t), intent(inout) :: & File ! file information @@ -3994,11 +3995,11 @@ subroutine write_darray_4d_double (File,varDesc,ioDesc, array, iostat, fillval) integer(i4), intent(out) :: iostat iostat = 0 -# 822 "pio.F90.in" +# 823 "pio.F90.in" end subroutine write_darray_4d_double ! TYPE real,int,double ! DIMS 2,3,4,5,6,7 -# 804 "pio.F90.in" +# 805 "pio.F90.in" subroutine write_darray_5d_double (File,varDesc,ioDesc, array, iostat, fillval) type (File_desc_t), intent(inout) :: & File ! file information @@ -4017,11 +4018,11 @@ subroutine write_darray_5d_double (File,varDesc,ioDesc, array, iostat, fillval) integer(i4), intent(out) :: iostat iostat = 0 -# 822 "pio.F90.in" +# 823 "pio.F90.in" end subroutine write_darray_5d_double ! TYPE real,int,double ! DIMS 2,3,4,5,6,7 -# 804 "pio.F90.in" +# 805 "pio.F90.in" subroutine write_darray_6d_double (File,varDesc,ioDesc, array, iostat, fillval) type (File_desc_t), intent(inout) :: & File ! file information @@ -4040,11 +4041,11 @@ subroutine write_darray_6d_double (File,varDesc,ioDesc, array, iostat, fillval) integer(i4), intent(out) :: iostat iostat = 0 -# 822 "pio.F90.in" +# 823 "pio.F90.in" end subroutine write_darray_6d_double ! TYPE real,int,double ! DIMS 2,3,4,5,6,7 -# 804 "pio.F90.in" +# 805 "pio.F90.in" subroutine write_darray_7d_double (File,varDesc,ioDesc, array, iostat, fillval) type (File_desc_t), intent(inout) :: & File ! file information @@ -4063,7 +4064,7 @@ subroutine write_darray_7d_double (File,varDesc,ioDesc, array, iostat, fillval) integer(i4), intent(out) :: iostat iostat = 0 -# 822 "pio.F90.in" +# 823 "pio.F90.in" end subroutine write_darray_7d_double end module pio diff --git a/share/csm_share/unit_test_stubs/pio/pio.F90.in b/share/csm_share/unit_test_stubs/pio/pio.F90.in index 3d91f608289e..a332d045b80d 100644 --- a/share/csm_share/unit_test_stubs/pio/pio.F90.in +++ b/share/csm_share/unit_test_stubs/pio/pio.F90.in @@ -64,6 +64,7 @@ module pio integer, parameter, public :: pio_offset = MPI_OFFSET_KIND integer, parameter, public :: pio_offset_kind = pio_offset integer, parameter, public :: pio_rearr_subset = 0 + integer, parameter, public :: pio_rearr_box = 1 integer, parameter, public :: PIO_WRITE = 0 public :: PIO_def_dim From fd14d23aca0d650d980f00d203abe23fa9e60185 Mon Sep 17 00:00:00 2001 From: Jim Edwards Date: Tue, 12 Jan 2016 15:49:32 -0700 Subject: [PATCH 10/17] align cime with latest pio, including fixes for alpha05a testing --- share/csm_share/shr/shr_pio_mod.F90 | 31 ++++++++++------------------- 1 file changed, 11 insertions(+), 20 deletions(-) diff --git a/share/csm_share/shr/shr_pio_mod.F90 b/share/csm_share/shr/shr_pio_mod.F90 index 781fecc7feae..791d875c078c 100644 --- a/share/csm_share/shr/shr_pio_mod.F90 +++ b/share/csm_share/shr/shr_pio_mod.F90 @@ -521,23 +521,16 @@ subroutine shr_pio_read_component_namelist(nlfilename, Comm, pio_stride, pio_roo call shr_pio_getiotypefromname(pio_typename, pio_iotype, pio_default_iotype) - - if(pio_stride== -99) pio_stride = pio_default_stride - if(pio_root == -99) pio_root = pio_default_root - if(pio_rearranger == -99) pio_rearranger = pio_default_rearranger - if(pio_numiotasks == -99) then -#if defined(BGP) || defined(BGL) - if(pio_default_numiotasks < 0 ) then - pio_numiotasks = pio_default_numiotasks - else - pio_numiotasks = min(pio_default_numiotasks,npes/pio_stride) - end if -#else - pio_numiotasks = min(pio_default_numiotasks,npes/pio_stride) -#endif - endif + end if + if(pio_stride== -99) pio_stride = pio_default_stride + if(pio_root == -99) pio_root = pio_default_root + if(pio_rearranger == -99) pio_rearranger = pio_default_rearranger + if(pio_numiotasks == -99) then + pio_numiotasks = min(pio_default_numiotasks,npes/pio_stride) endif - end if + endif + + call shr_pio_namelist_set(npes, Comm, pio_stride, pio_root, pio_numiotasks, pio_iotype, & iamroot, pio_rearranger) @@ -594,6 +587,7 @@ subroutine shr_pio_namelist_set(npes,mycomm, pio_stride, pio_root, pio_numiotask endif pio_root = min(pio_root,npes-1) +! If you are asking for parallel IO then you should use at least two io pes if(npes > 1 .and. pio_stride>= npes .and. & (pio_iotype .eq. PIO_IOTYPE_PNETCDF .or. & pio_iotype .eq. PIO_IOTYPE_NETCDF4P)) then @@ -608,7 +602,7 @@ subroutine shr_pio_namelist_set(npes,mycomm, pio_stride, pio_root, pio_numiotask else if(pio_numiotasks>0 .and. pio_stride<0) then pio_stride = npes/pio_numiotasks else if(pio_numiotasks<0 .and. pio_stride<0) then - pio_stride = 4 + pio_stride = npes/4 pio_numiotasks = npes/pio_stride pio_numiotasks = max(1, pio_numiotasks) end if @@ -642,9 +636,6 @@ subroutine shr_pio_namelist_set(npes,mycomm, pio_stride, pio_root, pio_numiotask pio_stride,pio_numiotasks, pio_root end if end if -#if defined(BGP) || defined(BGL) - end if -#endif end subroutine shr_pio_namelist_set From 1e997171387f196b71ccfb6ab0529d7eadda2665 Mon Sep 17 00:00:00 2001 From: Jim Edwards Date: Tue, 12 Jan 2016 16:28:59 -0700 Subject: [PATCH 11/17] get the option set correctly --- share/csm_share/shr/shr_pio_mod.F90 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/share/csm_share/shr/shr_pio_mod.F90 b/share/csm_share/shr/shr_pio_mod.F90 index 791d875c078c..ec1b7c2ea35a 100644 --- a/share/csm_share/shr/shr_pio_mod.F90 +++ b/share/csm_share/shr/shr_pio_mod.F90 @@ -588,10 +588,10 @@ subroutine shr_pio_namelist_set(npes,mycomm, pio_stride, pio_root, pio_numiotask pio_root = min(pio_root,npes-1) ! If you are asking for parallel IO then you should use at least two io pes - if(npes > 1 .and. pio_stride>= npes .and. & + if(npes > 1 .and. pio_numiotasks == 1 .and. & (pio_iotype .eq. PIO_IOTYPE_PNETCDF .or. & pio_iotype .eq. PIO_IOTYPE_NETCDF4P)) then - pio_stride = pio_stride/2 + pio_numiotasks = 2 endif !-------------------------------------------------------------------------- From 78dc1e57794d38b316c389d14c1eb03d46e27fd7 Mon Sep 17 00:00:00 2001 From: Jim Edwards Date: Fri, 15 Jan 2016 07:06:06 -0700 Subject: [PATCH 12/17] Fix gnu mpi-serial compiler error and mpi-serial pio defaults Fixes a problem found with the gnu compile in mpi-serial and a pio parameter was out of bounds for serial build. Test suite: SMS_Mmpi-serial.f19_g16.X.yellowstone_gnu Test baseline: Test namelist changes: Test status: bit for bit Fixes: Code review: --- share/csm_share/shr/shr_pio_mod.F90 | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/share/csm_share/shr/shr_pio_mod.F90 b/share/csm_share/shr/shr_pio_mod.F90 index ec1b7c2ea35a..4a91493b1834 100644 --- a/share/csm_share/shr/shr_pio_mod.F90 +++ b/share/csm_share/shr/shr_pio_mod.F90 @@ -598,13 +598,12 @@ subroutine shr_pio_namelist_set(npes,mycomm, pio_stride, pio_root, pio_numiotask ! check/set/correct io pio parameters !-------------------------------------------------------------------------- if (pio_stride>0.and.pio_numiotasks<0) then - pio_numiotasks = npes/pio_stride + pio_numiotasks = max(1,npes/pio_stride) else if(pio_numiotasks>0 .and. pio_stride<0) then - pio_stride = npes/pio_numiotasks + pio_stride = max(1,npes/pio_numiotasks) else if(pio_numiotasks<0 .and. pio_stride<0) then - pio_stride = npes/4 - pio_numiotasks = npes/pio_stride - pio_numiotasks = max(1, pio_numiotasks) + pio_stride = max(1,npes/4) + pio_numiotasks = max(1,npes/pio_stride) end if if(pio_stride == 1) then pio_root = 0 From 953e6cd1a2722b57aaa930fb717b07d697d67d58 Mon Sep 17 00:00:00 2001 From: Jim Edwards Date: Fri, 15 Jan 2016 15:49:12 -0700 Subject: [PATCH 13/17] changes so that PIO_REARRANGER setting works --- share/csm_share/shr/shr_pio_mod.F90 | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/share/csm_share/shr/shr_pio_mod.F90 b/share/csm_share/shr/shr_pio_mod.F90 index 4a91493b1834..d09f8a49232f 100644 --- a/share/csm_share/shr/shr_pio_mod.F90 +++ b/share/csm_share/shr/shr_pio_mod.F90 @@ -609,7 +609,10 @@ subroutine shr_pio_namelist_set(npes,mycomm, pio_stride, pio_root, pio_numiotask pio_root = 0 endif if(pio_rearranger .ne. PIO_REARR_SUBSET .and. pio_rearranger .ne. PIO_REARR_BOX) then - call shr_sys_abort( subname//':: pio_rearranger setting not defined') + write(shr_log_unit,*) 'pio_rearranger value, ',pio_rearranger,& + ', not supported - using PIO_REARR_BOX' + pio_rearranger = PIO_REARR_BOX + endif From d4ffb0afdcc61ea2e2c4ffcdf3811e48bd3520a6 Mon Sep 17 00:00:00 2001 From: apcraig Date: Fri, 29 Jan 2016 15:01:27 -0700 Subject: [PATCH 14/17] update cime for pop single column and strm4d capabilities. --- share/csm_share/shr/shr_dmodel_mod.F90 | 193 ++++++++++++++++++++---- share/csm_share/shr/shr_ncread_mod.F90 | 193 +++++++++++++++++++++++- share/csm_share/shr/shr_scam_mod.F90 | 4 +- share/csm_share/shr/shr_strdata_mod.F90 | 158 ++++++++++++++----- share/csm_share/shr/shr_stream_mod.F90 | 36 ++++- 5 files changed, 504 insertions(+), 80 deletions(-) diff --git a/share/csm_share/shr/shr_dmodel_mod.F90 b/share/csm_share/shr/shr_dmodel_mod.F90 index 7eefbcd39c4b..d048361cd12e 100644 --- a/share/csm_share/shr/shr_dmodel_mod.F90 +++ b/share/csm_share/shr/shr_dmodel_mod.F90 @@ -32,9 +32,14 @@ module shr_dmodel_mod public :: shr_dmodel_translate_list public :: shr_dmodel_rearrGGrid + interface shr_dmodel_gsmapCreate; module procedure & + shr_dmodel_gsmapCreate_gsize, & + shr_dmodel_gsmapCreate_nxnynz + end interface + interface shr_dmodel_mapSet; module procedure & +! shr_dmodel_mapSet_dest, & shr_dmodel_mapSet_global -! shr_dmodel_mapSet_dest end interface integer(IN),parameter,public :: shr_dmodel_gGridCompareXYabs = 1 ! X,Y relative error @@ -66,7 +71,8 @@ module shr_dmodel_mod !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !=============================================================================== -subroutine shr_dmodel_gsmapCreate(gsmap,gsize,compid,mpicom,decomp) +!=============================================================================== +subroutine shr_dmodel_gsmapCreate_gsize(gsmap,gsize,compid,mpicom,decomp) implicit none @@ -82,9 +88,9 @@ subroutine shr_dmodel_gsmapCreate(gsmap,gsize,compid,mpicom,decomp) integer(IN), pointer :: start(:) ! for gsmap initialization integer(IN), pointer :: length(:) ! for gsmap initialization integer(IN), pointer :: pe_loc(:) ! for gsmap initialization - character(*), parameter :: subname = '(shr_dmodel_gsmapCreate) ' - character(*), parameter :: F00 = "('(shr_dmodel_gsmapCreate) ',8a)" - character(*), parameter :: F01 = "('(shr_dmodel_gsmapCreate) ',a,5i8)" + character(*), parameter :: subname = '(shr_dmodel_gsmapCreate_gsize) ' + character(*), parameter :: F00 = "('(shr_dmodel_gsmapCreate_gsize) ',8a)" + character(*), parameter :: F01 = "('(shr_dmodel_gsmapCreate_gsize) ',a,5i8)" ! --------------------------------------------- @@ -116,18 +122,92 @@ subroutine shr_dmodel_gsmapCreate(gsmap,gsize,compid,mpicom,decomp) deallocate(start,length,pe_loc) endif -end subroutine shr_dmodel_gsmapCreate +end subroutine shr_dmodel_gsmapCreate_gsize +!=============================================================================== +subroutine shr_dmodel_gsmapCreate_nxnynz(gsmap,nxg,nyg,nzg,compid,mpicom,decomp) + + implicit none + + type(mct_gsMap), intent(inout) :: gsmap + integer(IN) , intent(in) :: nxg,nyg,nzg + integer(IN) , intent(in) :: compid + integer(IN) , intent(in) :: mpicom + character(len=*),intent(in) :: decomp + + ! local + + integer(IN) :: n,nz,nb,npes,ierr,gsize,dsize,ngseg,lnzg + integer(IN), pointer :: start(:) ! for gsmap initialization + integer(IN), pointer :: length(:) ! for gsmap initialization + integer(IN), pointer :: pe_loc(:) ! for gsmap initialization + character(*), parameter :: subname = '(shr_dmodel_gsmapCreate_nxnynz) ' + character(*), parameter :: F00 = "('(shr_dmodel_gsmapCreate_nxnynz) ',8a)" + character(*), parameter :: F01 = "('(shr_dmodel_gsmapCreate_nxnynz) ',a,5i8)" + + ! --------------------------------------------- + + gsize = abs(nxg*nyg*nzg) + dsize = nxg*nyg + lnzg = 1 + if (nzg > 1) lnzg = nzg ! check for 3d + + if (gsize > 0) then + call mpi_comm_size(mpicom,npes,ierr) + + !--- 1d decomp of 2d grid plus 3rd dim if exists --- + if (trim(decomp) == '2d1d') then + ngseg = npes*lnzg + allocate(start(ngseg),length(ngseg),pe_loc(ngseg)) + start = 0 + length = 0 + pe_loc = 0 + do n = 1,npes + length(n) = dsize/npes + if (n <= mod(dsize,npes)) length(n) = length(n) + 1 + if (n == 1) then + start(n) = 1 + else + start(n) = start(n-1) + length(n-1) + endif + pe_loc(n) = n-1 + do nz = 2,lnzg + nb = (nz-1)*npes + n + start(nb) = start(n) + (nz-1)*dsize + length(nb) = length(n) + pe_loc(nb) = pe_loc(n) + enddo + enddo + + !--- all data on root --- + elseif (trim(decomp) == 'root') then + ngseg = 1 + allocate(start(ngseg),length(ngseg),pe_loc(ngseg)) + start(1) = 1 + length(1) = gsize + pe_loc(1) = 0 + + else + write(logunit,F00) ' ERROR: decomp not allowed, ',trim(decomp) + call shr_sys_abort(subname//' ERROR decomp') + endif + + call mct_gsMap_init( gsMap, COMPID, ngseg, gsize, start, length, pe_loc) + deallocate(start,length,pe_loc) + endif + +end subroutine shr_dmodel_gsmapCreate_nxnynz !=============================================================================== -subroutine shr_dmodel_readgrid( gGrid, gsMap, nxgo, nygo, filename, compid, mpicom, & - decomp, lonname, latname, maskname, areaname, fracname, readfrac, & +subroutine shr_dmodel_readgrid( gGrid, gsMap, nxgo, nygo, nzgo, filename, compid, mpicom, & + decomp, lonname, latname, hgtname, maskname, areaname, fracname, readfrac, & scmmode, scmlon, scmlat) use seq_flds_mod, only : seq_flds_dom_coord, seq_flds_dom_other use shr_file_mod, only : shr_file_noprefix, shr_file_queryprefix, shr_file_get use shr_string_mod, only : shr_string_lastindex use shr_ncread_mod, only : shr_ncread_domain, shr_ncread_vardimsizes, & - shr_ncread_varexists, shr_ncread_vardimnum + shr_ncread_varexists, shr_ncread_vardimnum, & + shr_ncread_field4dG implicit none !----- arguments ----- @@ -135,12 +215,14 @@ subroutine shr_dmodel_readgrid( gGrid, gsMap, nxgo, nygo, filename, compid, mpic type(mct_gsMap), intent(inout) :: gsMap integer(IN) , intent(out) :: nxgo integer(IN) , intent(out) :: nygo + integer(IN) , intent(out) :: nzgo character(len=*),intent(in) :: filename integer(IN) , intent(in) :: compid integer(IN) , intent(in) :: mpicom character(len=*),optional,intent(in) :: decomp ! decomp strategy for gsmap character(len=*),optional,intent(in) :: lonname ! name of lon variable in file character(len=*),optional,intent(in) :: latname ! name of lat variable in file + character(len=*),optional,intent(in) :: hgtname ! name of hgt variable in file character(len=*),optional,intent(in) :: maskname ! name of mask variable in file character(len=*),optional,intent(in) :: areaname ! name of area variable in file character(len=*),optional,intent(in) :: fracname ! name of frac variable in file @@ -161,16 +243,17 @@ subroutine shr_dmodel_readgrid( gGrid, gsMap, nxgo, nygo, filename, compid, mpic character(CL) :: localFn ! file name to be opened (possibly a local copy) character(CS) :: prefix ! file prefix character(CS) :: ldecomp ! decomp strategy - character(CS) :: llatname ! name of lat variable character(CS) :: llonname ! name of lon variable + character(CS) :: llatname ! name of lat variable + character(CS) :: lhgtname ! name of hgt variable character(CS) :: lmaskname ! name of mask variable character(CS) :: lareaname ! name of area variable character(CS) :: lfracname ! name of area variable logical :: lreadfrac ! read fraction logical :: maskexists ! is mask on dataset - integer(IN) :: nxg,nyg ! size of input fields + integer(IN) :: nxg,nyg,nzg ! size of input fields integer(IN) :: ndims ! number of dims - integer(IN) :: nlon,nlat,narea,nmask,nfrac + integer(IN) :: nlon,nlat,narea,nmask,nfrac,nhgt logical :: lscmmode ! local scm mode real(R8) :: dist,mind ! scmmode point search integer(IN) :: ni,nj ! scmmode point search @@ -181,6 +264,8 @@ subroutine shr_dmodel_readgrid( gGrid, gsMap, nxgo, nygo, filename, compid, mpic integer(IN),allocatable :: mask(:,:) ! temp array for domain mask info real (R8),allocatable :: area(:,:) ! temp array for domain area info real (R8),allocatable :: frac(:,:) ! temp array for domain frac info + real (R8),allocatable :: hgt(:) ! temp array for domain height info + real (R8),allocatable :: a4d(:,:,:,:) ! temp array for reading generic stuff integer(IN), pointer :: idata(:) ! temporary type(mct_ggrid) :: gGridRoot ! global mct ggrid @@ -237,9 +322,10 @@ subroutine shr_dmodel_readgrid( gGrid, gsMap, nxgo, nygo, filename, compid, mpic endif lreadfrac = .false. - ldecomp = "1d" + ldecomp = "2d1d" llonname = "xc" ! default values / standard data model domain file format llatname = "yc" + lhgtname = "hgt" lmaskname = "mask" lareaname = "area" lfracname = "frac" @@ -247,6 +333,7 @@ subroutine shr_dmodel_readgrid( gGrid, gsMap, nxgo, nygo, filename, compid, mpic if (present(readfrac)) lreadfrac = readfrac if (present( lonname)) llonname = lonname if (present( latname)) llatname = latname + if (present( hgtname)) lhgtname = hgtname if (present(maskname)) lmaskname = maskname if (present(areaname)) lareaname = areaname if (present(fracname)) lfracname = fracname @@ -268,21 +355,29 @@ subroutine shr_dmodel_readgrid( gGrid, gsMap, nxgo, nygo, filename, compid, mpic call shr_ncread_varDimSizes(localFn,llonName,nxg,nyg) endif endif + if (shr_ncread_varexists(localFn,lhgtName)) then + call shr_ncread_varDimSizes(localFn,lhgtname,nzg) + else + nzg = -1 + endif endif call shr_mpi_bcast(nxg,mpicom) call shr_mpi_bcast(nyg,mpicom) + call shr_mpi_bcast(nzg,mpicom) if (lscmmode) then nxgo = 1 nygo = 1 + nzgo = -1 gsize = 1 else nxgo = nxg nygo = nyg - gsize = nxg*nyg + nzgo = nzg + gsize = abs(nxg*nyg*nzg) if (gsize < 1) return endif - call shr_dmodel_gsmapCreate(gsMap,gsize,compid,mpicom,trim(ldecomp)) + call shr_dmodel_gsmapCreate(gsMap,nxgo,nygo,nzgo,compid,mpicom,trim(ldecomp)) lsize = mct_gsMap_lsize(gsMap, mpicom) call mct_gGrid_init( GGrid=gGrid, CoordChars=trim(seq_flds_dom_coord), & OtherChars=trim(seq_flds_dom_other), lsize=lsize ) @@ -306,6 +401,7 @@ subroutine shr_dmodel_readgrid( gGrid, gsMap, nxgo, nygo, filename, compid, mpic allocate(area(nxg,nyg)) allocate(mask(nxg,nyg)) allocate(frac(nxg,nyg)) + allocate(hgt(abs(nzg))) if (.not.maskexists) then call shr_ncread_domain(localFn,llonName,lon,llatName,lat) @@ -327,6 +423,15 @@ subroutine shr_dmodel_readgrid( gGrid, gsMap, nxgo, nygo, filename, compid, mpic endif endif + if (nzg > 1) then + allocate(a4d(nzg,1,1,1)) + call shr_ncread_field4dG(localFn,hgtName,rfld=a4d) + hgt(:) = a4d(:,1,1,1) + deallocate(a4d) + else + hgt = 1 + endif + call mct_gGrid_init(gGridRoot,gGrid,gsize) ! initialize gGridRoot to avoid errors when using strict compiler checks @@ -337,6 +442,7 @@ subroutine shr_dmodel_readgrid( gGrid, gsMap, nxgo, nygo, filename, compid, mpic narea = mct_aVect_indexRA(gGridRoot%data,'area') nmask = mct_aVect_indexRA(gGridRoot%data,'mask') nfrac = mct_aVect_indexRA(gGridRoot%data,'frac') + nhgt = mct_aVect_indexRA(gGridRoot%data,'hgt') if (lscmmode) then !--- assumes regular 2d grid for compatability with shr_scam_getCloseLatLon --- @@ -373,8 +479,10 @@ subroutine shr_dmodel_readgrid( gGrid, gsMap, nxgo, nygo, filename, compid, mpic gGridRoot%data%rAttr(narea,n) = area(i,j) gGridRoot%data%rAttr(nmask,n) = real(mask(i,j),R8) gGridRoot%data%rAttr(nfrac,n) = frac(i,j) + gGridRoot%data%rAttr(nhgt, n) = 1 else - n=0 + n=0 + do k=1,abs(nzg) do j=1,nyg do i=1,nxg n=n+1 @@ -383,14 +491,20 @@ subroutine shr_dmodel_readgrid( gGrid, gsMap, nxgo, nygo, filename, compid, mpic gGridRoot%data%rAttr(narea,n) = area(i,j) gGridRoot%data%rAttr(nmask,n) = real(mask(i,j),R8) gGridRoot%data%rAttr(nfrac,n) = frac(i,j) + gGridRoot%data%rAttr(nhgt ,n) = hgt(k) + enddo enddo enddo endif + endif + + if (my_task == master_task) then deallocate(lon) deallocate(lat) deallocate(area) deallocate(mask) deallocate(frac) + deallocate(hgt) endif call mct_gGrid_scatter(gGridRoot, gGrid, gsMap, master_task, mpicom) @@ -575,7 +689,8 @@ subroutine shr_dmodel_readstrm(stream, pio_subsystem, pio_iotype, pio_iodesc, gs use shr_file_mod, only : shr_file_noprefix, shr_file_queryprefix, shr_file_get use shr_stream_mod - use shr_ncread_mod + use shr_ncread_mod, only: shr_ncread_open, shr_ncread_close, shr_ncread_varDimSizes, & + shr_ncread_tField implicit none !----- arguments ----- @@ -597,11 +712,13 @@ subroutine shr_dmodel_readstrm(stream, pio_subsystem, pio_iotype, pio_iodesc, gs integer(IN) :: ierr logical :: localCopy,fileexists type(mct_avect) :: avG - integer(IN) :: gsize,nx,ny + integer(IN) :: gsize,nx,ny,nz integer(IN) :: k integer(IN) :: fid integer(IN) :: rCode ! return code - real(R8),allocatable :: data(:,:) + real(R8),allocatable :: data2d(:,:) + real(R8),allocatable :: data3d(:,:,:) + logical :: d3dflag character(CL) :: fileName character(CL) :: sfldName type(mct_avect) :: avtmp @@ -656,21 +773,35 @@ subroutine shr_dmodel_readstrm(stream, pio_subsystem, pio_iotype, pio_iodesc, gs call t_startf(trim(lstr)//'_readcdf') if (my_task == master_task) then - call shr_ncread_varDimSizes(trim(fileName),trim(sfldName),nx,ny) - if (gsize /= nx*ny) then - write(logunit,F01) "ERROR in data sizes ",nx,ny,gsize + call shr_ncread_varDimSizes(trim(fileName),trim(sfldName),nx,ny,nz) + if (gsize == nx*ny) then + d3dflag = .false. + allocate(data2d(nx,ny)) + elseif (gsize == nx*ny*nz) then + d3dflag = .true. + allocate(data3d(nx,ny,nz)) + else + write(logunit,F01) "ERROR in data sizes ",nx,ny,nz,gsize call shr_sys_abort(subname//"ERROR in data sizes") endif call mct_aVect_init(avG,av,gsize) - allocate(data(nx,ny)) call shr_ncread_open(trim(fileName),fid,rCode) do k = 1,mct_aVect_nRAttr(av) call shr_stream_getFileFieldName(stream,k,sfldName) - call shr_ncread_tField(fileName,nt,sfldName,data,fidi=fid,rc=rCode) - avG%rAttr(k,:) = reshape(data, (/gsize/)) + if (d3dflag) then + call shr_ncread_tField(fileName,nt,sfldName,data3d,fidi=fid,rc=rCode) + avG%rAttr(k,:) = reshape(data3d, (/gsize/)) + else + call shr_ncread_tField(fileName,nt,sfldName,data2d,fidi=fid,rc=rCode) + avG%rAttr(k,:) = reshape(data2d, (/gsize/)) + endif enddo call shr_ncread_close(fid,rCode) - deallocate(data) + if (d3dflag) then + deallocate(data3d) + else + deallocate(data2d) + endif endif call t_stopf(trim(lstr)//'_readcdf') call t_barrierf(trim(lstr)//'_scatter'//'_BARRIER',mpicom) @@ -693,11 +824,12 @@ subroutine shr_dmodel_readstrm(stream, pio_subsystem, pio_iotype, pio_iodesc, gs rcode = pio_inq_varndims(pioid, varid, ndims) allocate(dimid(ndims)) rcode = pio_inq_vardimid(pioid, varid, dimid(1:ndims)) - rcode = pio_inq_dimlen(pioid, dimid(1), nx) - rcode = pio_inq_dimlen(pioid, dimid(2), ny) + if (ndims >= 1) rcode = pio_inq_dimlen(pioid, dimid(1), nx) + if (ndims >= 2) rcode = pio_inq_dimlen(pioid, dimid(2), ny) + if (ndims >= 3) rcode = pio_inq_dimlen(pioid, dimid(3), nz) deallocate(dimid) - if (gsize /= nx*ny) then - write(logunit,F01) "ERROR in data sizes ",nx,ny,gsize + if (gsize /= nx*ny .and. gsize /= nx*ny*nz) then + write(logunit,F01) "ERROR in data sizes ",nx,ny,nz,gsize call shr_sys_abort(subname//"ERROR in data sizes") endif @@ -709,6 +841,7 @@ subroutine shr_dmodel_readstrm(stream, pio_subsystem, pio_iotype, pio_iodesc, gs rcode = pio_inq_varid(pioid,trim(sfldName),varid) frame = nt call pio_setframe(pioid,varid,frame) + write(logunit,*) subname,' read ',trim(sfldName),k call pio_read_darray(pioid,varid,pio_iodesc,av%rattr(k,:),rcode) enddo diff --git a/share/csm_share/shr/shr_ncread_mod.F90 b/share/csm_share/shr/shr_ncread_mod.F90 index 94a0a7b75566..f080f90c6cb4 100644 --- a/share/csm_share/shr/shr_ncread_mod.F90 +++ b/share/csm_share/shr/shr_ncread_mod.F90 @@ -84,8 +84,10 @@ module shr_ncread_mod end interface interface shr_ncread_tField ; module procedure & + shr_ncread_tField3dR8, & shr_ncread_tField2dR8, & shr_ncread_tField1dR8, & + shr_ncread_tField3dIN, & shr_ncread_tField2dIN, & shr_ncread_tField1dIN end interface @@ -200,7 +202,7 @@ subroutine shr_ncread_varDimNum(fileName, varName, ns, rc) !--- read variable info --- rcode = nf90_inq_varid(fid,trim(varName),vid) - call shr_ncread_handleErr(rCode, subName//" ERROR inq varid") + call shr_ncread_handleErr(rCode, subName//" ERROR inq varid: "//trim(varName)) rcode = nf90_inquire_variable(fid,vid,ndims=ns) call shr_ncread_handleErr(rCode, subName//" ERROR inq var") if (debug > 1 .and. s_loglev > 0) write(s_logunit,F01) trim(varName)//' has dims = ',ns @@ -309,7 +311,7 @@ subroutine shr_ncread_varDimSizeID(fileName, varName, dnum, ns, rc) call shr_ncread_open(fileName,fid,rCode) rCode = nf90_inq_varid(fid,trim(varName),vid) - call shr_ncread_handleErr(rCode,subName//' ERROR inq varid vid') + call shr_ncread_handleErr(rCode,subName//' ERROR inq varid: '//trim(varName)) rCode = nf90_inquire_variable(fid,vid,ndims=ndims) call shr_ncread_handleErr(rCode,subName//' ERROR inquire variable ndims') allocate(dids(ndims)) @@ -382,7 +384,7 @@ subroutine shr_ncread_varDimSizes(fileName, varName, n1, n2, n3, n4, n5, n6, rc) call shr_ncread_open(fileName,fid,rCode) rCode = nf90_inq_varid(fid,trim(varName),vid) - call shr_ncread_handleErr(rCode,subName//' ERROR inq varid vid') + call shr_ncread_handleErr(rCode,subName//' ERROR inq varid: '//trim(varName)) rCode = nf90_inquire_variable(fid,vid,ndims=ndims) call shr_ncread_handleErr(rCode,subName//' ERROR inquire variable ndims') allocate(dids(ndims)) @@ -702,6 +704,98 @@ end subroutine shr_ncread_domain !=============================================================================== !BOP =========================================================================== ! +! !IROUTINE: shr_ncread_tField3dR8 -- read in field data from a file +! +! !DESCRIPTION: +! Read in field data from a netcdf file. This is a special routine +! built specificallly for CCSM. The idea is to read a snapshot of +! (possibly) time-varying data from a netcdf file. The array is a +! 3d real*8 field in this case. Inputs are filename, timeslice +! (integer), and variable name. Optional inputs include the +! time dimension name and the 2 dimension names for the array. +! If dim1 is sent as an optional argument, dim2 must also be sent. +! Otherwise, the time dimension is assumed to be the third +! dimension and the first 2 dimensions are associated with the +! 3d array. +! +! \newline +! General Usage: +! call shr_ncread_tField('myfile',6,'sst',a3d) +! \newline +! !REVISION HISTORY: +! 2005-Apr-28 - T. Craig - first version +! +! !INTERFACE: ------------------------------------------------------------------ + +subroutine shr_ncread_tField3dR8(fn, tIndex, fldName, fld, dim1, dim2, dim3, tName, fidi, rc) + + implicit none + +! !INPUT/OUTPUT PARAMETERS: + + character(*) ,intent(in) :: fn ! nc file name + integer(SHR_KIND_IN),intent(in) :: tIndex ! time-coord index + character(*) ,intent(in) :: fldName ! name of field + real(SHR_KIND_R8) ,intent(out) :: fld(:,:,:) ! field array + character(*) ,intent(in) ,optional :: dim1 ! name of dim1 in fld + character(*) ,intent(in) ,optional :: dim2 ! name of dim2 in fld + character(*) ,intent(in) ,optional :: dim3 ! name of dim3 in fld + character(*) ,intent(in) ,optional :: tName ! name of tIndex dim + integer(SHR_KIND_IN),intent(in) ,optional :: fidi ! file id + integer(SHR_KIND_IN),intent(out),optional :: rc ! return code + +!EOP + + !----- local ----- + real(SHR_KIND_R8),allocatable :: lfld(:,:,:,:) ! local 4d array + integer(SHR_KIND_IN) :: rCode ! error code + + !----- formats ----- + character(*),parameter :: subName = "(shr_ncread_tField3dR8)" + character(*),parameter :: F00 = "('(shr_ncread_tField3dR8) ',4a)" + +!------------------------------------------------------------------------------- +! +!------------------------------------------------------------------------------- + allocate(lfld(size(fld,1),size(fld,2),size(fld,3),1)) + + if (present(dim1).and.present(dim2).and.present(dim3).and.present(tName)) then + if (.not.present(fidi)) then + call shr_ncread_field4dG(fn,fldName,rfld=lfld,dim1=dim1,dim2=dim2,dim3=dim3,dim4=tName,dim4i=tIndex,rc=rCode) + else + call shr_ncread_field4dG(fn,fldName,rfld=lfld,dim1=dim1,dim2=dim2,dim3=dim3,dim4=tName,dim4i=tIndex,fidi=fidi,rc=rCode) + endif + elseif (present(dim1).and.present(dim2).and.present(dim3)) then + if (.not.present(fidi)) then + call shr_ncread_field4dG(fn,fldName,rfld=lfld,dim1=dim1,dim2=dim2,dim3=dim3,dim4i=tIndex,rc=rCode) + else + call shr_ncread_field4dG(fn,fldName,rfld=lfld,dim1=dim1,dim2=dim2,dim3=dim3,dim4i=tIndex,fidi=fidi,rc=rCode) + endif + elseif (present(tName)) then + if (.not.present(fidi)) then + call shr_ncread_field4dG(fn,fldName,rfld=lfld,dim4=tName,dim4i=tIndex,rc=rCode) + else + call shr_ncread_field4dG(fn,fldName,rfld=lfld,dim4=tName,dim4i=tIndex,fidi=fidi,rc=rCode) + endif + elseif (.not.present(dim1).and..not.present(dim2).and..not.present(dim3).and..not.present(tName)) then + if (.not.present(fidi)) then + call shr_ncread_field4dG(fn,fldName,rfld=lfld,dim4i=tIndex,rc=rCode) + else + call shr_ncread_field4dG(fn,fldName,rfld=lfld,dim4i=tIndex,fidi=fidi,rc=rCode) + endif + else + call shr_ncread_abort(subName//' ERROR argument combination not supported') + endif + + fld(:,:,:) = lfld(:,:,:,1) + deallocate(lfld) + + if (present(rc)) rc = rCode + +end subroutine shr_ncread_tField3dR8 +!=============================================================================== +!BOP =========================================================================== +! ! !IROUTINE: shr_ncread_tField2dR8 -- read in field data from a file ! ! !DESCRIPTION: @@ -882,6 +976,99 @@ end subroutine shr_ncread_tField1dR8 !=============================================================================== !BOP =========================================================================== ! +! !IROUTINE: shr_ncread_tField3dIN -- read in field data from a file +! +! !DESCRIPTION: +! Read in field data from a netcdf file. This is a special routine +! built specificallly for CCSM. The idea is to read a snapshot of +! (possibly) time-varying data from a netcdf file. The array is a +! 3d integer field in this case. Inputs are filename, timeslice +! (integer), and variable name. Optional inputs include the +! time dimension name and the 2 dimension names for the array. +! If dim1 is sent as an optional argument, dim2 must also be sent. +! Otherwise, the time dimension is assumed to be the third +! dimension and the first 2 dimensions are associated with the +! 3d array. +! +! \newline +! General Usage: +! call shr_ncread_tField('myfile',1,'index',i3d) +! \newline +! !REVISION HISTORY: +! 2005-Apr-28 - T. Craig - first version +! +! !INTERFACE: ------------------------------------------------------------------ + +subroutine shr_ncread_tField3dIN(fn, tIndex, fldName, fld, dim1, dim2, dim3, tName, fidi, rc) + + implicit none + +! !INPUT/OUTPUT PARAMETERS: + + character(*) ,intent(in) :: fn ! nc file name + integer(SHR_KIND_IN),intent(in) :: tIndex ! time-coord index + character(*) ,intent(in) :: fldName ! name of field + integer(SHR_KIND_IN),intent(out) :: fld(:,:,:) ! field array + character(*) ,intent(in) ,optional :: dim1 ! name of dim1 in fld + character(*) ,intent(in) ,optional :: dim2 ! name of dim2 in fld + character(*) ,intent(in) ,optional :: dim3 ! name of dim3 in fld + character(*) ,intent(in) ,optional :: tName ! name of tIndex dim + integer(SHR_KIND_IN),intent(in) ,optional :: fidi ! file id + integer(SHR_KIND_IN),intent(out),optional :: rc ! return code + +!EOP + + !----- local ----- + integer(SHR_KIND_IN),allocatable :: lfld(:,:,:,:) ! local 4d array + integer(SHR_KIND_IN) :: rCode ! error code + + !----- formats ----- + character(*),parameter :: subName = "(shr_ncread_tField3dIN)" + character(*),parameter :: F00 = "('(shr_ncread_tField3dIN) ',4a)" + +!------------------------------------------------------------------------------- +! +!------------------------------------------------------------------------------- + + allocate(lfld(size(fld,1),size(fld,2),size(fld,3),1)) + + if (present(dim1).and.present(dim2).and.present(dim3).and.present(tName)) then + if (.not.present(fidi)) then + call shr_ncread_field4dG(fn,fldName,ifld=lfld,dim1=dim1,dim2=dim2,dim3=dim3,dim4=tName,dim4i=tIndex,rc=rCode) + else + call shr_ncread_field4dG(fn,fldName,ifld=lfld,dim1=dim1,dim2=dim2,dim3=dim3,dim4=tName,dim4i=tIndex,fidi=fidi,rc=rCode) + endif + elseif (present(dim1).and.present(dim2).and.present(dim3)) then + if (.not.present(fidi)) then + call shr_ncread_field4dG(fn,fldName,ifld=lfld,dim1=dim1,dim2=dim2,dim3=dim3,dim4i=tIndex,rc=rCode) + else + call shr_ncread_field4dG(fn,fldName,ifld=lfld,dim1=dim1,dim2=dim2,dim3=dim3,dim4i=tIndex,fidi=fidi,rc=rCode) + endif + elseif (present(tName)) then + if (.not.present(fidi)) then + call shr_ncread_field4dG(fn,fldName,ifld=lfld,dim4=tName,dim4i=tIndex,rc=rCode) + else + call shr_ncread_field4dG(fn,fldName,ifld=lfld,dim4=tName,dim4i=tIndex,fidi=fidi,rc=rCode) + endif + elseif (.not.present(dim1).and..not.present(dim2).and..not.present(dim3).and..not.present(tName)) then + if (.not.present(fidi)) then + call shr_ncread_field4dG(fn,fldName,ifld=lfld,dim4i=tIndex,rc=rCode) + else + call shr_ncread_field4dG(fn,fldName,ifld=lfld,dim4i=tIndex,fidi=fidi,rc=rCode) + endif + else + call shr_ncread_abort(subName//' ERROR argument combination not supported') + endif + + fld(:,:,:) = lfld(:,:,:,1) + deallocate(lfld) + + if (present(rc)) rc = rCode + +end subroutine shr_ncread_tField3dIN +!=============================================================================== +!BOP =========================================================================== +! ! !IROUTINE: shr_ncread_tField2dIN -- read in field data from a file ! ! !DESCRIPTION: diff --git a/share/csm_share/shr/shr_scam_mod.F90 b/share/csm_share/shr/shr_scam_mod.F90 index b7f96b867994..3c162f5e3454 100644 --- a/share/csm_share/shr/shr_scam_mod.F90 +++ b/share/csm_share/shr/shr_scam_mod.F90 @@ -687,8 +687,8 @@ subroutine shr_scam_checkSurface(scmlon, scmlat, ocn_compid, ocn_mpicom, & close( unitn ) call shr_file_freeUnit(unitn) call shr_strdata_readnml(SCAMSDAT,ocn_in) - call shr_dmodel_readgrid(SCAMSDAT%grid,SCAMSDAT%gsmap,SCAMSDAT%nxg,SCAMSDAT%nyg, & - SCAMSDAT%domainfile, ocn_compid, ocn_mpicom, '1d', readfrac=.true., & + call shr_dmodel_readgrid(SCAMSDAT%grid,SCAMSDAT%gsmap,SCAMSDAT%nxg,SCAMSDAT%nyg,SCAMSDAT%nzg, & + SCAMSDAT%domainfile, ocn_compid, ocn_mpicom, '2d1d', readfrac=.true., & scmmode=.true.,scmlon=scmlon,scmlat=scmlat) nfrac = mct_aVect_indexRA(SCAMSDAT%grid%data,'frac') diff --git a/share/csm_share/shr/shr_strdata_mod.F90 b/share/csm_share/shr/shr_strdata_mod.F90 index ded8b0ab6a3a..2b4c08527710 100644 --- a/share/csm_share/shr/shr_strdata_mod.F90 +++ b/share/csm_share/shr/shr_strdata_mod.F90 @@ -70,6 +70,7 @@ module shr_strdata_mod ! !PRIVATE: + integer(SHR_KIND_IN) :: debug = 0 ! local debug flag integer(IN),parameter :: nStrMax = 30 integer(IN),parameter :: nVecMax = 30 character(len=*),public,parameter :: shr_strdata_nullstr = 'null' @@ -103,6 +104,7 @@ module shr_strdata_mod ! --- internal, public --- integer(IN) :: nxg integer(IN) :: nyg + integer(IN) :: nzg integer(IN) :: lsize type(mct_gsmap) :: gsmap type(mct_ggrid) :: grid @@ -114,16 +116,17 @@ module shr_strdata_mod integer(IN) :: nstreams ! number of streams integer(IN) :: strnxg(nStrMax) integer(IN) :: strnyg(nStrMax) + integer(IN) :: strnzg(nStrMax) logical :: dofill(nStrMax) logical :: domaps(nStrMax) integer(IN) :: lsizeR(nStrMax) type(mct_gsmap) :: gsmapR(nStrMax) type(mct_rearr) :: rearrR(nStrMax) type(mct_ggrid) :: gridR(nStrMax) - type(mct_avect) :: avRLB(nStrMax) - type(mct_avect) :: avRUB(nStrMax) - type(mct_avect) :: avFUB(nStrMax) - type(mct_avect) :: avFLB(nStrMax) + type(mct_avect) :: avRLB(nStrMax) ! Read attrvect + type(mct_avect) :: avRUB(nStrMax) ! Read attrvect + type(mct_avect) :: avFUB(nStrMax) ! Final attrvect + type(mct_avect) :: avFLB(nStrMax) ! Final attrvect type(mct_avect) :: avCoszen(nStrMax) ! data assocaited with coszen time interp type(mct_sMatP) :: sMatPf(nStrMax) type(mct_sMatP) :: sMatPs(nStrMax) @@ -147,7 +150,7 @@ module shr_strdata_mod !=============================================================================== subroutine shr_strdata_init(SDAT,mpicom,compid,name,scmmode,scmlon,scmlat, & - gsmap,ggrid,nxg,nyg,calendar) + gsmap,ggrid,nxg,nyg,nzg,calendar) implicit none @@ -162,6 +165,7 @@ subroutine shr_strdata_init(SDAT,mpicom,compid,name,scmmode,scmlon,scmlat, & type(mct_ggrid) ,intent(in),optional :: ggrid integer(IN) ,intent(in),optional :: nxg integer(IN) ,intent(in),optional :: nyg + integer(IN) ,intent(in),optional :: nzg character(len=*) ,intent(in),optional :: calendar integer(IN) :: n,m,k ! generic index @@ -174,6 +178,7 @@ subroutine shr_strdata_init(SDAT,mpicom,compid,name,scmmode,scmlon,scmlat, & character(CS) :: timeName ! domain file: time variable name character(CS) :: lonName ! domain file: lon variable name character(CS) :: latName ! domain file: lat variable name + character(CS) :: hgtName ! domain file: hgt variable name character(CS) :: maskName ! domain file: mask variable name character(CS) :: areaName ! domain file: area variable name character(CS) :: uname ! u vector field name @@ -230,12 +235,15 @@ subroutine shr_strdata_init(SDAT,mpicom,compid,name,scmmode,scmlon,scmlat, & if (present(nyg)) then n = n + 1 endif + if (present(nzg)) then + n = n + 1 + endif - if ( n == 0 .or. n == 4) then + if ( n == 0 .or. n == 5) then ! either all set or none set, this is OK else - write(logunit,*) subname,' ERROR: gsmap, ggrid, nxg, and nyg must be specified together' - call shr_sys_abort(subname//' ERROR: gsmap, ggrid, nxg, nyg set together') + write(logunit,*) subname,' ERROR: gsmap, ggrid, nxg, nyg and nzg must be specified together' + call shr_sys_abort(subname//' ERROR: gsmap, ggrid, nxg, nyg, nzg set together') endif lscmmode = .false. @@ -260,27 +268,41 @@ subroutine shr_strdata_init(SDAT,mpicom,compid,name,scmmode,scmlon,scmlat, & ! --- initialize streams and stream domains --- - do n = 1,SDAT%nstreams if (my_task == master_task) then call shr_stream_getDomainInfo(SDAT%stream(n),filePath,fileName,timeName,lonName, & - latName,maskName,areaName) + latName,hgtName,maskName,areaName) call shr_stream_getFile(filePath,fileName) - endif - call shr_mpi_bcast(fileName,mpicom) - call shr_mpi_bcast(lonName,mpicom) - call shr_mpi_bcast(latName,mpicom) - call shr_mpi_bcast(maskName,mpicom) - call shr_mpi_bcast(areaName,mpicom) - call shr_dmodel_readgrid(SDAT%gridR(n),SDAT%gsmapR(n),SDAT%strnxg(n),SDAT%strnyg(n), & - fileName, compid, mpicom, '1d', lonName, latName, maskName, areaName) - SDAT%lsizeR(n) = mct_gsmap_lsize(SDAT%gsmapR(n),mpicom) - call mct_gsmap_OrderedPoints(SDAT%gsmapR(n), my_task, dof) - call pio_initdecomp(SDAT%pio_subsystem, pio_double, & - (/SDAT%strnxg(n),SDAT%strnyg(n)/), dof, SDAT%pio_iodesc(n)) - deallocate(dof) - - call shr_mpi_bcast(SDAT%stream(n)%calendar,mpicom) + write(logunit,*) subname,' stream ',n + write(logunit,*) subname,' filePath = ',n,trim(filePath) + write(logunit,*) subname,' fileName = ',n,trim(fileName) + write(logunit,*) subname,' timeName = ',n,trim(timeName) + write(logunit,*) subname,' lonName = ',n,trim(lonName) + write(logunit,*) subname,' latName = ',n,trim(latName) + write(logunit,*) subname,' hgtName = ',n,trim(hgtName) + write(logunit,*) subname,' maskName = ',n,trim(maskName) + write(logunit,*) subname,' areaName = ',n,trim(areaName) + endif + call shr_mpi_bcast(fileName,mpicom) + call shr_mpi_bcast(lonName,mpicom) + call shr_mpi_bcast(latName,mpicom) + call shr_mpi_bcast(hgtName,mpicom) + call shr_mpi_bcast(maskName,mpicom) + call shr_mpi_bcast(areaName,mpicom) + call shr_dmodel_readgrid(SDAT%gridR(n),SDAT%gsmapR(n),SDAT%strnxg(n),SDAT%strnyg(n),SDAT%strnzg(n), & + fileName, compid, mpicom, '2d1d', lonName, latName, hgtName, maskName, areaName) + SDAT%lsizeR(n) = mct_gsmap_lsize(SDAT%gsmapR(n),mpicom) + call mct_gsmap_OrderedPoints(SDAT%gsmapR(n), my_task, dof) + if (SDAT%strnzg(n) <= 0) then + call pio_initdecomp(SDAT%pio_subsystem, pio_double, & + (/SDAT%strnxg(n),SDAT%strnyg(n)/), dof, SDAT%pio_iodesc(n)) + else + call pio_initdecomp(SDAT%pio_subsystem, pio_double, & + (/SDAT%strnxg(n),SDAT%strnyg(n),SDAT%strnzg(n)/), dof, SDAT%pio_iodesc(n)) + endif + deallocate(dof) + + call shr_mpi_bcast(SDAT%stream(n)%calendar,mpicom) enddo ! --- initialize model domain --- @@ -288,6 +310,7 @@ subroutine shr_strdata_init(SDAT,mpicom,compid,name,scmmode,scmlon,scmlat, & if (present(gsmap)) then SDAT%nxg = nxg SDAT%nyg = nyg + SDAT%nzg = nzg lsize = mct_gsmap_lsize(gsmap,mpicom) call mct_gsmap_Copy(gsmap,SDAT%gsmap) call mct_ggrid_init(SDAT%grid, ggrid, lsize) @@ -297,31 +320,32 @@ subroutine shr_strdata_init(SDAT,mpicom,compid,name,scmmode,scmlon,scmlat, & if (SDAT%nstreams > 0) then if (my_task == master_task) then call shr_stream_getDomainInfo(SDAT%stream(1),filePath,fileName,timeName,lonName, & - latName,maskName,areaName) + latName,hgtName,maskName,areaName) call shr_stream_getFile(filePath,fileName) endif call shr_mpi_bcast(fileName,mpicom) call shr_mpi_bcast(lonName,mpicom) call shr_mpi_bcast(latName,mpicom) + call shr_mpi_bcast(hgtName,mpicom) call shr_mpi_bcast(maskName,mpicom) call shr_mpi_bcast(areaName,mpicom) if (lscmmode) then - call shr_dmodel_readgrid(SDAT%grid,SDAT%gsmap,SDAT%nxg,SDAT%nyg, & - fileName, compid, mpicom, '1d', lonName, latName, maskName, areaName, & + call shr_dmodel_readgrid(SDAT%grid,SDAT%gsmap,SDAT%nxg,SDAT%nyg,SDAT%nzg, & + fileName, compid, mpicom, '2d1d', lonName, latName, hgtName, maskName, areaName, & scmmode=lscmmode,scmlon=scmlon,scmlat=scmlat) else - call shr_dmodel_readgrid(SDAT%grid,SDAT%gsmap,SDAT%nxg,SDAT%nyg, & - fileName, compid, mpicom, '1d', lonName, latName, maskName, areaName) + call shr_dmodel_readgrid(SDAT%grid,SDAT%gsmap,SDAT%nxg,SDAT%nyg,SDAT%nzg, & + fileName, compid, mpicom, '2d1d', lonName, latName, hgtName, maskName, areaName) endif endif else if (lscmmode) then - call shr_dmodel_readgrid(SDAT%grid,SDAT%gsmap,SDAT%nxg,SDAT%nyg, & - SDAT%domainfile, compid, mpicom, '1d', readfrac=.true., & + call shr_dmodel_readgrid(SDAT%grid,SDAT%gsmap,SDAT%nxg,SDAT%nyg,SDAT%nzg, & + SDAT%domainfile, compid, mpicom, '2d1d', readfrac=.true., & scmmode=lscmmode,scmlon=scmlon,scmlat=scmlat) else - call shr_dmodel_readgrid(SDAT%grid,SDAT%gsmap,SDAT%nxg,SDAT%nyg, & - SDAT%domainfile, compid, mpicom, '1d', readfrac=.true.) + call shr_dmodel_readgrid(SDAT%grid,SDAT%gsmap,SDAT%nxg,SDAT%nyg,SDAT%nzg, & + SDAT%domainfile, compid, mpicom, '2d1d', readfrac=.true.) endif endif endif @@ -349,6 +373,10 @@ subroutine shr_strdata_init(SDAT,mpicom,compid,name,scmmode,scmlon,scmlat, & endif if (SDAT%dofill(n)) then + if (SDAT%strnzg(n) > 1) then + write(logunit,*) trim(subname),' do fill called with 3d data, not allowed' + call shr_sys_abort(subname//': do fill called with 3d data, not allowed') + endif if (trim(SDAT%fillread(n)) == trim(shr_strdata_unset)) then if (my_task == master_task) then write(logunit,F00) ' calling shr_dmodel_mapSet for fill' @@ -378,7 +406,12 @@ subroutine shr_strdata_init(SDAT,mpicom,compid,name,scmmode,scmlon,scmlat, & call mct_sMat_Clean(sMati) endif endif + if (SDAT%domaps(n)) then + if (SDAT%strnzg(n) > 1) then + write(logunit,*) trim(subname),' do maps called with 3d data, not allowed' + call shr_sys_abort(subname//': do maps called with 3d data, not allowed') + endif if (trim(SDAT%mapread(n)) == trim(shr_strdata_unset)) then if (my_task == master_task) then write(logunit,F00) ' calling shr_dmodel_mapSet for remap' @@ -424,6 +457,7 @@ subroutine shr_strdata_init(SDAT,mpicom,compid,name,scmmode,scmlon,scmlat, & call mct_aVect_init(SDAT%avFUB(n),rlist=fldList,lsize=SDAT%lsize) call mct_aVect_init(SDAT%avRLB(n),rlist=fldList,lsize=SDAT%lsizeR(n)) call mct_aVect_init(SDAT%avRUB(n),rlist=fldList,lsize=SDAT%lsizeR(n)) + write(logunit,*) 'tcx fldlist = ',n,trim(fldlist),SDAT%lsize,SDAT%lsizeR(n) if (trim(SDAT%tintalgo(n)) == 'coszen') then call mct_aVect_init(SDAT%avCoszen(n),rlist="tavCosz",lsize=SDAT%lsize) endif @@ -635,7 +669,18 @@ subroutine shr_strdata_advance(SDAT,ymd,tod,mpicom,istr,timers) SDAT%avRLB(n),SDAT%ymdLB(n),SDAT%todLB(n), & SDAT%avRUB(n),SDAT%ymdUB(n),SDAT%todUB(n),newData(n), & istr=trim(lstr)//'_readLBUB') + + if (debug > 0) then + write(logunit,*) trim(subname),' newData flag = ',n,newData(n) + write(logunit,*) trim(subname),' LB ymd,tod = ',n,SDAT%ymdLB(n),SDAT%todLB(n) + write(logunit,*) trim(subname),' UB ymd,tod = ',n,SDAT%ymdUB(n),SDAT%todUB(n) + endif + if (newData(n)) then + if (debug > 0) then + write(logunit,*) trim(subname),' newData RLB = ',n,minval(SDAT%avRLB(n)%rAttr),maxval(SDAT%avRLB(n)%rAttr),sum(SDAT%avRLB(n)%rAttr) + write(logunit,*) trim(subname),' newData RUB = ',n,minval(SDAT%avRUB(n)%rAttr),maxval(SDAT%avRUB(n)%rAttr),sum(SDAT%avRUB(n)%rAttr) + endif call shr_cal_date2ymd(SDAT%ymdLB(n),year,month,day) call shr_cal_timeSet(timeLB,SDAT%ymdLB(n),0,SDAT%stream(n)%calendar) call shr_cal_timeSet(timeUB,SDAT%ymdUB(n),0,SDAT%stream(n)%calendar) @@ -682,6 +727,10 @@ subroutine shr_strdata_advance(SDAT,ymd,tod,mpicom,istr,timers) call t_stopf(trim(lstr)//trim(timname)//'_rearr') endif + if (debug > 0) then + write(logunit,*) trim(subname),' newData FLB = ',n,minval(SDAT%avFLB(n)%rAttr),maxval(SDAT%avFLB(n)%rAttr),sum(SDAT%avFLB(n)%rAttr) + write(logunit,*) trim(subname),' newData FUB = ',n,minval(SDAT%avFUB(n)%rAttr),maxval(SDAT%avFUB(n)%rAttr),sum(SDAT%avFUB(n)%rAttr) + endif endif enddo @@ -816,6 +865,9 @@ subroutine shr_strdata_advance(SDAT,ymd,tod,mpicom,istr,timers) call shr_tInterp_getFactors(SDAT%ymdlb(n),SDAT%todlb(n),SDAT%ymdub(n),SDAT%todub(n), & ymdmod(n),todmod,flb,fub, & calendar=SDAT%stream(n)%calendar,algo=trim(SDAT%tintalgo(n))) + if (debug > 0) then + write(logunit,*) trim(subname),' interp = ',n,flb,fub + endif SDAT%avs(n)%rAttr(:,:) = SDAT%avFLB(n)%rAttr(:,:)*flb + SDAT%avFUB(n)%rAttr(:,:)*fub call t_stopf(trim(lstr)//trim(timname)//'_tint') @@ -824,6 +876,10 @@ subroutine shr_strdata_advance(SDAT,ymd,tod,mpicom,istr,timers) call mct_avect_zero(SDAT%avs(n)) call t_stopf(trim(lstr)//trim(timname)//'_zero') endif + if (debug > 0) then + write(logunit,*) trim(subname),' SDAT av = ',n,minval(SDAT%avs(n)%rAttr),maxval(SDAT%avs(n)%rAttr),sum(SDAT%avs(n)%rAttr) + endif + enddo deallocate(newData) @@ -877,8 +933,10 @@ subroutine shr_strdata_clean(SDAT) ! object itself. SDAT%nxg = 0 SDAT%nyg = 0 + SDAT%nzg = 0 SDAT%strnxg = 0 SDAT%strnyg = 0 + SDAT%strnzg = 0 SDAT%nstreams = 0 SDAT%nvectors = 0 @@ -1173,6 +1231,7 @@ subroutine shr_strdata_readnml(SDAT,file,rc,mpicom) SDAT%dtmax = 0.0 SDAT%nxg = 0 SDAT%nyg = 0 + SDAT%nzg = 0 SDAT%eccen = SHR_ORB_UNDEF_REAL SDAT%mvelpp = SHR_ORB_UNDEF_REAL SDAT%lambm0 = SHR_ORB_UNDEF_REAL @@ -1227,6 +1286,7 @@ subroutine shr_strdata_create(SDAT, name, mpicom, compid, gsmap, ggrid, nxg, nyg filePath, filename, fldListFile, fldListModel, & pio_subsystem, pio_iotype, & !--- strdata optional --- + nzg, domZvarName, & taxMode, dtlimit, tintalgo, & fillalgo, fillmask, fillread, fillwrite, & mapalgo, mapmask, mapread, mapwrite, & @@ -1253,7 +1313,7 @@ subroutine shr_strdata_create(SDAT, name, mpicom, compid, gsmap, ggrid, nxg, nyg character(*) ,intent(in) :: domFileName ! domain file name character(*) ,intent(in) :: domTvarName ! domain time dim name character(*) ,intent(in) :: domXvarName ! domain x dim name - character(*) ,intent(in) :: domYvarName ! domain y dim nam + character(*) ,intent(in) :: domYvarName ! domain y dim name character(*) ,intent(in) :: domAreaName ! domain area name character(*) ,intent(in) :: domMaskName ! domain mask name character(*) ,intent(in) :: filePath ! path to filenames @@ -1263,6 +1323,8 @@ subroutine shr_strdata_create(SDAT, name, mpicom, compid, gsmap, ggrid, nxg, nyg type(iosystem_desc_t), pointer :: pio_subsystem ! PIO subsystem pointer integer(IN) , intent(in) :: pio_iotype ! PIO file type + integer(IN) ,optional ,intent(in) :: nzg + character(*),optional ,intent(in) :: domZvarName ! domain z dim name character(*),optional ,intent(in) :: taxMode real(R8) ,optional ,intent(in) :: dtlimit character(*),optional ,intent(in) :: fillalgo ! fill algorithm @@ -1334,13 +1396,29 @@ subroutine shr_strdata_create(SDAT, name, mpicom, compid, gsmap, ggrid, nxg, nyg SDAT%calendar = trim(shr_cal_calendarName(trim(calendar))) endif - call shr_stream_set(SDAT%stream(1),yearFirst,yearLast,yearAlign,offset,taxMode, & + !---- Backwards compatibility requires Z be optional + + if (present(domZvarName)) then + call shr_stream_set(SDAT%stream(1),yearFirst,yearLast,yearAlign,offset,taxMode, & + fldListFile,fldListModel,domFilePath,domFileName, & + domTvarName,domXvarName,domYvarName,domZvarName, & + domAreaName,domMaskName, & + filePath,filename,trim(name)) + else + call shr_stream_set(SDAT%stream(1),yearFirst,yearLast,yearAlign,offset,taxMode, & fldListFile,fldListModel,domFilePath,domFileName, & - domTvarName,domXvarName,domYvarName,domAreaName,domMaskName, & + domTvarName,domXvarName,domYvarName,'undefined', & + domAreaName,domMaskName, & filePath,filename,trim(name)) + endif - call shr_strdata_init(SDAT, mpicom, compid, & - gsmap=gsmap, ggrid=ggrid, nxg=nxg, nyg=nyg) + if (present(nzg)) then + call shr_strdata_init(SDAT, mpicom, compid, & + gsmap=gsmap, ggrid=ggrid, nxg=nxg, nyg=nyg, nzg=nzg) + else + call shr_strdata_init(SDAT, mpicom, compid, & + gsmap=gsmap, ggrid=ggrid, nxg=nxg, nyg=nyg, nzg=1) + endif end subroutine shr_strdata_create @@ -1402,6 +1480,7 @@ subroutine shr_strdata_print(SDAT,name) write(logunit,F00) "domainFile = ",trim(SDAT%domainFile) write(logunit,F01) "nxg = ",SDAT%nxg write(logunit,F01) "nyg = ",SDAT%nyg + write(logunit,F01) "nzg = ",SDAT%nzg write(logunit,F00) "calendar = ",trim(SDAT%calendar) write(logunit,F01) "io_type = ",SDAT%io_type write(logunit,F02) "eccen = ",SDAT%eccen @@ -1417,6 +1496,7 @@ subroutine shr_strdata_print(SDAT,name) write(logunit,F07) " dtlimit (",n,") = ",SDAT%dtlimit(n) write(logunit,F05) " strnxg (",n,") = ",SDAT%strnxg(n) write(logunit,F05) " strnyg (",n,") = ",SDAT%strnyg(n) + write(logunit,F05) " strnzg (",n,") = ",SDAT%strnzg(n) write(logunit,F06) " dofill (",n,") = ",SDAT%dofill(n) write(logunit,F04) " fillalgo(",n,") = ",trim(SDAT%fillalgo(n)) write(logunit,F04) " fillmask(",n,") = ",trim(SDAT%fillmask(n)) diff --git a/share/csm_share/shr/shr_stream_mod.F90 b/share/csm_share/shr/shr_stream_mod.F90 index 2c24a737e04e..e4badc0f143c 100644 --- a/share/csm_share/shr/shr_stream_mod.F90 +++ b/share/csm_share/shr/shr_stream_mod.F90 @@ -138,7 +138,8 @@ module shr_stream_mod character(SHR_KIND_CL) :: domFileName ! domain file: name character(SHR_KIND_CS) :: domTvarName ! domain file: time-dim var name character(SHR_KIND_CS) :: domXvarName ! domain file: x-dim var name - character(SHR_KIND_CS) :: domYvarName ! domain file: y-dim var ame + character(SHR_KIND_CS) :: domYvarName ! domain file: y-dim var name + character(SHR_KIND_CS) :: domZvarName ! domain file: z-dim var name character(SHR_KIND_CS) :: domAreaName ! domain file: area var name character(SHR_KIND_CS) :: domMaskName ! domain file: mask var name @@ -505,6 +506,17 @@ subroutine shr_stream_init(strm,infoFile,yearFirst,yearLast,yearAlign,taxMode,rc call shr_string_listGetName (fldListFile,n,substr,rc) strm%domYvarName = subStr endif + !--- get vertical variable name --- + n = shr_string_listGetIndexF(fldListModel,"hgt") + if (n==0) then +! rCode = 1 +! write(s_logunit,F00) "ERROR: no input field names" +! call shr_stream_abort(subName//"ERROR: no lat variable name") + strm%domZvarName = 'unknownname' + else + call shr_string_listGetName (fldListFile,n,substr,rc) + strm%domZvarName = subStr + endif !--- get area variable name --- n = shr_string_listGetIndexF(fldListModel,"area") if (n==0) then @@ -632,7 +644,8 @@ end subroutine shr_stream_init subroutine shr_stream_set(strm,yearFirst,yearLast,yearAlign,offset,taxMode, & fldListFile,fldListModel,domFilePath,domFileName, & - domTvarName,domXvarName,domYvarName,domAreaName,domMaskName, & + domTvarName,domXvarName,domYvarName,domZvarName, & + domAreaName,domMaskName, & filePath,filename,dataSource,rc) ! !INPUT/OUTPUT PARAMETERS: @@ -649,7 +662,8 @@ subroutine shr_stream_set(strm,yearFirst,yearLast,yearAlign,offset,taxMode, & character(*) ,optional,intent(in) :: domFileName ! domain file name character(*) ,optional,intent(in) :: domTvarName ! domain time dim name character(*) ,optional,intent(in) :: domXvarName ! domain x dim name - character(*) ,optional,intent(in) :: domYvarName ! domain y dim nam + character(*) ,optional,intent(in) :: domYvarName ! domain y dim name + character(*) ,optional,intent(in) :: domZvarName ! domain z dim name character(*) ,optional,intent(in) :: domAreaName ! domain area name character(*) ,optional,intent(in) :: domMaskName ! domain mask name character(*) ,optional,intent(in) :: filePath ! path for filenames @@ -713,6 +727,9 @@ subroutine shr_stream_set(strm,yearFirst,yearLast,yearAlign,offset,taxMode, & if (present(domYvarName)) then strm%domYvarName = trim(domYvarName) endif + if (present(domZvarName)) then + strm%domZvarName = trim(domZvarName) + endif if (present(domAreaName)) then strm%domAreaName = trim(domAreaName) endif @@ -812,6 +829,7 @@ subroutine shr_stream_default(strm,rc) strm%domTvarName = ' ' strm%domXvarName = ' ' strm%domYvarName = ' ' + strm%domZvarName = ' ' strm%domAreaName = ' ' strm%domMaskName = ' ' @@ -1993,7 +2011,7 @@ end subroutine shr_stream_getCalendar ! ! !INTERFACE: ------------------------------------------------------------------ -subroutine shr_stream_getDomainInfo(strm,filePath,fileName,timeName,lonName,latName,maskName,areaName) +subroutine shr_stream_getDomainInfo(strm,filePath,fileName,timeName,lonName,latName,hgtName,maskName,areaName) ! !INPUT/OUTPUT PARAMETERS: @@ -2003,6 +2021,7 @@ subroutine shr_stream_getDomainInfo(strm,filePath,fileName,timeName,lonName,latN character(*) ,intent(out) :: timeName ! domain time var name character(*) ,intent(out) :: lonName ! domain lon var name character(*) ,intent(out) :: latName ! domain lat var name + character(*) ,intent(out) :: hgtName ! domain hgt var name character(*) ,intent(out) :: maskName ! domain mask var name character(*) ,intent(out) :: areaName ! domain area var name @@ -2017,6 +2036,7 @@ subroutine shr_stream_getDomainInfo(strm,filePath,fileName,timeName,lonName,latN timeName = strm%domTvarName lonName = strm%domXvarName latName = strm%domYvarName + hgtName = strm%domZvarName maskName = strm%domMaskName areaName = strm%domAreaName @@ -2441,7 +2461,8 @@ subroutine shr_stream_restWrite(strm,fileName,caseName,caseDesc,nstrms,rc) write(nUnit) strm(k)%domFilePath ! domain file: path write(nUnit) strm(k)%domTvarName ! domain file: time-dim var name write(nUnit) strm(k)%domXvarName ! domain file: x-dim var name - write(nUnit) strm(k)%domYvarName ! domain file: y-dim var ame + write(nUnit) strm(k)%domYvarName ! domain file: y-dim var name + write(nUnit) strm(k)%domZvarName ! domain file: z-dim var name write(nUnit) strm(k)%domAreaName ! domain file: area var name write(nUnit) strm(k)%domMaskName ! domain file: mask var name @@ -2661,7 +2682,8 @@ subroutine shr_stream_restRead(strm,fileName,nstrms,rc) read(nUnit) inpcl ! domFilePath ! domain file: path read(nUnit) inpcs ! domTvarName ! domain file: time-dim var name read(nUnit) inpcs ! domXvarName ! domain file: x-dim var name - read(nUnit) inpcs ! domYvarName ! domain file: y-dim var ame + read(nUnit) inpcs ! domYvarName ! domain file: y-dim var name + read(nUnit) inpcs ! domZvarName ! domain file: z-dim var name read(nUnit) inpcs ! domAreaName ! domain file: area var name read(nUnit) inpcs ! domMaskName ! domain file: mask var name @@ -2744,6 +2766,7 @@ subroutine shr_stream_dataDump(strm) write(s_logunit,F00) "domTvarName = ", trim(strm%domTvarName) write(s_logunit,F00) "domXvarName = ", trim(strm%domXvarName) write(s_logunit,F00) "domYvarName = ", trim(strm%domYvarName) + write(s_logunit,F00) "domZvarName = ", trim(strm%domZvarName) write(s_logunit,F00) "domAreaName = ", trim(strm%domAreaName) write(s_logunit,F00) "domMaskName = ", trim(strm%domMaskName) @@ -3089,6 +3112,7 @@ subroutine shr_stream_bcast(stream,comm,rc) call shr_mpi_bcast(stream%domTvarName ,comm,subName) call shr_mpi_bcast(stream%domXvarName ,comm,subName) call shr_mpi_bcast(stream%domYvarName ,comm,subName) + call shr_mpi_bcast(stream%domZvarName ,comm,subName) call shr_mpi_bcast(stream%domMaskName ,comm,subName) call shr_mpi_bcast(stream%calendar ,comm,subName) From 9650d2d5c0f41190a67125df48d26253c41e2703 Mon Sep 17 00:00:00 2001 From: apcraig Date: Fri, 29 Jan 2016 19:38:31 -0700 Subject: [PATCH 15/17] clean up debug write --- share/csm_share/shr/shr_dmodel_mod.F90 | 1 - 1 file changed, 1 deletion(-) diff --git a/share/csm_share/shr/shr_dmodel_mod.F90 b/share/csm_share/shr/shr_dmodel_mod.F90 index d048361cd12e..89433ec93be5 100644 --- a/share/csm_share/shr/shr_dmodel_mod.F90 +++ b/share/csm_share/shr/shr_dmodel_mod.F90 @@ -841,7 +841,6 @@ subroutine shr_dmodel_readstrm(stream, pio_subsystem, pio_iotype, pio_iodesc, gs rcode = pio_inq_varid(pioid,trim(sfldName),varid) frame = nt call pio_setframe(pioid,varid,frame) - write(logunit,*) subname,' read ',trim(sfldName),k call pio_read_darray(pioid,varid,pio_iodesc,av%rattr(k,:),rcode) enddo From 8a1049b1803402b8d38ab36f0cdde8d375c15368 Mon Sep 17 00:00:00 2001 From: apcraig Date: Wed, 10 Feb 2016 09:38:40 -0700 Subject: [PATCH 16/17] add BARRIER_OPTION to driver and new logic for opening and closing files in the streams input to improve performance. --- share/csm_share/shr/shr_dmodel_mod.F90 | 30 +++++++- share/csm_share/shr/shr_strdata_mod.F90 | 4 + share/csm_share/shr/shr_stream_mod.F90 | 99 ++++++++++++++++++++++++- 3 files changed, 127 insertions(+), 6 deletions(-) diff --git a/share/csm_share/shr/shr_dmodel_mod.F90 b/share/csm_share/shr/shr_dmodel_mod.F90 index 89433ec93be5..b359025db890 100644 --- a/share/csm_share/shr/shr_dmodel_mod.F90 +++ b/share/csm_share/shr/shr_dmodel_mod.F90 @@ -631,7 +631,7 @@ subroutine shr_dmodel_readLBUB(stream,pio_subsystem,pio_iotype,pio_iodesc,mDate, call t_stopf(trim(lstr)//'_LB_copy') else if (my_task == master_task) then - write(logunit,F02) 'reading file: ',trim(path),trim(fn_lb),n_lb + write(logunit,F02) 'file lb: ',trim(path),trim(fn_lb),n_lb call shr_sys_flush(logunit) endif call shr_dmodel_readstrm(stream, pio_subsystem, pio_iotype, pio_iodesc, gsMap, avLB, mpicom, & @@ -642,7 +642,7 @@ subroutine shr_dmodel_readLBUB(stream,pio_subsystem,pio_iotype,pio_iodesc,mDate, if (mDateUB /= oDateUB .or. mSecUB /= oSecUB) then newdata = .true. if (my_task == master_task) then - write(logunit,F02) 'reading file: ',trim(path),trim(fn_ub),n_ub + write(logunit,F02) 'file ub: ',trim(path),trim(fn_ub),n_ub call shr_sys_flush(logunit) endif call shr_dmodel_readstrm(stream, pio_subsystem, pio_iotype, pio_iodesc, gsMap, avUB, mpicom, & @@ -723,6 +723,8 @@ subroutine shr_dmodel_readstrm(stream, pio_subsystem, pio_iotype, pio_iodesc, gs character(CL) :: sfldName type(mct_avect) :: avtmp character(len=32) :: lstr + logical :: fileopen + character(CL) :: currfile integer(in) :: ndims integer(in),pointer :: dimid(:) @@ -817,7 +819,28 @@ subroutine shr_dmodel_readstrm(stream, pio_subsystem, pio_iotype, pio_iodesc, gs call t_startf(trim(lstr)//'_readpio') call shr_mpi_bcast(sfldName,mpicom,'sfldName') call shr_mpi_bcast(filename,mpicom,'filename') - rcode = pio_openfile(pio_subsystem, pioid, pio_iotype, trim(filename), pio_nowrite) + + call shr_stream_getCurrFile(stream,fileopen=fileopen,currfile=currfile,currpioid=pioid) + + if (fileopen .and. currfile==filename) then + ! don't reopen file, all good + else + ! otherwise close the old file if open and open new file + if (fileopen) then + if (my_task == master_task) then + write(logunit,F00) 'close : ',trim(currfile) + call shr_sys_flush(logunit) + endif + call pio_closefile(pioid) + endif + if (my_task == master_task) then + write(logunit,F00) 'open : ',trim(filename) + call shr_sys_flush(logunit) + endif + rcode = pio_openfile(pio_subsystem, pioid, pio_iotype, trim(filename), pio_nowrite) + call shr_stream_setCurrFile(stream,fileopen=.true.,currfile=trim(filename),currpioid=pioid) + endif + call pio_seterrorhandling(pioid,PIO_INTERNAL_ERROR) rcode = pio_inq_varid(pioid,trim(sfldName),varid) @@ -844,7 +867,6 @@ subroutine shr_dmodel_readstrm(stream, pio_subsystem, pio_iotype, pio_iodesc, gs call pio_read_darray(pioid,varid,pio_iodesc,av%rattr(k,:),rcode) enddo - call pio_closefile(pioid) call t_stopf(trim(lstr)//'_readpio') endif diff --git a/share/csm_share/shr/shr_strdata_mod.F90 b/share/csm_share/shr/shr_strdata_mod.F90 index f531668fef46..4b7a8b9276a4 100644 --- a/share/csm_share/shr/shr_strdata_mod.F90 +++ b/share/csm_share/shr/shr_strdata_mod.F90 @@ -577,6 +577,9 @@ subroutine shr_strdata_advance(SDAT,ymd,tod,mpicom,istr,timers) if (.not.ltimers) call t_adj_detailf(tadj) + call t_barrierf(trim(lstr)//trim(timname)//'_total_BARRIER',mpicom) + call t_startf(trim(lstr)//trim(timname)//'_total') + call MPI_COMM_SIZE(mpicom,npes,ierr) call MPI_COMM_RANK(mpicom,my_task,ierr) @@ -886,6 +889,7 @@ subroutine shr_strdata_advance(SDAT,ymd,tod,mpicom,istr,timers) endif ! nstreams > 0 + call t_stopf(trim(lstr)//trim(timname)//'_total') if (.not.ltimers) call t_adj_detailf(-tadj) end subroutine shr_strdata_advance diff --git a/share/csm_share/shr/shr_stream_mod.F90 b/share/csm_share/shr/shr_stream_mod.F90 index 2066f0f0a6fd..1ad9060e9a8d 100644 --- a/share/csm_share/shr/shr_stream_mod.F90 +++ b/share/csm_share/shr/shr_stream_mod.F90 @@ -41,6 +41,7 @@ module shr_stream_mod use shr_log_mod, only : s_loglev => shr_log_Level use shr_log_mod, only : s_logunit => shr_log_Unit use shr_log_mod, only : OOBMsg => shr_log_OOBMsg + use pio, only : file_desc_t use perf_mod implicit none @@ -72,6 +73,8 @@ module shr_stream_mod public :: shr_stream_getFile ! acquire file, return name of file to open public :: shr_stream_getNFiles ! get the number of files in a stream public :: shr_stream_getCalendar ! get the stream calendar + public :: shr_stream_getCurrFile ! get the currfile, fileopen, and currpioid + public :: shr_stream_setCurrFile ! set the currfile, fileopen, and currpioid public :: shr_stream_dataDump ! internal stream data for debugging public :: shr_stream_restWrite ! write a streams restart file public :: shr_stream_restRead ! read a streams restart file @@ -136,6 +139,11 @@ module shr_stream_mod integer(SHR_KIND_IN) :: k_gvd,n_gvd ! file/sample of greatest valid date logical :: found_gvd ! T <=> k_gvd,n_gvd have been set + !---- for keeping files open + logical :: fileopen ! is current file open + character(SHR_KIND_CL) :: currfile ! current filename + type(file_desc_t) :: currpioid ! current pio file desc + !--- stream data not used by stream module itself --- character(SHR_KIND_CXX):: fldListFile ! field list: file's field names character(SHR_KIND_CXX):: fldListModel ! field list: model's field names @@ -746,8 +754,10 @@ subroutine shr_stream_set(strm,yearFirst,yearLast,yearAlign,offset,taxMode, & strm%filePath = trim(filePath) endif if (present(filename)) then - write(s_logunit,F01) "size of filename = ",size(filename) - write(s_logunit,F00) "filename = ",filename + if (debug>1 .and. s_loglev > 0) then + write(s_logunit,F01) "size of filename = ",size(filename) + write(s_logunit,F00) "filename = ",filename + endif do n = 1,size(filename) ! Ignore null file names. @@ -828,6 +838,9 @@ subroutine shr_stream_default(strm,rc) strm%n_gvd = -1 strm%found_gvd = .false. + strm%fileopen = .false. + strm%currfile = '' + strm%fldListFile = ' ' strm%fldListModel = ' ' strm%domFilePath = ' ' @@ -2004,6 +2017,86 @@ subroutine shr_stream_getCalendar(strm,k,calendar) end subroutine shr_stream_getCalendar +!=============================================================================== +!BOP =========================================================================== +! +! !IROUTINE: shr_stream_getCurrFile -- return open file information +! +! !DESCRIPTION: +! returns current file information +! +! !REVISION HISTORY: +! 2015-Nov-24 - T. Craig +! +! !INTERFACE: ------------------------------------------------------------------ + +subroutine shr_stream_getCurrFile(strm,fileopen,currfile,currpioid) + +! !INPUT/OUTPUT PARAMETERS: + + type(shr_stream_streamType),intent(in) :: strm ! data stream + logical ,optional,intent(out) :: fileopen ! file open flag + character(*) ,optional,intent(out) :: currfile ! current filename + type(file_desc_t) ,optional,intent(out) :: currpioid ! current pioid + +!EOP + +!------------------------------------------------------------------------------- +! +!------------------------------------------------------------------------------- + + if (present(fileopen)) then + fileopen = strm%fileopen + endif + if (present(currfile)) then + currfile = strm%currfile + endif + if (present(currpioid)) then + currpioid = strm%currpioid + endif + +end subroutine shr_stream_getCurrFile + +!=============================================================================== +!BOP =========================================================================== +! +! !IROUTINE: shr_stream_setCurrFile -- return open file information +! +! !DESCRIPTION: +! returns current file information +! +! !REVISION HISTORY: +! 2015-Nov-24 - T. Craig +! +! !INTERFACE: ------------------------------------------------------------------ + +subroutine shr_stream_setCurrFile(strm,fileopen,currfile,currpioid) + +! !INPUT/OUTPUT PARAMETERS: + + type(shr_stream_streamType),intent(inout) :: strm ! data stream + logical ,optional,intent(in) :: fileopen ! file open flag + character(*) ,optional,intent(in) :: currfile ! current filename + type(file_desc_t) ,optional,intent(in) :: currpioid ! current pioid + +!EOP + +!------------------------------------------------------------------------------- +! +!------------------------------------------------------------------------------- + + if (present(fileopen)) then + strm%fileopen = fileopen + endif + if (present(currfile)) then + strm%currfile = currfile + endif + if (present(currpioid)) then + strm%currpioid = currpioid + endif + +end subroutine shr_stream_setCurrFile + !=============================================================================== !BOP =========================================================================== ! @@ -3111,6 +3204,8 @@ subroutine shr_stream_bcast(stream,comm,rc) call shr_mpi_bcast(stream%k_gvd ,comm,subName) call shr_mpi_bcast(stream%n_gvd ,comm,subName) call shr_mpi_bcast(stream%found_gvd ,comm,subName) + call shr_mpi_bcast(stream%fileopen ,comm,subName) + call shr_mpi_bcast(stream%currfile ,comm,subName) call shr_mpi_bcast(stream%fldListFile ,comm,subName) call shr_mpi_bcast(stream%fldListModel,comm,subName) call shr_mpi_bcast(stream%domFileName ,comm,subName) From 89d36b0d09ebd1b2fe368c9db0df898343c4e886 Mon Sep 17 00:00:00 2001 From: Katetc Date: Thu, 25 Feb 2016 12:46:23 -0700 Subject: [PATCH 17/17] Breaking up four long lines into 8 shorter ones to statisfy Nag compiler requirements. --- share/csm_share/shr/shr_strdata_mod.F90 | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/share/csm_share/shr/shr_strdata_mod.F90 b/share/csm_share/shr/shr_strdata_mod.F90 index 4b7a8b9276a4..218d463bee8a 100644 --- a/share/csm_share/shr/shr_strdata_mod.F90 +++ b/share/csm_share/shr/shr_strdata_mod.F90 @@ -680,8 +680,10 @@ subroutine shr_strdata_advance(SDAT,ymd,tod,mpicom,istr,timers) if (newData(n)) then if (debug > 0) then - write(logunit,*) trim(subname),' newData RLB = ',n,minval(SDAT%avRLB(n)%rAttr),maxval(SDAT%avRLB(n)%rAttr),sum(SDAT%avRLB(n)%rAttr) - write(logunit,*) trim(subname),' newData RUB = ',n,minval(SDAT%avRUB(n)%rAttr),maxval(SDAT%avRUB(n)%rAttr),sum(SDAT%avRUB(n)%rAttr) + write(logunit,*) trim(subname),' newData RLB = ',n,minval(SDAT%avRLB(n)%rAttr), & + maxval(SDAT%avRLB(n)%rAttr),sum(SDAT%avRLB(n)%rAttr) + write(logunit,*) trim(subname),' newData RUB = ',n,minval(SDAT%avRUB(n)%rAttr), & + maxval(SDAT%avRUB(n)%rAttr),sum(SDAT%avRUB(n)%rAttr) endif call shr_cal_date2ymd(SDAT%ymdLB(n),year,month,day) call shr_cal_timeSet(timeLB,SDAT%ymdLB(n),0,SDAT%stream(n)%calendar) @@ -730,8 +732,10 @@ subroutine shr_strdata_advance(SDAT,ymd,tod,mpicom,istr,timers) endif if (debug > 0) then - write(logunit,*) trim(subname),' newData FLB = ',n,minval(SDAT%avFLB(n)%rAttr),maxval(SDAT%avFLB(n)%rAttr),sum(SDAT%avFLB(n)%rAttr) - write(logunit,*) trim(subname),' newData FUB = ',n,minval(SDAT%avFUB(n)%rAttr),maxval(SDAT%avFUB(n)%rAttr),sum(SDAT%avFUB(n)%rAttr) + write(logunit,*) trim(subname),' newData FLB = ',n,minval(SDAT%avFLB(n)%rAttr), & + maxval(SDAT%avFLB(n)%rAttr),sum(SDAT%avFLB(n)%rAttr) + write(logunit,*) trim(subname),' newData FUB = ',n,minval(SDAT%avFUB(n)%rAttr), & + maxval(SDAT%avFUB(n)%rAttr),sum(SDAT%avFUB(n)%rAttr) endif endif enddo