New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 13717 – NEMO

Changeset 13717


Ignore:
Timestamp:
2020-11-03T10:02:29+01:00 (3 years ago)
Author:
andmirek
Message:

Ticket #2386: Fix reading with XIOS and issues in IFS

Location:
NEMO/branches/2020/r12377_ticket2386/src/OCE
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2020/r12377_ticket2386/src/OCE/IOM/iom.F90

    r13694 r13717  
    530530        i = i + 1; fields(i)%vname="isf_hc_cav_b";   fields(i)%grid="grid_N" 
    531531        i = i + 1; fields(i)%vname="isf_sc_cav_b";   fields(i)%grid="grid_N" 
     532        i = i + 1; fields(i)%vname="fwfisf_par_b";   fields(i)%grid="grid_N" 
     533        i = i + 1; fields(i)%vname="isf_hc_par_b";   fields(i)%grid="grid_N" 
     534        i = i + 1; fields(i)%vname="isf_sc_par_b";   fields(i)%grid="grid_N" 
    532535 
    533536        IF( i-1 > max_rst_fields) THEN 
     
    13521355#if defined key_iomput 
    13531356!would be good to be able to check which context is active and swap only if current is not restart 
     1357         idvar = iom_varid( kiomid, cdvar ) 
     1358 
    13541359         CALL iom_swap( TRIM(crxios_context) )  
     1360 
     1361         zsgn = 1._wp 
     1362         IF( PRESENT(psgn   ) )   zsgn    = psgn 
     1363         cl_type = 'T' 
     1364         IF( PRESENT(cd_type) )   cl_type = cd_type 
     1365 
    13551366         IF( PRESENT(pv_r3d) ) THEN 
    13561367            IF(lwp) WRITE(numout,*) 'XIOS RST READ (3D): ',TRIM(cdvar) 
    1357             CALL xios_recv_field( trim(cdvar), pv_r3d) 
    1358             IF(idom /= jpdom_unknown )   CALL lbc_lnk( 'iom', pv_r3d,'Z', -999., kfillmode = jpfillnothing) 
     1368            CALL xios_recv_field( trim(cdvar), pv_r3d(Nis0:Nie0, Njs0:Nje0, :)) 
     1369            IF(idom /= jpdom_unknown .AND. cl_type /= 'Z' ) THEN 
     1370               CALL lbc_lnk( 'iom', pv_r3d, cl_type, zsgn, kfillmode = kfill) 
     1371            ENDIF 
    13591372         ELSEIF( PRESENT(pv_r2d) ) THEN 
    13601373            IF(lwp) WRITE(numout,*) 'XIOS RST READ (2D): ', TRIM(cdvar) 
    1361             CALL xios_recv_field( trim(cdvar), pv_r2d) 
    1362             IF(idom /= jpdom_unknown )   CALL lbc_lnk('iom', pv_r2d,'Z',-999., kfillmode = jpfillnothing) 
     1374            CALL xios_recv_field( trim(cdvar), pv_r2d(Nis0:Nie0, Njs0:Nje0)) 
     1375            IF(idom /= jpdom_unknown .AND. cl_type /= 'Z' ) THEN 
     1376               CALL lbc_lnk('iom', pv_r2d, cl_type, zsgn, kfillmode = kfill) 
     1377            ENDIF 
    13631378         ELSEIF( PRESENT(pv_r1d) ) THEN 
    13641379            IF(lwp) WRITE(numout,*) 'XIOS RST READ (1D): ', TRIM(cdvar) 
     
    13801395      zofs = iom_file(kiomid)%ofs(idvar)      ! offset 
    13811396      IF(     PRESENT(pv_r1d) ) THEN 
    1382          IF( zscf /= 1. )   pv_r1d(:) = pv_r1d(:) * zscf  
    1383          IF( zofs /= 0. )   pv_r1d(:) = pv_r1d(:) + zofs 
     1397         IF( zscf /= 1._wp )   pv_r1d(:) = pv_r1d(:) * zscf  
     1398         IF( zofs /= 0._wp )   pv_r1d(:) = pv_r1d(:) + zofs 
    13841399      ELSEIF( PRESENT(pv_r2d) ) THEN 
    1385          IF( zscf /= 1.)   pv_r2d(:,:) = pv_r2d(:,:) * zscf 
    1386          IF( zofs /= 0.)   pv_r2d(:,:) = pv_r2d(:,:) + zofs 
     1400         IF( zscf /= 1._wp)   pv_r2d(:,:) = pv_r2d(:,:) * zscf 
     1401         IF( zofs /= 0._wp)   pv_r2d(:,:) = pv_r2d(:,:) + zofs 
    13871402      ELSEIF( PRESENT(pv_r3d) ) THEN 
    1388          IF( zscf /= 1.)   pv_r3d(:,:,:) = pv_r3d(:,:,:) * zscf 
    1389          IF( zofs /= 0.)   pv_r3d(:,:,:) = pv_r3d(:,:,:) + zofs 
     1403         IF( zscf /= 1._wp)   pv_r3d(:,:,:) = pv_r3d(:,:,:) * zscf 
     1404         IF( zofs /= 0._wp)   pv_r3d(:,:,:) = pv_r3d(:,:,:) + zofs 
    13901405      ENDIF 
    13911406      ! 
  • NEMO/branches/2020/r12377_ticket2386/src/OCE/ISF/isfpar.F90

    r13540 r13717  
    152152      ! read par variable from restart 
    153153      IF ( ln_rstart ) CALL isfrst_read('par', risf_par_tsc, fwfisf_par, risf_par_tsc_b, fwfisf_par_b) 
     154      !define fields for restart 
     155      IF( lwxios ) THEN 
     156         CALL iom_set_rstw_var_active( 'fwfisf_'//'par'//'_b') 
     157         CALL iom_set_rstw_var_active( 'isf_hc_'//'par'//'_b') 
     158         CALL iom_set_rstw_var_active( 'isf_sc_'//'par'//'_b') 
     159      ENDIF 
     160 
    154161      ! 
    155162      SELECT CASE ( TRIM(cn_isfpar_mlt) ) 
Note: See TracChangeset for help on using the changeset viewer.