- Timestamp:
- 2019-10-30T15:10:36+01:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
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
Note: See TracChangeset
for help on using the changeset viewer.