Changeset 8662
- Timestamp:
- 2017-10-26T13:15:54+02:00 (7 years ago)
- Location:
- branches/2017/dev_r8600_xios_write/NEMOGCM/NEMO/OPA_SRC
- Files:
-
- 19 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2017/dev_r8600_xios_write/NEMOGCM/NEMO/OPA_SRC/DIA/diahsb.F90
r8651 r8662 309 309 IF(lwp) WRITE(numout,*) ' dia_hsb_rst at it= ', kt,' date= ', ndastp 310 310 IF(lwp) WRITE(numout,*) '~~~~~~~' 311 IF( lwxios ) CALL iom_swap( wxios_context )312 CALL iom_rstput( kt, nitrst, numrow, 'frc_v' , frc_v, l xios = lwxios)313 CALL iom_rstput( kt, nitrst, numrow, 'frc_t' , frc_t, l xios = lwxios)314 CALL iom_rstput( kt, nitrst, numrow, 'frc_s' , frc_s, l xios = lwxios)311 IF( lwxios ) CALL iom_swap( cwxios_context ) 312 CALL iom_rstput( kt, nitrst, numrow, 'frc_v' , frc_v, ldxios = lwxios) 313 CALL iom_rstput( kt, nitrst, numrow, 'frc_t' , frc_t, ldxios = lwxios) 314 CALL iom_rstput( kt, nitrst, numrow, 'frc_s' , frc_s, ldxios = lwxios) 315 315 IF( ln_linssh ) THEN 316 CALL iom_rstput( kt, nitrst, numrow, 'frc_wn_t', frc_wn_t, l xios = lwxios)317 CALL iom_rstput( kt, nitrst, numrow, 'frc_wn_s', frc_wn_s, l xios = lwxios )316 CALL iom_rstput( kt, nitrst, numrow, 'frc_wn_t', frc_wn_t, ldxios = lwxios) 317 CALL iom_rstput( kt, nitrst, numrow, 'frc_wn_s', frc_wn_s, ldxios = lwxios ) 318 318 ENDIF 319 CALL iom_rstput( kt, nitrst, numrow, 'surf_ini', surf_ini, l xios = lwxios ) ! ice sheet coupling320 CALL iom_rstput( kt, nitrst, numrow, 'ssh_ini', ssh_ini(:,:), l xios = lwxios )321 CALL iom_rstput( kt, nitrst, numrow, 'e3t_ini', e3t_ini(:,:,:), l xios = lwxios )322 CALL iom_rstput( kt, nitrst, numrow, 'hc_loc_ini', hc_loc_ini(:,:,:), l xios = lwxios )323 CALL iom_rstput( kt, nitrst, numrow, 'sc_loc_ini', sc_loc_ini(:,:,:), l xios = lwxios )319 CALL iom_rstput( kt, nitrst, numrow, 'surf_ini', surf_ini, ldxios = lwxios ) ! ice sheet coupling 320 CALL iom_rstput( kt, nitrst, numrow, 'ssh_ini', ssh_ini(:,:), ldxios = lwxios ) 321 CALL iom_rstput( kt, nitrst, numrow, 'e3t_ini', e3t_ini(:,:,:), ldxios = lwxios ) 322 CALL iom_rstput( kt, nitrst, numrow, 'hc_loc_ini', hc_loc_ini(:,:,:), ldxios = lwxios ) 323 CALL iom_rstput( kt, nitrst, numrow, 'sc_loc_ini', sc_loc_ini(:,:,:), ldxios = lwxios ) 324 324 IF( ln_linssh ) THEN 325 CALL iom_rstput( kt, nitrst, numrow, 'ssh_hc_loc_ini', ssh_hc_loc_ini(:,:), l xios = lwxios )326 CALL iom_rstput( kt, nitrst, numrow, 'ssh_sc_loc_ini', ssh_sc_loc_ini(:,:), l xios = lwxios )325 CALL iom_rstput( kt, nitrst, numrow, 'ssh_hc_loc_ini', ssh_hc_loc_ini(:,:), ldxios = lwxios ) 326 CALL iom_rstput( kt, nitrst, numrow, 'ssh_sc_loc_ini', ssh_sc_loc_ini(:,:), ldxios = lwxios ) 327 327 ENDIF 328 328 ! -
branches/2017/dev_r8600_xios_write/NEMOGCM/NEMO/OPA_SRC/DOM/daymod.F90
r8661 r8662 408 408 ENDIF 409 409 ! calendar control 410 IF( lwxios ) CALL iom_swap( wxios_context )411 CALL iom_rstput( kt, nitrst, numrow, 'kt' , REAL( kt , wp), l xios = lwxios ) ! time-step412 CALL iom_rstput( kt, nitrst, numrow, 'ndastp' , REAL( ndastp, wp), l xios = lwxios ) ! date413 CALL iom_rstput( kt, nitrst, numrow, 'adatrj' , adatrj, l xios = lwxios ) ! number of elapsed days since410 IF( lwxios ) CALL iom_swap( cwxios_context ) 411 CALL iom_rstput( kt, nitrst, numrow, 'kt' , REAL( kt , wp), ldxios = lwxios ) ! time-step 412 CALL iom_rstput( kt, nitrst, numrow, 'ndastp' , REAL( ndastp, wp), ldxios = lwxios ) ! date 413 CALL iom_rstput( kt, nitrst, numrow, 'adatrj' , adatrj, ldxios = lwxios ) ! number of elapsed days since 414 414 ! ! the begining of the run [s] 415 CALL iom_rstput( kt, nitrst, numrow, 'ntime' , REAL( nn_time0, wp), l xios = lwxios ) ! time415 CALL iom_rstput( kt, nitrst, numrow, 'ntime' , REAL( nn_time0, wp), ldxios = lwxios ) ! time 416 416 IF( lwxios ) CALL iom_swap( cxios_context ) 417 417 ENDIF -
branches/2017/dev_r8600_xios_write/NEMOGCM/NEMO/OPA_SRC/DOM/domain.F90
r8661 r8662 47 47 USE wrk_nemo ! Memory Allocation 48 48 USE timing ! Timing 49 USE iom_def, ONLY:lwxios, wxioso, rst_wfields ! write restart flag and output type49 USE iom_def, ONLY:lwxios, nxioso, rst_wfields ! write restart flag and output type 50 50 USE iom, ONLY : iom_set_rst_vars, iom_set_rstw_core 51 51 … … 428 428 !set output file type for XIOS based on NEMO namelist 429 429 if (nn_wxios > 0) lwxios = .TRUE. 430 wxioso = nn_wxios430 nxioso = nn_wxios 431 431 ELSE 432 432 IF(lwp) THEN -
branches/2017/dev_r8600_xios_write/NEMOGCM/NEMO/OPA_SRC/DOM/domvvl.F90
r8651 r8662 947 947 ! ! =================== 948 948 IF(lwp) WRITE(numout,*) '---- dom_vvl_rst ----' 949 IF( lwxios ) CALL iom_swap( wxios_context )949 IF( lwxios ) CALL iom_swap( cwxios_context ) 950 950 ! ! --------- ! 951 951 ! ! all cases ! 952 952 ! ! --------- ! 953 CALL iom_rstput( kt, nitrst, numrow, 'e3t_b', e3t_b(:,:,:), l xios = lwxios )954 CALL iom_rstput( kt, nitrst, numrow, 'e3t_n', e3t_n(:,:,:), l xios = lwxios )953 CALL iom_rstput( kt, nitrst, numrow, 'e3t_b', e3t_b(:,:,:), ldxios = lwxios ) 954 CALL iom_rstput( kt, nitrst, numrow, 'e3t_n', e3t_n(:,:,:), ldxios = lwxios ) 955 955 ! ! ----------------------- ! 956 956 IF( ln_vvl_ztilde .OR. ln_vvl_layer ) THEN ! z_tilde and layer cases ! 957 957 ! ! ----------------------- ! 958 CALL iom_rstput( kt, nitrst, numrow, 'tilde_e3t_b', tilde_e3t_b(:,:,:), l xios = lwxios)959 CALL iom_rstput( kt, nitrst, numrow, 'tilde_e3t_n', tilde_e3t_n(:,:,:), l xios = lwxios)958 CALL iom_rstput( kt, nitrst, numrow, 'tilde_e3t_b', tilde_e3t_b(:,:,:), ldxios = lwxios) 959 CALL iom_rstput( kt, nitrst, numrow, 'tilde_e3t_n', tilde_e3t_n(:,:,:), ldxios = lwxios) 960 960 END IF 961 961 ! ! -------------! 962 962 IF( ln_vvl_ztilde ) THEN ! z_tilde case ! 963 963 ! ! ------------ ! 964 CALL iom_rstput( kt, nitrst, numrow, 'hdiv_lf', hdiv_lf(:,:,:), l xios = lwxios)964 CALL iom_rstput( kt, nitrst, numrow, 'hdiv_lf', hdiv_lf(:,:,:), ldxios = lwxios) 965 965 ENDIF 966 966 ! -
branches/2017/dev_r8600_xios_write/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_ts.F90
r8661 r8662 1218 1218 ! 1219 1219 ELSEIF( TRIM(cdrw) == 'WRITE' ) THEN 1220 IF( lwxios ) CALL iom_swap( wxios_context )1221 CALL iom_rstput( kt, nitrst, numrow, 'ub2_b' , ub2_b (:,:), l xios = lwxios )1222 CALL iom_rstput( kt, nitrst, numrow, 'vb2_b' , vb2_b (:,:), l xios = lwxios )1220 IF( lwxios ) CALL iom_swap( cwxios_context ) 1221 CALL iom_rstput( kt, nitrst, numrow, 'ub2_b' , ub2_b (:,:), ldxios = lwxios ) 1222 CALL iom_rstput( kt, nitrst, numrow, 'vb2_b' , vb2_b (:,:), ldxios = lwxios ) 1223 1223 ! 1224 1224 IF (.NOT.ln_bt_av) THEN 1225 CALL iom_rstput( kt, nitrst, numrow, 'sshbb_e' , sshbb_e(:,:), l xios = lwxios )1226 CALL iom_rstput( kt, nitrst, numrow, 'ubb_e' , ubb_e(:,:), l xios = lwxios )1227 CALL iom_rstput( kt, nitrst, numrow, 'vbb_e' , vbb_e(:,:), l xios = lwxios )1228 CALL iom_rstput( kt, nitrst, numrow, 'sshb_e' , sshb_e(:,:), l xios = lwxios )1229 CALL iom_rstput( kt, nitrst, numrow, 'ub_e' , ub_e(:,:), l xios = lwxios )1230 CALL iom_rstput( kt, nitrst, numrow, 'vb_e' , vb_e(:,:), l xios = lwxios )1225 CALL iom_rstput( kt, nitrst, numrow, 'sshbb_e' , sshbb_e(:,:), ldxios = lwxios ) 1226 CALL iom_rstput( kt, nitrst, numrow, 'ubb_e' , ubb_e(:,:), ldxios = lwxios ) 1227 CALL iom_rstput( kt, nitrst, numrow, 'vbb_e' , vbb_e(:,:), ldxios = lwxios ) 1228 CALL iom_rstput( kt, nitrst, numrow, 'sshb_e' , sshb_e(:,:), ldxios = lwxios ) 1229 CALL iom_rstput( kt, nitrst, numrow, 'ub_e' , ub_e(:,:), ldxios = lwxios ) 1230 CALL iom_rstput( kt, nitrst, numrow, 'vb_e' , vb_e(:,:), ldxios = lwxios ) 1231 1231 ENDIF 1232 1232 #if defined key_agrif 1233 1233 ! Save time integrated fluxes 1234 1234 IF ( .NOT.Agrif_Root() ) THEN 1235 CALL iom_rstput( kt, nitrst, numrow, 'ub2_i_b' , ub2_i_b(:,:), l xios = lwxios )1236 CALL iom_rstput( kt, nitrst, numrow, 'vb2_i_b' , vb2_i_b(:,:), l xios = lwxios )1235 CALL iom_rstput( kt, nitrst, numrow, 'ub2_i_b' , ub2_i_b(:,:), ldxios = lwxios ) 1236 CALL iom_rstput( kt, nitrst, numrow, 'vb2_i_b' , vb2_i_b(:,:), ldxios = lwxios ) 1237 1237 ENDIF 1238 1238 #endif -
branches/2017/dev_r8600_xios_write/NEMOGCM/NEMO/OPA_SRC/IOM/in_out_manager.F90
r8661 r8662 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) :: wxios_context!: context name used in xios to write restart file153 CHARACTER(lc) :: cwxios_context !: context name used in xios to write restart file 154 154 155 155 !!---------------------------------------------------------------------- -
branches/2017/dev_r8600_xios_write/NEMOGCM/NEMO/OPA_SRC/IOM/iom.F90
r8661 r8662 109 109 CHARACTER(len=lc) :: clname 110 110 INTEGER :: ji, jkmin 111 LOGICAL :: l rst_context ! is context related to restart111 LOGICAL :: llrst_context ! is context related to restart 112 112 ! 113 113 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: zt_bnds, zw_bnds … … 120 120 CALL xios_context_initialize(TRIM(clname), mpi_comm_opa) 121 121 CALL iom_swap( cdname ) 122 l rst_context = (TRIM(cdname) == TRIM(wxios_context))122 llrst_context = (TRIM(cdname) == TRIM(cwxios_context)) 123 123 124 124 ! Calendar type is now defined in xml file … … 133 133 134 134 ! horizontal grid definition 135 IF(.NOT.l rst_context) CALL set_scalar135 IF(.NOT.llrst_context) CALL set_scalar 136 136 137 137 IF( TRIM(cdname) == TRIM(cxios_context) ) THEN … … 165 165 CALL dom_grid_glo ! Return to parent grid domain 166 166 ! 167 IF( ln_cfmeta .AND. TRIM(cdname) .NE. TRIM( wxios_context)) THEN ! Add additional grid metadata167 IF( ln_cfmeta .AND. TRIM(cdname) .NE. TRIM(cwxios_context)) THEN ! Add additional grid metadata 168 168 CALL iom_set_domain_attr("grid_T", area = e1e2t_crs(nldi:nlei, nldj:nlej)) 169 169 CALL iom_set_domain_attr("grid_U", area = e1u_crs(nldi:nlei, nldj:nlej) * e2u_crs(nldi:nlei, nldj:nlej)) … … 178 178 179 179 ! vertical grid definition 180 IF(.NOT.l rst_context) THEN180 IF(.NOT.llrst_context) THEN 181 181 CALL iom_set_axis_attr( "deptht", paxis = gdept_1d ) 182 182 CALL iom_set_axis_attr( "depthu", paxis = gdept_1d ) … … 209 209 ENDIF 210 210 ! automatic definitions of some of the xml attributs 211 IF( TRIM(cdname) == TRIM( wxios_context) ) THEN211 IF( TRIM(cdname) == TRIM(cwxios_context) ) THEN 212 212 !set names of the fields in restart file IF using XIOS to read/write data 213 213 CALL iom_set_rst_context() … … 235 235 CHARACTER(len = *), INTENT(IN) :: field 236 236 INTEGER :: i 237 LOGICAL :: is_set238 239 is_set = .FALSE.237 LOGICAL :: llis_set 238 239 llis_set = .FALSE. 240 240 241 241 DO i = 1, max_rst_fields 242 242 IF(TRIM(rst_wfields(i)%vname) == field) THEN 243 243 rst_wfields(i)%active = .TRUE. 244 is_set = .TRUE.244 llis_set = .TRUE. 245 245 EXIT 246 246 ENDIF 247 247 ENDDO 248 248 !Warn if variable is not in defined in rst_wfields 249 IF(.NOT.is_set) THEN 250 IF(lwp) write(numout,*) 'E R R O R in iom_set_rstw_var_active: variable ', field ,' is available for writing but not defined' 249 IF(.NOT.llis_set) THEN 250 IF(lwp) THEN 251 write(numout,cform_err) 252 write(numout,*) 'iom_set_rstw_var_active: variable ', field ,' is available for writing but not defined' 253 ENDIF 251 254 nstop = nstop + 1 252 255 ENDIF … … 399 402 400 403 401 SUBROUTINE iom_set_rstw_active( rst_file)404 SUBROUTINE iom_set_rstw_active(cdrst_file) 402 405 !sets enabled = .TRUE. for each field in restart file 403 CHARACTER(len=*) :: rst_file406 CHARACTER(len=*) :: cdrst_file 404 407 #if defined key_iomput 405 408 TYPE(xios_field) :: field_hdl … … 410 413 411 414 !set name of the restart file and enable available fields 412 if(lwp) WRITE(numout,*) 'Setting restart filename (for XIOS write) to: ',rst_file415 IF(lwp) WRITE(numout,*) 'Setting restart filename (for XIOS write) to: ',cdrst_file 413 416 CALL xios_get_handle("file_definition", filegroup_hdl ) 414 417 CALL xios_add_child(filegroup_hdl, file_hdl, 'wrestart') 415 IF( wxioso.eq.1) THEN418 IF(nxioso.eq.1) THEN 416 419 CALL xios_set_file_attr( "wrestart", type="one_file", enabled=.TRUE.,& 417 420 mode="write", output_freq=xios_timestep) 418 if(lwp) write(numout,*) 'OPEN ', trim( rst_file), ' in one_file mode'421 if(lwp) write(numout,*) 'OPEN ', trim(cdrst_file), ' in one_file mode' 419 422 ELSE 420 423 CALL xios_set_file_attr( "wrestart", type="multiple_file", enabled=.TRUE.,& 421 424 mode="write", output_freq=xios_timestep) 422 if(lwp) write(numout,*) 'OPEN ', trim( rst_file), ' in multiple_file mode'425 if(lwp) write(numout,*) 'OPEN ', trim(cdrst_file), ' in multiple_file mode' 423 426 ENDIF 424 CALL xios_set_file_attr( "wrestart", name=trim( rst_file))427 CALL xios_set_file_attr( "wrestart", name=trim(cdrst_file)) 425 428 !defin files for restart context 426 429 DO i = 1, max_rst_fields … … 1369 1372 !! INTERFACE iom_rstput 1370 1373 !!---------------------------------------------------------------------- 1371 SUBROUTINE iom_rp0d( kt, kwrite, kiomid, cdvar, pvar, ktype, l xios )1374 SUBROUTINE iom_rp0d( kt, kwrite, kiomid, cdvar, pvar, ktype, ldxios ) 1372 1375 INTEGER , INTENT(in) :: kt ! ocean time-step 1373 1376 INTEGER , INTENT(in) :: kwrite ! writing time-step … … 1376 1379 REAL(wp) , INTENT(in) :: pvar ! written field 1377 1380 INTEGER , INTENT(in), OPTIONAL :: ktype ! variable external type 1378 LOGICAL, OPTIONAL :: l xios ! xios write flag1379 LOGICAL :: l x ! local xios write flag1381 LOGICAL, OPTIONAL :: ldxios ! xios write flag 1382 LOGICAL :: llx ! local xios write flag 1380 1383 INTEGER :: ivid ! variable id 1381 1384 1382 l x = .FALSE.1383 IF(PRESENT(l xios)) lx = lxios1384 IF( l x ) THEN1385 llx = .FALSE. 1386 IF(PRESENT(ldxios)) llx = ldxios 1387 IF( llx ) THEN 1385 1388 #ifdef key_iomput 1386 1389 IF( kt == kwrite ) THEN … … 1403 1406 END SUBROUTINE iom_rp0d 1404 1407 1405 SUBROUTINE iom_rp1d( kt, kwrite, kiomid, cdvar, pvar, ktype, l xios )1408 SUBROUTINE iom_rp1d( kt, kwrite, kiomid, cdvar, pvar, ktype, ldxios ) 1406 1409 INTEGER , INTENT(in) :: kt ! ocean time-step 1407 1410 INTEGER , INTENT(in) :: kwrite ! writing time-step … … 1410 1413 REAL(wp) , INTENT(in), DIMENSION( :) :: pvar ! written field 1411 1414 INTEGER , INTENT(in), OPTIONAL :: ktype ! variable external type 1412 LOGICAL, OPTIONAL :: l xios ! xios write flag1413 LOGICAL :: l x ! local xios write flag1415 LOGICAL, OPTIONAL :: ldxios ! xios write flag 1416 LOGICAL :: llx ! local xios write flag 1414 1417 INTEGER :: ivid ! variable id 1415 1418 1416 l x = .FALSE.1417 IF(PRESENT(l xios)) lx = lxios1418 IF( l x ) THEN1419 llx = .FALSE. 1420 IF(PRESENT(ldxios)) llx = ldxios 1421 IF( llx ) THEN 1419 1422 #ifdef key_iomput 1420 1423 IF( kt == kwrite ) THEN … … 1437 1440 END SUBROUTINE iom_rp1d 1438 1441 1439 SUBROUTINE iom_rp2d( kt, kwrite, kiomid, cdvar, pvar, ktype, l xios )1442 SUBROUTINE iom_rp2d( kt, kwrite, kiomid, cdvar, pvar, ktype, ldxios ) 1440 1443 INTEGER , INTENT(in) :: kt ! ocean time-step 1441 1444 INTEGER , INTENT(in) :: kwrite ! writing time-step … … 1444 1447 REAL(wp) , INTENT(in), DIMENSION(:, : ) :: pvar ! written field 1445 1448 INTEGER , INTENT(in), OPTIONAL :: ktype ! variable external type 1446 LOGICAL, OPTIONAL :: l xios ! xios write flag1447 LOGICAL :: l x1449 LOGICAL, OPTIONAL :: ldxios ! xios write flag 1450 LOGICAL :: llx 1448 1451 INTEGER :: ivid ! variable id 1449 1452 1450 l x = .FALSE.1451 IF(PRESENT(l xios)) lx = lxios1452 IF( l x ) THEN1453 llx = .FALSE. 1454 IF(PRESENT(ldxios)) llx = ldxios 1455 IF( llx ) THEN 1453 1456 #ifdef key_iomput 1454 1457 IF( kt == kwrite ) THEN … … 1471 1474 END SUBROUTINE iom_rp2d 1472 1475 1473 SUBROUTINE iom_rp3d( kt, kwrite, kiomid, cdvar, pvar, ktype, l xios )1476 SUBROUTINE iom_rp3d( kt, kwrite, kiomid, cdvar, pvar, ktype, ldxios ) 1474 1477 INTEGER , INTENT(in) :: kt ! ocean time-step 1475 1478 INTEGER , INTENT(in) :: kwrite ! writing time-step … … 1478 1481 REAL(wp) , INTENT(in), DIMENSION(:,:,:) :: pvar ! written field 1479 1482 INTEGER , INTENT(in), OPTIONAL :: ktype ! variable external type 1480 LOGICAL, OPTIONAL :: l xios ! xios write flag1481 LOGICAL :: l x ! local xios write flag1483 LOGICAL, OPTIONAL :: ldxios ! xios write flag 1484 LOGICAL :: llx ! local xios write flag 1482 1485 INTEGER :: ivid ! variable id 1483 1486 1484 l x = .FALSE.1485 IF(PRESENT(l xios)) lx = lxios1486 IF( l x ) THEN1487 llx = .FALSE. 1488 IF(PRESENT(ldxios)) llx = ldxios 1489 IF( llx ) THEN 1487 1490 #ifdef key_iomput 1488 1491 IF( kt == kwrite ) THEN … … 1692 1695 1693 1696 1694 SUBROUTINE set_grid( cdgrd, plon, plat, l xios )1697 SUBROUTINE set_grid( cdgrd, plon, plat, ldxios ) 1695 1698 !!---------------------------------------------------------------------- 1696 1699 !! *** ROUTINE set_grid *** … … 1705 1708 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zmask 1706 1709 INTEGER :: ni,nj 1707 LOGICAL, INTENT(IN) :: l xios1710 LOGICAL, INTENT(IN) :: ldxios 1708 1711 1709 1712 ni=nlei-nldi+1 ; nj=nlej-nldj+1 … … 1711 1714 CALL iom_set_domain_attr("grid_"//cdgrd, ni_glo=jpiglo, nj_glo=jpjglo, ibegin=nimpp+nldi-2, jbegin=njmpp+nldj-2, ni=ni, nj=nj) 1712 1715 CALL iom_set_domain_attr("grid_"//cdgrd, data_dim=2, data_ibegin = 1-nldi, data_ni = jpi, data_jbegin = 1-nldj, data_nj = jpj) 1713 if(.NOT.l xios) CALL iom_set_domain_attr("grid_"//cdgrd, lonvalue = RESHAPE(plon(nldi:nlei, nldj:nlej),(/ ni*nj /)), &1716 if(.NOT.ldxios) CALL iom_set_domain_attr("grid_"//cdgrd, lonvalue = RESHAPE(plon(nldi:nlei, nldj:nlej),(/ ni*nj /)), & 1714 1717 & latvalue = RESHAPE(plat(nldi:nlei, nldj:nlej),(/ ni*nj /))) 1715 1718 1716 IF ( ln_mskland.AND.(.NOT.l xios) ) THEN1719 IF ( ln_mskland.AND.(.NOT.ldxios) ) THEN 1717 1720 ! mask land points, keep values on coast line -> specific mask for U, V and W points 1718 1721 SELECT CASE ( cdgrd ) -
branches/2017/dev_r8600_xios_write/NEMOGCM/NEMO/OPA_SRC/IOM/iom_def.F90
r8644 r8662 48 48 !XIOS write restart 49 49 LOGICAL, PUBLIC :: lwxios !: read single file restart using XIOS 50 INTEGER, PUBLIC :: wxioso !: type of restart file when writing using XIOS 1 - single, 2 - multiple50 INTEGER, PUBLIC :: nxioso !: type of restart file when writing using XIOS 1 - single, 2 - multiple 51 51 52 52 … … 71 71 END TYPE file_descriptor 72 72 TYPE(file_descriptor), DIMENSION(jpmax_files), PUBLIC :: iom_file !: array containing the info for all opened files 73 74 73 INTEGER, PARAMETER, PUBLIC :: max_rst_fields = 95 75 !$AGRIF_END_DO_NOT_TREAT76 77 74 TYPE, PUBLIC :: RST_FIELD 78 75 CHARACTER(len=30) :: vname = "NO_NAME" ! names of variables in restart file … … 80 77 LOGICAL :: active =.FALSE. ! for restart write only: true - write field, false do not write field 81 78 END TYPE RST_FIELD 79 !$AGRIF_END_DO_NOT_TREAT 80 82 81 TYPE(RST_FIELD), PUBLIC :: rst_wfields(max_rst_fields) 83 82 -
branches/2017/dev_r8600_xios_write/NEMOGCM/NEMO/OPA_SRC/IOM/restart.F90
r8661 r8662 62 62 CHARACTER(LEN=50) :: clname ! ocean output restart file name 63 63 CHARACTER(lc) :: clpath ! full path to ocean output restart file 64 CHARACTER(LEN=52) :: dlname ! ocean output restart file name including prefix for AGRIF64 CHARACTER(LEN=52) :: clpname ! ocean output restart file name including prefix for AGRIF 65 65 !!---------------------------------------------------------------------- 66 66 ! … … 111 111 CALL iom_open( TRIM(clpath)//TRIM(clname), numrow, ldwrt = .TRUE., kiolib = jprstlib ) 112 112 ELSE 113 wxios_context = "rstw_"//TRIM(ADJUSTL(clkt))113 cwxios_context = "rstw_"//TRIM(ADJUSTL(clkt)) 114 114 IF( TRIM(Agrif_CFixed()) == '0' ) THEN 115 dlname = clname115 clpname = clname 116 116 ELSE 117 dlname = TRIM(Agrif_CFixed())//"_"//clname117 clpname = TRIM(Agrif_CFixed())//"_"//clname 118 118 ENDIF 119 CALL iom_init( wxios_context, TRIM(clpath)//TRIM(dlname))119 CALL iom_init( cwxios_context, TRIM(clpath)//TRIM(clpname)) 120 120 CALL xios_update_calendar(nitrst) 121 121 CALL iom_swap( cxios_context ) … … 139 139 INTEGER, INTENT(in) :: kt ! ocean time-step 140 140 !!---------------------------------------------------------------------- 141 IF(lwxios) CALL iom_swap( wxios_context )142 CALL iom_rstput( kt, nitrst, numrow, 'rdt' , rdt , l xios = lwxios) ! dynamics time step141 IF(lwxios) CALL iom_swap( cwxios_context ) 142 CALL iom_rstput( kt, nitrst, numrow, 'rdt' , rdt , ldxios = lwxios) ! dynamics time step 143 143 144 144 IF ( .NOT. ln_diurnal_only ) THEN 145 CALL iom_rstput( kt, nitrst, numrow, 'ub' , ub, l xios = lwxios ) ! before fields146 CALL iom_rstput( kt, nitrst, numrow, 'vb' , vb, l xios = lwxios )147 CALL iom_rstput( kt, nitrst, numrow, 'tb' , tsb(:,:,:,jp_tem), l xios = lwxios )148 CALL iom_rstput( kt, nitrst, numrow, 'sb' , tsb(:,:,:,jp_sal), l xios = lwxios )149 CALL iom_rstput( kt, nitrst, numrow, 'sshb' , sshb, l xios = lwxios )145 CALL iom_rstput( kt, nitrst, numrow, 'ub' , ub, ldxios = lwxios ) ! before fields 146 CALL iom_rstput( kt, nitrst, numrow, 'vb' , vb, ldxios = lwxios ) 147 CALL iom_rstput( kt, nitrst, numrow, 'tb' , tsb(:,:,:,jp_tem), ldxios = lwxios ) 148 CALL iom_rstput( kt, nitrst, numrow, 'sb' , tsb(:,:,:,jp_sal), ldxios = lwxios ) 149 CALL iom_rstput( kt, nitrst, numrow, 'sshb' , sshb, ldxios = lwxios ) 150 150 ! 151 CALL iom_rstput( kt, nitrst, numrow, 'un' , un, l xios = lwxios ) ! now fields152 CALL iom_rstput( kt, nitrst, numrow, 'vn' , vn, l xios = lwxios )153 CALL iom_rstput( kt, nitrst, numrow, 'tn' , tsn(:,:,:,jp_tem), l xios = lwxios )154 CALL iom_rstput( kt, nitrst, numrow, 'sn' , tsn(:,:,:,jp_sal), l xios = lwxios )155 CALL iom_rstput( kt, nitrst, numrow, 'sshn' , sshn, l xios = lwxios )156 CALL iom_rstput( kt, nitrst, numrow, 'rhop' , rhop, l xios = lwxios )151 CALL iom_rstput( kt, nitrst, numrow, 'un' , un, ldxios = lwxios ) ! now fields 152 CALL iom_rstput( kt, nitrst, numrow, 'vn' , vn, ldxios = lwxios ) 153 CALL iom_rstput( kt, nitrst, numrow, 'tn' , tsn(:,:,:,jp_tem), ldxios = lwxios ) 154 CALL iom_rstput( kt, nitrst, numrow, 'sn' , tsn(:,:,:,jp_sal), ldxios = lwxios ) 155 CALL iom_rstput( kt, nitrst, numrow, 'sshn' , sshn, ldxios = lwxios ) 156 CALL iom_rstput( kt, nitrst, numrow, 'rhop' , rhop, ldxios = lwxios ) 157 157 ! extra variable needed for the ice sheet coupling 158 158 IF ( ln_iscpl ) THEN 159 CALL iom_rstput( kt, nitrst, numrow, 'tmask' , tmask, l xios = lwxios ) ! need to extrapolate T/S160 CALL iom_rstput( kt, nitrst, numrow, 'umask' , umask, l xios = lwxios ) ! need to correct barotropic velocity161 CALL iom_rstput( kt, nitrst, numrow, 'vmask' , vmask, l xios = lwxios ) ! need to correct barotropic velocity162 CALL iom_rstput( kt, nitrst, numrow, 'smask' , ssmask, l xios = lwxios) ! need to correct barotropic velocity163 CALL iom_rstput( kt, nitrst, numrow, 'e3t_n', e3t_n(:,:,:), l xios = lwxios ) ! need to compute temperature correction164 CALL iom_rstput( kt, nitrst, numrow, 'e3u_n', e3u_n(:,:,:), l xios = lwxios ) ! need to compute bt conservation165 CALL iom_rstput( kt, nitrst, numrow, 'e3v_n', e3v_n(:,:,:), l xios = lwxios ) ! need to compute bt conservation166 CALL iom_rstput( kt, nitrst, numrow, 'gdepw_n', gdepw_n(:,:,:), l xios = lwxios ) ! need to compute extrapolation if vvl159 CALL iom_rstput( kt, nitrst, numrow, 'tmask' , tmask, ldxios = lwxios ) ! need to extrapolate T/S 160 CALL iom_rstput( kt, nitrst, numrow, 'umask' , umask, ldxios = lwxios ) ! need to correct barotropic velocity 161 CALL iom_rstput( kt, nitrst, numrow, 'vmask' , vmask, ldxios = lwxios ) ! need to correct barotropic velocity 162 CALL iom_rstput( kt, nitrst, numrow, 'smask' , ssmask, ldxios = lwxios) ! need to correct barotropic velocity 163 CALL iom_rstput( kt, nitrst, numrow, 'e3t_n', e3t_n(:,:,:), ldxios = lwxios ) ! need to compute temperature correction 164 CALL iom_rstput( kt, nitrst, numrow, 'e3u_n', e3u_n(:,:,:), ldxios = lwxios ) ! need to compute bt conservation 165 CALL iom_rstput( kt, nitrst, numrow, 'e3v_n', e3v_n(:,:,:), ldxios = lwxios ) ! need to compute bt conservation 166 CALL iom_rstput( kt, nitrst, numrow, 'gdepw_n', gdepw_n(:,:,:), ldxios = lwxios ) ! need to compute extrapolation if vvl 167 167 END IF 168 168 ENDIF 169 169 170 IF (ln_diurnal) CALL iom_rstput( kt, nitrst, numrow, 'Dsst', x_dsst, l xios = lwxios )170 IF (ln_diurnal) CALL iom_rstput( kt, nitrst, numrow, 'Dsst', x_dsst, ldxios = lwxios ) 171 171 IF(lwxios) CALL iom_swap( cxios_context ) 172 172 IF( kt == nitrst ) THEN … … 174 174 CALL iom_close( numrow ) ! close the restart file (only at last time step) 175 175 ELSE 176 CALL iom_context_finalize( wxios_context )176 CALL iom_context_finalize( cwxios_context ) 177 177 ENDIF 178 178 !!gm IF( .NOT. lk_trdmld ) lrst_oce = .FALSE. -
branches/2017/dev_r8600_xios_write/NEMOGCM/NEMO/OPA_SRC/SBC/fldread.F90
r8630 r8662 1343 1343 & ' data type: ' , sdf(jf)%cltype , & 1344 1344 & ' land/sea mask:' , TRIM( sdf(jf)%lsmname ) 1345 call flush(numout) 1345 1346 END DO 1346 1347 ENDIF -
branches/2017/dev_r8600_xios_write/NEMOGCM/NEMO/OPA_SRC/SBC/sbcapr.F90
r8651 r8662 169 169 IF(lwp) WRITE(numout,*) 'sbc_apr : ssh_ib written in ocean restart file at it= ', kt,' date= ', ndastp 170 170 IF(lwp) WRITE(numout,*) '~~~~' 171 IF( lwxios ) CALL iom_swap( wxios_context )172 CALL iom_rstput( kt, nitrst, numrow, 'ssh_ibb' , ssh_ib, l xios = lwxios )171 IF( lwxios ) CALL iom_swap( cwxios_context ) 172 CALL iom_rstput( kt, nitrst, numrow, 'ssh_ibb' , ssh_ib, ldxios = lwxios ) 173 173 IF( lwxios ) CALL iom_swap( cxios_context ) 174 174 ENDIF -
branches/2017/dev_r8600_xios_write/NEMOGCM/NEMO/OPA_SRC/SBC/sbcisf.F90
r8651 r8662 233 233 & 'at it= ', kt,' date= ', ndastp 234 234 IF(lwp) WRITE(numout,*) '~~~~' 235 IF( lwxios ) CALL iom_swap( wxios_context )236 CALL iom_rstput( kt, nitrst, numrow, 'fwf_isf_b', fwfisf(:,:), l xios = lwxios )237 CALL iom_rstput( kt, nitrst, numrow, 'isf_hc_b' , risf_tsc(:,:,jp_tem), l xios = lwxios )238 CALL iom_rstput( kt, nitrst, numrow, 'isf_sc_b' , risf_tsc(:,:,jp_sal), l xios = lwxios )235 IF( lwxios ) CALL iom_swap( cwxios_context ) 236 CALL iom_rstput( kt, nitrst, numrow, 'fwf_isf_b', fwfisf(:,:), ldxios = lwxios ) 237 CALL iom_rstput( kt, nitrst, numrow, 'isf_hc_b' , risf_tsc(:,:,jp_tem), ldxios = lwxios ) 238 CALL iom_rstput( kt, nitrst, numrow, 'isf_sc_b' , risf_tsc(:,:,jp_sal), ldxios = lwxios ) 239 239 IF( lwxios ) CALL iom_swap( cxios_context ) 240 240 ENDIF -
branches/2017/dev_r8600_xios_write/NEMOGCM/NEMO/OPA_SRC/SBC/sbcmod.F90
r8651 r8662 496 496 & 'at it= ', kt,' date= ', ndastp 497 497 IF(lwp) WRITE(numout,*) '~~~~' 498 IF( lwxios ) CALL iom_swap( wxios_context )499 CALL iom_rstput( kt, nitrst, numrow, 'utau_b' , utau, l xios = lwxios )500 CALL iom_rstput( kt, nitrst, numrow, 'vtau_b' , vtau, l xios = lwxios )501 CALL iom_rstput( kt, nitrst, numrow, 'qns_b' , qns, l xios = lwxios )498 IF( lwxios ) CALL iom_swap( cwxios_context ) 499 CALL iom_rstput( kt, nitrst, numrow, 'utau_b' , utau, ldxios = lwxios ) 500 CALL iom_rstput( kt, nitrst, numrow, 'vtau_b' , vtau, ldxios = lwxios ) 501 CALL iom_rstput( kt, nitrst, numrow, 'qns_b' , qns, ldxios = lwxios ) 502 502 ! The 3D heat content due to qsr forcing is treated in traqsr 503 503 ! CALL iom_rstput( kt, nitrst, numrow, 'qsr_b' , qsr ) 504 CALL iom_rstput( kt, nitrst, numrow, 'emp_b' , emp, l xios = lwxios )505 CALL iom_rstput( kt, nitrst, numrow, 'sfx_b' , sfx, l xios = lwxios )504 CALL iom_rstput( kt, nitrst, numrow, 'emp_b' , emp, ldxios = lwxios ) 505 CALL iom_rstput( kt, nitrst, numrow, 'sfx_b' , sfx, ldxios = lwxios ) 506 506 IF( lwxios ) CALL iom_swap( cxios_context ) 507 507 ENDIF -
branches/2017/dev_r8600_xios_write/NEMOGCM/NEMO/OPA_SRC/SBC/sbcrnf.F90
r8651 r8662 165 165 & 'at it= ', kt,' date= ', ndastp 166 166 IF(lwp) WRITE(numout,*) '~~~~' 167 IF( lwxios ) CALL iom_swap( wxios_context )168 CALL iom_rstput( kt, nitrst, numrow, 'rnf_b' , rnf, l xios = lwxios )169 CALL iom_rstput( kt, nitrst, numrow, 'rnf_hc_b', rnf_tsc(:,:,jp_tem), l xios = lwxios )170 CALL iom_rstput( kt, nitrst, numrow, 'rnf_sc_b', rnf_tsc(:,:,jp_sal), l xios = lwxios )167 IF( lwxios ) CALL iom_swap( cwxios_context ) 168 CALL iom_rstput( kt, nitrst, numrow, 'rnf_b' , rnf, ldxios = lwxios ) 169 CALL iom_rstput( kt, nitrst, numrow, 'rnf_hc_b', rnf_tsc(:,:,jp_tem), ldxios = lwxios ) 170 CALL iom_rstput( kt, nitrst, numrow, 'rnf_sc_b', rnf_tsc(:,:,jp_sal), ldxios = lwxios ) 171 171 IF( lwxios ) CALL iom_swap( cxios_context ) 172 172 ENDIF -
branches/2017/dev_r8600_xios_write/NEMOGCM/NEMO/OPA_SRC/SBC/sbcssm.F90
r8651 r8662 156 156 IF(lwp) WRITE(numout,*) '~~~~~~~' 157 157 zf_sbc = REAL( nn_fsbc, wp ) 158 IF( lwxios ) CALL iom_swap( wxios_context )159 CALL iom_rstput( kt, nitrst, numrow, 'nn_fsbc', zf_sbc, l xios = lwxios ) ! sbc frequency160 CALL iom_rstput( kt, nitrst, numrow, 'ssu_m' , ssu_m, l xios = lwxios ) ! sea surface mean fields161 CALL iom_rstput( kt, nitrst, numrow, 'ssv_m' , ssv_m, l xios = lwxios )162 CALL iom_rstput( kt, nitrst, numrow, 'sst_m' , sst_m, l xios = lwxios )163 CALL iom_rstput( kt, nitrst, numrow, 'sss_m' , sss_m, l xios = lwxios )164 CALL iom_rstput( kt, nitrst, numrow, 'ssh_m' , ssh_m, l xios = lwxios )165 CALL iom_rstput( kt, nitrst, numrow, 'e3t_m' , e3t_m, l xios = lwxios )166 CALL iom_rstput( kt, nitrst, numrow, 'frq_m' , frq_m, l xios = lwxios )158 IF( lwxios ) CALL iom_swap( cwxios_context ) 159 CALL iom_rstput( kt, nitrst, numrow, 'nn_fsbc', zf_sbc, ldxios = lwxios ) ! sbc frequency 160 CALL iom_rstput( kt, nitrst, numrow, 'ssu_m' , ssu_m, ldxios = lwxios ) ! sea surface mean fields 161 CALL iom_rstput( kt, nitrst, numrow, 'ssv_m' , ssv_m, ldxios = lwxios ) 162 CALL iom_rstput( kt, nitrst, numrow, 'sst_m' , sst_m, ldxios = lwxios ) 163 CALL iom_rstput( kt, nitrst, numrow, 'sss_m' , sss_m, ldxios = lwxios ) 164 CALL iom_rstput( kt, nitrst, numrow, 'ssh_m' , ssh_m, ldxios = lwxios ) 165 CALL iom_rstput( kt, nitrst, numrow, 'e3t_m' , e3t_m, ldxios = lwxios ) 166 CALL iom_rstput( kt, nitrst, numrow, 'frq_m' , frq_m, ldxios = lwxios ) 167 167 ! 168 168 IF( lwxios ) CALL iom_swap( cxios_context ) -
branches/2017/dev_r8600_xios_write/NEMOGCM/NEMO/OPA_SRC/TRA/traqsr.F90
r8651 r8662 296 296 IF( lrst_oce ) THEN ! write in the ocean restart file 297 297 IF( lwxios ) CALL iom_swap( wxios_context ) 298 CALL iom_rstput( kt, nitrst, numrow, 'qsr_hc_b' , qsr_hc, l xios = lwxios )299 CALL iom_rstput( kt, nitrst, numrow, 'fraqsr_1lev', fraqsr_1lev, l xios = lwxios )298 CALL iom_rstput( kt, nitrst, numrow, 'qsr_hc_b' , qsr_hc, ldxios = lwxios ) 299 CALL iom_rstput( kt, nitrst, numrow, 'fraqsr_1lev', fraqsr_1lev, ldxios = lwxios ) 300 300 IF( lwxios ) CALL iom_swap( cxios_context ) 301 301 ENDIF -
branches/2017/dev_r8600_xios_write/NEMOGCM/NEMO/OPA_SRC/TRA/trasbc.F90
r8630 r8662 148 148 IF( lrst_oce ) THEN !== write sbc_tsc in the ocean restart file ==! 149 149 IF( lwxios ) CALL iom_swap( wxios_context ) 150 CALL iom_rstput( kt, nitrst, numrow, 'sbc_hc_b', sbc_tsc(:,:,jp_tem), l xios = lwxios )151 CALL iom_rstput( kt, nitrst, numrow, 'sbc_sc_b', sbc_tsc(:,:,jp_sal), l xios = lwxios )150 CALL iom_rstput( kt, nitrst, numrow, 'sbc_hc_b', sbc_tsc(:,:,jp_tem), ldxios = lwxios ) 151 CALL iom_rstput( kt, nitrst, numrow, 'sbc_sc_b', sbc_tsc(:,:,jp_sal), ldxios = lwxios ) 152 152 IF( lwxios ) CALL iom_swap( cxios_context ) 153 153 ENDIF -
branches/2017/dev_r8600_xios_write/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfgls.F90
r8651 r8662 1210 1210 ! ! ------------------- 1211 1211 IF(lwp) WRITE(numout,*) '---- gls-rst ----' 1212 IF( lwxios ) CALL iom_swap( wxios_context )1213 CALL iom_rstput( kt, nitrst, numrow, 'en' , en, l xios = lwxios )1214 CALL iom_rstput( kt, nitrst, numrow, 'avt' , avt_k, l xios = lwxios )1215 CALL iom_rstput( kt, nitrst, numrow, 'avm' , avm_k, l xios = lwxios )1216 CALL iom_rstput( kt, nitrst, numrow, 'avmu' , avmu_k, l xios = lwxios )1217 CALL iom_rstput( kt, nitrst, numrow, 'avmv' , avmv_k, l xios = lwxios )1218 CALL iom_rstput( kt, nitrst, numrow, 'mxln' , mxln, l xios = lwxios )1212 IF( lwxios ) CALL iom_swap( cwxios_context ) 1213 CALL iom_rstput( kt, nitrst, numrow, 'en' , en, ldxios = lwxios ) 1214 CALL iom_rstput( kt, nitrst, numrow, 'avt' , avt_k, ldxios = lwxios ) 1215 CALL iom_rstput( kt, nitrst, numrow, 'avm' , avm_k, ldxios = lwxios ) 1216 CALL iom_rstput( kt, nitrst, numrow, 'avmu' , avmu_k, ldxios = lwxios ) 1217 CALL iom_rstput( kt, nitrst, numrow, 'avmv' , avmv_k, ldxios = lwxios ) 1218 CALL iom_rstput( kt, nitrst, numrow, 'mxln' , mxln, ldxios = lwxios ) 1219 1219 IF( lwxios ) CALL iom_swap( cxios_context ) 1220 1220 ! -
branches/2017/dev_r8600_xios_write/NEMOGCM/NEMO/OPA_SRC/ZDF/zdftke.F90
r8651 r8662 890 890 ! ! ------------------- 891 891 IF(lwp) WRITE(numout,*) '---- tke-rst ----' 892 IF( lwxios ) CALL iom_swap( wxios_context )893 CALL iom_rstput( kt, nitrst, numrow, 'en' , en , l xios = lwxios )894 CALL iom_rstput( kt, nitrst, numrow, 'avt' , avt_k , l xios = lwxios )895 CALL iom_rstput( kt, nitrst, numrow, 'avm' , avm_k , l xios = lwxios )896 CALL iom_rstput( kt, nitrst, numrow, 'avmu' , avmu_k, l xios = lwxios )897 CALL iom_rstput( kt, nitrst, numrow, 'avmv' , avmv_k, l xios = lwxios )898 CALL iom_rstput( kt, nitrst, numrow, 'dissl', dissl , l xios = lwxios )892 IF( lwxios ) CALL iom_swap( cwxios_context ) 893 CALL iom_rstput( kt, nitrst, numrow, 'en' , en , ldxios = lwxios ) 894 CALL iom_rstput( kt, nitrst, numrow, 'avt' , avt_k , ldxios = lwxios ) 895 CALL iom_rstput( kt, nitrst, numrow, 'avm' , avm_k , ldxios = lwxios ) 896 CALL iom_rstput( kt, nitrst, numrow, 'avmu' , avmu_k, ldxios = lwxios ) 897 CALL iom_rstput( kt, nitrst, numrow, 'avmv' , avmv_k, ldxios = lwxios ) 898 CALL iom_rstput( kt, nitrst, numrow, 'dissl', dissl , ldxios = lwxios ) 899 899 IF( lwxios ) CALL iom_swap( cxios_context ) 900 900 !
Note: See TracChangeset
for help on using the changeset viewer.