Changeset 1481 for trunk/NEMO/OPA_SRC/restart.F90
- Timestamp:
- 2009-07-03T17:07:08+02:00 (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMO/OPA_SRC/restart.F90
r1473 r1481 23 23 USE zpshde ! partial step: hor. derivative (zps_hde routine) 24 24 USE eosbn2 ! equation of state (eos bn2 routine) 25 USE zdfddm ! double diffusion mixing 26 USE zdfmxl ! mixed layer depth 25 27 USE trdmld_oce ! ocean active mixed layer tracers trends variables 26 #if defined key_zdftke227 USE zdf_oce28 #endif29 28 30 29 IMPLICIT NONE … … 67 66 lrst_oce = .FALSE. 68 67 nitrst = nitend 69 #if defined key_zdftke270 nitrst_tke2 = nitrst + 171 #endif72 68 ENDIF 73 69 IF( MOD( kt - 1, nstock ) == 0 ) THEN … … 76 72 IF( nitrst > nitend ) nitrst = nitend ! make sure we write a restart at the end of the run 77 73 ENDIF 78 #if defined key_zdftke279 IF ( nitrst_tke2 .NE. kt ) nitrst_tke2 = nitrst + 180 #endif81 74 ! to get better performances with NetCDF format: 82 75 ! we open and define the ocean restart file one time step before writing the data (-> at nitrst - 1) … … 119 112 !!---------------------------------------------------------------------- 120 113 121 #if defined key_zdftke2122 IF( kt == nitrst_tke2 ) THEN123 CALL iom_close( numrow ) ! close the restart file (only at last time step)124 IF( .NOT. lk_trdmld ) lrst_oce = .FALSE.125 ELSE126 #endif127 114 ! ! the begining of the run [s] 128 115 CALL iom_rstput( kt, nitrst, numrow, 'rdt' , rdt ) ! dynamics time step … … 138 125 CALL iom_rstput( kt, nitrst, numrow, 'un' , un ) 139 126 CALL iom_rstput( kt, nitrst, numrow, 'vn' , vn ) 140 IF( lk_vvl ) CALL iom_rstput( kt, nitrst, numrow, 'wn' , wn )141 127 CALL iom_rstput( kt, nitrst, numrow, 'tn' , tn ) 142 128 CALL iom_rstput( kt, nitrst, numrow, 'sn' , sn ) 143 129 CALL iom_rstput( kt, nitrst, numrow, 'rotn' , rotn ) 144 130 CALL iom_rstput( kt, nitrst, numrow, 'hdivn' , hdivn ) 145 CALL iom_rstput( kt, nitrst, numrow, 'rn2' , rn2 ) 146 147 #if defined key_zdftke2 148 CALL iom_rstput( kt, nitrst, numrow, 'rhop' , rhop ) 149 #endif 150 IF( nn_dynhpg_rst == 1 .OR. lk_vvl ) THEN 151 CALL iom_rstput( kt, nitrst, numrow, 'rhd' , rhd ) 152 #if defined key_zdftke2 153 CALL iom_rstput( kt, nitrst, numrow, 'avt' , avt ) 154 ENDIF 155 #else 156 CALL iom_rstput( kt, nitrst, numrow, 'rhop', rhop ) 157 #endif 158 IF( ln_zps ) THEN 159 CALL iom_rstput( kt, nitrst, numrow, 'gtu' , gtu ) 160 CALL iom_rstput( kt, nitrst, numrow, 'gsu' , gsu ) 161 CALL iom_rstput( kt, nitrst, numrow, 'gru' , gru ) 162 CALL iom_rstput( kt, nitrst, numrow, 'gtv' , gtv ) 163 CALL iom_rstput( kt, nitrst, numrow, 'gsv' , gsv ) 164 CALL iom_rstput( kt, nitrst, numrow, 'grv' , grv ) 165 ENDIF 166 ENDIF 167 #if ! defined key_zdftke2 131 132 CALL iom_rstput( kt, nitrst, numrow, 'rhop' , rhop ) 133 134 IF( lk_zdfddm ) CALL iom_rstput( kt, nitrst, numrow, 'rrau' , rrau ) 135 168 136 IF( kt == nitrst ) THEN 169 137 CALL iom_close( numrow ) ! close the restart file (only at last time step) 170 138 IF( .NOT. lk_trdmld ) lrst_oce = .FALSE. 171 139 ENDIF 172 #endif173 140 ! 174 141 END SUBROUTINE rst_write … … 232 199 CALL iom_get( numror, jpdom_autoglo, 'un' , un ) ! now i-component velocity 233 200 CALL iom_get( numror, jpdom_autoglo, 'vn' , vn ) ! now j-component velocity 234 IF( lk_vvl ) CALL iom_get( numror, jpdom_autoglo, 'wn' , wn ) ! now k-component velocity235 201 CALL iom_get( numror, jpdom_autoglo, 'tn' , tn ) ! now temperature 236 202 CALL iom_get( numror, jpdom_autoglo, 'sn' , sn ) ! now salinity … … 238 204 CALL iom_get( numror, jpdom_autoglo, 'hdivn', hdivn ) ! now horizontal divergence 239 205 206 CALL iom_get( numror, jpdom_autoglo, 'rhop', rhop ) ! now mixed layer depth 207 208 IF( lk_zdfddm ) THEN 209 IF( iom_varid( numror, 'rrau', ldstop = .FALSE. ) > 0 ) THEN 210 CALL iom_get( numror, jpdom_autoglo, 'rrau' , rrau ) 211 ELSE 212 CALL eos_init ! read equation state type neos parameter 213 CALL eos( tb, sb, rhd, rhop ) ! compute rrau 214 ENDIF 215 ENDIF 240 216 241 217 IF( neuler == 0 ) THEN ! Euler restart (neuler=0) … … 247 223 hdivb(:,:,:) = hdivn(:,:,:) 248 224 ENDIF 249 CALL eos_init ! usefull to get the equation state type neos parameter250 IF( iom_varid( numror, 'rn2', ldstop = .FALSE. ) > 0 ) THEN251 CALL iom_get( numror, jpdom_autoglo, 'rn2' , rn2 )252 ELSE253 CALL bn2( tb, sb, rn2 ) ! before Brunt-Vaisala frequency254 ENDIF255 256 #if defined key_zdftke2257 CALL eos( tb, sb, rhd, rhop ) ! before potential and in situ densities258 IF( iom_varid( numror, 'rhd', ldstop = .FALSE. ) > 0 ) THEN259 CALL iom_get( numror, jpdom_autoglo, 'rhd' , rhd )260 ENDIF261 IF( iom_varid( numror, 'rhop', ldstop = .FALSE. ) > 0 ) THEN262 CALL iom_get( numror, jpdom_autoglo, 'rhop', rhop )263 ENDIF264 #else265 IF( iom_varid( numror, 'rhd', ldstop = .FALSE. ) > 0 ) THEN266 CALL iom_get( numror, jpdom_autoglo, 'rhd' , rhd )267 CALL iom_get( numror, jpdom_autoglo, 'rhop', rhop )268 ELSE269 CALL eos( tb, sb, rhd, rhop ) ! before potential and in situ densities270 ENDIF271 #endif272 #if defined key_zdftke2273 IF( iom_varid( numror, 'avt', ldstop = .FALSE. ) > 0 ) THEN274 CALL iom_get( numror, jpdom_autoglo, 'avt' , avt )275 ELSE276 IF ( ln_dynhpg_imp ) avt (:,:,:) = 1.2e-5 * tmask(:,:,:)277 ENDIF278 #endif279 280 IF( ln_zps .AND. .NOT. lk_c1d ) THEN281 IF( iom_varid( numror, 'gtu', ldstop = .FALSE. ) > 0 ) THEN282 CALL iom_get( numror, jpdom_autoglo, 'gtu' , gtu )283 CALL iom_get( numror, jpdom_autoglo, 'gsu' , gsu )284 CALL iom_get( numror, jpdom_autoglo, 'gru' , gru )285 CALL iom_get( numror, jpdom_autoglo, 'gtv' , gtv )286 CALL iom_get( numror, jpdom_autoglo, 'gsv' , gsv )287 CALL iom_get( numror, jpdom_autoglo, 'grv' , grv )288 ELSE289 CALL zps_hde( nit000, tb , sb , rhd, & ! Partial steps: before Horizontal DErivative290 & gtu, gsu, gru, & ! of t, s, rd at the bottom ocean level291 & gtv, gsv, grv )292 ENDIF293 ENDIF294 225 ! 295 226 END SUBROUTINE rst_read
Note: See TracChangeset
for help on using the changeset viewer.