Changeset 1607
- Timestamp:
- 2009-08-12T10:01:24+02:00 (15 years ago)
- Location:
- trunk/NEMO/OPA_SRC
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMO/OPA_SRC/DYN/sshwzv.F90
r1565 r1607 10 10 !! ssh_wzv : after ssh & now vertical velocity 11 11 !! ssh_nxt : filter ans swap the ssh arrays 12 !! ssh_rst : read/write ssh restart fields in the ocean restart file13 12 !!---------------------------------------------------------------------- 14 13 USE oce ! ocean dynamics and tracers variables … … 78 77 IF(lwp) WRITE(numout,*) 'ssh_wzv : after sea surface height and now vertical velocity ' 79 78 IF(lwp) WRITE(numout,*) '~~~~~~~ ' 80 !81 CALL ssh_rst( nit000, 'READ' ) ! read or initialize sshb and sshn82 79 ! 83 80 wn(:,:,jpk) = 0.e0 ! bottom boundary condition: w=0 (set once for all) … … 111 108 112 109 ! !------------------------------! 113 ! ! Update Now Vertical coord. ! 114 ! !------------------------------! 115 IF( lk_vvl ) THEN ! only in vvl case) 116 ! ! now local depth and scale factors (stored in fse3. arrays) 110 IF( lk_vvl ) THEN ! Update Now Vertical coord. ! (only in vvl case) 111 ! !------------------------------! 117 112 DO jk = 1, jpkm1 118 fsdept(:,:,jk) = fsdept_n(:,:,jk) ! depths113 fsdept(:,:,jk) = fsdept_n(:,:,jk) ! now local depths stored in fsdep. arrays 119 114 fsdepw(:,:,jk) = fsdepw_n(:,:,jk) 120 115 fsde3w(:,:,jk) = fsde3w_n(:,:,jk) 121 116 ! 122 fse3t (:,:,jk) = fse3t_n (:,:,jk) ! vertical scale factors117 fse3t (:,:,jk) = fse3t_n (:,:,jk) ! vertical scale factors stored in fse3. arrays 123 118 fse3u (:,:,jk) = fse3u_n (:,:,jk) 124 119 fse3v (:,:,jk) = fse3v_n (:,:,jk) … … 128 123 fse3vw(:,:,jk) = fse3vw_n(:,:,jk) 129 124 END DO 130 ! ! ocean depth (at u- and v-points)125 ! ! now ocean depth (at u- and v-points) 131 126 hu(:,:) = hu_0(:,:) + sshu_n(:,:) 132 127 hv(:,:) = hv_0(:,:) + sshv_n(:,:) 133 ! ! masked inverse of the ocean depth (at u- and v-points)128 ! ! now masked inverse of the ocean depth (at u- and v-points) 134 129 hur(:,:) = umask(:,:,1) / ( hu(:,:) + 1.e0 - umask(:,:,1) ) 135 130 hvr(:,:) = vmask(:,:,1) / ( hv(:,:) + 1.e0 - vmask(:,:,1) ) … … 142 137 ! set time step size (Euler/Leapfrog) 143 138 z2dt = 2. * rdt 144 IF( neuler == 0 .AND. kt == nit000 ) z2dt =rdt139 IF( neuler == 0 .AND. kt == nit000 ) z2dt =rdt 145 140 146 141 zraur = 1. / rauw … … 178 173 & * ( e1t(ji,jj ) * e2t(ji,jj ) * ssha(ji,jj ) & 179 174 & + e1t(ji,jj+1) * e2t(ji,jj+1) * ssha(ji,jj+1) ) 180 sshf_a(ji,jj) = 0.25 * umask(ji,jj,1) * umask (ji,jj+1,1) & ! Caution : fmask not used175 sshf_a(ji,jj) = 0.25 * umask(ji,jj,1) * umask (ji,jj+1,1) & 181 176 & * ( ssha(ji ,jj) + ssha(ji ,jj+1) & 182 177 & + ssha(ji+1,jj) + ssha(ji+1,jj+1) ) … … 198 193 END DO 199 194 ! 200 CALL iom_put( "woce", wn ) ! vert . current195 CALL iom_put( "woce", wn ) ! vertical velocity 201 196 CALL iom_put( "ssh" , sshn ) ! sea surface height 202 197 ! … … 270 265 ! 271 266 ENDIF 272 273 ! ! write filtered free surface arrays in restart file274 IF( lrst_oce ) CALL ssh_rst( kt, 'WRITE' )275 267 ! 276 268 IF(ln_ctl) CALL prt_ctl(tab2d_1=sshb , clinfo1=' sshb - : ', mask1=tmask, ovlap=1 ) 277 269 ! 278 270 END SUBROUTINE ssh_nxt 279 280 281 SUBROUTINE ssh_rst( kt, cdrw )282 !!---------------------------------------------------------------------283 !! *** ROUTINE ssh_rst ***284 !!285 !! ** Purpose : Read or write Sea Surface Height arrays in restart file286 !!287 !! ** action : - cdrw = READ : sshb, sshn read in ocean restart file288 !! - cdrw = WRITE : sshb, sshn written in ocean restart file289 !!----------------------------------------------------------------------290 INTEGER , INTENT(in) :: kt ! ocean time-step291 CHARACTER(len=*), INTENT(in) :: cdrw ! "READ"/"WRITE" flag292 !!----------------------------------------------------------------------293 !294 IF( TRIM(cdrw) == 'READ' ) THEN295 IF( iom_varid( numror, 'sshn', ldstop = .FALSE. ) > 0 ) THEN296 CALL iom_get( numror, jpdom_autoglo, 'sshb' , sshb(:,:) )297 CALL iom_get( numror, jpdom_autoglo, 'sshn' , sshn(:,:) )298 IF( neuler == 0 ) sshb(:,:) = sshn(:,:)299 ELSE300 IF( nn_rstssh == 1 ) THEN301 sshb(:,:) = 0.e0302 sshn(:,:) = 0.e0303 ENDIF304 ENDIF305 ELSEIF( TRIM(cdrw) == 'WRITE' ) THEN306 CALL iom_rstput( kt, nitrst, numrow, 'sshb' , sshb(:,:) )307 CALL iom_rstput( kt, nitrst, numrow, 'sshn' , sshn(:,:) )308 ENDIF309 !310 END SUBROUTINE ssh_rst311 271 312 272 !!====================================================================== -
trunk/NEMO/OPA_SRC/restart.F90
r1545 r1607 112 112 !!---------------------------------------------------------------------- 113 113 114 ! ! the begining of the run [s] 115 CALL iom_rstput( kt, nitrst, numrow, 'rdt' , rdt ) ! dynamics time step 116 CALL iom_rstput( kt, nitrst, numrow, 'rdttra1', rdttra(1) ) ! surface tracer time step 117 118 ! prognostic variables 119 CALL iom_rstput( kt, nitrst, numrow, 'ub' , ub ) 114 CALL iom_rstput( kt, nitrst, numrow, 'rdt' , rdt ) ! dynamics time step 115 CALL iom_rstput( kt, nitrst, numrow, 'rdttra1', rdttra(1) ) ! surface tracer time step 116 117 CALL iom_rstput( kt, nitrst, numrow, 'ub' , ub ) ! before fields 120 118 CALL iom_rstput( kt, nitrst, numrow, 'vb' , vb ) 121 119 CALL iom_rstput( kt, nitrst, numrow, 'tb' , tb ) … … 123 121 CALL iom_rstput( kt, nitrst, numrow, 'rotb' , rotb ) 124 122 CALL iom_rstput( kt, nitrst, numrow, 'hdivb' , hdivb ) 125 CALL iom_rstput( kt, nitrst, numrow, 'un' , un ) 123 CALL iom_rstput( kt, nitrst, numrow, 'sshb' , sshb ) 124 ! 125 CALL iom_rstput( kt, nitrst, numrow, 'un' , un ) ! now fields 126 126 CALL iom_rstput( kt, nitrst, numrow, 'vn' , vn ) 127 127 CALL iom_rstput( kt, nitrst, numrow, 'tn' , tn ) … … 129 129 CALL iom_rstput( kt, nitrst, numrow, 'rotn' , rotn ) 130 130 CALL iom_rstput( kt, nitrst, numrow, 'hdivn' , hdivn ) 131 CALL iom_rstput( kt, nitrst, numrow, 'sshn' , sshn ) 131 132 132 133 CALL iom_rstput( kt, nitrst, numrow, 'rhop' , rhop ) … … 182 183 IF( zrdttra1 /= rdttra(1) ) neuler = 0 183 184 ENDIF 184 ! ! Read prognostic variables 185 CALL iom_get( numror, jpdom_autoglo, 'ub' , ub ) ! before i-component velocity 186 CALL iom_get( numror, jpdom_autoglo, 'vb' , vb ) ! before j-component velocity 187 CALL iom_get( numror, jpdom_autoglo, 'tb' , tb ) ! before temperature 188 CALL iom_get( numror, jpdom_autoglo, 'sb' , sb ) ! before salinity 189 CALL iom_get( numror, jpdom_autoglo, 'rotb' , rotb ) ! before curl 190 CALL iom_get( numror, jpdom_autoglo, 'hdivb', hdivb ) ! before horizontal divergence 191 CALL iom_get( numror, jpdom_autoglo, 'un' , un ) ! now i-component velocity 192 CALL iom_get( numror, jpdom_autoglo, 'vn' , vn ) ! now j-component velocity 193 CALL iom_get( numror, jpdom_autoglo, 'tn' , tn ) ! now temperature 194 CALL iom_get( numror, jpdom_autoglo, 'sn' , sn ) ! now salinity 195 CALL iom_get( numror, jpdom_autoglo, 'rotn' , rotn ) ! now curl 196 CALL iom_get( numror, jpdom_autoglo, 'hdivn', hdivn ) ! now horizontal divergence 185 ! 186 CALL iom_get( numror, jpdom_autoglo, 'ub' , ub ) ! before fields 187 CALL iom_get( numror, jpdom_autoglo, 'vb' , vb ) 188 CALL iom_get( numror, jpdom_autoglo, 'tb' , tb ) 189 CALL iom_get( numror, jpdom_autoglo, 'sb' , sb ) 190 CALL iom_get( numror, jpdom_autoglo, 'rotb' , rotb ) 191 CALL iom_get( numror, jpdom_autoglo, 'hdivb', hdivb ) 192 CALL iom_get( numror, jpdom_autoglo, 'sshb' , sshb ) 193 ! 194 CALL iom_get( numror, jpdom_autoglo, 'un' , un ) ! now fields 195 CALL iom_get( numror, jpdom_autoglo, 'vn' , vn ) 196 CALL iom_get( numror, jpdom_autoglo, 'tn' , tn ) 197 CALL iom_get( numror, jpdom_autoglo, 'sn' , sn ) 198 CALL iom_get( numror, jpdom_autoglo, 'rotn' , rotn ) 199 CALL iom_get( numror, jpdom_autoglo, 'hdivn', hdivn ) 200 CALL iom_get( numror, jpdom_autoglo, 'sshn' , sshn ) 197 201 198 202 CALL iom_get( numror, jpdom_autoglo, 'rhop' , rhop ) ! now potential density … … 206 210 207 211 IF( neuler == 0 ) THEN ! Euler restart (neuler=0) 208 tb (:,:,:) = tn (:,:,:) ! all before fields set to now fieldvalues212 tb (:,:,:) = tn (:,:,:) ! all before fields set to now values 209 213 sb (:,:,:) = sn (:,:,:) 210 214 ub (:,:,:) = un (:,:,:) … … 212 216 rotb (:,:,:) = rotn (:,:,:) 213 217 hdivb(:,:,:) = hdivn(:,:,:) 218 sshb (:,:) = sshn (:,:) 214 219 ENDIF 215 220 ! 216 221 END SUBROUTINE rst_read 217 218 222 219 223 !!=====================================================================
Note: See TracChangeset
for help on using the changeset viewer.