Changeset 544 for trunk/NEMO/OPA_SRC/restart.F90
- Timestamp:
- 2006-10-20T16:23:21+02:00 (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMO/OPA_SRC/restart.F90
r521 r544 25 25 USE iom ! I/O module 26 26 USE trdmld_oce ! ! ocean active mixed layer tracers trends variables 27 USE ini1d ! re-initialization of u-v mask for the 1D configuration 28 USE zpshde ! partial step: hor. derivative (zps_hde routine) 29 USE eosbn2 ! equation of state (eos bn2 routine) 27 30 28 31 IMPLICIT NONE … … 82 85 clname = TRIM(cexper)//"_"//TRIM(ADJUSTL(clkt))//"_restart" 83 86 IF(lwp) WRITE(numout,*) ' open ocean restart.output NetCDF file: '//clname 84 CALL iom_open( clname, numrow, ldwrt = .TRUE. )87 CALL iom_open( clname, numrow, ldwrt = .TRUE., kiolib = jprstdimg ) 85 88 IF( lk_trdmld ) THEN 86 89 clname = TRIM(cexper)//"_"//TRIM(ADJUSTL(clkt))//"_restart_mld" 87 90 IF(lwp) WRITE(numout,*) ' open ocean restart_mld NetCDF file: '//clname 88 CALL iom_open( clname, nummldw, ldwrt = .TRUE. )91 CALL iom_open( clname, nummldw, ldwrt = .TRUE., kiolib = jprstdimg ) 89 92 ENDIF 90 93 lrst_oce = .TRUE. … … 93 96 END SUBROUTINE rst_opn 94 97 95 96 #if ( defined key_mpp_mpi || defined key_mpp_shmem ) && defined key_dimgout97 !!----------------------------------------------------------------------98 !! 'key_mpp_mpi' OR MPI massively parallel processing library99 !! 'key_mpp_shmem' SHMEM massively parallel processing library100 !! AND101 !! 'key_dimgout'102 !!----------------------------------------------------------------------103 !! direct acces file one per processor104 !! (merging/splitting is done off-line, eventually)105 !!-----------------------------------------------------------------------106 # include "restart_dimg.h90"107 108 #else109 !!----------------------------------------------------------------------110 !! Default option NetCDF file111 !!----------------------------------------------------------------------112 98 113 99 SUBROUTINE rst_write( kt ) … … 128 114 WRITE(numout,*) '~~~~~~~~~' 129 115 ENDIF 130 116 131 117 ! calendar control 132 118 CALL iom_rstput( kt, nitrst, numrow, 'kt' , REAL( kt , wp) ) ! time-step 133 119 CALL iom_rstput( kt, nitrst, numrow, 'ndastp' , REAL( ndastp, wp) ) ! date 134 CALL iom_rstput( kt, nitrst, numrow, 'adatrj' , adatrj) ! number of elapsed days since120 CALL iom_rstput( kt, nitrst, numrow, 'adatrj' , adatrj ) ! number of elapsed days since 135 121 ! ! the begining of the run [s] 122 CALL iom_rstput( kt, nitrst, numrow, 'rdt' , rdt ) ! dynamics time step 123 CALL iom_rstput( kt, nitrst, numrow, 'rdttra1', rdttra(1) ) ! surface tracer time step 136 124 137 125 ! prognostic variables … … 148 136 CALL iom_rstput( kt, nitrst, numrow, 'rotn' , rotn ) 149 137 CALL iom_rstput( kt, nitrst, numrow, 'hdivn' , hdivn ) 150 151 # 138 139 #if defined key_ice_lim 152 140 CALL iom_rstput( kt, nitrst, numrow, 'nfice' , REAL( nfice, wp) ) ! ice computation frequency 153 141 CALL iom_rstput( kt, nitrst, numrow, 'sst_io' , sst_io ) … … 155 143 CALL iom_rstput( kt, nitrst, numrow, 'u_io' , u_io ) 156 144 CALL iom_rstput( kt, nitrst, numrow, 'v_io' , v_io ) 157 # 145 # if defined key_coupled 158 146 CALL iom_rstput( kt, nitrst, numrow, 'alb_ice', alb_ice ) 159 # endif160 147 # endif 161 # if defined key_flx_bulk_monthly || defined key_flx_bulk_daily 148 #endif 149 #if defined key_flx_bulk_monthly || defined key_flx_bulk_daily 162 150 CALL iom_rstput( kt, nitrst, numrow, 'nfbulk' , REAL( nfbulk, wp) ) ! bulk computation frequency 163 151 CALL iom_rstput( kt, nitrst, numrow, 'gsst' , gsst ) 164 # endif 152 #endif 153 154 IF( nn_dynhpg_rst == 1 ) THEN 155 CALL iom_rstput( kt, nitrst, numrow, 'rhd' , rhd ) 156 CALL iom_rstput( kt, nitrst, numrow, 'rhop', rhop ) 157 IF( ln_zps ) THEN 158 CALL iom_rstput( kt, nitrst, numrow, 'gtu' , gtu ) 159 CALL iom_rstput( kt, nitrst, numrow, 'gsu' , gsu ) 160 CALL iom_rstput( kt, nitrst, numrow, 'gru' , gru ) 161 CALL iom_rstput( kt, nitrst, numrow, 'gtv' , gtv ) 162 CALL iom_rstput( kt, nitrst, numrow, 'gsv' , gsv ) 163 CALL iom_rstput( kt, nitrst, numrow, 'grv' , grv ) 164 ENDIF 165 ENDIF 165 166 166 167 IF( kt == nitrst ) THEN … … 201 202 !! has been stored in the restart file. 202 203 !!---------------------------------------------------------------------- 203 REAL(wp) :: zcoef, zkt, z ndastp, znfice, znfbulk204 # 204 REAL(wp) :: zcoef, zkt, zrdt, zrdttra1, zndastp, znfice, znfbulk 205 #if defined key_ice_lim 205 206 INTEGER :: ji, jj 206 # 207 #endif 207 208 !!---------------------------------------------------------------------- 208 209 … … 214 215 WRITE(numout,*) ' *** Info on the present job : ' 215 216 WRITE(numout,*) ' time-step : ', nit000 216 !!$ WRITE(numout,*) ' solver type : ', nsolv217 !!$ IF( lk_zdftke ) THEN218 !!$ WRITE(numout,*) ' tke option : 1 '219 !!$ ELSE220 !!$ WRITE(numout,*) ' tke option : 0 '221 !!$ ENDIF222 217 WRITE(numout,*) ' date ndastp : ', ndastp 223 218 WRITE(numout,*) … … 237 232 ENDIF 238 233 239 CALL iom_open( 'restart', numror )! Open234 CALL iom_open( 'restart', numror, kiolib = jprstdimg ) ! Open 240 235 241 236 ! Calendar informations 242 CALL iom_get( numror, 'kt' , zkt ) ! time-step 243 CALL iom_get( numror, 'ndastp', zndastp ) ! date 244 ! Additional contol prints 237 CALL iom_get( numror, 'kt' , zkt ) ! time-step 238 CALL iom_get( numror, 'ndastp' , zndastp ) ! date 245 239 IF(lwp) THEN 246 240 WRITE(numout,*) 247 241 WRITE(numout,*) ' *** Info on the restart file read : ' 248 242 WRITE(numout,*) ' time-step : ', NINT( zkt ) 249 !!$ WRITE(numout,*) ' solver type : ', +++250 !!$ WRITE(numout,*) ' tke option : ', +++251 243 WRITE(numout,*) ' date ndastp : ', NINT( zndastp ) 252 244 WRITE(numout,*) … … 259 251 adatrj0 = ( REAL( nit000-1, wp ) * rdttra(1) ) / rday 260 252 IF ( nrstdt == 2 ) THEN 261 !by default ndatsp has been set to ndate0 in dom_nam262 !ndate0 has been read in the namelist (standard OPA 8)263 !here when nrstdt=2 we keep the final date of previous run253 ! by default ndatsp has been set to ndate0 in dom_nam 254 ! ndate0 has been read in the namelist (standard OPA 8) 255 ! here when nrstdt=2 we keep the final date of previous run 264 256 ndastp = NINT( zndastp ) 265 CALL iom_get( numror, 'adatrj', adatrj ) ! number of elapsed days since the begining of last run 266 ENDIF 267 257 CALL iom_get( numror, 'adatrj', adatrj ) ! number of elapsed days since the begining of last run 258 ENDIF 259 ! Check dynamics and tracer time-step consistency and force Euler restart if changed 260 IF( iom_varid( numror, 'rdt' ) > 0 ) THEN 261 CALL iom_get( numror, 'rdt', zrdt ) 262 IF( zrdt /= rdt ) neuler = 0 263 ENDIF 264 IF( iom_varid( numror, 'rdttra1' ) > 0 ) THEN 265 CALL iom_get( numror, 'rdttra1', zrdttra1 ) 266 IF( zrdttra1 /= rdttra(1) ) neuler = 0 267 ENDIF 268 ! 268 269 ! ! Read prognostic variables 269 270 CALL iom_get( numror, jpdom_local, 'ub' , ub ) ! before i-component velocity … … 292 293 !!sm: TO BE MOVED IN NEW SURFACE MODULE... 293 294 294 # 295 #if defined key_ice_lim 295 296 ! Louvain La Neuve Sea Ice Model 296 297 IF( iom_varid( numror, 'nfice' ) > 0 ) then … … 300 301 CALL iom_get( numror, jpdom_local, 'u_io' , u_io ) 301 302 CALL iom_get( numror, jpdom_local, 'v_io' , v_io ) 302 # if defined key_coupled303 # if defined key_coupled 303 304 CALL iom_get( numror, jpdom_local, 'alb_ice', alb_ice ) 304 # endif305 # endif 305 306 IF( znfice /= REAL( nfice, wp ) ) THEN ! if nfice changed between 2 runs 306 307 zcoef = REAL( nfice-1, wp ) / znfice … … 324 325 END DO 325 326 END DO 326 # 327 # if defined key_coupled 327 328 alb_ice(:,:) = 0.8 * tmask(:,:,1) 328 # endif329 ENDIF330 329 # endif 331 # if defined key_flx_bulk_monthly || defined key_flx_bulk_daily 330 ENDIF 331 #endif 332 #if defined key_flx_bulk_monthly || defined key_flx_bulk_daily 332 333 ! Louvain La Neuve Sea Ice Model 333 334 IF( iom_varid( numror, 'nfbulk' ) > 0 ) THEN … … 344 345 gsst(:,:) = REAL( nfbulk - 1, wp )*( tn(:,:,1) + rt0 ) 345 346 ENDIF 346 # 347 #endif 347 348 348 349 !!sm: end of TO BE MOVED IN NEW SURFACE MODULE... 350 351 IF( iom_varid( numror, 'rhd' ) > 0 ) THEN 352 CALL iom_get( numror, jpdom_local, 'rhd' , rhd ) 353 CALL iom_get( numror, jpdom_local, 'rhop', rhop ) 354 ELSE 355 CALL eos( tb, sb, rhd, rhop ) ! before potential and in situ densities 356 ENDIF 357 IF( ln_zps .AND. .NOT. lk_cfg_1d ) THEN 358 IF( iom_varid( numror, 'gtu' ) > 0 ) THEN 359 CALL iom_get( numror, jpdom_local, 'gtu' , gtu ) 360 CALL iom_get( numror, jpdom_local, 'gsu' , gsu ) 361 CALL iom_get( numror, jpdom_local, 'gru' , gru ) 362 CALL iom_get( numror, jpdom_local, 'gtv' , gtv ) 363 CALL iom_get( numror, jpdom_local, 'gsv' , gsv ) 364 CALL iom_get( numror, jpdom_local, 'grv' , grv ) 365 ELSE 366 CALL zps_hde( nit000, tb , sb , rhd, & ! Partial steps: before Horizontal DErivative 367 & gtu, gsu, gru, & ! of t, s, rd at the bottom ocean level 368 & gtv, gsv, grv ) 369 ENDIF 370 ENDIF 349 371 ! 350 372 END SUBROUTINE rst_read 351 373 352 #endif353 374 354 375 !!=====================================================================
Note: See TracChangeset
for help on using the changeset viewer.