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 9367 for branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DOM/domvvl.F90 – NEMO

Ignore:
Timestamp:
2018-02-28T17:23:20+01:00 (6 years ago)
Author:
mathiot
Message:

Add restart read/write via XIOS capability (#1953 and #1962 and twiki: 2017WP/Met_Office-1_Mirek_XIOSread). WARNING: need to upgrade XIOS to r1296 to compile

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DOM/domvvl.F90

    r9190 r9367  
    237237         ENDIF 
    238238      ENDIF 
     239      ! 
     240      IF(lwxios) THEN 
     241! define variables in restart file when writing with XIOS 
     242         CALL iom_set_rstw_var_active('e3t_b') 
     243         CALL iom_set_rstw_var_active('e3t_n') 
     244         !                                           ! ----------------------- ! 
     245         IF( ln_vvl_ztilde .OR. ln_vvl_layer ) THEN  ! z_tilde and layer cases ! 
     246            !                                        ! ----------------------- ! 
     247            CALL iom_set_rstw_var_active('tilde_e3t_b') 
     248            CALL iom_set_rstw_var_active('tilde_e3t_n') 
     249         END IF 
     250         !                                           ! -------------!     
     251         IF( ln_vvl_ztilde ) THEN                    ! z_tilde case ! 
     252            !                                        ! ------------ ! 
     253            CALL iom_set_rstw_var_active('hdiv_lf') 
     254         ENDIF 
     255         ! 
     256      ENDIF 
     257 
     258      IF( ln_timing )  CALL timing_stop('dom_vvl_init') 
    239259      ! 
    240260   END SUBROUTINE dom_vvl_init 
     
    781801         IF( ln_rstart ) THEN                   !* Read the restart file 
    782802            CALL rst_read_open                  !  open the restart file if necessary 
    783             CALL iom_get( numror, jpdom_autoglo, 'sshn'   , sshn    ) 
     803            CALL iom_get( numror, jpdom_autoglo, 'sshn'   , sshn, ldxios = lrxios    ) 
    784804            ! 
    785805            id1 = iom_varid( numror, 'e3t_b', ldstop = .FALSE. ) 
     
    792812            !                             ! --------- ! 
    793813            IF( MIN( id1, id2 ) > 0 ) THEN       ! all required arrays exist 
    794                CALL iom_get( numror, jpdom_autoglo, 'e3t_b', e3t_b(:,:,:) ) 
    795                CALL iom_get( numror, jpdom_autoglo, 'e3t_n', e3t_n(:,:,:) ) 
     814               CALL iom_get( numror, jpdom_autoglo, 'e3t_b', e3t_b(:,:,:), ldxios = lrxios ) 
     815               CALL iom_get( numror, jpdom_autoglo, 'e3t_n', e3t_n(:,:,:), ldxios = lrxios ) 
    796816               ! needed to restart if land processor not computed  
    797817               IF(lwp) write(numout,*) 'dom_vvl_rst : e3t_b and e3t_n found in restart files' 
     
    807827               IF(lwp) write(numout,*) 'e3t_n set equal to e3t_b.' 
    808828               IF(lwp) write(numout,*) 'neuler is forced to 0' 
    809                CALL iom_get( numror, jpdom_autoglo, 'e3t_b', e3t_b(:,:,:) ) 
     829               CALL iom_get( numror, jpdom_autoglo, 'e3t_b', e3t_b(:,:,:), ldxios = lrxios ) 
    810830               e3t_n(:,:,:) = e3t_b(:,:,:) 
    811831               neuler = 0 
     
    814834               IF(lwp) write(numout,*) 'e3t_b set equal to e3t_n.' 
    815835               IF(lwp) write(numout,*) 'neuler is forced to 0' 
    816                CALL iom_get( numror, jpdom_autoglo, 'e3t_n', e3t_n(:,:,:) ) 
     836               CALL iom_get( numror, jpdom_autoglo, 'e3t_n', e3t_n(:,:,:), ldxios = lrxios ) 
    817837               e3t_b(:,:,:) = e3t_n(:,:,:) 
    818838               neuler = 0 
     
    839859               !                          ! ----------------------- ! 
    840860               IF( MIN( id3, id4 ) > 0 ) THEN  ! all required arrays exist 
    841                   CALL iom_get( numror, jpdom_autoglo, 'tilde_e3t_b', tilde_e3t_b(:,:,:) ) 
    842                   CALL iom_get( numror, jpdom_autoglo, 'tilde_e3t_n', tilde_e3t_n(:,:,:) ) 
     861                  CALL iom_get( numror, jpdom_autoglo, 'tilde_e3t_b', tilde_e3t_b(:,:,:), ldxios = lrxios ) 
     862                  CALL iom_get( numror, jpdom_autoglo, 'tilde_e3t_n', tilde_e3t_n(:,:,:), ldxios = lrxios ) 
    843863               ELSE                            ! one at least array is missing 
    844864                  tilde_e3t_b(:,:,:) = 0.0_wp 
     
    849869                  !                       ! ------------ ! 
    850870                  IF( id5 > 0 ) THEN  ! required array exists 
    851                      CALL iom_get( numror, jpdom_autoglo, 'hdiv_lf', hdiv_lf(:,:,:) ) 
     871                     CALL iom_get( numror, jpdom_autoglo, 'hdiv_lf', hdiv_lf(:,:,:), ldxios = lrxios ) 
    852872                  ELSE                ! array is missing 
    853873                     hdiv_lf(:,:,:) = 0.0_wp 
     
    928948         !                                   ! =================== 
    929949         IF(lwp) WRITE(numout,*) '---- dom_vvl_rst ----' 
     950         IF( lwxios ) CALL iom_swap(      cwxios_context          ) 
    930951         !                                           ! --------- ! 
    931952         !                                           ! all cases ! 
    932953         !                                           ! --------- ! 
    933          CALL iom_rstput( kt, nitrst, numrow, 'e3t_b', e3t_b(:,:,:) ) 
    934          CALL iom_rstput( kt, nitrst, numrow, 'e3t_n', e3t_n(:,:,:) ) 
     954         CALL iom_rstput( kt, nitrst, numrow, 'e3t_b', e3t_b(:,:,:), ldxios = lwxios ) 
     955         CALL iom_rstput( kt, nitrst, numrow, 'e3t_n', e3t_n(:,:,:), ldxios = lwxios ) 
    935956         !                                           ! ----------------------- ! 
    936957         IF( ln_vvl_ztilde .OR. ln_vvl_layer ) THEN  ! z_tilde and layer cases ! 
    937958            !                                        ! ----------------------- ! 
    938             CALL iom_rstput( kt, nitrst, numrow, 'tilde_e3t_b', tilde_e3t_b(:,:,:) ) 
    939             CALL iom_rstput( kt, nitrst, numrow, 'tilde_e3t_n', tilde_e3t_n(:,:,:) ) 
     959            CALL iom_rstput( kt, nitrst, numrow, 'tilde_e3t_b', tilde_e3t_b(:,:,:), ldxios = lwxios) 
     960            CALL iom_rstput( kt, nitrst, numrow, 'tilde_e3t_n', tilde_e3t_n(:,:,:), ldxios = lwxios) 
    940961         END IF 
    941962         !                                           ! -------------!     
    942963         IF( ln_vvl_ztilde ) THEN                    ! z_tilde case ! 
    943964            !                                        ! ------------ ! 
    944             CALL iom_rstput( kt, nitrst, numrow, 'hdiv_lf', hdiv_lf(:,:,:) ) 
    945          ENDIF 
    946          ! 
     965            CALL iom_rstput( kt, nitrst, numrow, 'hdiv_lf', hdiv_lf(:,:,:), ldxios = lwxios) 
     966         ENDIF 
     967         ! 
     968         IF( lwxios ) CALL iom_swap(      cxios_context          ) 
    947969      ENDIF 
    948970      ! 
Note: See TracChangeset for help on using the changeset viewer.