- Timestamp:
- 2019-11-22T15:29:17+01:00 (4 years ago)
- Location:
- NEMO/branches/2019/dev_r11943_MERGE_2019/src
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r11943_MERGE_2019/src
- Property svn:mergeinfo deleted
-
NEMO/branches/2019/dev_r11943_MERGE_2019/src/OCE/IOM/restart.F90
r11536 r11949 27 27 USE in_out_manager ! I/O manager 28 28 USE iom ! I/O module 29 USE diu rnal_bulk29 USE diu_bulk 30 30 USE lib_mpp ! distribued memory computing library 31 31 … … 133 133 134 134 135 SUBROUTINE rst_write( kt )135 SUBROUTINE rst_write( kt, Kbb, Kmm ) 136 136 !!--------------------------------------------------------------------- 137 137 !! *** ROUTINE rstwrite *** … … 142 142 !! file, save fields which are necessary for restart 143 143 !!---------------------------------------------------------------------- 144 INTEGER, INTENT(in) :: kt ! ocean time-step 144 INTEGER, INTENT(in) :: kt ! ocean time-step 145 INTEGER, INTENT(in) :: Kbb, Kmm ! ocean time level indices 145 146 !!---------------------------------------------------------------------- 146 147 IF(lwxios) CALL iom_swap( cwxios_context ) … … 149 150 150 151 IF ( .NOT. ln_diurnal_only ) THEN 151 CALL iom_rstput( kt, nitrst, numrow, 'ub' , u b, ldxios = lwxios ) ! before fields152 CALL iom_rstput( kt, nitrst, numrow, 'vb' , v b, ldxios = lwxios )153 CALL iom_rstput( kt, nitrst, numrow, 'tb' , ts b(:,:,:,jp_tem), ldxios = lwxios )154 CALL iom_rstput( kt, nitrst, numrow, 'sb' , ts b(:,:,:,jp_sal), ldxios = lwxios )155 CALL iom_rstput( kt, nitrst, numrow, 'sshb' , sshb, ldxios = lwxios )152 CALL iom_rstput( kt, nitrst, numrow, 'ub' , uu(:,:,: ,Kbb), ldxios = lwxios ) ! before fields 153 CALL iom_rstput( kt, nitrst, numrow, 'vb' , vv(:,:,: ,Kbb), ldxios = lwxios ) 154 CALL iom_rstput( kt, nitrst, numrow, 'tb' , ts(:,:,:,jp_tem,Kbb), ldxios = lwxios ) 155 CALL iom_rstput( kt, nitrst, numrow, 'sb' , ts(:,:,:,jp_sal,Kbb), ldxios = lwxios ) 156 CALL iom_rstput( kt, nitrst, numrow, 'sshb' ,ssh(:,: ,Kbb), ldxios = lwxios ) 156 157 ! 157 CALL iom_rstput( kt, nitrst, numrow, 'un' , u n, ldxios = lwxios ) ! now fields158 CALL iom_rstput( kt, nitrst, numrow, 'vn' , v n, ldxios = lwxios )159 CALL iom_rstput( kt, nitrst, numrow, 'tn' , ts n(:,:,:,jp_tem), ldxios = lwxios )160 CALL iom_rstput( kt, nitrst, numrow, 'sn' , ts n(:,:,:,jp_sal), ldxios = lwxios )161 CALL iom_rstput( kt, nitrst, numrow, 'sshn' , sshn, ldxios = lwxios )158 CALL iom_rstput( kt, nitrst, numrow, 'un' , uu(:,:,: ,Kmm), ldxios = lwxios ) ! now fields 159 CALL iom_rstput( kt, nitrst, numrow, 'vn' , vv(:,:,: ,Kmm), ldxios = lwxios ) 160 CALL iom_rstput( kt, nitrst, numrow, 'tn' , ts(:,:,:,jp_tem,Kmm), ldxios = lwxios ) 161 CALL iom_rstput( kt, nitrst, numrow, 'sn' , ts(:,:,:,jp_sal,Kmm), ldxios = lwxios ) 162 CALL iom_rstput( kt, nitrst, numrow, 'sshn' ,ssh(:,: ,Kmm), ldxios = lwxios ) 162 163 CALL iom_rstput( kt, nitrst, numrow, 'rhop' , rhop, ldxios = lwxios ) 163 164 ! extra variable needed for the ice sheet coupling … … 167 168 CALL iom_rstput( kt, nitrst, numrow, 'vmask' , vmask, ldxios = lwxios ) ! need to correct barotropic velocity 168 169 CALL iom_rstput( kt, nitrst, numrow, 'smask' , ssmask, ldxios = lwxios) ! need to correct barotropic velocity 169 CALL iom_rstput( kt, nitrst, numrow, 'e3t_n', e3t _n(:,:,:), ldxios = lwxios ) ! need to compute temperature correction170 CALL iom_rstput( kt, nitrst, numrow, 'e3u_n', e3u _n(:,:,:), ldxios = lwxios ) ! need to compute bt conservation171 CALL iom_rstput( kt, nitrst, numrow, 'e3v_n', e3v _n(:,:,:), ldxios = lwxios ) ! need to compute bt conservation172 CALL iom_rstput( kt, nitrst, numrow, 'gdepw_n', gdepw _n(:,:,:), ldxios = lwxios ) ! need to compute extrapolation if vvl170 CALL iom_rstput( kt, nitrst, numrow, 'e3t_n', e3t(:,:,:,Kmm), ldxios = lwxios ) ! need to compute temperature correction 171 CALL iom_rstput( kt, nitrst, numrow, 'e3u_n', e3u(:,:,:,Kmm), ldxios = lwxios ) ! need to compute bt conservation 172 CALL iom_rstput( kt, nitrst, numrow, 'e3v_n', e3v(:,:,:,Kmm), ldxios = lwxios ) ! need to compute bt conservation 173 CALL iom_rstput( kt, nitrst, numrow, 'gdepw_n', gdepw(:,:,:,Kmm), ldxios = lwxios ) ! need to compute extrapolation if vvl 173 174 END IF 174 175 ENDIF … … 240 241 241 242 242 SUBROUTINE rst_read 243 SUBROUTINE rst_read( Kbb, Kmm ) 243 244 !!---------------------------------------------------------------------- 244 245 !! *** ROUTINE rst_read *** … … 248 249 !! ** Method : Read in restart.nc file fields which are necessary for restart 249 250 !!---------------------------------------------------------------------- 251 INTEGER, INTENT(in) :: Kbb, Kmm ! ocean time level indices 250 252 REAL(wp) :: zrdt 251 253 INTEGER :: jk … … 270 272 rhop = rau0 271 273 CALL iom_get( numror, jpdom_autoglo, 'tn' , w3d, ldxios = lrxios ) 272 ts n(:,:,1,jp_tem) = w3d(:,:,1)274 ts(:,:,1,jp_tem,Kmm) = w3d(:,:,1) 273 275 RETURN 274 276 ENDIF 275 277 276 278 IF( iom_varid( numror, 'ub', ldstop = .FALSE. ) > 0 ) THEN 277 CALL iom_get( numror, jpdom_autoglo, 'ub' , u b, ldxios = lrxios) ! before fields278 CALL iom_get( numror, jpdom_autoglo, 'vb' , v b, ldxios = lrxios)279 CALL iom_get( numror, jpdom_autoglo, 'tb' , ts b(:,:,:,jp_tem), ldxios = lrxios )280 CALL iom_get( numror, jpdom_autoglo, 'sb' , ts b(:,:,:,jp_sal), ldxios = lrxios )281 CALL iom_get( numror, jpdom_autoglo, 'sshb' , sshb, ldxios = lrxios)279 CALL iom_get( numror, jpdom_autoglo, 'ub' , uu(:,:,: ,Kbb), ldxios = lrxios ) ! before fields 280 CALL iom_get( numror, jpdom_autoglo, 'vb' , vv(:,:,: ,Kbb), ldxios = lrxios ) 281 CALL iom_get( numror, jpdom_autoglo, 'tb' , ts(:,:,:,jp_tem,Kbb), ldxios = lrxios ) 282 CALL iom_get( numror, jpdom_autoglo, 'sb' , ts(:,:,:,jp_sal,Kbb), ldxios = lrxios ) 283 CALL iom_get( numror, jpdom_autoglo, 'sshb' ,ssh(:,: ,Kbb), ldxios = lrxios ) 282 284 ELSE 283 285 neuler = 0 284 286 ENDIF 285 287 ! 286 CALL iom_get( numror, jpdom_autoglo, 'un' , u n, ldxios = lrxios )! now fields287 CALL iom_get( numror, jpdom_autoglo, 'vn' , v n, ldxios = lrxios )288 CALL iom_get( numror, jpdom_autoglo, 'tn' , ts n(:,:,:,jp_tem), ldxios = lrxios )289 CALL iom_get( numror, jpdom_autoglo, 'sn' , ts n(:,:,:,jp_sal), ldxios = lrxios )290 CALL iom_get( numror, jpdom_autoglo, 'sshn' , sshn, ldxios = lrxios )288 CALL iom_get( numror, jpdom_autoglo, 'un' , uu(:,:,: ,Kmm), ldxios = lrxios ) ! now fields 289 CALL iom_get( numror, jpdom_autoglo, 'vn' , vv(:,:,: ,Kmm), ldxios = lrxios ) 290 CALL iom_get( numror, jpdom_autoglo, 'tn' , ts(:,:,:,jp_tem,Kmm), ldxios = lrxios ) 291 CALL iom_get( numror, jpdom_autoglo, 'sn' , ts(:,:,:,jp_sal,Kmm), ldxios = lrxios ) 292 CALL iom_get( numror, jpdom_autoglo, 'sshn' ,ssh(:,: ,Kmm), ldxios = lrxios ) 291 293 IF( iom_varid( numror, 'rhop', ldstop = .FALSE. ) > 0 ) THEN 292 294 CALL iom_get( numror, jpdom_autoglo, 'rhop' , rhop, ldxios = lrxios ) ! now potential density 293 295 ELSE 294 CALL eos( ts n, rhd, rhop, gdept_n(:,:,:) )296 CALL eos( ts(:,:,:,:,Kmm), rhd, rhop, gdept(:,:,:,Kmm) ) 295 297 ENDIF 296 298 ! 297 299 IF( neuler == 0 ) THEN ! Euler restart (neuler=0) 298 ts b (:,:,:,:) = tsn (:,:,:,:)! all before fields set to now values299 u b (:,:,:) = un (:,:,:)300 v b (:,:,:) = vn (:,:,:)301 ssh b (:,:) = sshn (:,:)300 ts (:,:,:,:,Kbb) = ts (:,:,:,:,Kmm) ! all before fields set to now values 301 uu (:,:,: ,Kbb) = uu (:,:,: ,Kmm) 302 vv (:,:,: ,Kbb) = vv (:,:,: ,Kmm) 303 ssh (:,: ,Kbb) = ssh (:,: ,Kmm) 302 304 ! 303 305 IF( .NOT.ln_linssh ) THEN 304 306 DO jk = 1, jpk 305 e3t _b(:,:,jk) = e3t_n(:,:,jk)307 e3t(:,:,jk,Kbb) = e3t(:,:,jk,Kmm) 306 308 END DO 307 309 ENDIF
Note: See TracChangeset
for help on using the changeset viewer.