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 12969 for NEMO/branches/2020/dev_12905_xios_restart/src/TOP/PISCES/SED/sedrst.F90 – NEMO

Ignore:
Timestamp:
2020-05-26T12:05:09+02:00 (4 years ago)
Author:
andmirek
Message:

ticket #2462: read restart with XIOS independently for each component

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2020/dev_12905_xios_restart/src/TOP/PISCES/SED/sedrst.F90

    r12961 r12969  
    139139      zdta2 = 0. 
    140140 
    141       IF(lrxios) CALL iom_swap(crsxios_context) 
     141      IF(lrsxios) CALL iom_swap(crsxios_context) 
    142142      DO jn = 1, jptrased 
    143143         cltra = TRIM(sedtrcd(jn)) 
    144144         IF( iom_varid( numrsr, TRIM(cltra) , ldstop = .FALSE. ) > 0 ) THEN 
    145             CALL iom_get( numrsr, jpdom_autoglo, TRIM(cltra), zdta(:,:,:,jn), ldxios = lrxios ) 
     145            CALL iom_get( numrsr, jpdom_autoglo, TRIM(cltra), zdta(:,:,:,jn), ldxios = lrsxios ) 
    146146         ELSE 
    147147            zdta(:,:,:,jn) = 0.0 
     
    162162         cltra = TRIM(seddia3d(jn)) 
    163163         IF( iom_varid( numrsr, TRIM(cltra) , ldstop = .FALSE. ) > 0 ) THEN 
    164             CALL iom_get( numrsr, jpdom_autoglo, TRIM(cltra), zdta1(:,:,:,jn), ldxios = lrxios ) 
     164            CALL iom_get( numrsr, jpdom_autoglo, TRIM(cltra), zdta1(:,:,:,jn), ldxios = lrsxios ) 
    165165         ELSE 
    166166            zdta1(:,:,:,jn) = 0.0 
     
    189189      cltra = "dbioturb" 
    190190      IF( iom_varid( numrsr, TRIM(cltra) , ldstop = .FALSE. ) > 0 ) THEN 
    191          CALL iom_get( numrsr, jpdom_autoglo, TRIM(cltra), zdta2(:,:,:), ldxios = lrxios ) 
     191         CALL iom_get( numrsr, jpdom_autoglo, TRIM(cltra), zdta2(:,:,:), ldxios = lrsxios ) 
    192192      ELSE 
    193193         zdta2(:,:,:) = 0.0 
     
    199199      cltra = "irrig" 
    200200      IF( iom_varid( numrsr, TRIM(cltra) , ldstop = .FALSE. ) > 0 ) THEN 
    201          CALL iom_get( numrsr, jpdom_autoglo, TRIM(cltra), zdta2(:,:,:), ldxios = lrxios ) 
     201         CALL iom_get( numrsr, jpdom_autoglo, TRIM(cltra), zdta2(:,:,:), ldxios = lrsxios ) 
    202202      ELSE 
    203203         zdta2(:,:,:) = 0.0 
     
    209209      cltra = "sedligand" 
    210210      IF( iom_varid( numrsr, TRIM(cltra) , ldstop = .FALSE. ) > 0 ) THEN 
    211          CALL iom_get( numrsr, jpdom_autoglo, TRIM(cltra), zdta2(:,:,:), ldxios = lrxios ) 
     211         CALL iom_get( numrsr, jpdom_autoglo, TRIM(cltra), zdta2(:,:,:), ldxios = lrsxios ) 
    212212      ELSE 
    213213         zdta2(:,:,:) = 0.0 
     
    216216      CALL pack_arr( jpoce, sedligand(1:jpoce,1:jpksed), & 
    217217         &             zdta2(1:jpi,1:jpj,1:jpksed), iarroce(1:jpoce) ) 
    218       IF(lrxios) CALL iom_swap(cxios_context) 
     218      IF(lrsxios) CALL iom_swap(cxios_context) 
    219219      IF( ln_timing )  CALL timing_stop('sed_rst_read') 
    220220      
     
    382382            CALL iom_open( TRIM(cn_sedrst_indir)//'/'//cn_sedrst_in, numrsr ) 
    383383 
    384       IF( lrxios .AND. .NOT. lxios_sini) THEN 
    385           CALL ctl_stop('OCE and SED restart must be in a single file when XIOS is used to read restart') 
    386       ENDIF 
    387       IF( lrxios) THEN 
    388           crsxios_context = 'sed_rst' 
    389           IF(lwp) WRITE(numout,*) 'Enable restart reading by XIOS for SED' 
    390           IF( TRIM(Agrif_CFixed()) == '0' ) THEN 
    391              clpname = cn_sedrst_in 
    392           ELSE 
    393              clpname = TRIM(Agrif_CFixed())//"_"//cn_sedrst_in    
    394           ENDIF 
    395           CALL iom_init( crsxios_context, fname = TRIM(cn_sedrst_indir)//'/'//TRIM(clpname), & 
    396                                           idfp = iom_file(numrsr)%nfid, ld_tmppatch = .TRUE. ) 
    397       ENDIF 
    398             IF(lrxios) CALL iom_swap(crsxios_context) 
    399             CALL iom_get ( numrsr, 'kt', zkt, ldxios = lrxios )   ! last time-step of previous run 
    400             IF(lrxios) CALL iom_swap(cxios_context) 
     384            lrsxios = lrxios.AND.lxios_sini 
     385            IF( lrsxios) THEN 
     386                crsxios_context = 'sed_rst' 
     387                IF(lwp) WRITE(numout,*) 'Enable restart reading by XIOS for SED' 
     388                IF( TRIM(Agrif_CFixed()) == '0' ) THEN 
     389                   clpname = cn_sedrst_in 
     390                ELSE 
     391                   clpname = TRIM(Agrif_CFixed())//"_"//cn_sedrst_in    
     392                ENDIF 
     393                CALL iom_init( crsxios_context, fname = TRIM(cn_sedrst_indir)//'/'//TRIM(clpname), & 
     394                                                idfp = iom_file(numrsr)%nfid, ld_tmppatch = .TRUE. ) 
     395            ENDIF 
     396            IF(lrsxios) CALL iom_swap(crsxios_context) 
     397            CALL iom_get ( numrsr, 'kt', zkt, ldxios = lrsxios )   ! last time-step of previous run 
     398            IF(lrsxios) CALL iom_swap(cxios_context) 
    401399            IF(lwp) THEN 
    402400               WRITE(numsed,*) ' *** Info read in restart : ' 
     
    419417            !                                          ! set the date in offline mode 
    420418            IF( ln_rst_sed .AND. nn_rstsed == 2 ) THEN 
    421                IF(lrxios) CALL iom_swap(crsxios_context) 
    422                CALL iom_get( numrsr, 'ndastp', zndastp, ldxios = lrxios ) 
     419               IF(lrsxios) CALL iom_swap(crsxios_context) 
     420               CALL iom_get( numrsr, 'ndastp', zndastp, ldxios = lrsxios ) 
    423421               ndastp = NINT( zndastp ) 
    424                CALL iom_get( numrsr, 'adatrj', adatrj, ldxios = lrxios  ) 
    425                IF(lrxios) CALL iom_swap(crxios_context) 
     422               CALL iom_get( numrsr, 'adatrj', adatrj, ldxios = lrsxios  ) 
     423               IF(lrsxios) CALL iom_swap(crxios_context) 
    426424             ELSE 
    427425               ndastp = ndate0 - 1     ! ndate0 read in the namelist in dom_nam 
Note: See TracChangeset for help on using the changeset viewer.