- Timestamp:
- 2017-10-30T12:44:29+01:00 (7 years ago)
- Location:
- branches/2017/dev_r8600_xios_read/NEMOGCM/NEMO/OPA_SRC/IOM
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2017/dev_r8600_xios_read/NEMOGCM/NEMO/OPA_SRC/IOM/in_out_manager.F90
r8612 r8668 151 151 LOGICAL :: lsp_area = .TRUE. !: to make a control print over a specific area 152 152 CHARACTER(lc) :: cxios_context !: context name used in xios 153 CHARACTER(lc) :: rxios_context !: context name used in xios to read restart153 CHARACTER(lc) :: crxios_context !: context name used in xios to read restart 154 154 155 155 !!---------------------------------------------------------------------- -
branches/2017/dev_r8600_xios_read/NEMOGCM/NEMO/OPA_SRC/IOM/iom.F90
r8616 r8668 106 106 CHARACTER(len=10) :: clname 107 107 INTEGER :: ji, jkmin 108 LOGICAL :: l rst_context ! is context related to restart108 LOGICAL :: llrst_context ! is context related to restart 109 109 ! 110 110 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: zt_bnds, zw_bnds … … 117 117 CALL xios_context_initialize(TRIM(clname), mpi_comm_opa) 118 118 CALL iom_swap( cdname ) 119 l rst_context = (TRIM(cdname) == TRIM(rxios_context))119 llrst_context = (TRIM(cdname) == TRIM(crxios_context)) 120 120 121 121 ! Calendar type is now defined in xml file … … 130 130 131 131 ! horizontal grid definition 132 IF(.NOT.l rst_context) CALL set_scalar132 IF(.NOT.llrst_context) CALL set_scalar 133 133 134 134 IF( TRIM(cdname) == TRIM(cxios_context) ) THEN … … 162 162 CALL dom_grid_glo ! Return to parent grid domain 163 163 ! 164 IF( ln_cfmeta .AND. TRIM(cdname) .NE. TRIM( rxios_context)) THEN ! Add additional grid metadata164 IF( ln_cfmeta .AND. TRIM(cdname) .NE. TRIM(crxios_context)) THEN ! Add additional grid metadata 165 165 CALL iom_set_domain_attr("grid_T", area = e1e2t_crs(nldi:nlei, nldj:nlej)) 166 166 CALL iom_set_domain_attr("grid_U", area = e1u_crs(nldi:nlei, nldj:nlej) * e2u_crs(nldi:nlei, nldj:nlej)) … … 175 175 176 176 ! vertical grid definition 177 IF(.NOT.l rst_context) THEN177 IF(.NOT.llrst_context) THEN 178 178 CALL iom_set_axis_attr( "deptht", paxis = gdept_1d ) 179 179 CALL iom_set_axis_attr( "depthu", paxis = gdept_1d ) … … 206 206 ENDIF 207 207 ! automatic definitions of some of the xml attributs 208 IF( l rst_context ) THEN208 IF( llrst_context ) THEN 209 209 !set names of the fields in restart file IF using XIOS to read/write data 210 210 CALL set_rst_context() … … 724 724 !! INTERFACE iom_get 725 725 !!---------------------------------------------------------------------- 726 SUBROUTINE iom_g0d( kiomid, cdvar, pvar, ktime, l rxios )726 SUBROUTINE iom_g0d( kiomid, cdvar, pvar, ktime, ldxios ) 727 727 INTEGER , INTENT(in ) :: kiomid ! Identifier of the file 728 728 CHARACTER(len=*), INTENT(in ) :: cdvar ! Name of the variable 729 729 REAL(wp) , INTENT( out) :: pvar ! read field 730 730 INTEGER , INTENT(in ), OPTIONAL :: ktime ! record number 731 LOGICAL , INTENT(in ), OPTIONAL :: l rxios ! use xios to read restart731 LOGICAL , INTENT(in ), OPTIONAL :: ldxios ! use xios to read restart 732 732 ! 733 733 INTEGER :: idvar ! variable id … … 737 737 CHARACTER(LEN=100) :: clname ! file name 738 738 CHARACTER(LEN=1) :: cldmspc ! 739 LOGICAL :: l xios740 ! 741 l xios = .FALSE.742 IF( PRESENT(l rxios) ) lxios = lrxios743 744 IF(.NOT.l xios) THEN ! read data using default library739 LOGICAL :: llxios 740 ! 741 llxios = .FALSE. 742 IF( PRESENT(ldxios) ) llxios = ldxios 743 744 IF(.NOT.llxios) THEN ! read data using default library 745 745 itime = 1 746 746 IF( PRESENT(ktime) ) itime = ktime … … 767 767 ELSE 768 768 IF(lwp) WRITE(numout,*) 'XIOS RST READ (0D): ', trim(cdvar) 769 CALL iom_swap( TRIM( rxios_context) )769 CALL iom_swap( TRIM(crxios_context) ) 770 770 CALL xios_recv_field( trim(cdvar), pvar) 771 771 CALL iom_swap( TRIM(cxios_context) ) … … 773 773 END SUBROUTINE iom_g0d 774 774 775 SUBROUTINE iom_g1d( kiomid, kdom, cdvar, pvar, ktime, kstart, kcount, l rxios )775 SUBROUTINE iom_g1d( kiomid, kdom, cdvar, pvar, ktime, kstart, kcount, ldxios ) 776 776 INTEGER , INTENT(in ) :: kiomid ! Identifier of the file 777 777 INTEGER , INTENT(in ) :: kdom ! Type of domain to be read … … 781 781 INTEGER , INTENT(in ), DIMENSION(1), OPTIONAL :: kstart ! start axis position of the reading 782 782 INTEGER , INTENT(in ), DIMENSION(1), OPTIONAL :: kcount ! number of points in each axis 783 LOGICAL , INTENT(in ), OPTIONAL :: l rxios ! read data using XIOS783 LOGICAL , INTENT(in ), OPTIONAL :: ldxios ! read data using XIOS 784 784 ! 785 785 IF( kiomid > 0 ) THEN 786 786 IF( iom_file(kiomid)%nfid > 0 ) CALL iom_get_123d( kiomid, kdom , cdvar , pv_r1d=pvar, & 787 787 & ktime=ktime, kstart=kstart, kcount=kcount, & 788 & l rxios=lrxios )788 & ldxios=ldxios ) 789 789 ENDIF 790 790 END SUBROUTINE iom_g1d 791 791 792 SUBROUTINE iom_g2d( kiomid, kdom, cdvar, pvar, ktime, kstart, kcount, lrowattr, l rxios)792 SUBROUTINE iom_g2d( kiomid, kdom, cdvar, pvar, ktime, kstart, kcount, lrowattr, ldxios) 793 793 INTEGER , INTENT(in ) :: kiomid ! Identifier of the file 794 794 INTEGER , INTENT(in ) :: kdom ! Type of domain to be read … … 802 802 ! called open_ocean_jstart to set the start 803 803 ! value for the 2nd dimension (netcdf only) 804 LOGICAL , INTENT(in ), OPTIONAL :: l rxios ! read data using XIOS804 LOGICAL , INTENT(in ), OPTIONAL :: ldxios ! read data using XIOS 805 805 ! 806 806 IF( kiomid > 0 ) THEN 807 807 IF( iom_file(kiomid)%nfid > 0 ) CALL iom_get_123d( kiomid, kdom , cdvar , pv_r2d=pvar, & 808 808 & ktime=ktime, kstart=kstart, kcount=kcount, & 809 & lrowattr=lrowattr, l rxios=lrxios)809 & lrowattr=lrowattr, ldxios=ldxios) 810 810 ENDIF 811 811 END SUBROUTINE iom_g2d 812 812 813 SUBROUTINE iom_g3d( kiomid, kdom, cdvar, pvar, ktime, kstart, kcount, lrowattr, l rxios )813 SUBROUTINE iom_g3d( kiomid, kdom, cdvar, pvar, ktime, kstart, kcount, lrowattr, ldxios ) 814 814 INTEGER , INTENT(in ) :: kiomid ! Identifier of the file 815 815 INTEGER , INTENT(in ) :: kdom ! Type of domain to be read … … 823 823 ! called open_ocean_jstart to set the start 824 824 ! value for the 2nd dimension (netcdf only) 825 LOGICAL , INTENT(in ), OPTIONAL :: l rxios ! read data using XIOS825 LOGICAL , INTENT(in ), OPTIONAL :: ldxios ! read data using XIOS 826 826 ! 827 827 IF( kiomid > 0 ) THEN 828 828 IF( iom_file(kiomid)%nfid > 0 ) CALL iom_get_123d( kiomid, kdom , cdvar , pv_r3d=pvar, & 829 829 & ktime=ktime, kstart=kstart, kcount=kcount, & 830 & lrowattr=lrowattr, l rxios=lrxios )830 & lrowattr=lrowattr, ldxios=ldxios ) 831 831 ENDIF 832 832 END SUBROUTINE iom_g3d … … 836 836 & pv_r1d, pv_r2d, pv_r3d, & 837 837 & ktime , kstart, kcount, & 838 & lrowattr, l rxios )838 & lrowattr, ldxios ) 839 839 !!----------------------------------------------------------------------- 840 840 !! *** ROUTINE iom_get_123d *** … … 857 857 ! called open_ocean_jstart to set the start 858 858 ! value for the 2nd dimension (netcdf only) 859 LOGICAL , INTENT(in ), OPTIONAL :: l rxios ! use XIOS to read restart860 ! 861 LOGICAL :: l xios ! local definition for XIOS read859 LOGICAL , INTENT(in ), OPTIONAL :: ldxios ! use XIOS to read restart 860 ! 861 LOGICAL :: llxios ! local definition for XIOS read 862 862 LOGICAL :: llnoov ! local definition to read overlap 863 863 LOGICAL :: luse_jattr ! local definition to read open_ocean_jstart file attribute … … 887 887 ! 888 888 REAL(wp) :: gma, gmi 889 l xios = .FALSE.890 if(PRESENT(l rxios)) lxios = lrxios889 llxios = .FALSE. 890 if(PRESENT(ldxios)) llxios = ldxios 891 891 idvar = iom_varid( kiomid, cdvar ) 892 892 idom = kdom 893 893 894 IF(.NOT.l xios) THEN894 IF(.NOT.llxios) THEN 895 895 clname = iom_file(kiomid)%name ! esier to read 896 896 clinfo = ' iom_get_123d, file: '//trim(clname)//', var: '//trim(cdvar) … … 1123 1123 #if defined key_iomput 1124 1124 !would be good to be able to check which context is active and swap only if current is not restart 1125 CALL iom_swap( TRIM( rxios_context) )1125 CALL iom_swap( TRIM(crxios_context) ) 1126 1126 IF( PRESENT(pv_r3d) ) THEN 1127 1127 if(lwp) write(numout,*) 'XIOS RST READ (3D): ',trim(cdvar) … … 1626 1626 1627 1627 1628 SUBROUTINE set_grid( cdgrd, plon, plat, l xios )1628 SUBROUTINE set_grid( cdgrd, plon, plat, ldxios ) 1629 1629 !!---------------------------------------------------------------------- 1630 1630 !! *** ROUTINE set_grid *** … … 1639 1639 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zmask 1640 1640 INTEGER :: ni,nj 1641 LOGICAL, INTENT(IN) :: l xios1641 LOGICAL, INTENT(IN) :: ldxios 1642 1642 1643 1643 ni=nlei-nldi+1 ; nj=nlej-nldj+1 … … 1648 1648 & latvalue = RESHAPE(plat(nldi:nlei, nldj:nlej),(/ ni*nj /))) 1649 1649 1650 IF ( ln_mskland.AND.(.NOT.l xios) ) THEN1650 IF ( ln_mskland.AND.(.NOT.ldxios) ) THEN 1651 1651 ! mask land points, keep values on coast line -> specific mask for U, V and W points 1652 1652 SELECT CASE ( cdgrd ) -
branches/2017/dev_r8600_xios_read/NEMOGCM/NEMO/OPA_SRC/IOM/restart.F90
r8612 r8668 202 202 IF(.NOT.lxios_set) lxios_read = lxios_read.AND.lxios_sini 203 203 IF( lxios_read) THEN 204 rxios_context = 'nemo_rst'204 crxios_context = 'nemo_rst' 205 205 if(.NOT.lxios_set) then 206 206 IF(lwp) WRITE(numout,*) 'Enable restart reading by XIOS' 207 CALL iom_init( rxios_context )207 CALL iom_init( crxios_context ) 208 208 lxios_set = .TRUE. 209 209 endif 210 210 ENDIF 211 211 IF( TRIM(Agrif_CFixed()) /= '0' .AND. lxios_read) THEN 212 CALL iom_init( rxios_context )212 CALL iom_init( crxios_context ) 213 213 IF(lwp) WRITE(numout,*) 'Enable restart reading by XIOS for AGRIF' 214 214 lxios_set = .TRUE. … … 237 237 ! Check dynamics and tracer time-step consistency and force Euler restart if changed 238 238 IF( iom_varid( numror, 'rdt', ldstop = .FALSE. ) > 0 ) THEN 239 CALL iom_get( numror, 'rdt', zrdt, l rxios = lxios_read )239 CALL iom_get( numror, 'rdt', zrdt, ldxios = lxios_read ) 240 240 IF( zrdt /= rdt ) neuler = 0 241 241 ENDIF 242 242 243 243 ! Diurnal DSST 244 IF( ln_diurnal ) CALL iom_get( numror, jpdom_autoglo, 'Dsst' , x_dsst, l rxios = lxios_read )244 IF( ln_diurnal ) CALL iom_get( numror, jpdom_autoglo, 'Dsst' , x_dsst, ldxios = lxios_read ) 245 245 IF ( ln_diurnal_only ) THEN 246 246 IF(lwp) WRITE( numout, * ) & 247 247 & "rst_read:- ln_diurnal_only set, setting rhop=rau0" 248 248 rhop = rau0 249 CALL iom_get( numror, jpdom_autoglo, 'tn' , tsn(:,:,1,jp_tem), l rxios = lxios_read )249 CALL iom_get( numror, jpdom_autoglo, 'tn' , tsn(:,:,1,jp_tem), ldxios = lxios_read ) 250 250 RETURN 251 251 ENDIF 252 252 253 253 IF( iom_varid( numror, 'ub', ldstop = .FALSE. ) > 0 ) THEN 254 CALL iom_get( numror, jpdom_autoglo, 'ub' , ub, l rxios = lxios_read ) ! before fields255 CALL iom_get( numror, jpdom_autoglo, 'vb' , vb, l rxios = lxios_read )256 CALL iom_get( numror, jpdom_autoglo, 'tb' , tsb(:,:,:,jp_tem), l rxios = lxios_read )257 CALL iom_get( numror, jpdom_autoglo, 'sb' , tsb(:,:,:,jp_sal), l rxios = lxios_read )258 CALL iom_get( numror, jpdom_autoglo, 'sshb' , sshb, l rxios = lxios_read )254 CALL iom_get( numror, jpdom_autoglo, 'ub' , ub, ldxios = lxios_read ) ! before fields 255 CALL iom_get( numror, jpdom_autoglo, 'vb' , vb, ldxios = lxios_read ) 256 CALL iom_get( numror, jpdom_autoglo, 'tb' , tsb(:,:,:,jp_tem), ldxios = lxios_read ) 257 CALL iom_get( numror, jpdom_autoglo, 'sb' , tsb(:,:,:,jp_sal), ldxios = lxios_read ) 258 CALL iom_get( numror, jpdom_autoglo, 'sshb' , sshb, ldxios = lxios_read ) 259 259 ELSE 260 260 neuler = 0 261 261 ENDIF 262 262 ! 263 CALL iom_get( numror, jpdom_autoglo, 'un' , un, l rxios = lxios_read ) ! now fields264 CALL iom_get( numror, jpdom_autoglo, 'vn' , vn, l rxios = lxios_read )265 CALL iom_get( numror, jpdom_autoglo, 'tn' , tsn(:,:,:,jp_tem), l rxios = lxios_read )266 CALL iom_get( numror, jpdom_autoglo, 'sn' , tsn(:,:,:,jp_sal), l rxios = lxios_read )267 CALL iom_get( numror, jpdom_autoglo, 'sshn' , sshn, l rxios = lxios_read )263 CALL iom_get( numror, jpdom_autoglo, 'un' , un, ldxios = lxios_read ) ! now fields 264 CALL iom_get( numror, jpdom_autoglo, 'vn' , vn, ldxios = lxios_read ) 265 CALL iom_get( numror, jpdom_autoglo, 'tn' , tsn(:,:,:,jp_tem), ldxios = lxios_read ) 266 CALL iom_get( numror, jpdom_autoglo, 'sn' , tsn(:,:,:,jp_sal), ldxios = lxios_read ) 267 CALL iom_get( numror, jpdom_autoglo, 'sshn' , sshn, ldxios = lxios_read ) 268 268 IF( iom_varid( numror, 'rhop', ldstop = .FALSE. ) > 0 ) THEN 269 CALL iom_get( numror, jpdom_autoglo, 'rhop' , rhop, l rxios = lxios_read ) ! now potential density269 CALL iom_get( numror, jpdom_autoglo, 'rhop' , rhop, ldxios = lxios_read ) ! now potential density 270 270 ELSE 271 271 CALL eos( tsn, rhd, rhop, gdept_n(:,:,:) )
Note: See TracChangeset
for help on using the changeset viewer.