Changeset 11837 for NEMO/branches/2019/dev_r11756_SI3restart_XIOS/src
- Timestamp:
- 2019-10-30T15:10:36+01:00 (4 years ago)
- Location:
- NEMO/branches/2019/dev_r11756_SI3restart_XIOS/src
- Files:
-
- 28 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r11756_SI3restart_XIOS/src/ICE/icedia.F90
r11536 r11837 225 225 IF( ln_rstart ) THEN !* Read the restart file 226 226 ! 227 CALL iom_get( numrir, 'kt_ice' , ziter ) 227 IF(lrxios) CALL iom_swap( TRIM(crixios_context) ) 228 CALL iom_get( numrir, 'kt_ice' , ziter, ldxios = lrxios ) 228 229 IF(lwp) WRITE(numout,*) 229 230 IF(lwp) WRITE(numout,*) 'ice_dia_rst read at time step = ', ziter 230 231 IF(lwp) WRITE(numout,*) '~~~~~~~~~~' 231 CALL iom_get( numrir, 'frc_voltop' , frc_voltop ) 232 CALL iom_get( numrir, 'frc_volbot' , frc_volbot ) 233 CALL iom_get( numrir, 'frc_temtop' , frc_temtop ) 234 CALL iom_get( numrir, 'frc_tembot' , frc_tembot ) 235 CALL iom_get( numrir, 'frc_sal' , frc_sal ) 236 CALL iom_get( numrir, jpdom_autoglo, 'vol_loc_ini', vol_loc_ini ) 237 CALL iom_get( numrir, jpdom_autoglo, 'tem_loc_ini', tem_loc_ini ) 238 CALL iom_get( numrir, jpdom_autoglo, 'sal_loc_ini', sal_loc_ini ) 232 CALL iom_get( numrir, 'frc_voltop' , frc_voltop, ldxios = lrxios ) 233 CALL iom_get( numrir, 'frc_volbot' , frc_volbot, ldxios = lrxios ) 234 CALL iom_get( numrir, 'frc_temtop' , frc_temtop, ldxios = lrxios ) 235 CALL iom_get( numrir, 'frc_tembot' , frc_tembot, ldxios = lrxios ) 236 CALL iom_get( numrir, 'frc_sal' , frc_sal, ldxios = lrxios ) 237 CALL iom_get( numrir, jpdom_autoglo, 'vol_loc_ini', vol_loc_ini, ldxios = lrxios) 238 CALL iom_get( numrir, jpdom_autoglo, 'tem_loc_ini', tem_loc_ini, ldxios = lrxios) 239 CALL iom_get( numrir, jpdom_autoglo, 'sal_loc_ini', sal_loc_ini, ldxios = lrxios) 240 IF(lrxios) CALL iom_swap( TRIM(cxios_context) ) 239 241 ELSE 240 242 IF(lwp) WRITE(numout,*) -
NEMO/branches/2019/dev_r11756_SI3restart_XIOS/src/ICE/icedyn_adv_pra.F90
r11732 r11837 706 706 ! 707 707 ! ! ice thickness 708 CALL iom_get( numrir, jpdom_autoglo, 'sxice' , sxice ) 709 CALL iom_get( numrir, jpdom_autoglo, 'syice' , syice ) 710 CALL iom_get( numrir, jpdom_autoglo, 'sxxice', sxxice ) 711 CALL iom_get( numrir, jpdom_autoglo, 'syyice', syyice ) 712 CALL iom_get( numrir, jpdom_autoglo, 'sxyice', sxyice ) 708 IF(lrxios) CALL iom_swap( TRIM(crixios_context) ) 709 ! 710 CALL iom_get( numrir, jpdom_autoglo, 'sxice' , sxice, ldxios = lrxios ) 711 CALL iom_get( numrir, jpdom_autoglo, 'syice' , syice, ldxios = lrxios ) 712 CALL iom_get( numrir, jpdom_autoglo, 'sxxice', sxxice, ldxios = lrxios ) 713 CALL iom_get( numrir, jpdom_autoglo, 'syyice', syyice, ldxios = lrxios ) 714 CALL iom_get( numrir, jpdom_autoglo, 'sxyice', sxyice, ldxios = lrxios ) 713 715 ! ! snow thickness 714 CALL iom_get( numrir, jpdom_autoglo, 'sxsn' , sxsn )715 CALL iom_get( numrir, jpdom_autoglo, 'sysn' , sysn )716 CALL iom_get( numrir, jpdom_autoglo, 'sxxsn' , sxxsn )717 CALL iom_get( numrir, jpdom_autoglo, 'syysn' , syysn )718 CALL iom_get( numrir, jpdom_autoglo, 'sxysn' , sxysn )716 CALL iom_get( numrir, jpdom_autoglo, 'sxsn' , sxsn, ldxios = lrxios ) 717 CALL iom_get( numrir, jpdom_autoglo, 'sysn' , sysn, ldxios = lrxios ) 718 CALL iom_get( numrir, jpdom_autoglo, 'sxxsn' , sxxsn, ldxios = lrxios ) 719 CALL iom_get( numrir, jpdom_autoglo, 'syysn' , syysn, ldxios = lrxios ) 720 CALL iom_get( numrir, jpdom_autoglo, 'sxysn' , sxysn, ldxios = lrxios ) 719 721 ! ! ice concentration 720 CALL iom_get( numrir, jpdom_autoglo, 'sxa' , sxa )721 CALL iom_get( numrir, jpdom_autoglo, 'sya' , sya )722 CALL iom_get( numrir, jpdom_autoglo, 'sxxa' , sxxa )723 CALL iom_get( numrir, jpdom_autoglo, 'syya' , syya )724 CALL iom_get( numrir, jpdom_autoglo, 'sxya' , sxya )722 CALL iom_get( numrir, jpdom_autoglo, 'sxa' , sxa, ldxios = lrxios ) 723 CALL iom_get( numrir, jpdom_autoglo, 'sya' , sya, ldxios = lrxios ) 724 CALL iom_get( numrir, jpdom_autoglo, 'sxxa' , sxxa, ldxios = lrxios ) 725 CALL iom_get( numrir, jpdom_autoglo, 'syya' , syya, ldxios = lrxios ) 726 CALL iom_get( numrir, jpdom_autoglo, 'sxya' , sxya, ldxios = lrxios ) 725 727 ! ! ice salinity 726 CALL iom_get( numrir, jpdom_autoglo, 'sxsal' , sxsal )727 CALL iom_get( numrir, jpdom_autoglo, 'sysal' , sysal )728 CALL iom_get( numrir, jpdom_autoglo, 'sxxsal', sxxsal )729 CALL iom_get( numrir, jpdom_autoglo, 'syysal', syysal )730 CALL iom_get( numrir, jpdom_autoglo, 'sxysal', sxysal )728 CALL iom_get( numrir, jpdom_autoglo, 'sxsal' , sxsal, ldxios = lrxios ) 729 CALL iom_get( numrir, jpdom_autoglo, 'sysal' , sysal, ldxios = lrxios ) 730 CALL iom_get( numrir, jpdom_autoglo, 'sxxsal', sxxsal, ldxios = lrxios ) 731 CALL iom_get( numrir, jpdom_autoglo, 'syysal', syysal, ldxios = lrxios ) 732 CALL iom_get( numrir, jpdom_autoglo, 'sxysal', sxysal, ldxios = lrxios ) 731 733 ! ! ice age 732 CALL iom_get( numrir, jpdom_autoglo, 'sxage' , sxage )733 CALL iom_get( numrir, jpdom_autoglo, 'syage' , syage )734 CALL iom_get( numrir, jpdom_autoglo, 'sxxage', sxxage )735 CALL iom_get( numrir, jpdom_autoglo, 'syyage', syyage )736 CALL iom_get( numrir, jpdom_autoglo, 'sxyage', sxyage )734 CALL iom_get( numrir, jpdom_autoglo, 'sxage' , sxage, ldxios = lrxios ) 735 CALL iom_get( numrir, jpdom_autoglo, 'syage' , syage, ldxios = lrxios ) 736 CALL iom_get( numrir, jpdom_autoglo, 'sxxage', sxxage, ldxios = lrxios ) 737 CALL iom_get( numrir, jpdom_autoglo, 'syyage', syyage, ldxios = lrxios ) 738 CALL iom_get( numrir, jpdom_autoglo, 'sxyage', sxyage, ldxios = lrxios ) 737 739 ! ! snow layers heat content 738 DO jk = 1, nlay_s 739 WRITE(zchar1,'(I2.2)') jk 740 znam = 'sxc0'//'_l'//zchar1 ; CALL iom_get( numrir, jpdom_autoglo, znam , z3d ) ; sxc0 (:,:,jk,:) = z3d(:,:,:) 741 znam = 'syc0'//'_l'//zchar1 ; CALL iom_get( numrir, jpdom_autoglo, znam , z3d ) ; syc0 (:,:,jk,:) = z3d(:,:,:) 742 znam = 'sxxc0'//'_l'//zchar1 ; CALL iom_get( numrir, jpdom_autoglo, znam , z3d ) ; sxxc0(:,:,jk,:) = z3d(:,:,:) 743 znam = 'syyc0'//'_l'//zchar1 ; CALL iom_get( numrir, jpdom_autoglo, znam , z3d ) ; syyc0(:,:,jk,:) = z3d(:,:,:) 744 znam = 'sxyc0'//'_l'//zchar1 ; CALL iom_get( numrir, jpdom_autoglo, znam , z3d ) ; sxyc0(:,:,jk,:) = z3d(:,:,:) 745 END DO 746 ! ! ice layers heat content 747 DO jk = 1, nlay_i 748 WRITE(zchar1,'(I2.2)') jk 749 znam = 'sxe'//'_l'//zchar1 ; CALL iom_get( numrir, jpdom_autoglo, znam , z3d ) ; sxe (:,:,jk,:) = z3d(:,:,:) 750 znam = 'sye'//'_l'//zchar1 ; CALL iom_get( numrir, jpdom_autoglo, znam , z3d ) ; sye (:,:,jk,:) = z3d(:,:,:) 751 znam = 'sxxe'//'_l'//zchar1 ; CALL iom_get( numrir, jpdom_autoglo, znam , z3d ) ; sxxe(:,:,jk,:) = z3d(:,:,:) 752 znam = 'syye'//'_l'//zchar1 ; CALL iom_get( numrir, jpdom_autoglo, znam , z3d ) ; syye(:,:,jk,:) = z3d(:,:,:) 753 znam = 'sxye'//'_l'//zchar1 ; CALL iom_get( numrir, jpdom_autoglo, znam , z3d ) ; sxye(:,:,jk,:) = z3d(:,:,:) 754 END DO 740 IF(lrsi3_nemo) THEN 741 DO jk = 1, nlay_s 742 WRITE(zchar1,'(I2.2)') jk 743 znam = 'sxc0'//'_l'//zchar1 ; CALL iom_get( numrir, jpdom_autoglo, znam , z3d, ldxios = lrxios ) 744 sxc0 (:,:,jk,:) = z3d(:,:,:) 745 znam = 'syc0'//'_l'//zchar1 ; CALL iom_get( numrir, jpdom_autoglo, znam , z3d, ldxios = lrxios ) 746 syc0 (:,:,jk,:) = z3d(:,:,:) 747 znam = 'sxxc0'//'_l'//zchar1 ; CALL iom_get( numrir, jpdom_autoglo, znam , z3d, ldxios = lrxios ) 748 sxxc0(:,:,jk,:) = z3d(:,:,:) 749 znam = 'syyc0'//'_l'//zchar1 ; CALL iom_get( numrir, jpdom_autoglo, znam , z3d, ldxios = lrxios ) 750 syyc0(:,:,jk,:) = z3d(:,:,:) 751 znam = 'sxyc0'//'_l'//zchar1 ; CALL iom_get( numrir, jpdom_autoglo, znam , z3d, ldxios = lrxios ) 752 sxyc0(:,:,jk,:) = z3d(:,:,:) 753 END DO 754 ! ! ice layers heat content 755 DO jk = 1, nlay_i 756 WRITE(zchar1,'(I2.2)') jk 757 znam = 'sxe'//'_l'//zchar1 ; CALL iom_get( numrir, jpdom_autoglo, znam , z3d, ldxios = lrxios ) 758 sxe (:,:,jk,:) = z3d(:,:,:) 759 znam = 'sye'//'_l'//zchar1 ; CALL iom_get( numrir, jpdom_autoglo, znam , z3d, ldxios = lrxios ) 760 sye (:,:,jk,:) = z3d(:,:,:) 761 znam = 'sxxe'//'_l'//zchar1 ; CALL iom_get( numrir, jpdom_autoglo, znam , z3d, ldxios = lrxios ) 762 sxxe(:,:,jk,:) = z3d(:,:,:) 763 znam = 'syye'//'_l'//zchar1 ; CALL iom_get( numrir, jpdom_autoglo, znam , z3d, ldxios = lrxios ) 764 syye(:,:,jk,:) = z3d(:,:,:) 765 znam = 'sxye'//'_l'//zchar1 ; CALL iom_get( numrir, jpdom_autoglo, znam , z3d, ldxios = lrxios ) 766 sxye(:,:,jk,:) = z3d(:,:,:) 767 END DO 768 ELSE 769 CALL iom_get( numrir, jpdom_autoglo, "sxc0", sxc0, ldxios = lrxios ) 770 CALL iom_get( numrir, jpdom_autoglo, "syc0", syc0, ldxios = lrxios ) 771 CALL iom_get( numrir, jpdom_autoglo, "sxxc0", sxxc0, ldxios = lrxios ) 772 CALL iom_get( numrir, jpdom_autoglo, "syyc0", syyc0, ldxios = lrxios ) 773 CALL iom_get( numrir, jpdom_autoglo, "sxyc0", sxyc0, ldxios = lrxios ) 774 CALL iom_get( numrir, jpdom_autoglo, "sxe", sxc0, ldxios = lrxios ) 775 CALL iom_get( numrir, jpdom_autoglo, "sye", syc0, ldxios = lrxios ) 776 CALL iom_get( numrir, jpdom_autoglo, "sxxe", sxxc0, ldxios = lrxios ) 777 CALL iom_get( numrir, jpdom_autoglo, "syye", syyc0, ldxios = lrxios ) 778 CALL iom_get( numrir, jpdom_autoglo, "sxye", sxyc0, ldxios = lrxios ) 779 ENDIF 755 780 ! 756 781 IF( ln_pnd_H12 ) THEN ! melt pond fraction 757 CALL iom_get( numrir, jpdom_autoglo, 'sxap' , sxap )758 CALL iom_get( numrir, jpdom_autoglo, 'syap' , syap )759 CALL iom_get( numrir, jpdom_autoglo, 'sxxap', sxxap )760 CALL iom_get( numrir, jpdom_autoglo, 'syyap', syyap )761 CALL iom_get( numrir, jpdom_autoglo, 'sxyap', sxyap )782 CALL iom_get( numrir, jpdom_autoglo, 'sxap' , sxap, ldxios = lrxios ) 783 CALL iom_get( numrir, jpdom_autoglo, 'syap' , syap, ldxios = lrxios ) 784 CALL iom_get( numrir, jpdom_autoglo, 'sxxap', sxxap, ldxios = lrxios ) 785 CALL iom_get( numrir, jpdom_autoglo, 'syyap', syyap, ldxios = lrxios ) 786 CALL iom_get( numrir, jpdom_autoglo, 'sxyap', sxyap, ldxios = lrxios ) 762 787 ! ! melt pond volume 763 CALL iom_get( numrir, jpdom_autoglo, 'sxvp' , sxvp )764 CALL iom_get( numrir, jpdom_autoglo, 'syvp' , syvp )765 CALL iom_get( numrir, jpdom_autoglo, 'sxxvp', sxxvp )766 CALL iom_get( numrir, jpdom_autoglo, 'syyvp', syyvp )767 CALL iom_get( numrir, jpdom_autoglo, 'sxyvp', sxyvp )788 CALL iom_get( numrir, jpdom_autoglo, 'sxvp' , sxvp, ldxios = lrxios ) 789 CALL iom_get( numrir, jpdom_autoglo, 'syvp' , syvp, ldxios = lrxios ) 790 CALL iom_get( numrir, jpdom_autoglo, 'sxxvp', sxxvp, ldxios = lrxios ) 791 CALL iom_get( numrir, jpdom_autoglo, 'syyvp', syyvp, ldxios = lrxios ) 792 CALL iom_get( numrir, jpdom_autoglo, 'sxyvp', sxyvp, ldxios = lrxios ) 768 793 ENDIF 794 ! 795 IF(lrxios) CALL iom_swap( TRIM(cxios_context) ) 769 796 ! 770 797 ELSE !** start rheology from rest **! -
NEMO/branches/2019/dev_r11756_SI3restart_XIOS/src/ICE/icedyn_rhg_evp.F90
r11536 r11837 879 879 ! 880 880 IF( MIN( id1, id2, id3 ) > 0 ) THEN ! fields exist 881 CALL iom_get( numrir, jpdom_autoglo, 'stress1_i' , stress1_i ) 882 CALL iom_get( numrir, jpdom_autoglo, 'stress2_i' , stress2_i ) 883 CALL iom_get( numrir, jpdom_autoglo, 'stress12_i', stress12_i ) 881 IF(lrxios) CALL iom_swap( TRIM(crixios_context) ) 882 CALL iom_get( numrir, jpdom_autoglo, 'stress1_i' , stress1_i, ldxios = lrxios ) 883 CALL iom_get( numrir, jpdom_autoglo, 'stress2_i' , stress2_i, ldxios = lrxios ) 884 CALL iom_get( numrir, jpdom_autoglo, 'stress12_i', stress12_i, ldxios = lrxios ) 885 IF(lrxios) CALL iom_swap( TRIM(cxios_context) ) 884 886 ELSE ! start rheology from rest 885 887 IF(lwp) WRITE(numout,*) -
NEMO/branches/2019/dev_r11756_SI3restart_XIOS/src/ICE/icerst.F90
r11536 r11837 184 184 ENDIF 185 185 186 lxios_sini = .FALSE. 186 187 CALL iom_open ( TRIM(cn_icerst_indir)//'/'//cn_icerst_in, numrir, kdlev = jpl ) 187 188 … … 192 193 IF( id0 > 0 ) THEN ! == case of a normal restart == ! 193 194 ! ! ------------------------------ ! 194 195 IF(.NOT.lxios_set) THEN 196 lrxios = lrxios.AND.lxios_sini 197 ELSE 198 IF(.NOT.lxios_sini) THEN 199 WRITE(ctmp1,*) 'E R R O R : XIOS can not be used to read SI3 restart from multiple files' 200 CALL ctl_stop( 'ice_rst_read:', ctmp1 ) 201 ENDIF 202 ENDIF 203 204 lrsi3_nemo = .TRUE. ! SI3 restart written by NEMO 205 206 IF(lrxios) THEN 207 crixios_context = 'si3_rst' 208 CALL iom_init( crixios_context, TRIM(cn_icerst_indir)//'/'//cn_icerst_in, ld_tmppatch = .false. ) 209 lxios_set = .TRUE. 210 ENDIF 211 195 212 ! Time info 196 CALL iom_get( numrir, 'nn_fsbc', zfice )197 CALL iom_get( numrir, 'kt_ice' , ziter )213 CALL iom_get( numrir, 'nn_fsbc', zfice, ldxios = lrxios ) 214 CALL iom_get( numrir, 'kt_ice' , ziter, ldxios = lrxios ) 198 215 IF(lwp) WRITE(numout,*) ' read ice restart file at time step : ', ziter 199 216 IF(lwp) WRITE(numout,*) ' in any case we force it to nit000 - 1 : ', nit000 - 1 … … 210 227 211 228 ! --- mandatory fields --- ! 212 CALL iom_get( numrir, jpdom_autoglo, 'v_i' , v_i )213 CALL iom_get( numrir, jpdom_autoglo, 'v_s' , v_s )214 CALL iom_get( numrir, jpdom_autoglo, 'sv_i' , sv_i )215 CALL iom_get( numrir, jpdom_autoglo, 'a_i' , a_i )216 CALL iom_get( numrir, jpdom_autoglo, 't_su' , t_su )217 CALL iom_get( numrir, jpdom_autoglo, 'u_ice', u_ice )218 CALL iom_get( numrir, jpdom_autoglo, 'v_ice', v_ice )229 CALL iom_get( numrir, jpdom_autoglo, 'v_i' , v_i, ldxios = lrxios ) 230 CALL iom_get( numrir, jpdom_autoglo, 'v_s' , v_s, ldxios = lrxios ) 231 CALL iom_get( numrir, jpdom_autoglo, 'sv_i' , sv_i, ldxios = lrxios ) 232 CALL iom_get( numrir, jpdom_autoglo, 'a_i' , a_i, ldxios = lrxios ) 233 CALL iom_get( numrir, jpdom_autoglo, 't_su' , t_su, ldxios = lrxios ) 234 CALL iom_get( numrir, jpdom_autoglo, 'u_ice', u_ice, ldxios = lrxios ) 235 CALL iom_get( numrir, jpdom_autoglo, 'v_ice', v_ice, ldxios = lrxios ) 219 236 ! Snow enthalpy 220 DO jk = 1, nlay_s 221 WRITE(zchar1,'(I2.2)') jk 222 znam = 'e_s'//'_l'//zchar1 223 CALL iom_get( numrir, jpdom_autoglo, znam , z3d ) 224 e_s(:,:,jk,:) = z3d(:,:,:) 225 END DO 226 ! Ice enthalpy 227 DO jk = 1, nlay_i 228 WRITE(zchar1,'(I2.2)') jk 229 znam = 'e_i'//'_l'//zchar1 230 CALL iom_get( numrir, jpdom_autoglo, znam , z3d ) 231 e_i(:,:,jk,:) = z3d(:,:,:) 232 END DO 237 IF(lrsi3_nemo) THEN 238 !NEMO read inerface 239 DO jk = 1, nlay_s 240 WRITE(zchar1,'(I2.2)') jk 241 znam = 'e_s'//'_l'//zchar1 242 CALL iom_get( numrir, jpdom_autoglo, znam , z3d ) 243 e_s(:,:,jk,:) = z3d(:,:,:) 244 END DO 245 ! Ice enthalpy 246 DO jk = 1, nlay_i 247 WRITE(zchar1,'(I2.2)') jk 248 znam = 'e_i'//'_l'//zchar1 249 CALL iom_get( numrir, jpdom_autoglo, znam , z3d ) 250 e_i(:,:,jk,:) = z3d(:,:,:) 251 END DO 252 ELSE 253 !XIOS read interface 254 CALL iom_get( numrir, jpdom_autoglo, "e_s" , e_s ) 255 CALL iom_get( numrir, jpdom_autoglo, "e_i" , e_i ) 256 ENDIF 233 257 ! -- optional fields -- ! 234 258 ! ice age 235 259 id1 = iom_varid( numrir, 'oa_i' , ldstop = .FALSE. ) 236 260 IF( id1 > 0 ) THEN ! fields exist 237 CALL iom_get( numrir, jpdom_autoglo, 'oa_i', oa_i )261 CALL iom_get( numrir, jpdom_autoglo, 'oa_i', oa_i, ldxios = lrxios ) 238 262 ELSE ! start from rest 239 263 IF(lwp) WRITE(numout,*) ' ==>> previous run without ice age output then set it to zero' … … 243 267 id2 = iom_varid( numrir, 'a_ip' , ldstop = .FALSE. ) 244 268 IF( id2 > 0 ) THEN ! fields exist 245 CALL iom_get( numrir, jpdom_autoglo, 'a_ip' , a_ip )246 CALL iom_get( numrir, jpdom_autoglo, 'v_ip' , v_ip )269 CALL iom_get( numrir, jpdom_autoglo, 'a_ip' , a_ip, ldxios = lrxios ) 270 CALL iom_get( numrir, jpdom_autoglo, 'v_ip' , v_ip, ldxios = lrxios ) 247 271 ELSE ! start from rest 248 272 IF(lwp) WRITE(numout,*) ' ==>> previous run without melt ponds output then set it to zero' … … 255 279 id4 = iom_varid( numrir, 't1_ice' , ldstop = .FALSE. ) 256 280 IF( id3 > 0 .AND. id4 > 0 ) THEN ! fields exist 257 CALL iom_get( numrir, jpdom_autoglo, 'cnd_ice', cnd_ice )258 CALL iom_get( numrir, jpdom_autoglo, 't1_ice' , t1_ice )281 CALL iom_get( numrir, jpdom_autoglo, 'cnd_ice', cnd_ice, ldxios = lrxios ) 282 CALL iom_get( numrir, jpdom_autoglo, 't1_ice' , t1_ice, ldxios = lrxios ) 259 283 ELSE ! start from rest 260 284 IF(lwp) WRITE(numout,*) ' ==>> previous run without conductivity output then set it to zero' … … 263 287 ENDIF 264 288 ENDIF 265 289 IF(lrxios) CALL iom_swap( TRIM(cxios_context) ) 266 290 CALL iom_delay_rst( 'READ', 'ICE', numrir ) ! read only ice delayed global communication variables 267 291 -
NEMO/branches/2019/dev_r11756_SI3restart_XIOS/src/ICE/iceupdate.F90
r11536 r11837 424 424 ! 425 425 IF( id1 > 0 ) THEN ! fields exist 426 CALL iom_get( numrir, jpdom_autoglo, 'snwice_mass' , snwice_mass ) 427 CALL iom_get( numrir, jpdom_autoglo, 'snwice_mass_b', snwice_mass_b ) 426 IF(lrxios) CALL iom_swap( TRIM(crixios_context) ) 427 CALL iom_get( numrir, jpdom_autoglo, 'snwice_mass' , snwice_mass, ldxios = lrxios ) 428 CALL iom_get( numrir, jpdom_autoglo, 'snwice_mass_b', snwice_mass_b, ldxios = lrxios ) 429 IF(lrxios) CALL iom_swap( TRIM(cxios_context) ) 428 430 ELSE ! start from rest 429 431 IF(lwp) WRITE(numout,*) ' ==>> previous run without snow-ice mass output then set it' -
NEMO/branches/2019/dev_r11756_SI3restart_XIOS/src/OCE/DIA/diahsb.F90
r11536 r11837 256 256 IF( TRIM(cdrw) == 'READ' ) THEN ! Read/initialise 257 257 IF( ln_rstart ) THEN !* Read the restart file 258 IF(lrxios) CALL iom_swap(crxios_context) 258 259 ! 259 260 IF(lwp) WRITE(numout,*) … … 276 277 CALL iom_get( numror, jpdom_autoglo, 'ssh_sc_loc_ini', ssh_sc_loc_ini, ldxios = lrxios ) 277 278 ENDIF 279 IF(lrxios) CALL iom_swap(cxios_context) 278 280 ELSE 279 281 IF(lwp) WRITE(numout,*) … … 377 379 IF(lwxios) THEN 378 380 ! define variables in restart file when writing with XIOS 379 CALL iom_set_rstw_var_active( 'frc_v')380 CALL iom_set_rstw_var_active( 'frc_t')381 CALL iom_set_rstw_var_active( 'frc_s')382 CALL iom_set_rstw_var_active( 'surf_ini')383 CALL iom_set_rstw_var_active( 'ssh_ini')384 CALL iom_set_rstw_var_active( 'e3t_ini')385 CALL iom_set_rstw_var_active( 'hc_loc_ini')386 CALL iom_set_rstw_var_active( 'sc_loc_ini')381 CALL iom_set_rstw_var_active(rst_wfields, 'frc_v') 382 CALL iom_set_rstw_var_active(rst_wfields, 'frc_t') 383 CALL iom_set_rstw_var_active(rst_wfields, 'frc_s') 384 CALL iom_set_rstw_var_active(rst_wfields, 'surf_ini') 385 CALL iom_set_rstw_var_active(rst_wfields, 'ssh_ini') 386 CALL iom_set_rstw_var_active(rst_wfields, 'e3t_ini') 387 CALL iom_set_rstw_var_active(rst_wfields, 'hc_loc_ini') 388 CALL iom_set_rstw_var_active(rst_wfields, 'sc_loc_ini') 387 389 IF( ln_linssh ) THEN 388 CALL iom_set_rstw_var_active( 'ssh_hc_loc_ini')389 CALL iom_set_rstw_var_active( 'ssh_sc_loc_ini')390 CALL iom_set_rstw_var_active( 'frc_wn_t')391 CALL iom_set_rstw_var_active( 'frc_wn_s')390 CALL iom_set_rstw_var_active(rst_wfields, 'ssh_hc_loc_ini') 391 CALL iom_set_rstw_var_active(rst_wfields, 'ssh_sc_loc_ini') 392 CALL iom_set_rstw_var_active(rst_wfields, 'frc_wn_t') 393 CALL iom_set_rstw_var_active(rst_wfields, 'frc_wn_s') 392 394 ENDIF 393 395 ENDIF -
NEMO/branches/2019/dev_r11756_SI3restart_XIOS/src/OCE/DOM/daymod.F90
r10068 r11837 145 145 IF( lwxios ) THEN 146 146 ! define variables in restart file when writing with XIOS 147 CALL iom_set_rstw_var_active( 'kt')148 CALL iom_set_rstw_var_active( 'ndastp')149 CALL iom_set_rstw_var_active( 'adatrj')150 CALL iom_set_rstw_var_active( 'ntime')147 CALL iom_set_rstw_var_active(rst_wfields, 'kt') 148 CALL iom_set_rstw_var_active(rst_wfields, 'ndastp') 149 CALL iom_set_rstw_var_active(rst_wfields, 'adatrj') 150 CALL iom_set_rstw_var_active(rst_wfields, 'ntime') 151 151 ENDIF 152 152 … … 323 323 324 324 IF( TRIM(cdrw) == 'READ' ) THEN 325 325 IF(lrxios) CALL iom_swap(crxios_context) 326 326 IF( iom_varid( numror, 'kt', ldstop = .FALSE. ) > 0 ) THEN 327 327 ! Get Calendar informations … … 381 381 ! note this is wrong if time step has changed during run 382 382 ENDIF 383 IF(lrxios) CALL iom_swap(cxios_context) 383 384 ELSE 384 385 ! parameters corresponding to nit000 - 1 (as we start the step loop with a call to day) -
NEMO/branches/2019/dev_r11756_SI3restart_XIOS/src/OCE/DOM/domvvl.F90
r11536 r11837 247 247 IF(lwxios) THEN 248 248 ! define variables in restart file when writing with XIOS 249 CALL iom_set_rstw_var_active( 'e3t_b')250 CALL iom_set_rstw_var_active( 'e3t_n')249 CALL iom_set_rstw_var_active(rst_wfields, 'e3t_b') 250 CALL iom_set_rstw_var_active(rst_wfields, 'e3t_n') 251 251 ! ! ----------------------- ! 252 252 IF( ln_vvl_ztilde .OR. ln_vvl_layer ) THEN ! z_tilde and layer cases ! 253 253 ! ! ----------------------- ! 254 CALL iom_set_rstw_var_active( 'tilde_e3t_b')255 CALL iom_set_rstw_var_active( 'tilde_e3t_n')254 CALL iom_set_rstw_var_active(rst_wfields, 'tilde_e3t_b') 255 CALL iom_set_rstw_var_active(rst_wfields, 'tilde_e3t_n') 256 256 END IF 257 257 ! ! -------------! 258 258 IF( ln_vvl_ztilde ) THEN ! z_tilde case ! 259 259 ! ! ------------ ! 260 CALL iom_set_rstw_var_active( 'hdiv_lf')260 CALL iom_set_rstw_var_active(rst_wfields, 'hdiv_lf') 261 261 ENDIF 262 262 ! … … 806 806 IF( ln_rstart ) THEN !* Read the restart file 807 807 CALL rst_read_open ! open the restart file if necessary 808 IF(lrxios) CALL iom_swap(crxios_context) 808 809 CALL iom_get( numror, jpdom_autoglo, 'sshn' , sshn, ldxios = lrxios ) 809 810 ! … … 881 882 ENDIF 882 883 ! 884 IF(lrxios) CALL iom_swap(cxios_context) 885 ! 883 886 ELSE !* Initialize at "rest" 884 887 ! -
NEMO/branches/2019/dev_r11756_SI3restart_XIOS/src/OCE/DOM/iscplrst.F90
r10425 r11837 58 58 ! 59 59 ! ! get restart variable 60 IF(lrxios) CALL iom_swap(crxios_context) 60 61 CALL iom_get( numror, jpdom_autoglo, 'tmask' , ztmask_b, ldxios = lrxios ) ! need to extrapolate T/S 61 62 CALL iom_get( numror, jpdom_autoglo, 'umask' , zumask_b, ldxios = lrxios ) ! need to correct barotropic velocity … … 66 67 CALL iom_get( numror, jpdom_autoglo, 'e3v_n' , ze3v_b(:,:,:), ldxios = lrxios ) ! need to correct barotropic velocity 67 68 CALL iom_get( numror, jpdom_autoglo, 'gdepw_n', zdepw_b(:,:,:), ldxios = lrxios ) ! need to interpol vertical profile (vvl) 69 IF(lrxios) CALL iom_swap(cxios_context) 68 70 ! 69 71 CALL iscpl_init() ! read namelist -
NEMO/branches/2019/dev_r11756_SI3restart_XIOS/src/OCE/DYN/dynspg_ts.F90
r11536 r11837 934 934 IF( TRIM(cdrw) == 'READ' ) THEN ! Read/initialise 935 935 ! ! --------------- 936 IF(lrxios) CALL iom_swap(crxios_context) 936 937 IF( ln_rstart .AND. ln_bt_fw .AND. (neuler/=0) ) THEN !* Read the restart file 937 938 CALL iom_get( numror, jpdom_autoglo, 'ub2_b' , ub2_b (:,:), ldxios = lrxios ) … … 954 955 ENDIF 955 956 #endif 957 IF(lrxios) CALL iom_swap(cxios_context) 958 ! 956 959 ELSE !* Start from rest 957 960 IF(lwp) WRITE(numout,*) … … 1089 1092 IF( lwxios ) THEN 1090 1093 ! define variables in restart file when writing with XIOS 1091 CALL iom_set_rstw_var_active( 'ub2_b')1092 CALL iom_set_rstw_var_active( 'vb2_b')1093 CALL iom_set_rstw_var_active( 'un_bf')1094 CALL iom_set_rstw_var_active( 'vn_bf')1094 CALL iom_set_rstw_var_active(rst_wfields, 'ub2_b') 1095 CALL iom_set_rstw_var_active(rst_wfields, 'vb2_b') 1096 CALL iom_set_rstw_var_active(rst_wfields, 'un_bf') 1097 CALL iom_set_rstw_var_active(rst_wfields, 'vn_bf') 1095 1098 ! 1096 1099 IF (.NOT.ln_bt_av) THEN 1097 CALL iom_set_rstw_var_active( 'sshbb_e')1098 CALL iom_set_rstw_var_active( 'ubb_e')1099 CALL iom_set_rstw_var_active( 'vbb_e')1100 CALL iom_set_rstw_var_active( 'sshb_e')1101 CALL iom_set_rstw_var_active( 'ub_e')1102 CALL iom_set_rstw_var_active( 'vb_e')1100 CALL iom_set_rstw_var_active(rst_wfields, 'sshbb_e') 1101 CALL iom_set_rstw_var_active(rst_wfields, 'ubb_e') 1102 CALL iom_set_rstw_var_active(rst_wfields, 'vbb_e') 1103 CALL iom_set_rstw_var_active(rst_wfields, 'sshb_e') 1104 CALL iom_set_rstw_var_active(rst_wfields, 'ub_e') 1105 CALL iom_set_rstw_var_active(rst_wfields, 'vb_e') 1103 1106 ENDIF 1104 1107 #if defined key_agrif 1105 1108 ! Save time integrated fluxes 1106 1109 IF ( .NOT.Agrif_Root() ) THEN 1107 CALL iom_set_rstw_var_active( 'ub2_i_b')1108 CALL iom_set_rstw_var_active( 'vb2_i_b')1110 CALL iom_set_rstw_var_active(rst_wfields, 'ub2_i_b') 1111 CALL iom_set_rstw_var_active(rst_wfields, 'vb2_i_b') 1109 1112 ENDIF 1110 1113 #endif -
NEMO/branches/2019/dev_r11756_SI3restart_XIOS/src/OCE/IOM/in_out_manager.F90
r11536 r11837 168 168 LOGICAL :: lsp_area = .TRUE. !: to make a control print over a specific area 169 169 CHARACTER(lc) :: cxios_context !: context name used in xios 170 CHARACTER(lc) :: crxios_context !: context name used in xios to read restart 171 CHARACTER(lc) :: cwxios_context !: context name used in xios to write restart file 170 CHARACTER(lc) :: crxios_context !: context name used in xios to read NEMO restart 171 CHARACTER(lc) :: cwxios_context !: context name used in xios to write NEMO restart file 172 CHARACTER(lc) :: crixios_context !: context name used in xios to read SI3 restart 173 LOGICAL :: lrsi3_nemo !: is SI3 irestart in nemo format 172 174 173 175 !!---------------------------------------------------------------------- -
NEMO/branches/2019/dev_r11756_SI3restart_XIOS/src/OCE/IOM/iom.F90
r11554 r11837 47 47 USE lib_fortran 48 48 USE diurnal_bulk, ONLY : ln_diurnal_only, ln_diurnal 49 #if defined key_si3 50 USE ice, ONLY: nlay_i, nlay_s 51 #endif 52 49 53 50 54 IMPLICIT NONE … … 61 65 62 66 PRIVATE iom_rp0d, iom_rp1d, iom_rp2d, iom_rp3d 63 PRIVATE iom_g0d, iom_g1d, iom_g2d, iom_g3d, iom_g et_123d67 PRIVATE iom_g0d, iom_g1d, iom_g2d, iom_g3d, iom_g4d, iom_get_123d 64 68 PRIVATE iom_p1d, iom_p2d, iom_p3d 65 69 #if defined key_iomput … … 69 73 # endif 70 74 PUBLIC iom_set_rstw_var_active, iom_set_rstw_core, iom_set_rst_vars 75 PRIVATE iom_add 76 INTEGER, PRIVATE :: numrst 71 77 72 78 INTERFACE iom_get 73 MODULE PROCEDURE iom_g0d, iom_g1d, iom_g2d, iom_g3d 79 MODULE PROCEDURE iom_g0d, iom_g1d, iom_g2d, iom_g3d, iom_g4d 74 80 END INTERFACE 75 81 INTERFACE iom_getatt … … 227 233 ! 228 234 ! automatic definitions of some of the xml attributs 229 IF( TRIM(cdname) == TRIM(crxios_context) ) THEN 235 IF( TRIM(cdname) == TRIM(crxios_context) .OR. TRIM(cdname) == TRIM(crixios_context) ) THEN 236 numrst = numror 237 IF(TRIM(cdname) == TRIM(crixios_context)) numrst = numrir 230 238 !set names of the fields in restart file IF using XIOS to read data 231 239 CALL iom_set_rst_context(.TRUE.) 232 240 CALL iom_set_rst_vars(rst_rfields) 233 241 !set which fields are to be read from restart file 234 CALL iom_set_rstr_active( )242 CALL iom_set_rstr_active(fname) 235 243 ELSE IF( TRIM(cdname) == TRIM(cwxios_context) ) THEN 236 244 !set names of the fields in restart file IF using XIOS to write data … … 238 246 CALL iom_set_rst_vars(rst_wfields) 239 247 !set which fields are to be written to a restart file 240 CALL iom_set_rstw_active( fname)248 CALL iom_set_rstw_active(rst_wfields, fname) 241 249 ELSE 242 250 CALL set_xmlatt … … 259 267 END SUBROUTINE iom_init 260 268 261 SUBROUTINE iom_set_rstw_var_active( field)269 SUBROUTINE iom_set_rstw_var_active(drst_wfields, field) 262 270 !!--------------------------------------------------------------------- 263 271 !! *** SUBROUTINE iom_set_rstw_var_active *** … … 266 274 !!--------------------------------------------------------------------- 267 275 CHARACTER(len = *), INTENT(IN) :: field 276 TYPE(RST_FIELD), INTENT(INOUT) :: drst_wfields(max_rst_fields) 268 277 INTEGER :: i 269 278 LOGICAL :: llis_set … … 274 283 275 284 DO i = 1, max_rst_fields 276 IF(TRIM( rst_wfields(i)%vname) == field) THEN277 rst_wfields(i)%active = .TRUE.285 IF(TRIM(drst_wfields(i)%vname) == field) THEN 286 drst_wfields(i)%active = .TRUE. 278 287 llis_set = .TRUE. 279 288 EXIT 280 289 ENDIF 281 290 ENDDO 282 !Warn if variable is not in defined in rst_wfields291 !Warn if variable is not in defined in drst_wfields 283 292 IF(.NOT.llis_set) THEN 284 293 WRITE(ctmp1,*) 'iom_set_rstw_var_active: variable ', field ,' is available for writing but not defined' … … 292 301 END SUBROUTINE iom_set_rstw_var_active 293 302 294 SUBROUTINE iom_set_rstr_active( )303 SUBROUTINE iom_set_rstr_active(rst_file) 295 304 !!--------------------------------------------------------------------- 296 305 !! *** SUBROUTINE iom_set_rstr_active *** … … 308 317 TYPE(xios_filegroup) :: filegroup_hdl 309 318 INTEGER :: i 310 CHARACTER(lc) :: clpath 311 312 clpath = TRIM(cn_ocerst_indir) 313 IF( clpath(LEN_TRIM(clpath):) /= '/' ) clpath = TRIM(clpath) // '/' 314 IF( TRIM(Agrif_CFixed()) == '0' ) THEN 315 rst_file = TRIM(clpath)//TRIM(cn_ocerst_in) 316 ELSE 317 rst_file = TRIM(clpath)//'1_'//TRIM(cn_ocerst_in) 318 ENDIF 319 319 320 !set name of the restart file and enable available fields 320 321 if(lwp) WRITE(numout,*) 'Setting restart filename (for XIOS) to: ',rst_file … … 327 328 DO i = 1, max_rst_fields 328 329 IF( TRIM(rst_rfields(i)%vname) /= "NO_NAME") THEN 329 IF( iom_varid( numror, TRIM(rst_rfields(i)%vname), ldstop = .FALSE. ) > 0 ) THEN 330 IF( iom_varid( numrst, TRIM(rst_rfields(i)%vname), ldstop = .FALSE. ) > 0 ) THEN 331 IF(TRIM(rst_rfields(i)%vname) == "e_s") lrsi3_nemo = .FALSE. ! SI3 restart written by XIOS 330 332 CALL xios_add_child(file_hdl, field_hdl, TRIM(rst_rfields(i)%vname)) 331 333 SELECT CASE (TRIM(rst_rfields(i)%grid)) 334 ! CASE ("grid_Ni_4D") 335 ! CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(rst_rfields(i)%vname), & 336 ! domain_ref="grid_N", axis_ref="nlay_i", axis_ref="numcat", operation = "instant") 337 ! CASE ("grid_Ns_4D") 338 ! CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(rst_rfields(i)%vname), & 339 ! domain_ref="grid_N", axis_ref="nlay_s", axis_ref="numcat", operation = "instant") 340 CASE ("grid_Ni_3D") 341 CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(rst_rfields(i)%vname), & 342 domain_ref="grid_N", axis_ref="numcat", operation = "instant") 332 343 CASE ("grid_N_3D") 333 344 CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(rst_rfields(i)%vname), & … … 361 372 IF(cdmdl == "OPA") THEN 362 373 !from restart.F90 363 CALL iom_set_rstw_var_active( "rdt")374 CALL iom_set_rstw_var_active(rst_wfields, "rdt") 364 375 IF ( .NOT. ln_diurnal_only ) THEN 365 CALL iom_set_rstw_var_active( 'ub' )366 CALL iom_set_rstw_var_active( 'vb' )367 CALL iom_set_rstw_var_active( 'tb' )368 CALL iom_set_rstw_var_active( 'sb' )369 CALL iom_set_rstw_var_active( 'sshb')376 CALL iom_set_rstw_var_active(rst_wfields, 'ub' ) 377 CALL iom_set_rstw_var_active(rst_wfields, 'vb' ) 378 CALL iom_set_rstw_var_active(rst_wfields, 'tb' ) 379 CALL iom_set_rstw_var_active(rst_wfields, 'sb' ) 380 CALL iom_set_rstw_var_active(rst_wfields, 'sshb') 370 381 ! 371 CALL iom_set_rstw_var_active( 'un' )372 CALL iom_set_rstw_var_active( 'vn' )373 CALL iom_set_rstw_var_active( 'tn' )374 CALL iom_set_rstw_var_active( 'sn' )375 CALL iom_set_rstw_var_active( 'sshn')376 CALL iom_set_rstw_var_active( 'rhop')382 CALL iom_set_rstw_var_active(rst_wfields, 'un' ) 383 CALL iom_set_rstw_var_active(rst_wfields, 'vn' ) 384 CALL iom_set_rstw_var_active(rst_wfields, 'tn' ) 385 CALL iom_set_rstw_var_active(rst_wfields, 'sn' ) 386 CALL iom_set_rstw_var_active(rst_wfields, 'sshn') 387 CALL iom_set_rstw_var_active(rst_wfields, 'rhop') 377 388 ! extra variable needed for the ice sheet coupling 378 389 IF ( ln_iscpl ) THEN 379 CALL iom_set_rstw_var_active( 'tmask')380 CALL iom_set_rstw_var_active( 'umask')381 CALL iom_set_rstw_var_active( 'vmask')382 CALL iom_set_rstw_var_active( 'smask')383 CALL iom_set_rstw_var_active( 'e3t_n')384 CALL iom_set_rstw_var_active( 'e3u_n')385 CALL iom_set_rstw_var_active( 'e3v_n')386 CALL iom_set_rstw_var_active( 'gdepw_n')390 CALL iom_set_rstw_var_active(rst_wfields, 'tmask') 391 CALL iom_set_rstw_var_active(rst_wfields, 'umask') 392 CALL iom_set_rstw_var_active(rst_wfields, 'vmask') 393 CALL iom_set_rstw_var_active(rst_wfields, 'smask') 394 CALL iom_set_rstw_var_active(rst_wfields, 'e3t_n') 395 CALL iom_set_rstw_var_active(rst_wfields, 'e3u_n') 396 CALL iom_set_rstw_var_active(rst_wfields, 'e3v_n') 397 CALL iom_set_rstw_var_active(rst_wfields, 'gdepw_n') 387 398 END IF 388 399 ENDIF 389 IF(ln_diurnal) CALL iom_set_rstw_var_active( 'Dsst')400 IF(ln_diurnal) CALL iom_set_rstw_var_active(rst_wfields, 'Dsst') 390 401 !from trasbc.F90 391 CALL iom_set_rstw_var_active( 'sbc_hc_b')392 CALL iom_set_rstw_var_active( 'sbc_sc_b')402 CALL iom_set_rstw_var_active(rst_wfields, 'sbc_hc_b') 403 CALL iom_set_rstw_var_active(rst_wfields, 'sbc_sc_b') 393 404 ENDIF 394 405 #else … … 407 418 !!--------------------------------------------------------------------- 408 419 TYPE(RST_FIELD), INTENT(INOUT) :: fields(max_rst_fields) 409 INTEGER :: i 420 INTEGER :: i, jk 421 CHARACTER(len=2) :: zchar 422 CHARACTER(len=25) :: znam 410 423 411 424 i = 0 412 i = i + 1; fields(i)%vname="rdt"; fields(i)%grid="grid_scalar"413 i = i + 1; fields(i)%vname="un"; fields(i)%grid="grid_N_3D"414 i = i + 1; fields(i)%vname="ub"; fields(i)%grid="grid_N_3D"415 i = i + 1; fields(i)%vname="vn"; fields(i)%grid="grid_N_3D"416 i = i + 1; fields(i)%vname="vb"; fields(i)%grid="grid_N_3D"417 i = i + 1; fields(i)%vname="tn"; fields(i)%grid="grid_N_3D"418 i = i + 1; fields(i)%vname="tb"; fields(i)%grid="grid_N_3D"419 i = i + 1; fields(i)%vname="sn"; fields(i)%grid="grid_N_3D"420 i = i + 1; fields(i)%vname="sb"; fields(i)%grid="grid_N_3D"421 i = i + 1; fields(i)%vname="sshn"; fields(i)%grid="grid_N"422 i = i + 1; fields(i)%vname="sshb"; fields(i)%grid="grid_N"423 i = i + 1; fields(i)%vname="rhop"; fields(i)%grid="grid_N_3D"424 i = i + 1; fields(i)%vname="kt"; fields(i)%grid="grid_scalar"425 i = i + 1; fields(i)%vname="ndastp"; fields(i)%grid="grid_scalar"426 i = i + 1; fields(i)%vname="adatrj"; fields(i)%grid="grid_scalar"427 i = i + 1; fields(i)%vname="utau_b"; fields(i)%grid="grid_N"428 i = i + 1; fields(i)%vname="vtau_b"; fields(i)%grid="grid_N"429 i = i + 1; fields(i)%vname="qns_b"; fields(i)%grid="grid_N"430 i = i + 1; fields(i)%vname="emp_b"; fields(i)%grid="grid_N"431 i = i + 1; fields(i)%vname="sfx_b"; fields(i)%grid="grid_N"432 i = i + 1; fields(i)%vname="en" ; fields(i)%grid="grid_N_3D"433 i = i + 1; fields(i)%vname="avt_k"; fields(i)%grid="grid_N_3D"434 i = i + 1; fields(i)%vname="avm_k"; fields(i)%grid="grid_N_3D"435 i = i + 1; fields(i)%vname="dissl"; fields(i)%grid="grid_N_3D"436 i = i + 1; fields(i)%vname="sbc_hc_b"; fields(i)%grid="grid_N"437 i = i + 1; fields(i)%vname="sbc_sc_b"; fields(i)%grid="grid_N"438 i = i + 1; fields(i)%vname="qsr_hc_b"; fields(i)%grid="grid_N_3D"439 i = i + 1; fields(i)%vname="fraqsr_1lev"; fields(i)%grid="grid_N"440 i = i + 1; fields(i)%vname="greenland_icesheet_mass"425 i = iom_add(i); fields(i)%vname="rdt"; fields(i)%grid="grid_scalar" 426 i = iom_add(i); fields(i)%vname="un"; fields(i)%grid="grid_N_3D" 427 i = iom_add(i); fields(i)%vname="ub"; fields(i)%grid="grid_N_3D" 428 i = iom_add(i); fields(i)%vname="vn"; fields(i)%grid="grid_N_3D" 429 i = iom_add(i); fields(i)%vname="vb"; fields(i)%grid="grid_N_3D" 430 i = iom_add(i); fields(i)%vname="tn"; fields(i)%grid="grid_N_3D" 431 i = iom_add(i); fields(i)%vname="tb"; fields(i)%grid="grid_N_3D" 432 i = iom_add(i); fields(i)%vname="sn"; fields(i)%grid="grid_N_3D" 433 i = iom_add(i); fields(i)%vname="sb"; fields(i)%grid="grid_N_3D" 434 i = iom_add(i); fields(i)%vname="sshn"; fields(i)%grid="grid_N" 435 i = iom_add(i); fields(i)%vname="sshb"; fields(i)%grid="grid_N" 436 i = iom_add(i); fields(i)%vname="rhop"; fields(i)%grid="grid_N_3D" 437 i = iom_add(i); fields(i)%vname="kt"; fields(i)%grid="grid_scalar" 438 i = iom_add(i); fields(i)%vname="ndastp"; fields(i)%grid="grid_scalar" 439 i = iom_add(i); fields(i)%vname="adatrj"; fields(i)%grid="grid_scalar" 440 i = iom_add(i); fields(i)%vname="utau_b"; fields(i)%grid="grid_N" 441 i = iom_add(i); fields(i)%vname="vtau_b"; fields(i)%grid="grid_N" 442 i = iom_add(i); fields(i)%vname="qns_b"; fields(i)%grid="grid_N" 443 i = iom_add(i); fields(i)%vname="emp_b"; fields(i)%grid="grid_N" 444 i = iom_add(i); fields(i)%vname="sfx_b"; fields(i)%grid="grid_N" 445 i = iom_add(i); fields(i)%vname="en" ; fields(i)%grid="grid_N_3D" 446 i = iom_add(i); fields(i)%vname="avt_k"; fields(i)%grid="grid_N_3D" 447 i = iom_add(i); fields(i)%vname="avm_k"; fields(i)%grid="grid_N_3D" 448 i = iom_add(i); fields(i)%vname="dissl"; fields(i)%grid="grid_N_3D" 449 i = iom_add(i); fields(i)%vname="sbc_hc_b"; fields(i)%grid="grid_N" 450 i = iom_add(i); fields(i)%vname="sbc_sc_b"; fields(i)%grid="grid_N" 451 i = iom_add(i); fields(i)%vname="qsr_hc_b"; fields(i)%grid="grid_N_3D" 452 i = iom_add(i); fields(i)%vname="fraqsr_1lev"; fields(i)%grid="grid_N" 453 i = iom_add(i); fields(i)%vname="greenland_icesheet_mass" 441 454 fields(i)%grid="grid_scalar" 442 i = i + 1; fields(i)%vname="greenland_icesheet_timelapsed"455 i = iom_add(i); fields(i)%vname="greenland_icesheet_timelapsed" 443 456 fields(i)%grid="grid_scalar" 444 i = i + 1; fields(i)%vname="greenland_icesheet_mass_roc"457 i = iom_add(i); fields(i)%vname="greenland_icesheet_mass_roc" 445 458 fields(i)%grid="grid_scalar" 446 i = i + 1; fields(i)%vname="antarctica_icesheet_mass"459 i = iom_add(i); fields(i)%vname="antarctica_icesheet_mass" 447 460 fields(i)%grid="grid_scalar" 448 i = i + 1; fields(i)%vname="antarctica_icesheet_timelapsed"461 i = iom_add(i); fields(i)%vname="antarctica_icesheet_timelapsed" 449 462 fields(i)%grid="grid_scalar" 450 i = i + 1; fields(i)%vname="antarctica_icesheet_mass_roc"463 i = iom_add(i); fields(i)%vname="antarctica_icesheet_mass_roc" 451 464 fields(i)%grid="grid_scalar" 452 i = i + 1; fields(i)%vname="frc_v"; fields(i)%grid="grid_scalar" 453 i = i + 1; fields(i)%vname="frc_t"; fields(i)%grid="grid_scalar" 454 i = i + 1; fields(i)%vname="frc_s"; fields(i)%grid="grid_scalar" 455 i = i + 1; fields(i)%vname="frc_wn_t"; fields(i)%grid="grid_scalar" 456 i = i + 1; fields(i)%vname="frc_wn_s"; fields(i)%grid="grid_scalar" 457 i = i + 1; fields(i)%vname="ssh_ini"; fields(i)%grid="grid_N" 458 i = i + 1; fields(i)%vname="e3t_ini"; fields(i)%grid="grid_N_3D" 459 i = i + 1; fields(i)%vname="hc_loc_ini"; fields(i)%grid="grid_N_3D" 460 i = i + 1; fields(i)%vname="sc_loc_ini"; fields(i)%grid="grid_N_3D" 461 i = i + 1; fields(i)%vname="ssh_hc_loc_ini"; fields(i)%grid="grid_N" 462 i = i + 1; fields(i)%vname="ssh_sc_loc_ini"; fields(i)%grid="grid_N" 463 i = i + 1; fields(i)%vname="tilde_e3t_b"; fields(i)%grid="grid_N" 464 i = i + 1; fields(i)%vname="tilde_e3t_n"; fields(i)%grid="grid_N" 465 i = i + 1; fields(i)%vname="hdiv_lf"; fields(i)%grid="grid_N" 466 i = i + 1; fields(i)%vname="ub2_b"; fields(i)%grid="grid_N" 467 i = i + 1; fields(i)%vname="vb2_b"; fields(i)%grid="grid_N" 468 i = i + 1; fields(i)%vname="sshbb_e"; fields(i)%grid="grid_N" 469 i = i + 1; fields(i)%vname="ubb_e"; fields(i)%grid="grid_N" 470 i = i + 1; fields(i)%vname="vbb_e"; fields(i)%grid="grid_N" 471 i = i + 1; fields(i)%vname="sshb_e"; fields(i)%grid="grid_N" 472 i = i + 1; fields(i)%vname="ub_e"; fields(i)%grid="grid_N" 473 i = i + 1; fields(i)%vname="vb_e"; fields(i)%grid="grid_N" 474 i = i + 1; fields(i)%vname="fwf_isf_b"; fields(i)%grid="grid_N" 475 i = i + 1; fields(i)%vname="isf_sc_b"; fields(i)%grid="grid_N" 476 i = i + 1; fields(i)%vname="isf_hc_b"; fields(i)%grid="grid_N" 477 i = i + 1; fields(i)%vname="ssh_ibb"; fields(i)%grid="grid_N" 478 i = i + 1; fields(i)%vname="rnf_b"; fields(i)%grid="grid_N" 479 i = i + 1; fields(i)%vname="rnf_hc_b"; fields(i)%grid="grid_N" 480 i = i + 1; fields(i)%vname="rnf_sc_b"; fields(i)%grid="grid_N" 481 i = i + 1; fields(i)%vname="nn_fsbc"; fields(i)%grid="grid_scalar" 482 i = i + 1; fields(i)%vname="ssu_m"; fields(i)%grid="grid_N" 483 i = i + 1; fields(i)%vname="ssv_m"; fields(i)%grid="grid_N" 484 i = i + 1; fields(i)%vname="sst_m"; fields(i)%grid="grid_N" 485 i = i + 1; fields(i)%vname="sss_m"; fields(i)%grid="grid_N" 486 i = i + 1; fields(i)%vname="ssh_m"; fields(i)%grid="grid_N" 487 i = i + 1; fields(i)%vname="e3t_m"; fields(i)%grid="grid_N" 488 i = i + 1; fields(i)%vname="frq_m"; fields(i)%grid="grid_N" 489 i = i + 1; fields(i)%vname="avmb"; fields(i)%grid="grid_vector" 490 i = i + 1; fields(i)%vname="avtb"; fields(i)%grid="grid_vector" 491 i = i + 1; fields(i)%vname="ub2_i_b"; fields(i)%grid="grid_N" 492 i = i + 1; fields(i)%vname="vb2_i_b"; fields(i)%grid="grid_N" 493 i = i + 1; fields(i)%vname="ntime"; fields(i)%grid="grid_scalar" 494 i = i + 1; fields(i)%vname="Dsst"; fields(i)%grid="grid_scalar" 495 i = i + 1; fields(i)%vname="tmask"; fields(i)%grid="grid_N_3D" 496 i = i + 1; fields(i)%vname="umask"; fields(i)%grid="grid_N_3D" 497 i = i + 1; fields(i)%vname="vmask"; fields(i)%grid="grid_N_3D" 498 i = i + 1; fields(i)%vname="smask"; fields(i)%grid="grid_N_3D" 499 i = i + 1; fields(i)%vname="gdepw_n"; fields(i)%grid="grid_N_3D" 500 i = i + 1; fields(i)%vname="e3t_n"; fields(i)%grid="grid_N_3D" 501 i = i + 1; fields(i)%vname="e3u_n"; fields(i)%grid="grid_N_3D" 502 i = i + 1; fields(i)%vname="e3v_n"; fields(i)%grid="grid_N_3D" 503 i = i + 1; fields(i)%vname="surf_ini"; fields(i)%grid="grid_N" 504 i = i + 1; fields(i)%vname="e3t_b"; fields(i)%grid="grid_N_3D" 505 i = i + 1; fields(i)%vname="hmxl_n"; fields(i)%grid="grid_N_3D" 506 i = i + 1; fields(i)%vname="un_bf"; fields(i)%grid="grid_N" 507 i = i + 1; fields(i)%vname="vn_bf"; fields(i)%grid="grid_N" 508 i = i + 1; fields(i)%vname="hbl"; fields(i)%grid="grid_N" 509 i = i + 1; fields(i)%vname="hbli"; fields(i)%grid="grid_N" 510 i = i + 1; fields(i)%vname="wn"; fields(i)%grid="grid_N_3D" 511 512 IF( i-1 > max_rst_fields) THEN 513 WRITE(ctmp1,*) 'E R R O R : iom_set_rst_vars SIZE of RST_FIELD array is too small' 514 CALL ctl_stop( 'iom_set_rst_vars:', ctmp1 ) 515 ENDIF 465 i = iom_add(i); fields(i)%vname="frc_v"; fields(i)%grid="grid_scalar" 466 i = iom_add(i); fields(i)%vname="frc_t"; fields(i)%grid="grid_scalar" 467 i = iom_add(i); fields(i)%vname="frc_s"; fields(i)%grid="grid_scalar" 468 i = iom_add(i); fields(i)%vname="frc_wn_t"; fields(i)%grid="grid_scalar" 469 i = iom_add(i); fields(i)%vname="frc_wn_s"; fields(i)%grid="grid_scalar" 470 i = iom_add(i); fields(i)%vname="ssh_ini"; fields(i)%grid="grid_N" 471 i = iom_add(i); fields(i)%vname="e3t_ini"; fields(i)%grid="grid_N_3D" 472 i = iom_add(i); fields(i)%vname="hc_loc_ini"; fields(i)%grid="grid_N_3D" 473 i = iom_add(i); fields(i)%vname="sc_loc_ini"; fields(i)%grid="grid_N_3D" 474 i = iom_add(i); fields(i)%vname="ssh_hc_loc_ini"; fields(i)%grid="grid_N" 475 i = iom_add(i); fields(i)%vname="ssh_sc_loc_ini"; fields(i)%grid="grid_N" 476 i = iom_add(i); fields(i)%vname="tilde_e3t_b"; fields(i)%grid="grid_N" 477 i = iom_add(i); fields(i)%vname="tilde_e3t_n"; fields(i)%grid="grid_N" 478 i = iom_add(i); fields(i)%vname="hdiv_lf"; fields(i)%grid="grid_N" 479 i = iom_add(i); fields(i)%vname="ub2_b"; fields(i)%grid="grid_N" 480 i = iom_add(i); fields(i)%vname="vb2_b"; fields(i)%grid="grid_N" 481 i = iom_add(i); fields(i)%vname="sshbb_e"; fields(i)%grid="grid_N" 482 i = iom_add(i); fields(i)%vname="ubb_e"; fields(i)%grid="grid_N" 483 i = iom_add(i); fields(i)%vname="vbb_e"; fields(i)%grid="grid_N" 484 i = iom_add(i); fields(i)%vname="sshb_e"; fields(i)%grid="grid_N" 485 i = iom_add(i); fields(i)%vname="ub_e"; fields(i)%grid="grid_N" 486 i = iom_add(i); fields(i)%vname="vb_e"; fields(i)%grid="grid_N" 487 i = iom_add(i); fields(i)%vname="fwf_isf_b"; fields(i)%grid="grid_N" 488 i = iom_add(i); fields(i)%vname="isf_sc_b"; fields(i)%grid="grid_N" 489 i = iom_add(i); fields(i)%vname="isf_hc_b"; fields(i)%grid="grid_N" 490 i = iom_add(i); fields(i)%vname="ssh_ibb"; fields(i)%grid="grid_N" 491 i = iom_add(i); fields(i)%vname="rnf_b"; fields(i)%grid="grid_N" 492 i = iom_add(i); fields(i)%vname="rnf_hc_b"; fields(i)%grid="grid_N" 493 i = iom_add(i); fields(i)%vname="rnf_sc_b"; fields(i)%grid="grid_N" 494 i = iom_add(i); fields(i)%vname="nn_fsbc"; fields(i)%grid="grid_scalar" 495 i = iom_add(i); fields(i)%vname="ssu_m"; fields(i)%grid="grid_N" 496 i = iom_add(i); fields(i)%vname="ssv_m"; fields(i)%grid="grid_N" 497 i = iom_add(i); fields(i)%vname="sst_m"; fields(i)%grid="grid_N" 498 i = iom_add(i); fields(i)%vname="sss_m"; fields(i)%grid="grid_N" 499 i = iom_add(i); fields(i)%vname="ssh_m"; fields(i)%grid="grid_N" 500 i = iom_add(i); fields(i)%vname="e3t_m"; fields(i)%grid="grid_N" 501 i = iom_add(i); fields(i)%vname="frq_m"; fields(i)%grid="grid_N" 502 i = iom_add(i); fields(i)%vname="avmb"; fields(i)%grid="grid_vector" 503 i = iom_add(i); fields(i)%vname="avtb"; fields(i)%grid="grid_vector" 504 i = iom_add(i); fields(i)%vname="ub2_i_b"; fields(i)%grid="grid_N" 505 i = iom_add(i); fields(i)%vname="vb2_i_b"; fields(i)%grid="grid_N" 506 i = iom_add(i); fields(i)%vname="ntime"; fields(i)%grid="grid_scalar" 507 i = iom_add(i); fields(i)%vname="Dsst"; fields(i)%grid="grid_scalar" 508 i = iom_add(i); fields(i)%vname="tmask"; fields(i)%grid="grid_N_3D" 509 i = iom_add(i); fields(i)%vname="umask"; fields(i)%grid="grid_N_3D" 510 i = iom_add(i); fields(i)%vname="vmask"; fields(i)%grid="grid_N_3D" 511 i = iom_add(i); fields(i)%vname="smask"; fields(i)%grid="grid_N_3D" 512 i = iom_add(i); fields(i)%vname="gdepw_n"; fields(i)%grid="grid_N_3D" 513 i = iom_add(i); fields(i)%vname="e3t_n"; fields(i)%grid="grid_N_3D" 514 i = iom_add(i); fields(i)%vname="e3u_n"; fields(i)%grid="grid_N_3D" 515 i = iom_add(i); fields(i)%vname="e3v_n"; fields(i)%grid="grid_N_3D" 516 i = iom_add(i); fields(i)%vname="surf_ini"; fields(i)%grid="grid_N" 517 i = iom_add(i); fields(i)%vname="e3t_b"; fields(i)%grid="grid_N_3D" 518 i = iom_add(i); fields(i)%vname="hmxl_n"; fields(i)%grid="grid_N_3D" 519 i = iom_add(i); fields(i)%vname="un_bf"; fields(i)%grid="grid_N" 520 i = iom_add(i); fields(i)%vname="vn_bf"; fields(i)%grid="grid_N" 521 i = iom_add(i); fields(i)%vname="hbl"; fields(i)%grid="grid_N" 522 i = iom_add(i); fields(i)%vname="hbli"; fields(i)%grid="grid_N" 523 i = iom_add(i); fields(i)%vname="wn"; fields(i)%grid="grid_N_3D" 524 #ifdef key_si3 525 !ICE/icedia.F90 526 i = iom_add(i); fields(i)%vname="kt_ice"; fields(i)%grid="grid_scalar" 527 i = iom_add(i); fields(i)%vname="frc_voltop"; fields(i)%grid="grid_scalar" 528 i = iom_add(i); fields(i)%vname="frc_volbot"; fields(i)%grid="grid_scalar" 529 i = iom_add(i); fields(i)%vname="frc_temtop"; fields(i)%grid="grid_scalar" 530 i = iom_add(i); fields(i)%vname="frc_tembot"; fields(i)%grid="grid_scalar" 531 i = iom_add(i); fields(i)%vname="frc_sal"; fields(i)%grid="grid_scalar" 532 i = iom_add(i); fields(i)%vname="vol_loc_ini"; fields(i)%grid="grid_N" 533 i = iom_add(i); fields(i)%vname="tem_loc_ini"; fields(i)%grid="grid_N" 534 i = iom_add(i); fields(i)%vname="sal_loc_ini"; fields(i)%grid="grid_N" 535 i = iom_add(i); fields(i)%vname="sal_loc_ini"; fields(i)%grid="grid_N" 536 !ICE/icedyn_adv_pra.F90 grid_Ni_3D - jpi,jpj,jpl 537 i = iom_add(i); fields(i)%vname="sxice"; fields(i)%grid="grid_Ni_3D" 538 i = iom_add(i); fields(i)%vname="syice"; fields(i)%grid="grid_Ni_3D" 539 i = iom_add(i); fields(i)%vname="sxxice"; fields(i)%grid="grid_Ni_3D" 540 i = iom_add(i); fields(i)%vname="syyice"; fields(i)%grid="grid_Ni_3D" 541 i = iom_add(i); fields(i)%vname="sxyice"; fields(i)%grid="grid_Ni_3D" 542 i = iom_add(i); fields(i)%vname="sxsn"; fields(i)%grid="grid_Ni_3D" 543 i = iom_add(i); fields(i)%vname="sysn"; fields(i)%grid="grid_Ni_3D" 544 i = iom_add(i); fields(i)%vname="sxxsn"; fields(i)%grid="grid_Ni_3D" 545 i = iom_add(i); fields(i)%vname="syysn"; fields(i)%grid="grid_Ni_3D" 546 i = iom_add(i); fields(i)%vname="sxysn"; fields(i)%grid="grid_Ni_3D" 547 i = iom_add(i); fields(i)%vname="sxa"; fields(i)%grid="grid_Ni_3D" 548 i = iom_add(i); fields(i)%vname="sya"; fields(i)%grid="grid_Ni_3D" 549 i = iom_add(i); fields(i)%vname="sxxa"; fields(i)%grid="grid_Ni_3D" 550 i = iom_add(i); fields(i)%vname="syya"; fields(i)%grid="grid_Ni_3D" 551 i = iom_add(i); fields(i)%vname="sxya"; fields(i)%grid="grid_Ni_3D" 552 i = iom_add(i); fields(i)%vname="sxsal"; fields(i)%grid="grid_Ni_3D" 553 i = iom_add(i); fields(i)%vname="sysal"; fields(i)%grid="grid_Ni_3D" 554 i = iom_add(i); fields(i)%vname="sxxsal"; fields(i)%grid="grid_Ni_3D" 555 i = iom_add(i); fields(i)%vname="syysal"; fields(i)%grid="grid_Ni_3D" 556 i = iom_add(i); fields(i)%vname="sxysal"; fields(i)%grid="grid_Ni_3D" 557 i = iom_add(i); fields(i)%vname="sxage"; fields(i)%grid="grid_Ni_3D" 558 i = iom_add(i); fields(i)%vname="syage"; fields(i)%grid="grid_Ni_3D" 559 i = iom_add(i); fields(i)%vname="sxxage"; fields(i)%grid="grid_Ni_3D" 560 i = iom_add(i); fields(i)%vname="syyage"; fields(i)%grid="grid_Ni_3D" 561 i = iom_add(i); fields(i)%vname="sxyage"; fields(i)%grid="grid_Ni_3D" 562 !this part is in addition to 4D grids, to handle old format of SI3 resart 563 !NEMO format restart 564 DO jk = 1, nlay_s 565 WRITE(zchar,'(I2.2)') jk 566 znam = 'sxc0'//'_l'//zchar 567 i = iom_add(i); fields(i)%vname=znam; fields(i)%grid="grid_Ni_3D" 568 znam = 'syc0'//'_l'//zchar 569 i = iom_add(i); fields(i)%vname=znam; fields(i)%grid="grid_Ni_3D" 570 znam = 'sxxc0'//'_l'//zchar 571 i = iom_add(i); fields(i)%vname=znam; fields(i)%grid="grid_Ni_3D" 572 znam = 'syyc0'//'_l'//zchar 573 i = iom_add(i); fields(i)%vname=znam; fields(i)%grid="grid_Ni_3D" 574 znam = 'sxyc0'//'_l'//zchar 575 i = iom_add(i); fields(i)%vname=znam; fields(i)%grid="grid_Ni_3D" 576 END DO 577 !XIOS format restart 578 i = iom_add(i); fields(i)%vname="sxc0"; fields(i)%grid="grid_Ns_4D" 579 i = iom_add(i); fields(i)%vname="syc0"; fields(i)%grid="grid_Ns_4D" 580 i = iom_add(i); fields(i)%vname="sxxc0"; fields(i)%grid="grid_Ns_4D" 581 i = iom_add(i); fields(i)%vname="syyc0"; fields(i)%grid="grid_Ns_4D" 582 i = iom_add(i); fields(i)%vname="sxxc0"; fields(i)%grid="grid_Ns_4D" 583 ! 584 !NEMO format restart 585 DO jk = 1, nlay_i 586 WRITE(zchar,'(I2.2)') jk 587 znam = 'sxe'//'_l'//zchar 588 i = iom_add(i); fields(i)%vname=znam; fields(i)%grid="grid_Ni_3D" 589 znam = 'sye'//'_l'//zchar 590 i = iom_add(i); fields(i)%vname=znam; fields(i)%grid="grid_Ni_3D" 591 znam = 'sxxe'//'_l'//zchar 592 i = iom_add(i); fields(i)%vname=znam; fields(i)%grid="grid_Ni_3D" 593 znam = 'syye'//'_l'//zchar 594 i = iom_add(i); fields(i)%vname=znam; fields(i)%grid="grid_Ni_3D" 595 znam = 'sxye'//'_l'//zchar 596 i = iom_add(i); fields(i)%vname=znam; fields(i)%grid="grid_Ni_3D" 597 ENDDO 598 !XIOS format restart 599 i = iom_add(i); fields(i)%vname="sxe"; fields(i)%grid="grid_Ni_4D" 600 i = iom_add(i); fields(i)%vname="sye"; fields(i)%grid="grid_Ni_4D" 601 i = iom_add(i); fields(i)%vname="sxxe"; fields(i)%grid="grid_Ni_4D" 602 i = iom_add(i); fields(i)%vname="syye"; fields(i)%grid="grid_Ni_4D" 603 i = iom_add(i); fields(i)%vname="sxye"; fields(i)%grid="grid_Ni_4D" 604 !common for both 605 i = iom_add(i); fields(i)%vname="sxap"; fields(i)%grid="grid_Ni_3D" 606 i = iom_add(i); fields(i)%vname="syap"; fields(i)%grid="grid_Ni_3D" 607 i = iom_add(i); fields(i)%vname="sxxap"; fields(i)%grid="grid_Ni_3D" 608 i = iom_add(i); fields(i)%vname="syyap"; fields(i)%grid="grid_Ni_3D" 609 i = iom_add(i); fields(i)%vname="sxyap"; fields(i)%grid="grid_Ni_3D" 610 i = iom_add(i); fields(i)%vname="sxvp"; fields(i)%grid="grid_Ni_3D" 611 i = iom_add(i); fields(i)%vname="syvp"; fields(i)%grid="grid_Ni_3D" 612 i = iom_add(i); fields(i)%vname="sxxvp"; fields(i)%grid="grid_Ni_3D" 613 i = iom_add(i); fields(i)%vname="syyvp"; fields(i)%grid="grid_Ni_3D" 614 i = iom_add(i); fields(i)%vname="sxyvp"; fields(i)%grid="grid_Ni_3D" 615 i = iom_add(i); fields(i)%vname="stress1_i"; fields(i)%grid="grid_N" 616 i = iom_add(i); fields(i)%vname="stress2_i"; fields(i)%grid="grid_N" 617 i = iom_add(i); fields(i)%vname="stress12_i"; fields(i)%grid="grid_N" 618 i = iom_add(i); fields(i)%vname="nn_fsbc"; fields(i)%grid="grid_scalar" 619 i = iom_add(i); fields(i)%vname="kt_ice"; fields(i)%grid="grid_scalar" 620 i = iom_add(i); fields(i)%vname="v_i"; fields(i)%grid="grid_Ni_3D" 621 i = iom_add(i); fields(i)%vname="v_s"; fields(i)%grid="grid_Ni_3D" 622 i = iom_add(i); fields(i)%vname="sv_i"; fields(i)%grid="grid_Ni_3D" 623 i = iom_add(i); fields(i)%vname="a_i"; fields(i)%grid="grid_Ni_3D" 624 i = iom_add(i); fields(i)%vname="t_su"; fields(i)%grid="grid_Ni_3D" 625 i = iom_add(i); fields(i)%vname="u_ice"; fields(i)%grid="grid_N" 626 i = iom_add(i); fields(i)%vname="v_ice"; fields(i)%grid="grid_N" 627 !NEMO format restat 628 DO jk = 1, nlay_s 629 WRITE(zchar,'(I2.2)') jk 630 znam = 'e_s'//'_l'//zchar 631 i = iom_add(i); fields(i)%vname=znam; fields(i)%grid="grid_Ni_3D" 632 END DO 633 !XIOS format restart 634 i = iom_add(i); fields(i)%vname="e_s"; fields(i)%grid="grid_Ns_4D" 635 !NEMO format restat 636 DO jk = 1, nlay_i 637 WRITE(zchar,'(I2.2)') jk 638 znam = 'e_i'//'_l'//zchar 639 i = iom_add(i); fields(i)%vname=znam; fields(i)%grid="grid_Ni_3D" 640 END DO 641 !XIOS format restart 642 i = iom_add(i); fields(i)%vname="e_i"; fields(i)%grid="grid_Ni_4D" 643 !common for both 644 i = iom_add(i); fields(i)%vname="oa_i"; fields(i)%grid="grid_Ni_3D" 645 i = iom_add(i); fields(i)%vname="a_ip"; fields(i)%grid="grid_Ni_3D" 646 i = iom_add(i); fields(i)%vname="v_ip"; fields(i)%grid="grid_Ni_3D" 647 i = iom_add(i); fields(i)%vname="cnd_ice"; fields(i)%grid="grid_Ni_3D" 648 i = iom_add(i); fields(i)%vname="t1_ice"; fields(i)%grid="grid_Ni_3D" 649 i = iom_add(i); fields(i)%vname="snwice_mass"; fields(i)%grid="grid_N" 650 i = iom_add(i); fields(i)%vname="snwice_mass_b"; fields(i)%grid="grid_N" 651 #endif 516 652 END SUBROUTINE iom_set_rst_vars 517 653 518 654 519 SUBROUTINE iom_set_rstw_active( cdrst_file)655 SUBROUTINE iom_set_rstw_active(drst_wfields, cdrst_file) 520 656 !!--------------------------------------------------------------------- 521 657 !! *** SUBROUTINE iom_set_rstw_active *** … … 525 661 !!--------------------------------------------------------------------- 526 662 !sets enabled = .TRUE. for each field in restart file 527 CHARACTER(len=*) :: cdrst_file 663 CHARACTER(len=*), INTENT(IN) :: cdrst_file 664 TYPE(RST_FIELD), INTENT(IN) :: drst_wfields(max_rst_fields) 528 665 #if defined key_iomput 529 666 TYPE(xios_field) :: field_hdl … … 549 686 !define fields for restart context 550 687 DO i = 1, max_rst_fields 551 IF( rst_wfields(i)%active ) THEN552 CALL xios_add_child(file_hdl, field_hdl, TRIM( rst_wfields(i)%vname))553 SELECT CASE (TRIM( rst_wfields(i)%grid))688 IF( drst_wfields(i)%active ) THEN 689 CALL xios_add_child(file_hdl, field_hdl, TRIM(drst_wfields(i)%vname)) 690 SELECT CASE (TRIM(drst_wfields(i)%grid)) 554 691 CASE ("grid_N_3D") 555 CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM( rst_wfields(i)%vname), &692 CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(drst_wfields(i)%vname), & 556 693 domain_ref="grid_N", axis_ref="nav_lev", prec = 8, operation = "instant") 557 694 CASE ("grid_N") 558 CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM( rst_wfields(i)%vname), &695 CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(drst_wfields(i)%vname), & 559 696 domain_ref="grid_N", prec = 8, operation = "instant") 560 697 CASE ("grid_vector") 561 CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM( rst_wfields(i)%vname), &698 CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(drst_wfields(i)%vname), & 562 699 axis_ref="nav_lev", prec = 8, operation = "instant") 563 700 CASE ("grid_scalar") 564 CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM( rst_wfields(i)%vname), &701 CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(drst_wfields(i)%vname), & 565 702 scalar_ref = "grid_scalar", prec = 8, operation = "instant") 566 703 END SELECT … … 588 725 TYPE(xios_scalar) :: scalar_hdl 589 726 TYPE(xios_scalargroup) :: scalargroup_hdl 727 INTEGER :: ji 590 728 591 729 CALL xios_get_handle("domain_definition",domaingroup_hdl) … … 602 740 CALL xios_get_handle("scalar_definition", scalargroup_hdl) 603 741 CALL xios_add_child(scalargroup_hdl, scalar_hdl, "grid_scalar") 742 #if defined key_si3 743 CALL xios_get_handle("axis_definition",axisgroup_hdl) 744 CALL xios_add_child(axisgroup_hdl, axis_hdl, "numcat") 745 CALL iom_set_axis_attr( "numcat", (/ (REAL(ji,wp), ji=1,jpl) /) ) 746 CALL xios_add_child(axisgroup_hdl, axis_hdl, "nlay_i") 747 CALL iom_set_axis_attr( "nlay_i", (/ (REAL(ji,wp), ji=1,nlay_i) /) ) 748 CALL xios_add_child(axisgroup_hdl, axis_hdl, "nlay_s") 749 CALL iom_set_axis_attr( "nlay_s", (/ (REAL(ji,wp), ji=1,nlay_s) /) ) 750 #endif 604 751 #endif 605 752 END SUBROUTINE iom_set_rst_context … … 614 761 #if defined key_iomput 615 762 TYPE(xios_context) :: nemo_hdl 616 763 617 764 IF( TRIM(Agrif_CFixed()) == '0' ) THEN 618 765 CALL xios_get_handle(TRIM(cdname),nemo_hdl) … … 942 1089 #if defined key_iomput 943 1090 IF(lwp) WRITE(numout,*) 'XIOS RST READ (0D): ', trim(cdvar) 944 CALL iom_swap( TRIM(crxios_context) )945 1091 CALL xios_recv_field( trim(cdvar), pvar) 946 CALL iom_swap( TRIM(cxios_context) )947 1092 #else 948 1093 WRITE(ctmp1,*) 'Can not use XIOS in iom_g0d, file: '//trim(clname)//', var:'//trim(cdvar) … … 1010 1155 ENDIF 1011 1156 END SUBROUTINE iom_g3d 1157 1158 SUBROUTINE iom_g4d( kiomid, kdom, cdvar, pvar, ktime, kstart, kcount, lrowattr, ldxios ) 1159 INTEGER , INTENT(in ) :: kiomid ! Identifier of the file 1160 INTEGER , INTENT(in ) :: kdom ! Type of domain to be read 1161 CHARACTER(len=*), INTENT(in ) :: cdvar ! Name of the variable 1162 REAL(wp) , INTENT( out), DIMENSION(:,:,:,:) :: pvar ! read field 1163 INTEGER , INTENT(in ) , OPTIONAL :: ktime ! record number 1164 INTEGER , INTENT(in ), DIMENSION(4) , OPTIONAL :: kstart ! start axis position of the reading 1165 INTEGER , INTENT(in ), DIMENSION(4) , OPTIONAL :: kcount ! number of points in each axis 1166 LOGICAL , INTENT(in ) , OPTIONAL :: lrowattr ! logical flag telling iom_get to 1167 ! look for and use a file attribute 1168 ! called open_ocean_jstart to set the start 1169 ! value for the 2nd dimension (netcdf only) 1170 LOGICAL , INTENT(in ), OPTIONAL :: ldxios ! read data using XIOS 1171 ! 1172 IF( kiomid > 0 ) THEN 1173 IF( iom_file(kiomid)%nfid > 0 ) CALL iom_get_123d( kiomid, kdom , cdvar , pv_r4d=pvar, & 1174 & ktime=ktime, kstart=kstart, kcount=kcount, & 1175 & lrowattr=lrowattr, ldxios=ldxios ) 1176 ENDIF 1177 END SUBROUTINE iom_g4d 1012 1178 !!---------------------------------------------------------------------- 1013 1179 1014 1180 SUBROUTINE iom_get_123d( kiomid, kdom , cdvar , & 1015 & pv_r1d, pv_r2d, pv_r3d, &1181 & pv_r1d, pv_r2d, pv_r3d, pv_r4d, & 1016 1182 & ktime , kstart, kcount, & 1017 1183 & lrowattr, ldxios ) … … 1029 1195 REAL(wp), DIMENSION(:,:) , INTENT( out), OPTIONAL :: pv_r2d ! read field (2D case) 1030 1196 REAL(wp), DIMENSION(:,:,:) , INTENT( out), OPTIONAL :: pv_r3d ! read field (3D case) 1197 REAL(wp), DIMENSION(:,:,:,:),INTENT( out), OPTIONAL :: pv_r4d ! read field (4D case) 1031 1198 INTEGER , INTENT(in ), OPTIONAL :: ktime ! record number 1032 1199 INTEGER , DIMENSION(:) , INTENT(in ), OPTIONAL :: kstart ! start position of the reading in each axis … … 1293 1460 #if defined key_iomput 1294 1461 !would be good to be able to check which context is active and swap only if current is not restart 1295 CALL iom_swap( TRIM(crxios_context) ) 1296 IF( PRESENT(pv_r3d) ) THEN 1462 IF( PRESENT(pv_r4d) ) THEN 1463 pv_r4d(:, :, :, :) = 0. 1464 if(lwp) write(numout,*) 'XIOS RST READ (4D): ',trim(cdvar) 1465 CALL xios_recv_field( trim(cdvar), pv_r4d) 1466 IF(idom /= jpdom_unknown ) then 1467 CALL lbc_lnk( 'iom', pv_r4d,'Z', -999., kfillmode = jpfillnothing) 1468 ENDIF 1469 ELSEIF( PRESENT(pv_r3d) ) THEN 1297 1470 pv_r3d(:, :, :) = 0. 1298 1471 if(lwp) write(numout,*) 'XIOS RST READ (3D): ',trim(cdvar) … … 1313 1486 CALL xios_recv_field( trim(cdvar), pv_r1d) 1314 1487 ENDIF 1315 CALL iom_swap( TRIM(cxios_context) )1316 1488 #else 1317 1489 istop = istop + 1 … … 1336 1508 IF( zscf /= 1.) pv_r3d(:,:,:) = pv_r3d(:,:,:) * zscf 1337 1509 IF( zofs /= 0.) pv_r3d(:,:,:) = pv_r3d(:,:,:) + zofs 1510 ELSEIF( PRESENT(pv_r4d) ) THEN 1511 IF( zscf /= 1.) pv_r4d(:,:,:,:) = pv_r4d(:,:,:,:) * zscf 1512 IF( zofs /= 0.) pv_r4d(:,:,:,:) = pv_r4d(:,:,:,:) + zofs 1338 1513 ENDIF 1339 1514 ! … … 2395 2570 END FUNCTION iom_sdate 2396 2571 2572 INTEGER FUNCTION iom_add(idm) 2573 INTEGER :: idm 2574 2575 iom_add = idm + 1 2576 IF( iom_add > max_rst_fields) THEN 2577 WRITE(ctmp1,*) 'E R R O R : iom_set_rst_vars SIZE of RST_FIELD array is too small' 2578 CALL ctl_stop( 'iom_add:', ctmp1 ) 2579 ENDIF 2580 2581 END FUNCTION iom_add 2582 2397 2583 #else 2398 2584 !!---------------------------------------------------------------------- -
NEMO/branches/2019/dev_r11756_SI3restart_XIOS/src/OCE/IOM/iom_def.F90
r10425 r11837 67 67 END TYPE file_descriptor 68 68 TYPE(file_descriptor), DIMENSION(jpmax_files), PUBLIC :: iom_file !: array containing the info for all opened files 69 INTEGER, PARAMETER, PUBLIC :: max_rst_fields = 95!: maximum number of restart variables defined in iom_set_rst_vars69 INTEGER, PARAMETER, PUBLIC :: max_rst_fields = 360!: maximum number of restart variables defined in iom_set_rst_vars 70 70 TYPE, PUBLIC :: RST_FIELD 71 71 CHARACTER(len=30) :: vname = "NO_NAME" ! names of variables in restart file -
NEMO/branches/2019/dev_r11756_SI3restart_XIOS/src/OCE/IOM/restart.F90
r11536 r11837 224 224 IF( lrxios) THEN 225 225 crxios_context = 'nemo_rst' 226 IF( .NOT. lxios_set ) THEN226 IF( .NOT. lxios_set ) THEN 227 227 IF(lwp) WRITE(numout,*) 'Enable restart reading by XIOS' 228 CALL iom_init( crxios_context, ld_tmppatch = .false. )228 CALL iom_init( crxios_context, TRIM(clpath)//cn_ocerst_in, ld_tmppatch = .false. ) 229 229 lxios_set = .TRUE. 230 230 ENDIF 231 231 ENDIF 232 232 IF( TRIM(Agrif_CFixed()) /= '0' .AND. lrxios) THEN 233 CALL iom_init( crxios_context, ld_tmppatch = .false. )233 CALL iom_init( crxios_context, TRIM(clpath)//cn_ocerst_in, ld_tmppatch = .false. ) 234 234 IF(lwp) WRITE(numout,*) 'Enable restart reading by XIOS for AGRIF' 235 235 lxios_set = .TRUE. … … 256 256 257 257 ! Check dynamics and tracer time-step consistency and force Euler restart if changed 258 IF(lrxios) CALL iom_swap(crxios_context) 258 259 IF( iom_varid( numror, 'rdt', ldstop = .FALSE. ) > 0 ) THEN 259 260 CALL iom_get( numror, 'rdt', zrdt, ldxios = lrxios ) … … 270 271 rhop = rau0 271 272 CALL iom_get( numror, jpdom_autoglo, 'tn' , w3d, ldxios = lrxios ) 273 IF(lrxios) CALL iom_swap(cxios_context) 272 274 tsn(:,:,1,jp_tem) = w3d(:,:,1) 273 275 RETURN … … 308 310 ! 309 311 ENDIF 312 IF(lrxios) CALL iom_swap(cxios_context) 310 313 ! 311 314 END SUBROUTINE rst_read -
NEMO/branches/2019/dev_r11756_SI3restart_XIOS/src/OCE/SBC/sbcapr.F90
r11536 r11837 111 111 ! 112 112 IF( lwxios ) THEN 113 CALL iom_set_rstw_var_active( 'ssh_ibb')113 CALL iom_set_rstw_var_active(rst_wfields, 'ssh_ibb') 114 114 ENDIF 115 115 END SUBROUTINE sbc_apr_init -
NEMO/branches/2019/dev_r11756_SI3restart_XIOS/src/OCE/SBC/sbcisf.F90
r11536 r11837 206 206 IF( ln_rstart .AND. & ! Restart: read in restart file 207 207 & iom_varid( numror, 'fwf_isf_b', ldstop = .FALSE. ) > 0 ) THEN 208 IF(lrxios) CALL iom_swap(crxios_context) 208 209 IF(lwp) WRITE(numout,*) ' nit000-1 isf tracer content forcing fields read in the restart file' 209 210 CALL iom_get( numror, jpdom_autoglo, 'fwf_isf_b', fwfisf_b(:,:) , ldxios = lrxios ) ! before salt content isf_tsc trend 210 211 CALL iom_get( numror, jpdom_autoglo, 'isf_sc_b' , risf_tsc_b(:,:,jp_sal), ldxios = lrxios ) ! before salt content isf_tsc trend 211 212 CALL iom_get( numror, jpdom_autoglo, 'isf_hc_b' , risf_tsc_b(:,:,jp_tem), ldxios = lrxios ) ! before salt content isf_tsc trend 213 IF(lrxios) CALL iom_swap(cxios_context) 212 214 ELSE 213 215 fwfisf_b(:,:) = fwfisf(:,:) … … 402 404 403 405 IF( lwxios ) THEN 404 CALL iom_set_rstw_var_active( 'fwf_isf_b')405 CALL iom_set_rstw_var_active( 'isf_hc_b')406 CALL iom_set_rstw_var_active( 'isf_sc_b')406 CALL iom_set_rstw_var_active(rst_wfields, 'fwf_isf_b') 407 CALL iom_set_rstw_var_active(rst_wfields, 'isf_hc_b') 408 CALL iom_set_rstw_var_active(rst_wfields, 'isf_sc_b') 407 409 ENDIF 408 410 -
NEMO/branches/2019/dev_r11756_SI3restart_XIOS/src/OCE/SBC/sbcmod.F90
r11536 r11837 351 351 ! 352 352 IF( lwxios ) THEN 353 CALL iom_set_rstw_var_active( 'utau_b')354 CALL iom_set_rstw_var_active( 'vtau_b')355 CALL iom_set_rstw_var_active( 'qns_b')353 CALL iom_set_rstw_var_active(rst_wfields, 'utau_b') 354 CALL iom_set_rstw_var_active(rst_wfields, 'vtau_b') 355 CALL iom_set_rstw_var_active(rst_wfields, 'qns_b') 356 356 ! The 3D heat content due to qsr forcing is treated in traqsr 357 357 ! CALL iom_set_rstw_var_active('qsr_b') 358 CALL iom_set_rstw_var_active( 'emp_b')359 CALL iom_set_rstw_var_active( 'sfx_b')358 CALL iom_set_rstw_var_active(rst_wfields, 'emp_b') 359 CALL iom_set_rstw_var_active(rst_wfields, 'sfx_b') 360 360 ENDIF 361 361 … … 499 499 IF( ln_rstart .AND. & !* Restart: read in restart file 500 500 & iom_varid( numror, 'utau_b', ldstop = .FALSE. ) > 0 ) THEN 501 IF(lrxios) CALL iom_swap(crxios_context) 501 502 IF(lwp) WRITE(numout,*) ' nit000-1 surface forcing fields red in the restart file' 502 503 CALL iom_get( numror, jpdom_autoglo, 'utau_b', utau_b, ldxios = lrxios ) ! before i-stress (U-point) … … 512 513 sfx_b (:,:) = sfx(:,:) 513 514 ENDIF 515 IF(lrxios) CALL iom_swap(cxios_context) 514 516 ELSE !* no restart: set from nit000 values 515 517 IF(lwp) WRITE(numout,*) ' nit000-1 surface forcing fields set to nit000' -
NEMO/branches/2019/dev_r11756_SI3restart_XIOS/src/OCE/SBC/sbcrnf.F90
r11536 r11837 146 146 IF( ln_rstart .AND. & !* Restart: read in restart file 147 147 & iom_varid( numror, 'rnf_b', ldstop = .FALSE. ) > 0 ) THEN 148 IF(lrxios) CALL iom_swap(crxios_context) 148 149 IF(lwp) WRITE(numout,*) ' nit000-1 runoff forcing fields red in the restart file', lrxios 149 150 CALL iom_get( numror, jpdom_autoglo, 'rnf_b', rnf_b, ldxios = lrxios ) ! before runoff 150 151 CALL iom_get( numror, jpdom_autoglo, 'rnf_hc_b', rnf_tsc_b(:,:,jp_tem), ldxios = lrxios ) ! before heat content of runoff 151 152 CALL iom_get( numror, jpdom_autoglo, 'rnf_sc_b', rnf_tsc_b(:,:,jp_sal), ldxios = lrxios ) ! before salinity content of runoff 153 IF(lrxios) CALL iom_swap(cxios_context) 152 154 ELSE !* no restart: set from nit000 values 153 155 IF(lwp) WRITE(numout,*) ' nit000-1 runoff forcing fields set to nit000' … … 467 469 ! 468 470 IF( lwxios ) THEN 469 CALL iom_set_rstw_var_active( 'rnf_b')470 CALL iom_set_rstw_var_active( 'rnf_hc_b')471 CALL iom_set_rstw_var_active( 'rnf_sc_b')471 CALL iom_set_rstw_var_active(rst_wfields, 'rnf_b') 472 CALL iom_set_rstw_var_active(rst_wfields, 'rnf_hc_b') 473 CALL iom_set_rstw_var_active(rst_wfields, 'rnf_sc_b') 472 474 ENDIF 473 475 -
NEMO/branches/2019/dev_r11756_SI3restart_XIOS/src/OCE/SBC/sbcssm.F90
r10425 r11837 208 208 ! 209 209 IF( ln_rstart .AND. iom_varid( numror, 'nn_fsbc', ldstop = .FALSE. ) > 0 ) THEN 210 IF(lrxios) CALL iom_swap(crxios_context) 210 211 l_ssm_mean = .TRUE. 211 212 CALL iom_get( numror , 'nn_fsbc', zf_sbc, ldxios = lrxios ) ! sbc frequency of previous run … … 222 223 frq_m(:,:) = 1._wp ! default definition 223 224 ENDIF 225 IF(lrxios) CALL iom_swap(cxios_context) 224 226 ! 225 227 IF( zf_sbc /= REAL( nn_fsbc, wp ) ) THEN ! nn_fsbc has changed between 2 runs … … 257 259 ! 258 260 IF( lwxios.AND.nn_fsbc > 1 ) THEN 259 CALL iom_set_rstw_var_active( 'nn_fsbc')260 CALL iom_set_rstw_var_active( 'ssu_m')261 CALL iom_set_rstw_var_active( 'ssv_m')262 CALL iom_set_rstw_var_active( 'sst_m')263 CALL iom_set_rstw_var_active( 'sss_m')264 CALL iom_set_rstw_var_active( 'ssh_m')265 CALL iom_set_rstw_var_active( 'e3t_m')266 CALL iom_set_rstw_var_active( 'frq_m')261 CALL iom_set_rstw_var_active(rst_wfields, 'nn_fsbc') 262 CALL iom_set_rstw_var_active(rst_wfields, 'ssu_m') 263 CALL iom_set_rstw_var_active(rst_wfields, 'ssv_m') 264 CALL iom_set_rstw_var_active(rst_wfields, 'sst_m') 265 CALL iom_set_rstw_var_active(rst_wfields, 'sss_m') 266 CALL iom_set_rstw_var_active(rst_wfields, 'ssh_m') 267 CALL iom_set_rstw_var_active(rst_wfields, 'e3t_m') 268 CALL iom_set_rstw_var_active(rst_wfields, 'frq_m') 267 269 ENDIF 268 270 -
NEMO/branches/2019/dev_r11756_SI3restart_XIOS/src/OCE/TRA/traqsr.F90
r11536 r11837 137 137 IF(lwp) WRITE(numout,*) ' nit000-1 qsr tracer content forcing field read in the restart file' 138 138 z1_2 = 0.5_wp 139 IF(lrxios) CALL iom_swap(crxios_context) 139 140 CALL iom_get( numror, jpdom_autoglo, 'qsr_hc_b', qsr_hc_b, ldxios = lrxios ) ! before heat content trend due to Qsr flux 141 IF(lrxios) CALL iom_swap(cxios_context) 140 142 ELSE ! No restart or restart not found: Euler forward time stepping 141 143 z1_2 = 1._wp … … 423 425 ! 1st ocean level attenuation coefficient (used in sbcssm) 424 426 IF( iom_varid( numror, 'fraqsr_1lev', ldstop = .FALSE. ) > 0 ) THEN 427 IF(lrxios) CALL iom_swap(crxios_context) 425 428 CALL iom_get( numror, jpdom_autoglo, 'fraqsr_1lev' , fraqsr_1lev, ldxios = lrxios ) 429 IF(lrxios) CALL iom_swap(cxios_context) 426 430 ELSE 427 431 fraqsr_1lev(:,:) = 1._wp ! default : no penetration … … 429 433 ! 430 434 IF( lwxios ) THEN 431 CALL iom_set_rstw_var_active( 'qsr_hc_b')432 CALL iom_set_rstw_var_active( 'fraqsr_1lev')435 CALL iom_set_rstw_var_active(rst_wfields, 'qsr_hc_b') 436 CALL iom_set_rstw_var_active(rst_wfields, 'fraqsr_1lev') 433 437 ENDIF 434 438 ! -
NEMO/branches/2019/dev_r11756_SI3restart_XIOS/src/OCE/TRA/trasbc.F90
r10499 r11837 107 107 IF( ln_rstart .AND. & ! Restart: read in restart file 108 108 & iom_varid( numror, 'sbc_hc_b', ldstop = .FALSE. ) > 0 ) THEN 109 IF(lrxios) CALL iom_swap(crxios_context) 109 110 IF(lwp) WRITE(numout,*) ' nit000-1 sbc tracer content field read in the restart file' 110 111 zfact = 0.5_wp … … 112 113 CALL iom_get( numror, jpdom_autoglo, 'sbc_hc_b', sbc_tsc_b(:,:,jp_tem), ldxios = lrxios ) ! before heat content sbc trend 113 114 CALL iom_get( numror, jpdom_autoglo, 'sbc_sc_b', sbc_tsc_b(:,:,jp_sal), ldxios = lrxios ) ! before salt content sbc trend 115 IF(lrxios) CALL iom_swap(cxios_context) 114 116 ELSE ! No restart or restart not found: Euler forward time stepping 115 117 zfact = 1._wp -
NEMO/branches/2019/dev_r11756_SI3restart_XIOS/src/OCE/ZDF/zdfgls.F90
r11536 r11837 1133 1133 ! 1134 1134 IF( lwxios ) THEN 1135 CALL iom_set_rstw_var_active( 'en')1136 CALL iom_set_rstw_var_active( 'avt_k')1137 CALL iom_set_rstw_var_active( 'avm_k')1138 CALL iom_set_rstw_var_active( 'hmxl_n')1135 CALL iom_set_rstw_var_active(rst_wfields, 'en') 1136 CALL iom_set_rstw_var_active(rst_wfields, 'avt_k') 1137 CALL iom_set_rstw_var_active(rst_wfields, 'avm_k') 1138 CALL iom_set_rstw_var_active(rst_wfields, 'hmxl_n') 1139 1139 ENDIF 1140 1140 ! … … 1172 1172 ! 1173 1173 IF( MIN( id1, id2, id3, id4 ) > 0 ) THEN ! all required arrays exist 1174 IF(lrxios) CALL iom_swap(crxios_context) 1174 1175 CALL iom_get( numror, jpdom_autoglo, 'en' , en , ldxios = lrxios ) 1175 1176 CALL iom_get( numror, jpdom_autoglo, 'avt_k' , avt_k , ldxios = lrxios ) 1176 1177 CALL iom_get( numror, jpdom_autoglo, 'avm_k' , avm_k , ldxios = lrxios ) 1177 1178 CALL iom_get( numror, jpdom_autoglo, 'hmxl_n', hmxl_n, ldxios = lrxios ) 1179 IF(lrxios) CALL iom_swap(cxios_context) 1178 1180 ELSE 1179 1181 IF(lwp) WRITE(numout,*) -
NEMO/branches/2019/dev_r11756_SI3restart_XIOS/src/OCE/ZDF/zdfosm.F90
r11536 r11837 1510 1510 ! 1511 1511 IF( lwxios ) THEN 1512 CALL iom_set_rstw_var_active( 'wn')1513 CALL iom_set_rstw_var_active( 'hbl')1514 CALL iom_set_rstw_var_active( 'hbli')1512 CALL iom_set_rstw_var_active(rst_wfields, 'wn') 1513 CALL iom_set_rstw_var_active(rst_wfields, 'hbl') 1514 CALL iom_set_rstw_var_active(rst_wfields, 'hbli') 1515 1515 ENDIF 1516 1516 END SUBROUTINE zdf_osm_init … … 1543 1543 !!----------------------------------------------------------------------------- 1544 1544 IF( TRIM(cdrw) == 'READ'.AND. ln_rstart) THEN 1545 IF(lrxios) CALL iom_swap(crxios_context) 1545 1546 id1 = iom_varid( numror, 'wn' , ldstop = .FALSE. ) 1546 1547 IF( id1 > 0 ) THEN ! 'wn' exists; read … … 1561 1562 WRITE(numout,*) ' ===>>>> : previous run without osmosis scheme, hbl computed from stratification' 1562 1563 END IF 1564 IF(lrxios) CALL iom_swap(cxios_context) 1563 1565 END IF 1564 1566 -
NEMO/branches/2019/dev_r11756_SI3restart_XIOS/src/OCE/ZDF/zdfric.F90
r11536 r11837 106 106 ! 107 107 IF( lwxios ) THEN 108 CALL iom_set_rstw_var_active( 'avt_k')109 CALL iom_set_rstw_var_active( 'avm_k')108 CALL iom_set_rstw_var_active(rst_wfields, 'avt_k') 109 CALL iom_set_rstw_var_active(rst_wfields, 'avm_k') 110 110 ENDIF 111 111 END SUBROUTINE zdf_ric_init … … 222 222 ! !* Read the restart file 223 223 IF( ln_rstart ) THEN 224 IF(lrxios) CALL iom_swap(crxios_context) 224 225 id1 = iom_varid( numror, 'avt_k', ldstop = .FALSE. ) 225 226 id2 = iom_varid( numror, 'avm_k', ldstop = .FALSE. ) … … 229 230 CALL iom_get( numror, jpdom_autoglo, 'avm_k', avm_k, ldxios = lrxios ) 230 231 ENDIF 232 IF(lrxios) CALL iom_swap(cxios_context) 231 233 ENDIF 232 234 ! !* otherwise Kz already set to the background value in zdf_phy_init -
NEMO/branches/2019/dev_r11756_SI3restart_XIOS/src/OCE/ZDF/zdftke.F90
r11536 r11837 740 740 ! 741 741 IF( lwxios ) THEN 742 CALL iom_set_rstw_var_active( 'en')743 CALL iom_set_rstw_var_active( 'avt_k')744 CALL iom_set_rstw_var_active( 'avm_k')745 CALL iom_set_rstw_var_active( 'dissl')742 CALL iom_set_rstw_var_active(rst_wfields, 'en') 743 CALL iom_set_rstw_var_active(rst_wfields, 'avt_k') 744 CALL iom_set_rstw_var_active(rst_wfields, 'avm_k') 745 CALL iom_set_rstw_var_active(rst_wfields, 'dissl') 746 746 ENDIF 747 747 END SUBROUTINE zdf_tke_init … … 776 776 ! 777 777 IF( MIN( id1, id2, id3, id4 ) > 0 ) THEN ! fields exist 778 IF(lrxios) CALL iom_swap(crxios_context) 778 779 CALL iom_get( numror, jpdom_autoglo, 'en' , en , ldxios = lrxios ) 779 780 CALL iom_get( numror, jpdom_autoglo, 'avt_k', avt_k, ldxios = lrxios ) 780 781 CALL iom_get( numror, jpdom_autoglo, 'avm_k', avm_k, ldxios = lrxios ) 781 782 CALL iom_get( numror, jpdom_autoglo, 'dissl', dissl, ldxios = lrxios ) 783 IF(lrxios) CALL iom_swap(cxios_context) 782 784 ELSE ! start TKE from rest 783 785 IF(lwp) WRITE(numout,*) -
NEMO/branches/2019/dev_r11756_SI3restart_XIOS/src/OCE/step.F90
r11536 r11837 311 311 IF( kstp == nitend .OR. indic < 0 ) THEN 312 312 CALL iom_context_finalize( cxios_context ) ! needed for XIOS+AGRIF 313 IF(lrxios) CALL iom_context_finalize( crxios_context ) 313 IF(lrxios) THEN 314 CALL iom_context_finalize( crxios_context ) 315 #if defined key_si3 316 CALL iom_context_finalize( crixios_context ) 317 #endif 318 ENDIF 314 319 IF( ln_crs ) CALL iom_context_finalize( trim(cxios_context)//"_crs" ) ! 315 320 ENDIF -
NEMO/branches/2019/dev_r11756_SI3restart_XIOS/src/SAS/daymod.F90
r10068 r11837 143 143 CALL day( nit000 ) 144 144 IF( lwxios ) THEN 145 CALL iom_set_rstw_var_active( 'kt')146 CALL iom_set_rstw_var_active( 'ndastp')147 CALL iom_set_rstw_var_active( 'adatrj')148 CALL iom_set_rstw_var_active( 'ntime')145 CALL iom_set_rstw_var_active(rst_wfields, 'kt') 146 CALL iom_set_rstw_var_active(rst_wfields, 'ndastp') 147 CALL iom_set_rstw_var_active(rst_wfields, 'adatrj') 148 CALL iom_set_rstw_var_active(rst_wfields, 'ntime') 149 149 ENDIF 150 150 ! … … 323 323 324 324 IF( iom_varid( numror, 'kt', ldstop = .FALSE. ) > 0 ) THEN 325 IF(lrxios) CALL iom_swap(crxios_context) 325 326 ! Get Calendar informations 326 327 CALL iom_get( numror, 'kt', zkt, ldxios = lrxios ) ! last time-step of previous run … … 379 380 ! note this is wrong if time step has changed during run 380 381 ENDIF 382 IF(lrxios) CALL iom_swap(cxios_context) 381 383 ELSE 382 384 ! parameters corresponding to nit000 - 1 (as we start the step loop with a call to day) -
NEMO/branches/2019/dev_r11756_SI3restart_XIOS/src/SAS/step.F90
r11536 r11837 140 140 ENDIF 141 141 IF( kstp == nitend .OR. indic < 0 ) THEN 142 IF(lrxios) THEN 143 #if defined key_si3 144 CALL iom_context_finalize( crixios_context) 145 #endif 146 CALL iom_context_finalize( crxios_context) 147 ENDIF 142 148 CALL iom_context_finalize( cxios_context ) ! needed for XIOS+AGRIF 143 149 ENDIF
Note: See TracChangeset
for help on using the changeset viewer.