Changeset 8079
- Timestamp:
- 2017-05-26T12:09:41+02:00 (7 years ago)
- Location:
- branches/UKMO/dev_r7573_xios_write/NEMOGCM
- Files:
-
- 20 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/dev_r7573_xios_write/NEMOGCM/CONFIG/SHARED/namelist_ref
r7540 r8079 50 50 ln_clobber = .false. ! clobber (overwrite) an existing file 51 51 nn_chunksz = 0 ! chunksize (bytes) for NetCDF file (works only with iom_nf90 routines) 52 nn_wxios = 0 ! use XIOS to write restart file 0 - no, 1 - single file output, 2 - multiple file output 52 53 / 53 54 ! -
branches/UKMO/dev_r7573_xios_write/NEMOGCM/NEMO/OPA_SRC/DIA/diahsb.F90
r6487 r8079 32 32 USE timing ! preformance summary 33 33 USE wrk_nemo ! work arrays 34 USE iom_def, ONLY : lwxios 34 35 35 36 IMPLICIT NONE … … 304 305 IF(lwp) WRITE(numout,*) ' dia_hsb_rst at it= ', kt,' date= ', ndastp 305 306 IF(lwp) WRITE(numout,*) '~~~~~~~' 306 307 CALL iom_rstput( kt, nitrst, numrow, 'frc_v' , frc_v 308 CALL iom_rstput( kt, nitrst, numrow, 'frc_t' , frc_t 309 CALL iom_rstput( kt, nitrst, numrow, 'frc_s' , frc_s 307 IF( lwxios ) CALL iom_swap( wxios_context ) 308 CALL iom_rstput( kt, nitrst, numrow, 'frc_v' , frc_v, lxios = lwxios) 309 CALL iom_rstput( kt, nitrst, numrow, 'frc_t' , frc_t, lxios = lwxios) 310 CALL iom_rstput( kt, nitrst, numrow, 'frc_s' , frc_s, lxios = lwxios) 310 311 IF( .NOT. lk_vvl ) THEN 311 CALL iom_rstput( kt, nitrst, numrow, 'frc_wn_t', frc_wn_t 312 CALL iom_rstput( kt, nitrst, numrow, 'frc_wn_s', frc_wn_s )312 CALL iom_rstput( kt, nitrst, numrow, 'frc_wn_t', frc_wn_t, lxios = lwxios) 313 CALL iom_rstput( kt, nitrst, numrow, 'frc_wn_s', frc_wn_s, lxios = lwxios ) 313 314 ENDIF 314 CALL iom_rstput( kt, nitrst, numrow, 'ssh_ini', ssh_ini 315 CALL iom_rstput( kt, nitrst, numrow, 'e3t_ini', e3t_ini 316 CALL iom_rstput( kt, nitrst, numrow, 'hc_loc_ini', hc_loc_ini 317 CALL iom_rstput( kt, nitrst, numrow, 'sc_loc_ini', sc_loc_ini 315 CALL iom_rstput( kt, nitrst, numrow, 'ssh_ini', ssh_ini, lxios = lwxios) 316 CALL iom_rstput( kt, nitrst, numrow, 'e3t_ini', e3t_ini, lxios = lwxios) 317 CALL iom_rstput( kt, nitrst, numrow, 'hc_loc_ini', hc_loc_ini, lxios = lwxios) 318 CALL iom_rstput( kt, nitrst, numrow, 'sc_loc_ini', sc_loc_ini, lxios = lwxios) 318 319 IF( .NOT. lk_vvl ) THEN 319 CALL iom_rstput( kt, nitrst, numrow, 'ssh_hc_loc_ini', ssh_hc_loc_ini )320 CALL iom_rstput( kt, nitrst, numrow, 'ssh_sc_loc_ini', ssh_sc_loc_ini )320 CALL iom_rstput( kt, nitrst, numrow, 'ssh_hc_loc_ini', ssh_hc_loc_ini, lxios = lwxios ) 321 CALL iom_rstput( kt, nitrst, numrow, 'ssh_sc_loc_ini', ssh_sc_loc_ini, lxios = lwxios ) 321 322 ENDIF 322 323 ! 324 IF( lwxios ) CALL iom_swap( cxios_context ) 323 325 ENDIF 324 326 ! -
branches/UKMO/dev_r7573_xios_write/NEMOGCM/NEMO/OPA_SRC/DOM/daymod.F90
r6487 r8079 35 35 USE timing ! Timing 36 36 USE restart ! restart 37 USE iom_def, ONLY : lwxios 37 38 38 39 IMPLICIT NONE … … 359 360 ENDIF 360 361 ! calendar control 361 CALL iom_rstput( kt, nitrst, numrow, 'kt' , REAL( kt , wp) ) ! time-step 362 CALL iom_rstput( kt, nitrst, numrow, 'ndastp' , REAL( ndastp, wp) ) ! date 363 CALL iom_rstput( kt, nitrst, numrow, 'adatrj' , adatrj ) ! number of elapsed days since 362 IF( lwxios ) CALL iom_swap( wxios_context ) 363 CALL iom_rstput( kt, nitrst, numrow, 'kt' , REAL( kt , wp), lxios = lwxios ) ! time-step 364 CALL iom_rstput( kt, nitrst, numrow, 'ndastp' , REAL( ndastp, wp), lxios = lwxios ) ! date 365 CALL iom_rstput( kt, nitrst, numrow, 'adatrj' , adatrj, lxios = lwxios ) ! number of elapsed days since 364 366 ! ! the begining of the run [s] 367 IF( lwxios ) CALL iom_swap( cxios_context ) 365 368 ENDIF 366 369 ! -
branches/UKMO/dev_r7573_xios_write/NEMOGCM/NEMO/OPA_SRC/DOM/domain.F90
r6491 r8079 38 38 USE timing ! Timing 39 39 USE lbclnk ! ocean lateral boundary condition (or mpp link) 40 USE iom_def, ONLY:lwxios, wxioso ! write restart flag and output type 40 41 41 42 IMPLICIT NONE … … 138 139 & nn_no , cn_exp , cn_ocerst_in, cn_ocerst_out, ln_rstart , ln_rstdate, nn_rstctl, & 139 140 & nn_it000, nn_itend , nn_date0 , nn_leapy , nn_istate , nn_stock , & 140 & nn_write, ln_dimgnnn, ln_mskland , ln_cfmeta , ln_clobber, nn_chunksz, nn_euler 141 & nn_write, ln_dimgnnn, ln_mskland , ln_cfmeta , ln_clobber, nn_chunksz, nn_euler, & 142 & nn_wxios 141 143 NAMELIST/namdom/ nn_bathy, rn_bathy , rn_e3zps_min, rn_e3zps_rat, nn_msh, rn_hmin, & 142 144 & nn_acc , rn_atfp , rn_rdt , rn_rdtmin , & … … 152 154 INTEGER :: ios ! Local integer output status for namelist read 153 155 !!---------------------------------------------------------------------- 154 156 nn_wxios = 0 155 157 REWIND( numnam_ref ) ! Namelist namrun in reference namelist : Parameters of the run 156 158 READ ( numnam_ref, namrun, IOSTAT = ios, ERR = 901) … … 193 195 WRITE(numout,*) ' overwrite an existing file ln_clobber = ', ln_clobber 194 196 WRITE(numout,*) ' NetCDF chunksize (bytes) nn_chunksz = ', nn_chunksz 197 WRITE(numout,*) ' Write restart using XIOS nn_wxios = ', nn_wxios 195 198 ENDIF 196 199 … … 305 308 rdtmax = rn_rdtmin 306 309 rdth = rn_rdth 310 if (nn_wxios > 0) lwxios = .TRUE. 311 wxioso = nn_wxios 307 312 308 313 REWIND( numnam_ref ) ! Namelist namcla in reference namelist : Cross land advection -
branches/UKMO/dev_r7573_xios_write/NEMOGCM/NEMO/OPA_SRC/DOM/domvvl.F90
r6498 r8079 134 134 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~' 135 135 136 ! Set variables needed in iom for reastart write with XIOS 137 lr_vvl_ztilde = ln_vvl_ztilde 138 lr_vvl_layer = ln_vvl_layer 136 139 ! choose vertical coordinate (z_star, z_tilde or layer) 137 140 ! ========================== … … 909 912 ! ! all cases ! 910 913 ! ! --------- ! 911 CALL iom_rstput( kt, nitrst, numrow, 'fse3t_b', fse3t_b(:,:,:) ) 912 CALL iom_rstput( kt, nitrst, numrow, 'fse3t_n', fse3t_n(:,:,:) ) 914 IF( lwxios ) CALL iom_swap( wxios_context ) 915 CALL iom_rstput( kt, nitrst, numrow, 'fse3t_b', fse3t_b(:,:,:), lxios = lwxios ) 916 CALL iom_rstput( kt, nitrst, numrow, 'fse3t_n', fse3t_n(:,:,:), lxios = lwxios ) 913 917 ! ! ----------------------- ! 914 918 IF( ln_vvl_ztilde .OR. ln_vvl_layer ) THEN ! z_tilde and layer cases ! 915 919 ! ! ----------------------- ! 916 CALL iom_rstput( kt, nitrst, numrow, 'tilde_e3t_b', tilde_e3t_b(:,:,:) 917 CALL iom_rstput( kt, nitrst, numrow, 'tilde_e3t_n', tilde_e3t_n(:,:,:) 920 CALL iom_rstput( kt, nitrst, numrow, 'tilde_e3t_b', tilde_e3t_b(:,:,:), lxios = lwxios) 921 CALL iom_rstput( kt, nitrst, numrow, 'tilde_e3t_n', tilde_e3t_n(:,:,:), lxios = lwxios) 918 922 END IF 919 923 ! ! -------------! 920 924 IF( ln_vvl_ztilde ) THEN ! z_tilde case ! 921 925 ! ! ------------ ! 922 CALL iom_rstput( kt, nitrst, numrow, 'hdiv_lf', hdiv_lf(:,:,:) 926 CALL iom_rstput( kt, nitrst, numrow, 'hdiv_lf', hdiv_lf(:,:,:), lxios = lwxios) 923 927 ENDIF 924 928 IF( lwxios ) CALL iom_swap( cxios_context ) 925 929 ENDIF 926 930 IF( nn_timing == 1 ) CALL timing_stop('dom_vvl_rst') -
branches/UKMO/dev_r7573_xios_write/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_flt.F90
r7179 r8079 51 51 USE agrif_opa_interp 52 52 #endif 53 USE iom_def, ONLY : lwxios 53 54 54 55 IMPLICIT NONE … … 405 406 ! Caution : extra-hallow 406 407 ! gcx and gcxb are defined as: DIMENSION(1-jpr2di:jpi+jpr2di,1-jpr2dj:jpj+jpr2dj) 407 CALL iom_rstput( kt, nitrst, numrow, 'gcx' , gcx (1:jpi,1:jpj) ) 408 CALL iom_rstput( kt, nitrst, numrow, 'gcxb', gcxb(1:jpi,1:jpj) ) 408 IF( lwxios ) CALL iom_swap( wxios_context ) 409 CALL iom_rstput( kt, nitrst, numrow, 'gcx' , gcx (1:jpi,1:jpj), lxios = lwxios ) 410 CALL iom_rstput( kt, nitrst, numrow, 'gcxb', gcxb(1:jpi,1:jpj), lxios = lwxios ) 411 IF( lwxios ) CALL iom_swap( cxios_context ) 409 412 ENDIF 410 413 ! -
branches/UKMO/dev_r7573_xios_write/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_ts.F90
r6487 r8079 48 48 USE asminc ! Assimilation increment 49 49 #endif 50 USE iom_def, ONLY : lwxios 50 51 51 52 IMPLICIT NONE … … 1038 1039 ! 1039 1040 ELSEIF( TRIM(cdrw) == 'WRITE' ) THEN 1040 CALL iom_rstput( kt, nitrst, numrow, 'ub2_b' , ub2_b (:,:) ) 1041 CALL iom_rstput( kt, nitrst, numrow, 'vb2_b' , vb2_b (:,:) ) 1041 IF( lwxios ) CALL iom_swap( wxios_context ) 1042 CALL iom_rstput( kt, nitrst, numrow, 'ub2_b' , ub2_b (:,:), lxios = lwxios ) 1043 CALL iom_rstput( kt, nitrst, numrow, 'vb2_b' , vb2_b (:,:), lxios = lwxios ) 1042 1044 ! 1043 1045 IF (.NOT.ln_bt_av) THEN 1044 CALL iom_rstput( kt, nitrst, numrow, 'sshbb_e' , sshbb_e(:,:) )1045 CALL iom_rstput( kt, nitrst, numrow, 'ubb_e' , ubb_e(:,:) )1046 CALL iom_rstput( kt, nitrst, numrow, 'vbb_e' , vbb_e(:,:) )1047 CALL iom_rstput( kt, nitrst, numrow, 'sshb_e' , sshb_e(:,:) )1048 CALL iom_rstput( kt, nitrst, numrow, 'ub_e' , ub_e(:,:) )1049 CALL iom_rstput( kt, nitrst, numrow, 'vb_e' , vb_e(:,:) )1046 CALL iom_rstput( kt, nitrst, numrow, 'sshbb_e' , sshbb_e(:,:), lxios = lwxios ) 1047 CALL iom_rstput( kt, nitrst, numrow, 'ubb_e' , ubb_e(:,:), lxios = lwxios ) 1048 CALL iom_rstput( kt, nitrst, numrow, 'vbb_e' , vbb_e(:,:), lxios = lwxios ) 1049 CALL iom_rstput( kt, nitrst, numrow, 'sshb_e' , sshb_e(:,:), lxios = lwxios ) 1050 CALL iom_rstput( kt, nitrst, numrow, 'ub_e' , ub_e(:,:), lxios = lwxios ) 1051 CALL iom_rstput( kt, nitrst, numrow, 'vb_e' , vb_e(:,:), lxios = lwxios ) 1050 1052 ENDIF 1051 1053 #if defined key_agrif 1052 1054 ! Save time integrated fluxes 1053 1055 IF ( .NOT.Agrif_Root() ) THEN 1054 CALL iom_rstput( kt, nitrst, numrow, 'ub2_i_b' , ub2_i_b(:,:) ) 1055 CALL iom_rstput( kt, nitrst, numrow, 'vb2_i_b' , vb2_i_b(:,:) ) 1056 ENDIF 1057 #endif 1056 CALL iom_rstput( kt, nitrst, numrow, 'ub2_i_b' , ub2_i_b(:,:), lxios = lwxios ) 1057 CALL iom_rstput( kt, nitrst, numrow, 'vb2_i_b' , vb2_i_b(:,:), lxios = lwxios ) 1058 ENDIF 1059 #endif 1060 IF( lwxios ) CALL iom_swap( cxios_context ) 1058 1061 ENDIF 1059 1062 ! -
branches/UKMO/dev_r7573_xios_write/NEMOGCM/NEMO/OPA_SRC/IOM/in_out_manager.F90
r6491 r8079 49 49 LOGICAL :: ln_clobber !: clobber (overwrite) an existing file 50 50 INTEGER :: nn_chunksz !: chunksize (bytes) for NetCDF file (works only with iom_nf90 routines) 51 INTEGER :: nn_wxios !: write resart using xios 0 - no, 1 - single, 2 - multiple file output 51 52 #if defined key_netcdf4 52 53 !!---------------------------------------------------------------------- … … 152 153 LOGICAL :: lsp_area = .TRUE. !: to make a control print over a specific area 153 154 CHARACTER(lc) :: cxios_context !: context name used in xios 155 CHARACTER(lc) :: wxios_context = "nemo_rstw" !: context name used in xios to write restart file 154 156 155 157 !!---------------------------------------------------------------------- -
branches/UKMO/dev_r7573_xios_write/NEMOGCM/NEMO/OPA_SRC/IOM/iom.F90
r7179 r8079 41 41 USE dianam ! build name of file 42 42 USE xios 43 USE iom_def, ONLY : max_rst_fields, rst_fields, wxioso 43 44 # endif 44 45 USE ioipsl, ONLY : ju2ymds ! for calendar 45 46 USE crs ! Grid coarsening 47 USE sbc_oce, ONLY : lk_oasis, ln_coupled_iceshelf_fluxes, ln_apr_dyn, ln_rnf, nn_components, jp_iam_sas 48 USE diadct, ONLY : lk_diadct 46 49 47 50 IMPLICIT NONE 51 ! values needed to set correctlyfiles in reast file when using XIOS for writing 52 LOGICAL, PUBLIC :: lr_vvl_ztilde, lr_vvl_layer, lr_traadv_cen2 53 48 54 PUBLIC ! must be public to be able to access iom_def through iom 49 50 55 #if defined key_iomput 51 56 LOGICAL, PUBLIC, PARAMETER :: lk_iomput = .TRUE. !: iom_put flag … … 53 58 LOGICAL, PUBLIC, PARAMETER :: lk_iomput = .FALSE. !: iom_put flag 54 59 #endif 60 55 61 PUBLIC iom_init, iom_swap, iom_open, iom_close, iom_setkt, iom_varid, iom_get, iom_gettime, iom_rstput, iom_put 56 62 PUBLIC iom_getatt, iom_use, iom_context_finalize … … 62 68 PRIVATE iom_set_domain_attr, iom_set_axis_attr, iom_set_field_attr, iom_set_file_attr, iom_get_file_attr, iom_set_grid_attr 63 69 PRIVATE set_grid, set_grid_bounds, set_scalar, set_xmlatt, set_mooring, iom_update_file_name, iom_sdate 70 PRIVATE set_rst_vars, set_rstw_active 64 71 # endif 65 72 … … 85 92 CONTAINS 86 93 87 SUBROUTINE iom_init( cdname )94 SUBROUTINE iom_init( cdname, filename, it ) 88 95 !!---------------------------------------------------------------------- 89 96 !! *** ROUTINE *** … … 105 112 ! 106 113 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: z_bnds 114 CHARACTER(len=*), OPTIONAL, INTENT(in) :: filename 115 LOGICAL :: lrst_context ! is context related to restart 116 INTEGER, OPTIONAL :: it ! timestep when subroutine was called 107 117 !!---------------------------------------------------------------------- 108 118 #if ! defined key_xios2 … … 116 126 CALL xios_context_initialize(TRIM(clname), mpi_comm_opa) 117 127 CALL iom_swap( cdname ) 128 lrst_context = (TRIM(cdname) == TRIM(wxios_context)) 118 129 119 130 ! calendar parameters … … 136 147 & start_date = xios_date(nyear,nmonth,nday,0,0,0) ) 137 148 END SELECT 149 138 150 #endif 139 151 ! horizontal grid definition … … 141 153 CALL set_scalar 142 154 143 IF( TRIM(cdname) == TRIM(cxios_context) ) THEN144 CALL set_grid( "T", glamt, gphit )145 CALL set_grid( "U", glamu, gphiu )146 CALL set_grid( "V", glamv, gphiv )147 CALL set_grid( "W", glamt, gphit )155 IF( TRIM(cdname) == TRIM(cxios_context) .OR. lrst_context ) THEN 156 CALL set_grid( "T", glamt, gphit, ln_mskland ) 157 CALL set_grid( "U", glamu, gphiu, ln_mskland ) 158 CALL set_grid( "V", glamv, gphiv, ln_mskland ) 159 CALL set_grid( "W", glamt, gphit, ln_mskland ) 148 160 CALL set_grid_znl( gphit ) 161 CALL set_grid("N",glamt, gphit, .FALSE.) ! not masked values 149 162 ! 150 IF( ln_cfmeta ) THEN ! Add additional grid metadata163 IF( ln_cfmeta .AND. .NOT.lrst_context) THEN ! Add additional grid metadata 151 164 CALL iom_set_domain_attr("grid_T", area = e12t(nldi:nlei, nldj:nlej)) 152 165 CALL iom_set_domain_attr("grid_U", area = e12u(nldi:nlei, nldj:nlej)) … … 163 176 CALL dom_grid_crs ! Save the parent grid information & Switch to coarse grid domain 164 177 ! 165 CALL set_grid( "T", glamt_crs, gphit_crs )166 CALL set_grid( "U", glamu_crs, gphiu_crs )167 CALL set_grid( "V", glamv_crs, gphiv_crs )168 CALL set_grid( "W", glamt_crs, gphit_crs )178 CALL set_grid( "T", glamt_crs, gphit_crs, ln_mskland ) 179 CALL set_grid( "U", glamu_crs, gphiu_crs, ln_mskland ) 180 CALL set_grid( "V", glamv_crs, gphiv_crs, ln_mskland ) 181 CALL set_grid( "W", glamt_crs, gphit_crs, ln_mskland ) 169 182 CALL set_grid_znl( gphit_crs ) 170 183 ! 171 184 CALL dom_grid_glo ! Return to parent grid domain 172 185 ! 173 IF( ln_cfmeta ) THEN ! Add additional grid metadata186 IF( ln_cfmeta .AND. .NOT.lrst_context) THEN ! Add additional grid metadata 174 187 CALL iom_set_domain_attr("grid_T", area = e1e2t_crs(nldi:nlei, nldj:nlej)) 175 188 CALL iom_set_domain_attr("grid_U", area = e1u_crs(nldi:nlei, nldj:nlej) * e2u_crs(nldi:nlei, nldj:nlej)) … … 184 197 185 198 ! vertical grid definition 186 CALL iom_set_axis_attr( "deptht", gdept_1d )187 CALL iom_set_axis_attr( "depthu", gdept_1d )188 CALL iom_set_axis_attr( "depthv", gdept_1d )189 CALL iom_set_axis_attr( "depthw", gdepw_1d )199 CALL iom_set_axis_attr( "deptht", paxis = gdept_1d ) 200 CALL iom_set_axis_attr( "depthu", paxis = gdept_1d ) 201 CALL iom_set_axis_attr( "depthv", paxis = gdept_1d ) 202 CALL iom_set_axis_attr( "depthw", paxis = gdepw_1d ) 190 203 191 204 ! Add vertical grid bounds … … 227 240 228 241 ! automatic definitions of some of the xml attributs 229 CALL set_xmlatt 242 IF( TRIM(cdname) == TRIM(wxios_context)) THEN 243 !set names of the fields in restart file IF using XIOS to read/write data 244 CALL set_rst_vars() 245 !set which fields are to be read from restart file 246 CALL set_rstw_active(filename, it) 247 ELSE 248 CALL set_xmlatt 249 ENDIF 230 250 231 251 CALL set_1point … … 241 261 242 262 #endif 243 263 244 264 END SUBROUTINE iom_init 245 265 266 267 SUBROUTINE set_rst_vars() 268 !set names for variables in restart file 269 270 rst_fields(:)%vname="NO_NAME"; rst_fields(:)%grid="NO_GRID" 271 272 rst_fields(1)%vname="rdt"; rst_fields(1)% grid="grid_scalar" 273 rst_fields(2)%vname="rdttra1"; rst_fields(2)% grid="grid_scalar" 274 rst_fields(3)%vname="un"; rst_fields(3)% grid="grid_N_3D" 275 rst_fields(4)%vname="ub"; rst_fields(4)% grid="grid_N_3D" 276 rst_fields(5)%vname="vn"; rst_fields(5)% grid="grid_N_3D" 277 rst_fields(6)%vname="vb"; rst_fields(6)% grid="grid_N_3D" 278 rst_fields(7)%vname="tn"; rst_fields(7)% grid="grid_N_3D" 279 rst_fields(8)%vname="tb"; rst_fields(8)% grid="grid_N_3D" 280 rst_fields(9)%vname="sn"; rst_fields(9)% grid="grid_N_3D" 281 rst_fields(10)%vname="sb"; rst_fields(10)%grid="grid_N_3D" 282 rst_fields(11)%vname="sshn"; rst_fields(11)%grid="grid_N" 283 rst_fields(12)%vname="sshb"; rst_fields(12)%grid="grid_N" 284 rst_fields(13)%vname="hdivn"; rst_fields(13)%grid="grid_N_3D" 285 rst_fields(14)%vname="hdivb"; rst_fields(14)%grid="grid_N_3D" 286 rst_fields(15)%vname="rhop"; rst_fields(15)%grid="grid_N_3D" 287 rst_fields(16)%vname="rotn"; rst_fields(16)%grid="grid_N_3D" 288 rst_fields(17)%vname="rotb"; rst_fields(17)%grid="grid_N_3D" 289 rst_fields(18)%vname="kt"; rst_fields(18)%grid="grid_scalar" 290 rst_fields(19)%vname="ndastp"; rst_fields(19)%grid="grid_scalar" 291 rst_fields(20)%vname="adatrj"; rst_fields(20)%grid="grid_scalar" 292 rst_fields(21)%vname="utau_b"; rst_fields(21)%grid="grid_N" 293 rst_fields(22)%vname="vtau_b"; rst_fields(22)%grid="grid_N" 294 rst_fields(23)%vname="qns_b"; rst_fields(23)%grid="grid_N" 295 rst_fields(24)%vname="emp_b"; rst_fields(24)%grid="grid_N" 296 rst_fields(25)%vname="sfx_b"; rst_fields(25)%grid="grid_N" 297 rst_fields(26)%vname="en" ; rst_fields(26)%grid="grid_N_3D" 298 rst_fields(27)%vname="avt"; rst_fields(27)%grid="grid_N_3D" 299 rst_fields(28)%vname="avm"; rst_fields(28)%grid="grid_N_3D" 300 rst_fields(29)%vname="avmu"; rst_fields(29)%grid="grid_N_3D" 301 rst_fields(30)%vname="avmv"; rst_fields(30)%grid="grid_N_3D" 302 rst_fields(31)%vname="dissl"; rst_fields(31)%grid="grid_N_3D" 303 rst_fields(32)%vname="sbc_hc_b"; rst_fields(32)%grid="grid_N" 304 rst_fields(33)%vname="sbc_sc_b"; rst_fields(33)%grid="grid_N" 305 rst_fields(34)%vname="qsr_hc_b"; rst_fields(34)%grid="grid_N_3D" 306 rst_fields(35)%vname="gcx"; rst_fields(35)%grid="grid_N" 307 rst_fields(36)%vname="gcxb"; rst_fields(36)%grid="grid_N" 308 rst_fields(37)%vname="fraqsr_1lev"; rst_fields(37)%grid="grid_N" 309 rst_fields(38)%vname="greenland_icesheet_mass" 310 rst_fields(38)%grid="grid_scalar" 311 rst_fields(39)%vname="greenland_icesheet_timelapsed" 312 rst_fields(39)%grid="grid_scalar" 313 rst_fields(40)%vname="greenland_icesheet_mass_roc" 314 rst_fields(40)%grid="grid_scalar" 315 rst_fields(41)%vname="antarctica_icesheet_mass" 316 rst_fields(41)%grid="grid_scalar" 317 rst_fields(42)%vname="antarctica_icesheet_timelapsed" 318 rst_fields(42)%grid="grid_scalar" 319 rst_fields(43)%vname="antarctica_icesheet_mass_roc" 320 rst_fields(43)%grid="grid_scalar" 321 rst_fields(44)%vname="rhd"; rst_fields(44)%grid="grid_N_3D" 322 rst_fields(45)%vname="frc_v"; rst_fields(45)%grid="grid_scalar" 323 rst_fields(46)%vname="frc_t"; rst_fields(46)%grid="grid_scalar" 324 rst_fields(47)%vname="frc_s"; rst_fields(47)%grid="grid_scalar" 325 rst_fields(48)%vname="frc_wn_t"; rst_fields(48)%grid="grid_scalar" 326 rst_fields(49)%vname="frc_wn_s"; rst_fields(49)%grid="grid_scalar" 327 rst_fields(50)%vname="ssh_ini"; rst_fields(50)%grid="grid_N" 328 rst_fields(51)%vname="e3t_ini"; rst_fields(51)%grid="grid_N_3D" 329 rst_fields(52)%vname="hc_loc_ini"; rst_fields(52)%grid="grid_N_3D" 330 rst_fields(53)%vname="sc_loc_ini"; rst_fields(53)%grid="grid_N_3D" 331 rst_fields(54)%vname="ssh_hc_loc_ini"; rst_fields(54)%grid="grid_N" 332 rst_fields(55)%vname="ssh_sc_loc_ini"; rst_fields(55)%grid="grid_N" 333 rst_fields(56)%vname="fse3t_b"; rst_fields(56)%grid="grid_N_3D" 334 rst_fields(57)%vname="fse3t_n"; rst_fields(57)%grid="grid_N_3D" 335 rst_fields(58)%vname="tilde_e3t_b"; rst_fields(58)%grid="grid_N" 336 rst_fields(59)%vname="tilde_e3t_n"; rst_fields(59)%grid="grid_N" 337 rst_fields(60)%vname="hdiv_lf"; rst_fields(60)%grid="grid_N" 338 rst_fields(61)%vname="ub2_b"; rst_fields(61)%grid="grid_N" 339 rst_fields(62)%vname="vb2_b"; rst_fields(62)%grid="grid_N" 340 rst_fields(63)%vname="sshbb_e"; rst_fields(63)%grid="grid_N" 341 rst_fields(64)%vname="ubb_e"; rst_fields(64)%grid="grid_N" 342 rst_fields(65)%vname="vbb_e"; rst_fields(65)%grid="grid_N" 343 rst_fields(66)%vname="sshb_e"; rst_fields(66)%grid="grid_N" 344 rst_fields(67)%vname="ub_e"; rst_fields(67)%grid="grid_N" 345 rst_fields(68)%vname="vb_e"; rst_fields(68)%grid="grid_N" 346 rst_fields(69)%vname="fwf_isf_b"; rst_fields(69)%grid="grid_N" 347 rst_fields(70)%vname="isf_sc_b"; rst_fields(70)%grid="grid_N" 348 rst_fields(71)%vname="isf_hc_b"; rst_fields(71)%grid="grid_N" 349 rst_fields(72)%vname="ssh_ibb"; rst_fields(72)%grid="grid_N" 350 rst_fields(73)%vname="rnf_b"; rst_fields(73)%grid="grid_N" 351 rst_fields(74)%vname="rnf_hc_b"; rst_fields(74)%grid="grid_N" 352 rst_fields(75)%vname="rnf_sc_b"; rst_fields(75)%grid="grid_N" 353 rst_fields(76)%vname="nn_fsbc"; rst_fields(76)%grid="grid_scalar" 354 rst_fields(77)%vname="ssu_m"; rst_fields(77)%grid="grid_N" 355 rst_fields(78)%vname="ssv_m"; rst_fields(78)%grid="grid_N" 356 rst_fields(79)%vname="sst_m"; rst_fields(79)%grid="grid_N" 357 rst_fields(80)%vname="sss_m"; rst_fields(80)%grid="grid_N" 358 rst_fields(81)%vname="ssh_m"; rst_fields(81)%grid="grid_N" 359 rst_fields(82)%vname="e3t_m"; rst_fields(82)%grid="grid_N" 360 rst_fields(83)%vname="frq_m"; rst_fields(83)%grid="grid_N" 361 rst_fields(84)%vname="avmb"; rst_fields(84)%grid="Vgrid" 362 rst_fields(85)%vname="avtb"; rst_fields(85)%grid="Vgrid" 363 364 END SUBROUTINE set_rst_vars 365 366 367 SUBROUTINE set_rstw_active(rst_file, it) 368 !sets enabled = .TRUE. for each field in restart file 369 CHARACTER(len=*) :: rst_file 370 INTEGER, INTENT(in) :: it ! timestep when iom_init was called 371 TYPE(xios_field) :: field_hdl 372 TYPE(xios_file) :: file_hdl 373 TYPE(xios_filegroup) :: filegroup_hdl 374 INTEGER :: i 375 376 !set then name of the restart file (OUTPUT!) and enable available fields 377 if(lwp) WRITE(numout,*) 'Setting (output) restart filename (for XIOS) to: ',TRIM(rst_file) 378 CALL xios_get_handle("file_definition", filegroup_hdl ) 379 CALL xios_add_child(filegroup_hdl, file_hdl, 'wrestart') 380 IF(wxioso.eq.1) THEN 381 CALL xios_set_file_attr( "wrestart", type="one_file", name = TRIM(rst_file), & 382 enabled=.TRUE., mode="write", output_freq=xios_timestep) 383 if(lwp) write(numout,*) 'OPEN ', trim(rst_file), ' in one_file mode' 384 ELSE 385 CALL xios_set_file_attr( "wrestart", type="multiple_file", name = TRIM(rst_file),& 386 enabled=.TRUE., mode="write", output_freq=xios_timestep) 387 if(lwp) write(numout,*) 'OPEN ', trim(rst_file), ' in multiple_file mode' 388 ENDIF 389 390 CALL xios_set_file_attr( "wrestart", name=trim(rst_file)) 391 call flush(numout) 392 ! CALL xios_update_calendar(it+1) ! + one because we open restart file 393 ! 1 timestep before write 394 395 !define fields for restart write context 396 !in restart.F90 397 DO i= 1, 17 398 CALL xios_add_child(file_hdl, field_hdl, TRIM(rst_fields(i)%vname)) 399 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 400 grid_ref = TRIM(rst_fields(i)%grid ), operation = "instant") 401 if(lwp) write(numout,*) 'id= ',i,' set ', TRIM(rst_fields(i)%vname), ' enabled' 402 ENDDO 403 !in daymod.F90 404 DO i= 18, 20 405 CALL xios_add_child(file_hdl, field_hdl, TRIM(rst_fields(i)%vname)) 406 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 407 grid_ref = TRIM(rst_fields(i)%grid ), operation = "instant") 408 if(lwp) write(numout,*) 'id= ',i,' set ', TRIM(rst_fields(i)%vname), ' enabled' 409 ENDDO 410 !end daymod.F90 411 !sbcmod.F90 412 DO i= 21, 25 413 CALL xios_add_child(file_hdl, field_hdl, TRIM(rst_fields(i)%vname)) 414 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 415 grid_ref = TRIM(rst_fields(i)%grid ), operation = "instant") 416 if(lwp) write(numout,*) 'id= ',i,' set ', TRIM(rst_fields(i)%vname), ' enabled' 417 ENDDO 418 !end sbcmod.F90 419 !ALL FIELDS ABOUVE ALWAYS 420 !zdftke.F90 421 #if defined key_zdftke || defined key_esopa 422 DO i= 26, 31 423 CALL xios_add_child(file_hdl, field_hdl, TRIM(rst_fields(i)%vname)) 424 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 425 grid_ref = TRIM(rst_fields(i)%grid ), operation = "instant") 426 if(lwp) write(numout,*) 'id= ',i,' set ', TRIM(rst_fields(i)%vname), ' enabled' 427 ENDDO 428 #endif 429 !end zdftke.F90 430 !traqsr.F90 431 i = 34 432 CALL xios_add_child(file_hdl, field_hdl, TRIM(rst_fields(i)%vname)) 433 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 434 grid_ref = TRIM(rst_fields(i)%grid ), operation = "instant") 435 if(lwp) write(numout,*) 'id= ',i,' set ', TRIM(rst_fields(i)%vname), ' enabled' 436 i = 37 437 CALL xios_add_child(file_hdl, field_hdl, TRIM(rst_fields(i)%vname)) 438 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 439 grid_ref = TRIM(rst_fields(i)%grid ), operation = "instant") 440 if(lwp) write(numout,*) 'id= ',i,' set ', TRIM(rst_fields(i)%vname), ' enabled' 441 !END traqsr.F90 442 #if defined key_dynspg_flt || defined key_esopa 443 !dynspg_flt.F90 444 DO i= 35, 36 445 CALL xios_add_child(file_hdl, field_hdl, TRIM(rst_fields(i)%vname)) 446 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 447 grid_ref = TRIM(rst_fields(i)%grid ), operation = "instant") 448 if(lwp) write(numout,*) 'id= ',i,' set ', TRIM(rst_fields(i)%vname), ' enabled' 449 ENDDO 450 !end dynspg_flt.F90 451 #endif 452 !trasbc.F90 START 453 DO i= 32, 33 454 CALL xios_add_child(file_hdl, field_hdl, TRIM(rst_fields(i)%vname)) 455 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 456 grid_ref = TRIM(rst_fields(i)%grid ), operation = "instant") 457 if(lwp) write(numout,*) 'id= ',i,' set ', TRIM(rst_fields(i)%vname), ' enabled' 458 ENDDO 459 DO i= 69, 71 460 CALL xios_add_child(file_hdl, field_hdl, TRIM(rst_fields(i)%vname)) 461 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 462 grid_ref = TRIM(rst_fields(i)%grid ), operation = "instant") 463 if(lwp) write(numout,*) 'id= ',i,' set ', TRIM(rst_fields(i)%vname), ' enabled' 464 ENDDO 465 !trasbc.F90 END 466 IF( lk_oasis) THEN 467 ! ln_coupled_iceshelf_fluxes uninitialised unless lk_oasis=true 468 IF( ln_coupled_iceshelf_fluxes ) THEN 469 DO i= 38, 43 470 CALL xios_add_child(file_hdl, field_hdl, TRIM(rst_fields(i)%vname)) 471 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 472 grid_ref = TRIM(rst_fields(i)%grid ), operation = "instant") 473 if(lwp) write(numout,*) 'id= ',i,' set ', TRIM(rst_fields(i)%vname), ' enabled' 474 ENDDO 475 ENDIF 476 ENDIF 477 #if defined key_zdfkpp 478 i = 44 479 CALL xios_add_child(file_hdl, field_hdl, TRIM(rst_fields(i)%vname)) 480 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 481 grid_ref = TRIM(rst_fields(i)%grid ), operation = "instant") 482 if(lwp) write(numout,*) 'id= ',i,' set ', TRIM(rst_fields(i)%vname), ' enabled' 483 #endif 484 !dia_hsb_rst 485 #if defined key_diadct 486 IF( lk_diadct ) THEN 487 DO i= 45, 47 488 CALL xios_add_child(file_hdl, field_hdl, TRIM(rst_fields(i)%vname)) 489 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 490 grid_ref = TRIM(rst_fields(i)%grid ), operation = "instant") 491 if(lwp) write(numout,*) 'id= ',i,' set ', TRIM(rst_fields(i)%vname), ' enabled' 492 ENDDO 493 494 DO i= 50, 53 495 CALL xios_add_child(file_hdl, field_hdl, TRIM(rst_fields(i)%vname)) 496 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 497 grid_ref = TRIM(rst_fields(i)%grid ), operation = "instant") 498 if(lwp) write(numout,*) 'id= ',i,' set ', TRIM(rst_fields(i)%vname), ' enabled' 499 ENDDO 500 IF( .NOT. lk_vvl ) THEN 501 DO i= 48, 48 502 CALL xios_add_child(file_hdl, field_hdl, TRIM(rst_fields(i)%vname)) 503 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 504 grid_ref = TRIM(rst_fields(i)%grid ), operation = "instant") 505 if(lwp) write(numout,*) 'id= ',i,' set ', TRIM(rst_fields(i)%vname), ' enabled' 506 ENDDO 507 DO i= 54, 55 508 CALL xios_add_child(file_hdl, field_hdl, TRIM(rst_fields(i)%vname)) 509 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 510 grid_ref = TRIM(rst_fields(i)%grid ), operation = "instant") 511 if(lwp) write(numout,*) 'id= ',i,' set ', TRIM(rst_fields(i)%vname), ' enabled' 512 ENDDO 513 ENDIF 514 ENDIF 515 #endif 516 !end dia_hsb_rst 517 !domvvl.F90 518 IF( lk_vvl ) THEN 519 DO i= 56, 57 520 CALL xios_add_child(file_hdl, field_hdl, TRIM(rst_fields(i)%vname)) 521 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 522 grid_ref = TRIM(rst_fields(i)%grid ), operation = "instant") 523 if(lwp) write(numout,*) 'id= ',i,' set ', TRIM(rst_fields(i)%vname), ' enabled' 524 ENDDO 525 IF( lr_vvl_ztilde .OR. lr_vvl_layer ) THEN ! z_tilde and layer cases ! 526 DO i= 58, 59 527 CALL xios_add_child(file_hdl, field_hdl, TRIM(rst_fields(i)%vname)) 528 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 529 grid_ref = TRIM(rst_fields(i)%grid ), operation = "instant") 530 if(lwp) write(numout,*) 'id= ',i,' set ', TRIM(rst_fields(i)%vname), ' enabled' 531 ENDDO 532 END IF 533 IF( lr_vvl_ztilde ) THEN ! z_tilde case ! 534 i=60 535 CALL xios_add_child(file_hdl, field_hdl, TRIM(rst_fields(i)%vname)) 536 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 537 grid_ref = TRIM(rst_fields(i)%grid ), operation = "instant") 538 if(lwp) write(numout,*) 'id= ',i,' set ', TRIM(rst_fields(i)%vname), ' enabled' 539 ENDIF 540 ENDIF 541 !end domvvl.F90 542 !dynspg_ts.F90 543 #if defined key_dynspg_ts || defined key_esopa 544 DO i= 61, 62 545 CALL xios_add_child(file_hdl, field_hdl, TRIM(rst_fields(i)%vname)) 546 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 547 grid_ref = TRIM(rst_fields(i)%grid ), operation = "instant") 548 if(lwp) write(numout,*) 'id= ',i,' set ', TRIM(rst_fields(i)%vname), ' enabled' 549 ENDDO 550 IF (.NOT.ln_bt_av) THEN 551 DO i= 63, 68 552 CALL xios_add_child(file_hdl, field_hdl, TRIM(rst_fields(i)%vname)) 553 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 554 grid_ref = TRIM(rst_fields(i)%grid ), operation = "instant") 555 if(lwp) write(numout,*) 'id= ',i,' set ', TRIM(rst_fields(i)%vname), ' enabled' 556 ENDDO 557 ENDIF 558 #if defined key_agrif 559 ! Save time integrated fluxes 560 IF ( .NOT.Agrif_Root() ) THEN 561 DO i= 84, 85 562 CALL xios_add_child(file_hdl, field_hdl, TRIM(rst_fields(i)%vname)) 563 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 564 grid_ref = TRIM(rst_fields(i)%grid ), operation = "instant") 565 if(lwp) write(numout,*) 'id= ',i,' set ', TRIM(rst_fields(i)%vname), ' enabled' 566 ENDDO 567 ENDIF 568 #endif 569 #endif 570 !end dynspg_ts.F90 571 !sbcapr.F90 572 IF( ln_apr_dyn) THEN 573 i = 72 574 CALL xios_add_child(file_hdl, field_hdl, TRIM(rst_fields(i)%vname)) 575 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 576 grid_ref = TRIM(rst_fields(i)%grid ), operation = "instant") 577 if(lwp) write(numout,*) 'id= ',i,' set ', TRIM(rst_fields(i)%vname), ' enabled' 578 ENDIF 579 !end sbcapr.F90 580 !sbcrnf.F90 581 IF( ln_rnf ) THEN 582 DO i= 73, 75 583 CALL xios_add_child(file_hdl, field_hdl, TRIM(rst_fields(i)%vname)) 584 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 585 grid_ref = TRIM(rst_fields(i)%grid ), operation = "instant") 586 if(lwp) write(numout,*) 'id= ',i,' set ', TRIM(rst_fields(i)%vname), ' enabled' 587 ENDDO 588 ENDIF 589 !end sbcrnf.F90 590 !sbcssm.F90 591 IF( nn_components /= jp_iam_sas .AND. nn_fsbc .NE. 1) THEN 592 DO i= 76, 81 593 CALL xios_add_child(file_hdl, field_hdl, TRIM(rst_fields(i)%vname)) 594 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 595 grid_ref = TRIM(rst_fields(i)%grid ), operation = "instant") 596 if(lwp) write(numout,*) 'id= ',i,' set ', TRIM(rst_fields(i)%vname), ' enabled' 597 ENDDO 598 i = 83 599 CALL xios_add_child(file_hdl, field_hdl, TRIM(rst_fields(i)%vname)) 600 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 601 grid_ref = TRIM(rst_fields(i)%grid ), operation = "instant") 602 if(lwp) write(numout,*) 'id= ',i,' set ', TRIM(rst_fields(i)%vname), ' enabled' 603 IF( lk_vvl ) THEN 604 i = 82 605 CALL xios_add_child(file_hdl, field_hdl, TRIM(rst_fields(i)%vname)) 606 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 607 grid_ref = TRIM(rst_fields(i)%grid ), operation = "instant") 608 if(lwp) write(numout,*) 'id= ',i,' set ', TRIM(rst_fields(i)%vname), ' enabled' 609 ENDIF 610 ENDIF 611 !end sbcssm.F90 612 IF( lr_traadv_cen2 ) THEN 613 DO i= 84, 85 614 CALL xios_add_child(file_hdl, field_hdl, TRIM(rst_fields(i)%vname)) 615 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8, & 616 grid_ref = TRIM(rst_fields(i)%grid ), operation = "instant") 617 if(lwp) write(numout,*) 'id= ',i,' set ', TRIM(rst_fields(i)%vname), ' enabled' 618 ENDDO 619 ENDIF 620 621 END SUBROUTINE set_rstw_active 246 622 247 623 SUBROUTINE iom_swap( cdname ) … … 255 631 TYPE(xios_context) :: nemo_hdl 256 632 633 if(lwp) write(numout,*) 'iom_swap to: ',trim(cdname) 257 634 IF( TRIM(Agrif_CFixed()) == '0' ) THEN 258 635 CALL xios_get_handle(TRIM(cdname),nemo_hdl) … … 950 1327 ELSEIF( PRESENT(pv_r2d) ) THEN 951 1328 !CDIR COLLAPSE 952 1329 IF( zscf /= 1.) pv_r2d(:,:) = pv_r2d(:,:) * zscf 953 1330 !CDIR COLLAPSE 954 1331 IF( zofs /= 0.) pv_r2d(:,:) = pv_r2d(:,:) + zofs … … 1055 1432 !! INTERFACE iom_rstput 1056 1433 !!---------------------------------------------------------------------- 1057 SUBROUTINE iom_rp0d( kt, kwrite, kiomid, cdvar, pvar, ktype )1434 SUBROUTINE iom_rp0d( kt, kwrite, kiomid, cdvar, pvar, ktype, lxios ) 1058 1435 INTEGER , INTENT(in) :: kt ! ocean time-step 1059 1436 INTEGER , INTENT(in) :: kwrite ! writing time-step … … 1062 1439 REAL(wp) , INTENT(in) :: pvar ! written field 1063 1440 INTEGER , INTENT(in), OPTIONAL :: ktype ! variable external type 1441 LOGICAL, OPTIONAL :: lxios ! xios write flag 1442 LOGICAL :: lx ! local xios write flag 1064 1443 INTEGER :: ivid ! variable id 1065 IF( kiomid > 0 ) THEN 1066 IF( iom_file(kiomid)%nfid > 0 ) THEN 1067 ivid = iom_varid( kiomid, cdvar, ldstop = .FALSE. ) 1068 SELECT CASE (iom_file(kiomid)%iolib) 1069 CASE (jpioipsl ) ; CALL iom_ioipsl_rstput( kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r0d = pvar ) 1070 CASE (jpnf90 ) ; CALL iom_nf90_rstput( kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r0d = pvar ) 1071 CASE (jprstdimg) ; IF( kt == kwrite ) CALL iom_rstdimg_rstput( kiomid, cdvar, ivid, pvar ) 1072 CASE DEFAULT 1073 CALL ctl_stop( 'iom_rp0d: accepted IO library are only jpioipsl, jpnf90 and jprstdimg' ) 1074 END SELECT 1444 1445 lx = .FALSE. 1446 IF(PRESENT(lxios)) lx = lxios 1447 IF( lx ) THEN 1448 #ifdef key_iomput 1449 if(lwp) write(numout,*) 'RESTART: write (XIOS 0D) ',trim(cdvar) 1450 CALL xios_send_field(trim(cdvar), pvar) 1451 #endif 1452 ELSE 1453 IF( kiomid > 0 ) THEN 1454 IF( iom_file(kiomid)%nfid > 0 ) THEN 1455 ivid = iom_varid( kiomid, cdvar, ldstop = .FALSE. ) 1456 SELECT CASE (iom_file(kiomid)%iolib) 1457 CASE (jpioipsl ) ; CALL iom_ioipsl_rstput( kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r0d = pvar ) 1458 CASE (jpnf90 ) ; CALL iom_nf90_rstput( kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r0d = pvar ) 1459 CASE (jprstdimg) ; IF( kt == kwrite ) CALL iom_rstdimg_rstput( kiomid, cdvar, ivid, pvar ) 1460 CASE DEFAULT 1461 CALL ctl_stop( 'iom_rp0d: accepted IO library are only jpioipsl, jpnf90 and jprstdimg' ) 1462 END SELECT 1463 ENDIF 1075 1464 ENDIF 1076 1465 ENDIF 1077 1466 END SUBROUTINE iom_rp0d 1078 1467 1079 SUBROUTINE iom_rp1d( kt, kwrite, kiomid, cdvar, pvar, ktype )1468 SUBROUTINE iom_rp1d( kt, kwrite, kiomid, cdvar, pvar, ktype, lxios ) 1080 1469 INTEGER , INTENT(in) :: kt ! ocean time-step 1081 1470 INTEGER , INTENT(in) :: kwrite ! writing time-step … … 1084 1473 REAL(wp) , INTENT(in), DIMENSION( :) :: pvar ! written field 1085 1474 INTEGER , INTENT(in), OPTIONAL :: ktype ! variable external type 1475 LOGICAL, OPTIONAL :: lxios ! xios write flag 1476 LOGICAL :: lx ! local xios write flag 1086 1477 INTEGER :: ivid ! variable id 1087 IF( kiomid > 0 ) THEN 1088 IF( iom_file(kiomid)%nfid > 0 ) THEN 1089 ivid = iom_varid( kiomid, cdvar, ldstop = .FALSE. ) 1090 SELECT CASE (iom_file(kiomid)%iolib) 1091 CASE (jpioipsl ) ; CALL iom_ioipsl_rstput( kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r1d = pvar ) 1092 CASE (jpnf90 ) ; CALL iom_nf90_rstput( kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r1d = pvar ) 1093 CASE (jprstdimg) ; IF( kt == kwrite ) CALL iom_rstdimg_rstput( kiomid, cdvar, ivid, pv_r1d = pvar ) 1094 CASE DEFAULT 1095 CALL ctl_stop( 'iom_rp1d: accepted IO library are only jpioipsl, jpnf90 and jprstdimg' ) 1096 END SELECT 1478 1479 lx = .FALSE. 1480 IF(PRESENT(lxios)) lx = lxios 1481 IF( lx ) THEN 1482 #ifdef key_iomput 1483 if(lwp) write(numout,*) 'RESTART: write (XIOS 1D) ',trim(cdvar) 1484 CALL xios_send_field(trim(cdvar), pvar) 1485 #endif 1486 ELSE 1487 IF( kiomid > 0 ) THEN 1488 IF( iom_file(kiomid)%nfid > 0 ) THEN 1489 ivid = iom_varid( kiomid, cdvar, ldstop = .FALSE. ) 1490 SELECT CASE (iom_file(kiomid)%iolib) 1491 CASE (jpioipsl ) ; CALL iom_ioipsl_rstput( kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r1d = pvar ) 1492 CASE (jpnf90 ) ; CALL iom_nf90_rstput( kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r1d = pvar ) 1493 CASE (jprstdimg) ; IF( kt == kwrite ) CALL iom_rstdimg_rstput( kiomid, cdvar, ivid, pv_r1d = pvar ) 1494 CASE DEFAULT 1495 CALL ctl_stop( 'iom_rp1d: accepted IO library are only jpioipsl, jpnf90 and jprstdimg' ) 1496 END SELECT 1497 ENDIF 1097 1498 ENDIF 1098 1499 ENDIF 1099 1500 END SUBROUTINE iom_rp1d 1100 1501 1101 SUBROUTINE iom_rp2d( kt, kwrite, kiomid, cdvar, pvar, ktype )1502 SUBROUTINE iom_rp2d( kt, kwrite, kiomid, cdvar, pvar, ktype, lxios ) 1102 1503 INTEGER , INTENT(in) :: kt ! ocean time-step 1103 1504 INTEGER , INTENT(in) :: kwrite ! writing time-step … … 1106 1507 REAL(wp) , INTENT(in), DIMENSION(:, : ) :: pvar ! written field 1107 1508 INTEGER , INTENT(in), OPTIONAL :: ktype ! variable external type 1509 LOGICAL, OPTIONAL :: lxios ! xios write flag 1510 LOGICAL :: lx ! local xios write flag 1108 1511 INTEGER :: ivid ! variable id 1109 IF( kiomid > 0 ) THEN 1110 IF( iom_file(kiomid)%nfid > 0 ) THEN 1111 ivid = iom_varid( kiomid, cdvar, ldstop = .FALSE. ) 1112 SELECT CASE (iom_file(kiomid)%iolib) 1113 CASE (jpioipsl ) ; CALL iom_ioipsl_rstput( kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r2d = pvar ) 1114 CASE (jpnf90 ) ; CALL iom_nf90_rstput( kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r2d = pvar ) 1115 CASE (jprstdimg) ; IF( kt == kwrite ) CALL iom_rstdimg_rstput( kiomid, cdvar, ivid, pv_r2d = pvar ) 1116 CASE DEFAULT 1117 CALL ctl_stop( 'iom_rp2d: accepted IO library are only jpioipsl, jpnf90 and jprstdimg' ) 1118 END SELECT 1512 1513 lx = .FALSE. 1514 IF(PRESENT(lxios)) lx = lxios 1515 IF( lx ) THEN 1516 #ifdef key_iomput 1517 if(lwp) write(numout,*) 'RESTART: write (XIOS 2D) ',trim(cdvar) 1518 CALL xios_send_field(trim(cdvar), pvar) 1519 #endif 1520 ELSE 1521 IF( kiomid > 0 ) THEN 1522 IF( iom_file(kiomid)%nfid > 0 ) THEN 1523 ivid = iom_varid( kiomid, cdvar, ldstop = .FALSE. ) 1524 SELECT CASE (iom_file(kiomid)%iolib) 1525 CASE (jpioipsl ) ; CALL iom_ioipsl_rstput( kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r2d = pvar ) 1526 CASE (jpnf90 ) ; CALL iom_nf90_rstput( kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r2d = pvar ) 1527 CASE (jprstdimg) ; IF( kt == kwrite ) CALL iom_rstdimg_rstput( kiomid, cdvar, ivid, pv_r2d = pvar ) 1528 CASE DEFAULT 1529 CALL ctl_stop( 'iom_rp2d: accepted IO library are only jpioipsl, jpnf90 and jprstdimg' ) 1530 END SELECT 1531 ENDIF 1119 1532 ENDIF 1120 1533 ENDIF 1121 1534 END SUBROUTINE iom_rp2d 1122 1535 1123 SUBROUTINE iom_rp3d( kt, kwrite, kiomid, cdvar, pvar, ktype )1536 SUBROUTINE iom_rp3d( kt, kwrite, kiomid, cdvar, pvar, ktype, lxios ) 1124 1537 INTEGER , INTENT(in) :: kt ! ocean time-step 1125 1538 INTEGER , INTENT(in) :: kwrite ! writing time-step … … 1128 1541 REAL(wp) , INTENT(in), DIMENSION(:,:,:) :: pvar ! written field 1129 1542 INTEGER , INTENT(in), OPTIONAL :: ktype ! variable external type 1543 LOGICAL, OPTIONAL :: lxios ! xios write flag 1544 LOGICAL :: lx ! local xios write flag 1130 1545 INTEGER :: ivid ! variable id 1131 IF( kiomid > 0 ) THEN 1132 IF( iom_file(kiomid)%nfid > 0 ) THEN 1133 ivid = iom_varid( kiomid, cdvar, ldstop = .FALSE. ) 1134 SELECT CASE (iom_file(kiomid)%iolib) 1135 CASE (jpioipsl ) ; CALL iom_ioipsl_rstput( kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r3d = pvar ) 1136 CASE (jpnf90 ) ; CALL iom_nf90_rstput( kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r3d = pvar ) 1137 CASE (jprstdimg) ; IF( kt == kwrite ) CALL iom_rstdimg_rstput( kiomid, cdvar, ivid, pv_r3d = pvar ) 1138 CASE DEFAULT 1139 CALL ctl_stop( 'iom_rp3d: accepted IO library are only jpioipsl and jprstdimg' ) 1140 END SELECT 1546 1547 lx = .FALSE. 1548 IF(PRESENT(lxios)) lx = lxios 1549 IF( lx ) THEN 1550 #ifdef key_iomput 1551 if(lwp) write(numout,*) 'RESTART: write (XIOS 3D) ',trim(cdvar) 1552 CALL xios_send_field(trim(cdvar), pvar) 1553 #endif 1554 ELSE 1555 IF( kiomid > 0 ) THEN 1556 IF( iom_file(kiomid)%nfid > 0 ) THEN 1557 ivid = iom_varid( kiomid, cdvar, ldstop = .FALSE. ) 1558 SELECT CASE (iom_file(kiomid)%iolib) 1559 CASE (jpioipsl ) ; CALL iom_ioipsl_rstput( kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r3d = pvar ) 1560 CASE (jpnf90 ) ; CALL iom_nf90_rstput( kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r3d = pvar ) 1561 CASE (jprstdimg) ; IF( kt == kwrite ) CALL iom_rstdimg_rstput( kiomid, cdvar, ivid, pv_r3d = pvar ) 1562 CASE DEFAULT 1563 CALL ctl_stop( 'iom_rp3d: accepted IO library are only jpioipsl and jprstdimg' ) 1564 END SELECT 1565 ENDIF 1141 1566 ENDIF 1142 1567 ENDIF … … 1367 1792 1368 1793 1369 SUBROUTINE set_grid( cdgrd, plon, plat )1794 SUBROUTINE set_grid( cdgrd, plon, plat, lmask ) 1370 1795 !!---------------------------------------------------------------------- 1371 1796 !! *** ROUTINE set_grid *** … … 1380 1805 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zmask 1381 1806 INTEGER :: ni,nj 1807 LOGICAL :: lmask 1382 1808 1383 1809 ni=nlei-nldi+1 ; nj=nlej-nldj+1 … … 1392 1818 & latvalue = RESHAPE(plat(nldi:nlei, nldj:nlej),(/ ni*nj /))) 1393 1819 1394 IF ( l n_mskland) THEN1820 IF ( lmask ) THEN 1395 1821 ! mask land points, keep values on coast line -> specific mask for U, V and W points 1396 1822 SELECT CASE ( cdgrd ) … … 1436 1862 ! Offset of coordinate representing bottom-left corner 1437 1863 SELECT CASE ( TRIM(cdgrd) ) 1438 CASE ('T', 'W' )1864 CASE ('T', 'W', 'N') 1439 1865 icnr = -1 ; jcnr = -1 1440 1866 CASE ('U') -
branches/UKMO/dev_r7573_xios_write/NEMOGCM/NEMO/OPA_SRC/IOM/iom_def.F90
r6491 r8079 51 51 !$AGRIF_DO_NOT_TREAT 52 52 INTEGER, PUBLIC :: iom_open_init = 0 !: used to initialize iom_file(:)%nfid to 0 53 !XIOS read restart 54 LOGICAL, PUBLIC :: lwxios !: read single file restart using XIOS 55 INTEGER, PUBLIC :: wxioso !: type of restart file when writing using XIOS 1 - single, 2 - multiple 56 57 53 58 54 59 TYPE, PUBLIC :: file_descriptor … … 70 75 END TYPE file_descriptor 71 76 TYPE(file_descriptor), DIMENSION(jpmax_files), PUBLIC :: iom_file !: array containing the info for all opened files 77 78 INTEGER, PARAMETER, PUBLIC :: max_rst_fields = 85 79 80 81 TYPE, PUBLIC :: RST_FIELD 82 CHARACTER(len=30) :: vname ! names of variables in restart file 83 CHARACTER(len=30) :: grid 84 END TYPE RST_FIELD 85 TYPE(RST_FIELD), PUBLIC :: rst_fields(max_rst_fields) 86 ! values needed to set correctlyfiles in reast file when using XIOS for writing 72 87 !$AGRIF_END_DO_NOT_TREAT 73 74 88 !!===================================================================== 75 89 END MODULE iom_def -
branches/UKMO/dev_r7573_xios_write/NEMOGCM/NEMO/OPA_SRC/IOM/restart.F90
r6755 r8079 26 26 USE divcur ! hor. divergence and curl (div & cur routines) 27 27 USE sbc_oce ! for icesheet freshwater input variables 28 USE iom_def, ONLY : lwxios 28 29 29 30 IMPLICIT NONE … … 65 66 !!---------------------------------------------------------------------- 66 67 ! 68 67 69 IF( kt == nit000 ) THEN ! default definitions 68 70 lrst_oce = .FALSE. … … 84 86 ! we open and define the ocean restart file one time step before writing the data (-> at nitrst - 1) 85 87 ! except if we write ocean restart files every time step or if an ocean restart file was writen at nitend - 1 86 IF( kt == nitrst - 1 .OR. nstock == 1 .OR. ( kt == nitend .AND. .NOT. lrst_oce ) ) THEN 88 ! NO, because the data is written 2 times on nitrst - 1 and nitrst 89 ! IF( kt == nitrst - 1 .OR. nstock == 1 .OR. ( kt == nitend .AND. .NOT. lrst_oce ) ) THEN 90 IF( kt == nitrst .OR. nstock == 1 ) THEN 87 91 IF( nitrst <= nitend .AND. nitrst > 0 ) THEN 88 92 IF ( ln_rstdate ) THEN … … 103 107 IF(lwp) THEN 104 108 WRITE(numout,*) 105 SELECT CASE ( jprstlib ) 106 CASE ( jprstdimg ) ; WRITE(numout,*) & 107 ' open ocean restart binary file: ',TRIM(clpath)//clname 108 CASE DEFAULT ; WRITE(numout,*) & 109 ' open ocean restart NetCDF file: ',TRIM(clpath)//clname 110 END SELECT 111 IF ( snc4set%luse ) WRITE(numout,*) ' opened for NetCDF4 chunking and compression' 112 IF( kt == nitrst - 1 ) THEN ; WRITE(numout,*) ' kt = nitrst - 1 = ', kt 113 ELSE ; WRITE(numout,*) ' kt = ' , kt 109 IF(lwxios) THEN 110 WRITE(numout,*) & 111 ' XIOS open ocean restart NetCDF file: ',TRIM(clpath)//TRIM(clname) 112 ELSE 113 SELECT CASE ( jprstlib ) 114 CASE ( jprstdimg ) ; WRITE(numout,*) & 115 ' open ocean restart binary file: ',TRIM(clpath)//TRIM(clname) 116 CASE DEFAULT ; WRITE(numout,*) & 117 ' open ocean restart NetCDF file: ',TRIM(clpath)//TRIM(clname) 118 END SELECT 119 IF ( snc4set%luse ) WRITE(numout,*) ' opened for NetCDF4 chunking and compression' 120 IF( kt == nitrst - 1 ) THEN ; WRITE(numout,*) ' kt = nitrst - 1 = ', kt 121 ELSE ; WRITE(numout,*) ' kt = ' , kt 122 ENDIF 114 123 ENDIF 115 124 ENDIF 116 125 ! 117 CALL iom_open( TRIM(clpath)//TRIM(clname), numrow, ldwrt = .TRUE., kiolib = jprstlib ) 126 IF(.NOT.lwxios) THEN 127 CALL iom_open( TRIM(clpath)//TRIM(clname), numrow, ldwrt = .TRUE., kiolib = jprstlib ) 128 ELSE 129 CALL iom_init( wxios_context, TRIM(clpath)//TRIM(clname) ) 130 CALL xios_update_calendar(nitrst) 131 CALL iom_swap( cxios_context ) 132 ENDIF 133 !HAVE TO set lrst_oce to FALSE after XIOS restart is written !!!!!! 134 ! THIS CALL SHOULDN't be here we open restart file on iter-1, move it 135 ! to SUBROUTINE day to set the flag on the step when we save data 118 136 lrst_oce = .TRUE. 119 137 ENDIF 120 138 ENDIF 139 121 140 ! 122 141 END SUBROUTINE rst_opn … … 134 153 INTEGER, INTENT(in) :: kt ! ocean time-step 135 154 !!---------------------------------------------------------------------- 136 137 CALL iom_rstput( kt, nitrst, numrow, 'rdt' , rdt ) ! dynamics time step138 CALL iom_rstput( kt, nitrst, numrow, 'rdttra1', rdttra(1) ) ! surface tracer time step139 140 CALL iom_rstput( kt, nitrst, numrow, 'ub' , ub ) ! before fields141 CALL iom_rstput( kt, nitrst, numrow, 'vb' , vb )142 CALL iom_rstput( kt, nitrst, numrow, 'tb' , tsb(:,:,:,jp_tem) )143 CALL iom_rstput( kt, nitrst, numrow, 'sb' , tsb(:,:,:,jp_sal) )144 CALL iom_rstput( kt, nitrst, numrow, 'rotb' , rotb )145 CALL iom_rstput( kt, nitrst, numrow, 'hdivb' , hdivb )146 CALL iom_rstput( kt, nitrst, numrow, 'sshb' , sshb )155 IF(lwxios) CALL iom_swap( wxios_context ) 156 CALL iom_rstput( kt, nitrst, numrow, 'rdt' , rdt , lxios = lwxios) ! dynamics time step 157 CALL iom_rstput( kt, nitrst, numrow, 'rdttra1', rdttra(1) , lxios = lwxios) ! surface tracer time step 158 159 CALL iom_rstput( kt, nitrst, numrow, 'ub' , ub , lxios = lwxios) ! before fields 160 CALL iom_rstput( kt, nitrst, numrow, 'vb' , vb , lxios = lwxios) 161 CALL iom_rstput( kt, nitrst, numrow, 'tb' , tsb(:,:,:,jp_tem) , lxios = lwxios) 162 CALL iom_rstput( kt, nitrst, numrow, 'sb' , tsb(:,:,:,jp_sal) , lxios = lwxios) 163 CALL iom_rstput( kt, nitrst, numrow, 'rotb' , rotb , lxios = lwxios) 164 CALL iom_rstput( kt, nitrst, numrow, 'hdivb' , hdivb , lxios = lwxios) 165 CALL iom_rstput( kt, nitrst, numrow, 'sshb' , sshb , lxios = lwxios) 147 166 ! 148 CALL iom_rstput( kt, nitrst, numrow, 'un' , un ) ! now fields149 CALL iom_rstput( kt, nitrst, numrow, 'vn' , vn )150 CALL iom_rstput( kt, nitrst, numrow, 'tn' , tsn(:,:,:,jp_tem) )151 CALL iom_rstput( kt, nitrst, numrow, 'sn' , tsn(:,:,:,jp_sal) )152 CALL iom_rstput( kt, nitrst, numrow, 'rotn' , rotn )153 CALL iom_rstput( kt, nitrst, numrow, 'hdivn' , hdivn )154 CALL iom_rstput( kt, nitrst, numrow, 'sshn' , sshn )155 CALL iom_rstput( kt, nitrst, numrow, 'rhop' , rhop )167 CALL iom_rstput( kt, nitrst, numrow, 'un' , un , lxios = lwxios) ! now fields 168 CALL iom_rstput( kt, nitrst, numrow, 'vn' , vn , lxios = lwxios) 169 CALL iom_rstput( kt, nitrst, numrow, 'tn' , tsn(:,:,:,jp_tem) , lxios = lwxios) 170 CALL iom_rstput( kt, nitrst, numrow, 'sn' , tsn(:,:,:,jp_sal) , lxios = lwxios) 171 CALL iom_rstput( kt, nitrst, numrow, 'rotn' , rotn , lxios = lwxios) 172 CALL iom_rstput( kt, nitrst, numrow, 'hdivn' , hdivn , lxios = lwxios) 173 CALL iom_rstput( kt, nitrst, numrow, 'sshn' , sshn , lxios = lwxios) 174 CALL iom_rstput( kt, nitrst, numrow, 'rhop' , rhop , lxios = lwxios) 156 175 #if defined key_zdfkpp 157 CALL iom_rstput( kt, nitrst, numrow, 'rhd' , rhd )176 CALL iom_rstput( kt, nitrst, numrow, 'rhd' , rhd , lxios = lwxios) 158 177 #endif 159 178 IF( lk_oasis) THEN 160 179 ! ln_coupled_iceshelf_fluxes uninitialised unless lk_oasis=true 161 180 IF( ln_coupled_iceshelf_fluxes ) THEN 162 CALL iom_rstput( kt, nitrst, numrow, 'greenland_icesheet_mass', greenland_icesheet_mass ) 163 CALL iom_rstput( kt, nitrst, numrow, 'greenland_icesheet_timelapsed', greenland_icesheet_timelapsed ) 164 CALL iom_rstput( kt, nitrst, numrow, 'greenland_icesheet_mass_roc', greenland_icesheet_mass_rate_of_change ) 165 CALL iom_rstput( kt, nitrst, numrow, 'antarctica_icesheet_mass', antarctica_icesheet_mass ) 166 CALL iom_rstput( kt, nitrst, numrow, 'antarctica_icesheet_timelapsed', antarctica_icesheet_timelapsed ) 167 CALL iom_rstput( kt, nitrst, numrow, 'antarctica_icesheet_mass_roc', antarctica_icesheet_mass_rate_of_change ) 181 CALL iom_rstput( kt, nitrst, numrow, 'greenland_icesheet_mass', greenland_icesheet_mass ,& 182 & lxios = lwxios) 183 CALL iom_rstput( kt, nitrst, numrow, 'greenland_icesheet_timelapsed', greenland_icesheet_timelapsed ,& 184 & lxios = lwxios) 185 CALL iom_rstput( kt, nitrst, numrow, 'greenland_icesheet_mass_roc', greenland_icesheet_mass_rate_of_change ,& 186 & lxios = lwxios) 187 CALL iom_rstput( kt, nitrst, numrow, 'antarctica_icesheet_mass', antarctica_icesheet_mass , & 188 & lxios = lwxios) 189 CALL iom_rstput( kt, nitrst, numrow, 'antarctica_icesheet_timelapsed', antarctica_icesheet_timelapsed ,& 190 & lxios = lwxios) 191 CALL iom_rstput( kt, nitrst, numrow, 'antarctica_icesheet_mass_roc', & 192 & antarctica_icesheet_mass_rate_of_change , lxios = lwxios) 168 193 ENDIF 169 194 ENDIF 170 195 171 196 IF( kt == nitrst ) THEN 172 CALL iom_close( numrow ) ! close the restart file (only at last time step) 197 IF(.NOT.lwxios) THEN 198 CALL iom_close( numrow ) ! close the restart file (only at last time step) 199 ELSE 200 CALL iom_context_finalize( wxios_context ) 201 CALL iom_swap( cxios_context ) 202 ENDIF 173 203 !!gm IF( .NOT. lk_trdmld ) lrst_oce = .FALSE. 174 204 !!gm not sure what to do here ===>>> ask to Sebastian … … 178 208 nitrst = nstocklist( nrst_lst ) 179 209 ENDIF 180 lrst_oce = .FALSE.181 210 ENDIF 182 211 ! … … 318 347 ! 319 348 END SUBROUTINE rst_read 320 321 349 !!===================================================================== 322 350 END MODULE restart -
branches/UKMO/dev_r7573_xios_write/NEMOGCM/NEMO/OPA_SRC/SBC/sbcapr.F90
r6486 r8079 19 19 USE iom ! IOM library 20 20 USE lib_mpp ! MPP library 21 USE iom_def, ONLY : lwxios 21 22 22 23 IMPLICIT NONE … … 156 157 IF(lwp) WRITE(numout,*) 'sbc_apr : ssh_ib written in ocean restart file at it= ', kt,' date= ', ndastp 157 158 IF(lwp) WRITE(numout,*) '~~~~' 158 CALL iom_rstput( kt, nitrst, numrow, 'ssh_ibb' , ssh_ib ) 159 IF( lwxios ) CALL iom_swap( wxios_context ) 160 CALL iom_rstput( kt, nitrst, numrow, 'ssh_ibb' , ssh_ib, lxios = lwxios ) 161 IF( lwxios ) CALL iom_swap( cxios_context ) 159 162 ENDIF 160 163 ! -
branches/UKMO/dev_r7573_xios_write/NEMOGCM/NEMO/OPA_SRC/SBC/sbcmod.F90
r6498 r8079 54 54 USE sbcwave ! Wave module 55 55 USE bdy_par ! Require lk_bdy 56 USE iom_def, ONLY : lwxios 56 57 57 58 IMPLICIT NONE … … 443 444 & 'at it= ', kt,' date= ', ndastp 444 445 IF(lwp) WRITE(numout,*) '~~~~' 445 CALL iom_rstput( kt, nitrst, numrow, 'utau_b' , utau ) 446 CALL iom_rstput( kt, nitrst, numrow, 'vtau_b' , vtau ) 447 CALL iom_rstput( kt, nitrst, numrow, 'qns_b' , qns ) 446 IF( lwxios ) CALL iom_swap( wxios_context ) 447 CALL iom_rstput( kt, nitrst, numrow, 'utau_b' , utau, lxios = lwxios ) 448 CALL iom_rstput( kt, nitrst, numrow, 'vtau_b' , vtau, lxios = lwxios ) 449 CALL iom_rstput( kt, nitrst, numrow, 'qns_b' , qns, lxios = lwxios ) 448 450 ! The 3D heat content due to qsr forcing is treated in traqsr 449 451 ! CALL iom_rstput( kt, nitrst, numrow, 'qsr_b' , qsr ) 450 CALL iom_rstput( kt, nitrst, numrow, 'emp_b' , emp ) 451 CALL iom_rstput( kt, nitrst, numrow, 'sfx_b' , sfx ) 452 CALL iom_rstput( kt, nitrst, numrow, 'emp_b' , emp, lxios = lwxios ) 453 CALL iom_rstput( kt, nitrst, numrow, 'sfx_b' , sfx, lxios = lwxios ) 454 IF( lwxios ) CALL iom_swap( cxios_context ) 452 455 ENDIF 453 456 -
branches/UKMO/dev_r7573_xios_write/NEMOGCM/NEMO/OPA_SRC/SBC/sbcrnf.F90
r6498 r8079 27 27 USE eosbn2 28 28 USE wrk_nemo ! Memory allocation 29 USE iom_def, ONLY : lwxios 29 30 30 31 IMPLICIT NONE … … 171 172 & 'at it= ', kt,' date= ', ndastp 172 173 IF(lwp) WRITE(numout,*) '~~~~' 173 CALL iom_rstput( kt, nitrst, numrow, 'rnf_b' , rnf ) 174 CALL iom_rstput( kt, nitrst, numrow, 'rnf_hc_b', rnf_tsc(:,:,jp_tem) ) 175 CALL iom_rstput( kt, nitrst, numrow, 'rnf_sc_b', rnf_tsc(:,:,jp_sal) ) 174 IF( lwxios ) CALL iom_swap( wxios_context ) 175 CALL iom_rstput( kt, nitrst, numrow, 'rnf_b' , rnf, lxios = lwxios ) 176 CALL iom_rstput( kt, nitrst, numrow, 'rnf_hc_b', rnf_tsc(:,:,jp_tem), lxios = lwxios ) 177 CALL iom_rstput( kt, nitrst, numrow, 'rnf_sc_b', rnf_tsc(:,:,jp_sal), lxios = lwxios ) 178 IF( lwxios ) CALL iom_swap( cxios_context ) 176 179 ENDIF 177 180 ! -
branches/UKMO/dev_r7573_xios_write/NEMOGCM/NEMO/OPA_SRC/SBC/sbcssm.F90
r6486 r8079 21 21 USE prtctl ! Print control 22 22 USE iom ! IOM library 23 USE iom_def, ONLY : lwxios 23 24 24 25 IMPLICIT NONE … … 156 157 IF(lwp) WRITE(numout,*) '~~~~~~~' 157 158 zf_sbc = REAL( nn_fsbc, wp ) 158 CALL iom_rstput( kt, nitrst, numrow, 'nn_fsbc', zf_sbc ) ! sbc frequency 159 CALL iom_rstput( kt, nitrst, numrow, 'ssu_m' , ssu_m ) ! sea surface mean fields 160 CALL iom_rstput( kt, nitrst, numrow, 'ssv_m' , ssv_m ) 161 CALL iom_rstput( kt, nitrst, numrow, 'sst_m' , sst_m ) 162 CALL iom_rstput( kt, nitrst, numrow, 'sss_m' , sss_m ) 163 CALL iom_rstput( kt, nitrst, numrow, 'ssh_m' , ssh_m ) 164 IF( lk_vvl ) CALL iom_rstput( kt, nitrst, numrow, 'e3t_m' , e3t_m ) 165 CALL iom_rstput( kt, nitrst, numrow, 'frq_m' , frq_m ) 166 ! 159 IF( lwxios ) CALL iom_swap( wxios_context ) 160 CALL iom_rstput( kt, nitrst, numrow, 'nn_fsbc', zf_sbc, lxios = lwxios ) ! sbc frequency 161 CALL iom_rstput( kt, nitrst, numrow, 'ssu_m' , ssu_m, lxios = lwxios ) ! sea surface mean fields 162 CALL iom_rstput( kt, nitrst, numrow, 'ssv_m' , ssv_m, lxios = lwxios ) 163 CALL iom_rstput( kt, nitrst, numrow, 'sst_m' , sst_m, lxios = lwxios ) 164 CALL iom_rstput( kt, nitrst, numrow, 'sss_m' , sss_m, lxios = lwxios ) 165 CALL iom_rstput( kt, nitrst, numrow, 'ssh_m' , ssh_m, lxios = lwxios ) 166 IF( lk_vvl ) CALL iom_rstput( kt, nitrst, numrow, 'e3t_m' , e3t_m ) 167 CALL iom_rstput( kt, nitrst, numrow, 'frq_m' , frq_m, lxios = lwxios ) 168 ! 169 IF( lwxios ) CALL iom_swap( cxios_context ) 167 170 ENDIF 168 171 ! -
branches/UKMO/dev_r7573_xios_write/NEMOGCM/NEMO/OPA_SRC/TRA/traadv.F90
r7061 r8079 46 46 47 47 ! !!* Namelist namtra_adv * 48 LOGICAL :: ln_traadv_cen2 ! 2nd order centered scheme flag 48 !make ln_traadv_cen2 public. It's needed when XIOS is used to write restart file 49 LOGICAL, PUBLIC :: ln_traadv_cen2 ! 2nd order centered scheme flag 49 50 LOGICAL :: ln_traadv_tvd ! TVD scheme flag 50 51 LOGICAL :: ln_traadv_tvd_zts ! TVD scheme flag with vertical sub time-stepping … … 257 258 ! 258 259 CALL tra_adv_mle_init ! initialisation of the Mixed Layer Eddy parametrisation (MLE) 260 lr_traadv_cen2 = ln_traadv_cen2 259 261 ! 260 262 END SUBROUTINE tra_adv_init -
branches/UKMO/dev_r7573_xios_write/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_cen2.F90
r7179 r8079 34 34 USE timing ! Timing 35 35 USE phycst 36 USE iom_def, ONLY : lwxios 36 37 37 38 IMPLICIT NONE … … 286 287 ! avmb, avtb will be read in zdfini in restart case as they are used in zdftke, kpp etc... 287 288 IF( lrst_oce .AND. cdtype == 'TRA' ) THEN 288 CALL iom_rstput( kt, nitrst, numrow, 'avmb', avmb ) 289 CALL iom_rstput( kt, nitrst, numrow, 'avtb', avtb ) 289 IF( lwxios ) CALL iom_swap( wxios_context ) 290 CALL iom_rstput( kt, nitrst, numrow, 'avmb', avmb, lxios = lwxios ) 291 CALL iom_rstput( kt, nitrst, numrow, 'avtb', avtb, lxios = lwxios ) 292 IF( lwxios ) CALL iom_swap( cxios_context ) 290 293 ENDIF 291 294 ! -
branches/UKMO/dev_r7573_xios_write/NEMOGCM/NEMO/OPA_SRC/TRA/traqsr.F90
r6498 r8079 33 33 USE wrk_nemo ! Memory Allocation 34 34 USE timing ! Timing 35 USE iom_def, ONLY : lwxios 35 36 36 37 IMPLICIT NONE … … 368 369 & 'at it= ', kt,' date= ', ndastp 369 370 IF(lwp) WRITE(numout,*) '~~~~' 370 CALL iom_rstput( kt, nitrst, numrow, 'qsr_hc_b' , qsr_hc ) 371 CALL iom_rstput( kt, nitrst, numrow, 'fraqsr_1lev', fraqsr_1lev ) ! default definition in sbcssm 371 IF( lwxios ) CALL iom_swap( wxios_context ) 372 CALL iom_rstput( kt, nitrst, numrow, 'qsr_hc_b', qsr_hc, lxios = lwxios ) 373 CALL iom_rstput( kt, nitrst, numrow, 'fraqsr_1lev', fraqsr_1lev, lxios = lwxios) ! default definition in sbcssm 374 IF( lwxios ) CALL iom_swap( cxios_context ) 372 375 ! 373 376 ENDIF -
branches/UKMO/dev_r7573_xios_write/NEMOGCM/NEMO/OPA_SRC/TRA/trasbc.F90
r6793 r8079 33 33 USE timing ! Timing 34 34 USE eosbn2 35 USE iom_def, ONLY : lwxios 35 36 36 37 IMPLICIT NONE … … 209 210 & 'at it= ', kt,' date= ', ndastp 210 211 IF(lwp) WRITE(numout,*) '~~~~' 211 CALL iom_rstput( kt, nitrst, numrow, 'sbc_hc_b', sbc_tsc(:,:,jp_tem) ) 212 CALL iom_rstput( kt, nitrst, numrow, 'sbc_sc_b', sbc_tsc(:,:,jp_sal) ) 212 IF( lwxios ) CALL iom_swap( wxios_context ) 213 CALL iom_rstput( kt, nitrst, numrow, 'sbc_hc_b', sbc_tsc(:,:,jp_tem), lxios = lwxios ) 214 CALL iom_rstput( kt, nitrst, numrow, 'sbc_sc_b', sbc_tsc(:,:,jp_sal), lxios = lwxios ) 215 IF( lwxios ) CALL iom_swap( cxios_context ) 213 216 ENDIF 214 217 ! … … 253 256 & 'at it= ', kt,' date= ', ndastp 254 257 IF(lwp) WRITE(numout,*) '~~~~' 255 CALL iom_rstput( kt, nitrst, numrow, 'fwf_isf_b', fwfisf(:,:) ) 256 CALL iom_rstput( kt, nitrst, numrow, 'isf_hc_b' , risf_tsc(:,:,jp_tem) ) 257 CALL iom_rstput( kt, nitrst, numrow, 'isf_sc_b' , risf_tsc(:,:,jp_sal) ) 258 IF( lwxios ) CALL iom_swap( wxios_context ) 259 CALL iom_rstput( kt, nitrst, numrow, 'fwf_isf_b', fwfisf(:,:) , lxios = lwxios) 260 CALL iom_rstput( kt, nitrst, numrow, 'isf_hc_b' , risf_tsc(:,:,jp_tem), lxios = lwxios) 261 CALL iom_rstput( kt, nitrst, numrow, 'isf_sc_b' , risf_tsc(:,:,jp_sal), lxios = lwxios) 262 IF( lwxios ) CALL iom_swap( cxios_context ) 258 263 ENDIF 259 264 END IF -
branches/UKMO/dev_r7573_xios_write/NEMOGCM/NEMO/OPA_SRC/ZDF/zdftke.F90
r6498 r8079 53 53 USE timing ! Timing 54 54 USE lib_fortran ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined) 55 USE iom_def, ONLY : lwxios 55 56 #if defined key_agrif 56 57 USE agrif_opa_interp … … 970 971 ! ! ------------------- 971 972 IF(lwp) WRITE(numout,*) '---- tke-rst ----' 972 CALL iom_rstput( kt, nitrst, numrow, 'en' , en ) 973 CALL iom_rstput( kt, nitrst, numrow, 'avt' , avt_k ) 974 CALL iom_rstput( kt, nitrst, numrow, 'avm' , avm_k ) 975 CALL iom_rstput( kt, nitrst, numrow, 'avmu' , avmu_k ) 976 CALL iom_rstput( kt, nitrst, numrow, 'avmv' , avmv_k ) 977 CALL iom_rstput( kt, nitrst, numrow, 'dissl', dissl ) 973 IF( lwxios ) CALL iom_swap( wxios_context ) 974 CALL iom_rstput( kt, nitrst, numrow, 'en' , en , lxios = lwxios ) 975 CALL iom_rstput( kt, nitrst, numrow, 'avt' , avt_k , lxios = lwxios ) 976 CALL iom_rstput( kt, nitrst, numrow, 'avm' , avm_k , lxios = lwxios ) 977 CALL iom_rstput( kt, nitrst, numrow, 'avmu' , avmu_k, lxios = lwxios ) 978 CALL iom_rstput( kt, nitrst, numrow, 'avmv' , avmv_k, lxios = lwxios ) 979 CALL iom_rstput( kt, nitrst, numrow, 'dissl', dissl , lxios = lwxios ) 980 IF( lwxios ) CALL iom_swap( cxios_context ) 978 981 ! 979 982 ENDIF
Note: See TracChangeset
for help on using the changeset viewer.