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 11840 for NEMO/branches/2019/dev_r11756_SI3restart_XIOS/src/ICE/icedyn_adv_pra.F90 – NEMO

Ignore:
Timestamp:
2019-10-31T16:30:50+01:00 (4 years ago)
Author:
andmirek
Message:

Ticket #2323 write SI3 restart with XIOS

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/dev_r11756_SI3restart_XIOS/src/ICE/icedyn_adv_pra.F90

    r11837 r11840  
    650650      !!------------------------------------------------------------------- 
    651651      INTEGER ::   ierr 
     652      INTEGER ::   jk 
     653      CHARACTER(len=25) ::   znam 
     654      CHARACTER(len=2)  ::   zchar1 
    652655      !!------------------------------------------------------------------- 
    653656      ! 
     
    671674      IF( ierr /= 0 )   CALL ctl_stop('STOP', 'adv_pra_init : unable to allocate ice arrays for Prather advection scheme') 
    672675      ! 
    673       CALL adv_pra_rst( 'READ' )    !* read or initialize all required files 
     676      CALL adv_pra_rst( 'READ' )    !* read or initialize all required files  
     677      ! 
     678      IF(lwxios) THEN 
     679         CALL iom_set_rstw_var_active(rsti_wfields, 'sxice') 
     680         CALL iom_set_rstw_var_active(rsti_wfields, 'syice') 
     681         CALL iom_set_rstw_var_active(rsti_wfields, 'sxxice') 
     682         CALL iom_set_rstw_var_active(rsti_wfields, 'syyice') 
     683         CALL iom_set_rstw_var_active(rsti_wfields, 'sxyice') 
     684         CALL iom_set_rstw_var_active(rsti_wfields, 'sxsn'  ) 
     685         CALL iom_set_rstw_var_active(rsti_wfields, 'sysn'  ) 
     686         CALL iom_set_rstw_var_active(rsti_wfields, 'sxxsn' ) 
     687         CALL iom_set_rstw_var_active(rsti_wfields, 'syysn' ) 
     688         CALL iom_set_rstw_var_active(rsti_wfields, 'sxysn' ) 
     689         CALL iom_set_rstw_var_active(rsti_wfields, 'sxa'   ) 
     690         CALL iom_set_rstw_var_active(rsti_wfields, 'sya'   ) 
     691         CALL iom_set_rstw_var_active(rsti_wfields, 'sxxa'  ) 
     692         CALL iom_set_rstw_var_active(rsti_wfields, 'syya'  ) 
     693         CALL iom_set_rstw_var_active(rsti_wfields, 'sxya'  ) 
     694         CALL iom_set_rstw_var_active(rsti_wfields, 'sxsal' ) 
     695         CALL iom_set_rstw_var_active(rsti_wfields, 'sysal' ) 
     696         CALL iom_set_rstw_var_active(rsti_wfields, 'sxxsal') 
     697         CALL iom_set_rstw_var_active(rsti_wfields, 'syysal') 
     698         CALL iom_set_rstw_var_active(rsti_wfields, 'sxysal') 
     699         CALL iom_set_rstw_var_active(rsti_wfields, 'sxage' ) 
     700         CALL iom_set_rstw_var_active(rsti_wfields, 'syage' ) 
     701         CALL iom_set_rstw_var_active(rsti_wfields, 'sxxage') 
     702         CALL iom_set_rstw_var_active(rsti_wfields, 'syyage') 
     703         CALL iom_set_rstw_var_active(rsti_wfields, 'sxyage') 
     704         DO jk = 1, nlay_s 
     705            WRITE(zchar1,'(I2.2)') jk 
     706            znam = 'sxc0'//'_l'//zchar1   
     707            CALL iom_set_rstw_var_active(rsti_wfields, znam ) 
     708            znam = 'syc0'//'_l'//zchar1   
     709            CALL iom_set_rstw_var_active(rsti_wfields, znam ) 
     710            znam = 'sxxc0'//'_l'//zchar1  
     711            CALL iom_set_rstw_var_active(rsti_wfields, znam ) 
     712            znam = 'syyc0'//'_l'//zchar1  
     713            CALL iom_set_rstw_var_active(rsti_wfields, znam ) 
     714            znam = 'sxyc0'//'_l'//zchar1  
     715            CALL iom_set_rstw_var_active(rsti_wfields, znam ) 
     716         END DO 
     717         DO jk = 1, nlay_i 
     718            WRITE(zchar1,'(I2.2)') jk 
     719            znam = 'sxe'//'_l'//zchar1    
     720            CALL iom_set_rstw_var_active(rsti_wfields, znam ) 
     721            znam = 'sye'//'_l'//zchar1    
     722            CALL iom_set_rstw_var_active(rsti_wfields, znam ) 
     723            znam = 'sxxe'//'_l'//zchar1   
     724            CALL iom_set_rstw_var_active(rsti_wfields, znam ) 
     725            znam = 'syye'//'_l'//zchar1   
     726            CALL iom_set_rstw_var_active(rsti_wfields, znam ) 
     727            znam = 'sxye'//'_l'//zchar1   
     728            CALL iom_set_rstw_var_active(rsti_wfields, znam ) 
     729         END DO 
     730         ! 
     731         IF( ln_pnd_H12 ) THEN                                       ! melt pond fraction 
     732            CALL iom_set_rstw_var_active(rsti_wfields, 'sxap' ) 
     733            CALL iom_set_rstw_var_active(rsti_wfields, 'syap' ) 
     734            CALL iom_set_rstw_var_active(rsti_wfields, 'sxxap') 
     735            CALL iom_set_rstw_var_active(rsti_wfields, 'syyap') 
     736            CALL iom_set_rstw_var_active(rsti_wfields, 'sxyap') 
     737            CALL iom_set_rstw_var_active(rsti_wfields, 'sxvp' ) 
     738            CALL iom_set_rstw_var_active(rsti_wfields, 'syvp' ) 
     739            CALL iom_set_rstw_var_active(rsti_wfields, 'sxxvp') 
     740            CALL iom_set_rstw_var_active(rsti_wfields, 'syyvp') 
     741            CALL iom_set_rstw_var_active(rsti_wfields, 'sxyvp') 
     742         ENDIF 
     743      ENDIF 
    674744      ! 
    675745   END SUBROUTINE adv_pra_init 
     
    823893         ! 
    824894         !                                                           ! ice thickness 
    825          CALL iom_rstput( iter, nitrst, numriw, 'sxice' , sxice  ) 
    826          CALL iom_rstput( iter, nitrst, numriw, 'syice' , syice  ) 
    827          CALL iom_rstput( iter, nitrst, numriw, 'sxxice', sxxice ) 
    828          CALL iom_rstput( iter, nitrst, numriw, 'syyice', syyice ) 
    829          CALL iom_rstput( iter, nitrst, numriw, 'sxyice', sxyice ) 
     895         IF(lwxios) CALL iom_swap( TRIM(cwixios_context) ) 
     896         CALL iom_rstput( iter, nitrst, numriw, 'sxice' , sxice,  ldxios = lwxios ) 
     897         CALL iom_rstput( iter, nitrst, numriw, 'syice' , syice,  ldxios = lwxios ) 
     898         CALL iom_rstput( iter, nitrst, numriw, 'sxxice', sxxice, ldxios = lwxios ) 
     899         CALL iom_rstput( iter, nitrst, numriw, 'syyice', syyice, ldxios = lwxios ) 
     900         CALL iom_rstput( iter, nitrst, numriw, 'sxyice', sxyice, ldxios = lwxios ) 
    830901         !                                                           ! snow thickness 
    831          CALL iom_rstput( iter, nitrst, numriw, 'sxsn'  , sxsn  ) 
    832          CALL iom_rstput( iter, nitrst, numriw, 'sysn'  , sysn  ) 
    833          CALL iom_rstput( iter, nitrst, numriw, 'sxxsn' , sxxsn  ) 
    834          CALL iom_rstput( iter, nitrst, numriw, 'syysn' , syysn  ) 
    835          CALL iom_rstput( iter, nitrst, numriw, 'sxysn' , sxysn  ) 
     902         CALL iom_rstput( iter, nitrst, numriw, 'sxsn'  , sxsn,   ldxios = lwxios ) 
     903         CALL iom_rstput( iter, nitrst, numriw, 'sysn'  , sysn,   ldxios = lwxios ) 
     904         CALL iom_rstput( iter, nitrst, numriw, 'sxxsn' , sxxsn,  ldxios = lwxios ) 
     905         CALL iom_rstput( iter, nitrst, numriw, 'syysn' , syysn,  ldxios = lwxios ) 
     906         CALL iom_rstput( iter, nitrst, numriw, 'sxysn' , sxysn,  ldxios = lwxios ) 
    836907         !                                                           ! ice concentration 
    837          CALL iom_rstput( iter, nitrst, numriw, 'sxa'   , sxa    ) 
    838          CALL iom_rstput( iter, nitrst, numriw, 'sya'   , sya    ) 
    839          CALL iom_rstput( iter, nitrst, numriw, 'sxxa'  , sxxa  ) 
    840          CALL iom_rstput( iter, nitrst, numriw, 'syya'  , syya  ) 
    841          CALL iom_rstput( iter, nitrst, numriw, 'sxya'  , sxya  ) 
     908         CALL iom_rstput( iter, nitrst, numriw, 'sxa'   , sxa,    ldxios = lwxios ) 
     909         CALL iom_rstput( iter, nitrst, numriw, 'sya'   , sya,    ldxios = lwxios ) 
     910         CALL iom_rstput( iter, nitrst, numriw, 'sxxa'  , sxxa,   ldxios = lwxios ) 
     911         CALL iom_rstput( iter, nitrst, numriw, 'syya'  , syya,   ldxios = lwxios ) 
     912         CALL iom_rstput( iter, nitrst, numriw, 'sxya'  , sxya,   ldxios = lwxios ) 
    842913         !                                                           ! ice salinity 
    843          CALL iom_rstput( iter, nitrst, numriw, 'sxsal' , sxsal  ) 
    844          CALL iom_rstput( iter, nitrst, numriw, 'sysal' , sysal  ) 
    845          CALL iom_rstput( iter, nitrst, numriw, 'sxxsal', sxxsal ) 
    846          CALL iom_rstput( iter, nitrst, numriw, 'syysal', syysal ) 
    847          CALL iom_rstput( iter, nitrst, numriw, 'sxysal', sxysal ) 
     914         CALL iom_rstput( iter, nitrst, numriw, 'sxsal' , sxsal,  ldxios = lwxios ) 
     915         CALL iom_rstput( iter, nitrst, numriw, 'sysal' , sysal,  ldxios = lwxios ) 
     916         CALL iom_rstput( iter, nitrst, numriw, 'sxxsal', sxxsal, ldxios = lwxios )  
     917         CALL iom_rstput( iter, nitrst, numriw, 'syysal', syysal, ldxios = lwxios )  
     918         CALL iom_rstput( iter, nitrst, numriw, 'sxysal', sxysal, ldxios = lwxios )  
    848919         !                                                           ! ice age 
    849          CALL iom_rstput( iter, nitrst, numriw, 'sxage' , sxage  ) 
    850          CALL iom_rstput( iter, nitrst, numriw, 'syage' , syage  ) 
    851          CALL iom_rstput( iter, nitrst, numriw, 'sxxage', sxxage ) 
    852          CALL iom_rstput( iter, nitrst, numriw, 'syyage', syyage ) 
    853          CALL iom_rstput( iter, nitrst, numriw, 'sxyage', sxyage ) 
     920         CALL iom_rstput( iter, nitrst, numriw, 'sxage' , sxage,  ldxios = lwxios ) 
     921         CALL iom_rstput( iter, nitrst, numriw, 'syage' , syage,  ldxios = lwxios ) 
     922         CALL iom_rstput( iter, nitrst, numriw, 'sxxage', sxxage, ldxios = lwxios )  
     923         CALL iom_rstput( iter, nitrst, numriw, 'syyage', syyage, ldxios = lwxios )  
     924         CALL iom_rstput( iter, nitrst, numriw, 'sxyage', sxyage, ldxios = lwxios )  
    854925         !                                                           ! snow layers heat content 
    855926         DO jk = 1, nlay_s 
    856927            WRITE(zchar1,'(I2.2)') jk 
    857             znam = 'sxc0'//'_l'//zchar1  ;   z3d(:,:,:) = sxc0 (:,:,jk,:)  ;   CALL iom_rstput( iter, nitrst, numriw, znam , z3d ) 
    858             znam = 'syc0'//'_l'//zchar1  ;   z3d(:,:,:) = syc0 (:,:,jk,:)  ;   CALL iom_rstput( iter, nitrst, numriw, znam , z3d ) 
    859             znam = 'sxxc0'//'_l'//zchar1 ;   z3d(:,:,:) = sxxc0(:,:,jk,:)  ;   CALL iom_rstput( iter, nitrst, numriw, znam , z3d ) 
    860             znam = 'syyc0'//'_l'//zchar1 ;   z3d(:,:,:) = syyc0(:,:,jk,:)  ;   CALL iom_rstput( iter, nitrst, numriw, znam , z3d ) 
    861             znam = 'sxyc0'//'_l'//zchar1 ;   z3d(:,:,:) = sxyc0(:,:,jk,:)  ;   CALL iom_rstput( iter, nitrst, numriw, znam , z3d ) 
     928            znam = 'sxc0'//'_l'//zchar1   
     929            z3d(:,:,:) = sxc0 (:,:,jk,:)   
     930            CALL iom_rstput( iter, nitrst, numriw, znam , z3d,  ldxios = lwxios ) 
     931 
     932            znam = 'syc0'//'_l'//zchar1   
     933            z3d(:,:,:) = syc0 (:,:,jk,:)   
     934            CALL iom_rstput( iter, nitrst, numriw, znam , z3d,  ldxios = lwxios ) 
     935 
     936            znam = 'sxxc0'//'_l'//zchar1  
     937            z3d(:,:,:) = sxxc0(:,:,jk,:)   
     938            CALL iom_rstput( iter, nitrst, numriw, znam , z3d,  ldxios = lwxios ) 
     939 
     940            znam = 'syyc0'//'_l'//zchar1  
     941            z3d(:,:,:) = syyc0(:,:,jk,:)   
     942            CALL iom_rstput( iter, nitrst, numriw, znam , z3d,  ldxios = lwxios ) 
     943 
     944            znam = 'sxyc0'//'_l'//zchar1  
     945            z3d(:,:,:) = sxyc0(:,:,jk,:)   
     946            CALL iom_rstput( iter, nitrst, numriw, znam , z3d,  ldxios = lwxios ) 
    862947         END DO 
    863948         !                                                           ! ice layers heat content 
    864949         DO jk = 1, nlay_i 
    865950            WRITE(zchar1,'(I2.2)') jk 
    866             znam = 'sxe'//'_l'//zchar1   ;   z3d(:,:,:) = sxe (:,:,jk,:)   ;   CALL iom_rstput( iter, nitrst, numriw, znam , z3d ) 
    867             znam = 'sye'//'_l'//zchar1   ;   z3d(:,:,:) = sye (:,:,jk,:)   ;   CALL iom_rstput( iter, nitrst, numriw, znam , z3d ) 
    868             znam = 'sxxe'//'_l'//zchar1  ;   z3d(:,:,:) = sxxe(:,:,jk,:)   ;   CALL iom_rstput( iter, nitrst, numriw, znam , z3d ) 
    869             znam = 'syye'//'_l'//zchar1  ;   z3d(:,:,:) = syye(:,:,jk,:)   ;   CALL iom_rstput( iter, nitrst, numriw, znam , z3d ) 
    870             znam = 'sxye'//'_l'//zchar1  ;   z3d(:,:,:) = sxye(:,:,jk,:)   ;   CALL iom_rstput( iter, nitrst, numriw, znam , z3d ) 
     951            znam = 'sxe'//'_l'//zchar1    
     952            z3d(:,:,:) = sxe (:,:,jk,:)    
     953            CALL iom_rstput( iter, nitrst, numriw, znam , z3d,  ldxios = lwxios ) 
     954            znam = 'sye'//'_l'//zchar1    
     955            z3d(:,:,:) = sye (:,:,jk,:)    
     956            CALL iom_rstput( iter, nitrst, numriw, znam , z3d,  ldxios = lwxios ) 
     957            znam = 'sxxe'//'_l'//zchar1   
     958            z3d(:,:,:) = sxxe(:,:,jk,:)    
     959            CALL iom_rstput( iter, nitrst, numriw, znam , z3d,  ldxios = lwxios ) 
     960            znam = 'syye'//'_l'//zchar1   
     961            z3d(:,:,:) = syye(:,:,jk,:)    
     962            CALL iom_rstput( iter, nitrst, numriw, znam , z3d,  ldxios = lwxios ) 
     963            znam = 'sxye'//'_l'//zchar1   
     964            z3d(:,:,:) = sxye(:,:,jk,:)    
     965            CALL iom_rstput( iter, nitrst, numriw, znam , z3d,  ldxios = lwxios ) 
    871966         END DO 
    872967         ! 
    873968         IF( ln_pnd_H12 ) THEN                                       ! melt pond fraction 
    874             CALL iom_rstput( iter, nitrst, numriw, 'sxap' , sxap  ) 
    875             CALL iom_rstput( iter, nitrst, numriw, 'syap' , syap  ) 
    876             CALL iom_rstput( iter, nitrst, numriw, 'sxxap', sxxap ) 
    877             CALL iom_rstput( iter, nitrst, numriw, 'syyap', syyap ) 
    878             CALL iom_rstput( iter, nitrst, numriw, 'sxyap', sxyap ) 
     969            CALL iom_rstput( iter, nitrst, numriw, 'sxap' , sxap,   ldxios = lwxios ) 
     970            CALL iom_rstput( iter, nitrst, numriw, 'syap' , syap,   ldxios = lwxios ) 
     971            CALL iom_rstput( iter, nitrst, numriw, 'sxxap', sxxap,  ldxios = lwxios ) 
     972            CALL iom_rstput( iter, nitrst, numriw, 'syyap', syyap,  ldxios = lwxios ) 
     973            CALL iom_rstput( iter, nitrst, numriw, 'sxyap', sxyap,  ldxios = lwxios ) 
    879974            !                                                        ! melt pond volume 
    880             CALL iom_rstput( iter, nitrst, numriw, 'sxvp' , sxvp  ) 
    881             CALL iom_rstput( iter, nitrst, numriw, 'syvp' , syvp  ) 
    882             CALL iom_rstput( iter, nitrst, numriw, 'sxxvp', sxxvp ) 
    883             CALL iom_rstput( iter, nitrst, numriw, 'syyvp', syyvp ) 
    884             CALL iom_rstput( iter, nitrst, numriw, 'sxyvp', sxyvp ) 
     975            CALL iom_rstput( iter, nitrst, numriw, 'sxvp' , sxvp,   ldxios = lwxios ) 
     976            CALL iom_rstput( iter, nitrst, numriw, 'syvp' , syvp,   ldxios = lwxios ) 
     977            CALL iom_rstput( iter, nitrst, numriw, 'sxxvp', sxxvp,  ldxios = lwxios ) 
     978            CALL iom_rstput( iter, nitrst, numriw, 'syyvp', syyvp,  ldxios = lwxios ) 
     979            CALL iom_rstput( iter, nitrst, numriw, 'sxyvp', sxyvp,  ldxios = lwxios ) 
    885980         ENDIF 
     981         ! 
     982         IF(lwxios) CALL iom_swap( TRIM(cxios_context) ) 
    886983         ! 
    887984      ENDIF 
Note: See TracChangeset for help on using the changeset viewer.