Changeset 10922 for NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/IOM/restart.F90
- Timestamp:
- 2019-05-02T17:10:39+02:00 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/IOM/restart.F90
r10425 r10922 131 131 132 132 133 SUBROUTINE rst_write( kt )133 SUBROUTINE rst_write( kt, Kbb, Kmm ) 134 134 !!--------------------------------------------------------------------- 135 135 !! *** ROUTINE rstwrite *** … … 140 140 !! file, save fields which are necessary for restart 141 141 !!---------------------------------------------------------------------- 142 INTEGER, INTENT(in) :: kt ! ocean time-step 142 INTEGER, INTENT(in) :: kt ! ocean time-step 143 INTEGER, INTENT(in) :: Kbb, Kmm ! ocean time level indices 143 144 !!---------------------------------------------------------------------- 144 145 IF(lwxios) CALL iom_swap( cwxios_context ) … … 147 148 148 149 IF ( .NOT. ln_diurnal_only ) THEN 149 CALL iom_rstput( kt, nitrst, numrow, 'ub' , u b, ldxios = lwxios ) ! before fields150 CALL iom_rstput( kt, nitrst, numrow, 'vb' , v b, ldxios = lwxios )151 CALL iom_rstput( kt, nitrst, numrow, 'tb' , ts b(:,:,:,jp_tem), ldxios = lwxios )152 CALL iom_rstput( kt, nitrst, numrow, 'sb' , ts b(:,:,:,jp_sal), ldxios = lwxios )150 CALL iom_rstput( kt, nitrst, numrow, 'ub' , uu(:,:,:,Kbb), ldxios = lwxios ) ! before fields 151 CALL iom_rstput( kt, nitrst, numrow, 'vb' , vv(:,:,:,Kbb), ldxios = lwxios ) 152 CALL iom_rstput( kt, nitrst, numrow, 'tb' , ts(:,:,:,jp_tem,Kbb), ldxios = lwxios ) 153 CALL iom_rstput( kt, nitrst, numrow, 'sb' , ts(:,:,:,jp_sal,Kbb), ldxios = lwxios ) 153 154 CALL iom_rstput( kt, nitrst, numrow, 'sshb' , sshb, ldxios = lwxios ) 154 155 ! 155 CALL iom_rstput( kt, nitrst, numrow, 'un' , u n, ldxios = lwxios ) ! now fields156 CALL iom_rstput( kt, nitrst, numrow, 'vn' , v n, ldxios = lwxios )157 CALL iom_rstput( kt, nitrst, numrow, 'tn' , ts n(:,:,:,jp_tem), ldxios = lwxios )158 CALL iom_rstput( kt, nitrst, numrow, 'sn' , ts n(:,:,:,jp_sal), ldxios = lwxios )156 CALL iom_rstput( kt, nitrst, numrow, 'un' , uu(:,:,:,Kmm), ldxios = lwxios ) ! now fields 157 CALL iom_rstput( kt, nitrst, numrow, 'vn' , vv(:,:,:,Kmm), ldxios = lwxios ) 158 CALL iom_rstput( kt, nitrst, numrow, 'tn' , ts(:,:,:,jp_tem,Kmm), ldxios = lwxios ) 159 CALL iom_rstput( kt, nitrst, numrow, 'sn' , ts(:,:,:,jp_sal,Kmm), ldxios = lwxios ) 159 160 CALL iom_rstput( kt, nitrst, numrow, 'sshn' , sshn, ldxios = lwxios ) 160 161 CALL iom_rstput( kt, nitrst, numrow, 'rhop' , rhop, ldxios = lwxios ) … … 165 166 CALL iom_rstput( kt, nitrst, numrow, 'vmask' , vmask, ldxios = lwxios ) ! need to correct barotropic velocity 166 167 CALL iom_rstput( kt, nitrst, numrow, 'smask' , ssmask, ldxios = lwxios) ! need to correct barotropic velocity 167 CALL iom_rstput( kt, nitrst, numrow, 'e3t_n', e3t _n(:,:,:), ldxios = lwxios ) ! need to compute temperature correction168 CALL iom_rstput( kt, nitrst, numrow, 'e3u_n', e3u _n(:,:,:), ldxios = lwxios ) ! need to compute bt conservation169 CALL iom_rstput( kt, nitrst, numrow, 'e3v_n', e3v _n(:,:,:), ldxios = lwxios ) ! need to compute bt conservation170 CALL iom_rstput( kt, nitrst, numrow, 'gdepw_n', gdepw _n(:,:,:), ldxios = lwxios ) ! need to compute extrapolation if vvl168 CALL iom_rstput( kt, nitrst, numrow, 'e3t_n', e3t(:,:,:,Kmm), ldxios = lwxios ) ! need to compute temperature correction 169 CALL iom_rstput( kt, nitrst, numrow, 'e3u_n', e3u(:,:,:,Kmm), ldxios = lwxios ) ! need to compute bt conservation 170 CALL iom_rstput( kt, nitrst, numrow, 'e3v_n', e3v(:,:,:,Kmm), ldxios = lwxios ) ! need to compute bt conservation 171 CALL iom_rstput( kt, nitrst, numrow, 'gdepw_n', gdepw(:,:,:,Kmm), ldxios = lwxios ) ! need to compute extrapolation if vvl 171 172 END IF 172 173 ENDIF … … 238 239 239 240 240 SUBROUTINE rst_read 241 SUBROUTINE rst_read( Kbb, Kmm ) 241 242 !!---------------------------------------------------------------------- 242 243 !! *** ROUTINE rst_read *** … … 246 247 !! ** Method : Read in restart.nc file fields which are necessary for restart 247 248 !!---------------------------------------------------------------------- 249 INTEGER, INTENT(in) :: Kbb, Kmm ! ocean time level indices 248 250 REAL(wp) :: zrdt 249 251 INTEGER :: jk … … 268 270 rhop = rau0 269 271 CALL iom_get( numror, jpdom_autoglo, 'tn' , w3d, ldxios = lrxios ) 270 ts n(:,:,1,jp_tem) = w3d(:,:,1)272 ts(:,:,1,jp_tem,Kmm) = w3d(:,:,1) 271 273 RETURN 272 274 ENDIF 273 275 274 276 IF( iom_varid( numror, 'ub', ldstop = .FALSE. ) > 0 ) THEN 275 CALL iom_get( numror, jpdom_autoglo, 'ub' , u b, ldxios = lrxios) ! before fields276 CALL iom_get( numror, jpdom_autoglo, 'vb' , v b, ldxios = lrxios)277 CALL iom_get( numror, jpdom_autoglo, 'tb' , ts b(:,:,:,jp_tem), ldxios = lrxios )278 CALL iom_get( numror, jpdom_autoglo, 'sb' , ts b(:,:,:,jp_sal), ldxios = lrxios )279 CALL iom_get( numror, jpdom_autoglo, 'sshb' , sshb, ldxios = lrxios )277 CALL iom_get( numror, jpdom_autoglo, 'ub' , uu(:,:,:,Kbb), ldxios = lrxios ) ! before fields 278 CALL iom_get( numror, jpdom_autoglo, 'vb' , vv(:,:,:,Kbb), ldxios = lrxios ) 279 CALL iom_get( numror, jpdom_autoglo, 'tb' , ts(:,:,:,jp_tem,Kbb), ldxios = lrxios ) 280 CALL iom_get( numror, jpdom_autoglo, 'sb' , ts(:,:,:,jp_sal,Kbb), ldxios = lrxios ) 281 CALL iom_get( numror, jpdom_autoglo, 'sshb' , sshb, ldxios = lrxios ) 280 282 ELSE 281 283 neuler = 0 282 284 ENDIF 283 285 ! 284 CALL iom_get( numror, jpdom_autoglo, 'un' , u n, ldxios = lrxios) ! now fields285 CALL iom_get( numror, jpdom_autoglo, 'vn' , v n, ldxios = lrxios)286 CALL iom_get( numror, jpdom_autoglo, 'tn' , ts n(:,:,:,jp_tem), ldxios = lrxios )287 CALL iom_get( numror, jpdom_autoglo, 'sn' , ts n(:,:,:,jp_sal), ldxios = lrxios )286 CALL iom_get( numror, jpdom_autoglo, 'un' , uu(:,:,:,Kmm), ldxios = lrxios ) ! now fields 287 CALL iom_get( numror, jpdom_autoglo, 'vn' , vv(:,:,:,Kmm), ldxios = lrxios ) 288 CALL iom_get( numror, jpdom_autoglo, 'tn' , ts(:,:,:,jp_tem,Kmm), ldxios = lrxios ) 289 CALL iom_get( numror, jpdom_autoglo, 'sn' , ts(:,:,:,jp_sal,Kmm), ldxios = lrxios ) 288 290 CALL iom_get( numror, jpdom_autoglo, 'sshn' , sshn, ldxios = lrxios ) 289 291 IF( iom_varid( numror, 'rhop', ldstop = .FALSE. ) > 0 ) THEN 290 292 CALL iom_get( numror, jpdom_autoglo, 'rhop' , rhop, ldxios = lrxios ) ! now potential density 291 293 ELSE 292 CALL eos( ts n, rhd, rhop, gdept_n(:,:,:) )294 CALL eos( ts(:,:,:,:,Kmm), rhd, rhop, gdept(:,:,:,Kmm) ) 293 295 ENDIF 294 296 ! 295 297 IF( neuler == 0 ) THEN ! Euler restart (neuler=0) 296 ts b (:,:,:,:) = tsn (:,:,:,:)! all before fields set to now values297 u b (:,:,:) = un (:,:,:)298 v b (:,:,:) = vn (:,:,:)299 sshb (:,:) = sshn (:,:)298 ts (:,:,:,:,Kbb) = ts (:,:,:,:,Kmm) ! all before fields set to now values 299 uu (:,:,:,Kbb) = uu (:,:,:,Kmm) 300 vv (:,:,:,Kbb) = vv (:,:,:,Kmm) 301 sshb (:,:) = sshn (:,:) 300 302 ! 301 303 IF( .NOT.ln_linssh ) THEN 302 304 DO jk = 1, jpk 303 e3t _b(:,:,jk) = e3t_n(:,:,jk)305 e3t(:,:,jk,Kbb) = e3t(:,:,jk,Kmm) 304 306 END DO 305 307 ENDIF
Note: See TracChangeset
for help on using the changeset viewer.