Changeset 10874 for NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/step.F90
- Timestamp:
- 2019-04-15T15:57:37+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/step.F90
r10829 r10874 44 44 45 45 PUBLIC stp ! called by nemogcm.F90 46 PUBLIC update_pointers ! called by nemo_init47 46 48 47 !!---------------------------------------------------------------------- … … 132 131 133 132 ! VERTICAL PHYSICS 134 CALL zdf_phy( kstp , Nm1, Nnn, Nm1_2lev, Nnn_2lev )! vertical physics update (top/bot drag, avt, avs, avm + MLD)133 CALL zdf_phy( kstp ) ! vertical physics update (top/bot drag, avt, avs, avm + MLD) 135 134 136 135 ! LATERAL PHYSICS … … 178 177 !!jc: fs simplification 179 178 180 u u(:,:,:,Nrhs) = 0._wp ! set dynamics trends to zero181 v v(:,:,:,Nrhs) = 0._wp179 ua(:,:,:) = 0._wp ! set dynamics trends to zero 180 va(:,:,:) = 0._wp 182 181 183 182 IF( lk_asminc .AND. ln_asmiau .AND. ln_dyninc ) & … … 188 187 & CALL Agrif_Sponge_dyn ! momentum sponge 189 188 #endif 190 CALL dyn_adv ( kstp , Nm1, Nnn, uu(:,:,:,Nrhs), vv(:,:,:,Nrhs)) ! advection (vector or flux form)191 CALL dyn_vor ( kstp , Nnn, uu(:,:,:,Nrhs), vv(:,:,:,Nrhs)) ! vorticity term including Coriolis192 CALL dyn_ldf ( kstp , Nm1, Nnn, uu(:,:,:,Nrhs), vv(:,:,:,Nrhs)) ! lateral mixing189 CALL dyn_adv ( kstp ) ! advection (vector or flux form) 190 CALL dyn_vor ( kstp ) ! vorticity term including Coriolis 191 CALL dyn_ldf ( kstp ) ! lateral mixing 193 192 IF( ln_zdfosm ) CALL dyn_osm ( kstp ) ! OSMOSIS non-local velocity fluxes 194 193 CALL dyn_hpg ( kstp ) ! horizontal gradient of Hydrostatic pressure … … 203 202 ENDIF 204 203 205 CALL dyn_zdf ( kstp , Nm1, Nnn, Np1, Nnn_2lev, uu(:,:,:,Np1), vv(:,:,:,Np1)) ! vertical diffusion204 CALL dyn_zdf ( kstp ) ! vertical diffusion 206 205 207 206 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> … … 233 232 ! Active tracers 234 233 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 235 ts (:,:,:,:,Nrhs) = 0._wp ! set tracer trends to zero234 tsa(:,:,:,:) = 0._wp ! set tracer trends to zero 236 235 237 236 IF( lk_asminc .AND. ln_asmiau .AND. & 238 237 & ln_trainc ) CALL tra_asm_inc ( kstp ) ! apply tracer assimilation increment 239 CALL tra_sbc ( kstp , Nnn, ts(:,:,:,:,Nrhs)) ! surface boundary condition240 IF( ln_traqsr ) CALL tra_qsr ( kstp , Nnn, Nnn_2lev, ts(:,:,:,:,Nrhs)) ! penetrative solar radiation qsr241 IF( ln_trabbc ) CALL tra_bbc ( kstp , Nnn, ts(:,:,:,:,Nrhs)) ! bottom heat flux242 IF( ln_trabbl ) CALL tra_bbl ( kstp , Nm1, Nnn, Nnn_2lev, ts(:,:,:,:,Nrhs)) ! advective (and/or diffusive) bottom boundary layer scheme243 IF( ln_tradmp ) CALL tra_dmp ( kstp , Nm1, Nnn_2lev, ts(:,:,:,:,Nrhs)) ! internal damping trends238 CALL tra_sbc ( kstp ) ! surface boundary condition 239 IF( ln_traqsr ) CALL tra_qsr ( kstp ) ! penetrative solar radiation qsr 240 IF( ln_trabbc ) CALL tra_bbc ( kstp ) ! bottom heat flux 241 IF( ln_trabbl ) CALL tra_bbl ( kstp ) ! advective (and/or diffusive) bottom boundary layer scheme 242 IF( ln_tradmp ) CALL tra_dmp ( kstp ) ! internal damping trends 244 243 IF( ln_bdy ) CALL bdy_tra_dmp ( kstp ) ! bdy damping trends 245 244 #if defined key_agrif … … 247 246 & CALL Agrif_Sponge_tra ! tracers sponge 248 247 #endif 249 CALL tra_adv ( kstp , Nm1, Nnn, Np1, Nnn_2lev, ts(:,:,:,:,Nrhs)) ! horizontal & vertical advection248 CALL tra_adv ( kstp ) ! horizontal & vertical advection 250 249 IF( ln_zdfosm ) CALL tra_osm ( kstp ) ! OSMOSIS non-local tracer fluxes 251 250 IF( lrst_oce .AND. ln_zdfosm ) & 252 251 & CALL osm_rst( kstp, 'WRITE' )! write OSMOSIS outputs + wn (so must do here) to restarts 253 CALL tra_ldf ( kstp , Nm1, Nnn, Nnn_2lev, ts(:,:,:,:,Nrhs)) ! lateral mixing252 CALL tra_ldf ( kstp ) ! lateral mixing 254 253 255 254 !!gm : why CALL to dia_ptr has been moved here??? (use trends info?) 256 255 IF( ln_diaptr ) CALL dia_ptr ! Poleward adv/ldf TRansports diagnostics 257 256 !!gm 258 CALL tra_zdf ( kstp , Nm1, Nnn, Np1, Nnn_2lev, ts(:,:,:,:,Np1)) ! vertical mixing and after tracer fields257 CALL tra_zdf ( kstp ) ! vertical mixing and after tracer fields 259 258 IF( ln_zdfnpc ) CALL tra_npc ( kstp ) ! update after fields by non-penetrative convection 260 259 … … 277 276 !!jc2: dynnxt must be the latest call. e3t_b are indeed updated in that routine 278 277 CALL tra_nxt ( kstp ) ! finalize (bcs) tracer fields at next time step and swap 279 CALL dyn_nxt ( kstp ) ! 278 CALL dyn_nxt ( kstp ) ! finalize (bcs) velocities at next time step and swap (always called after tra_nxt) 280 279 CALL ssh_swp ( kstp ) ! swap of sea surface height 281 IF(.NOT.ln_linssh) CALL dom_vvl_sf_swp( kstp ) ! interpolate vertical scale factors for Nnn time level280 IF(.NOT.ln_linssh) CALL dom_vvl_sf_swp( kstp ) ! swap of vertical scale factors 282 281 ! 283 282 IF( ln_diahsb ) CALL dia_hsb ( kstp ) ! - ML - global conservation diagnostics … … 330 329 END SUBROUTINE stp 331 330 332 SUBROUTINE update_pointers333 !!----------------------------------------------------------------------334 !! *** ROUTINE update_pointers ***335 !!336 !! ** Purpose : Associate temporary pointer arrays.337 !! For IMMERSE development phase only - to be deleted338 !!339 !! ** Method :340 !!----------------------------------------------------------------------341 342 ub => uu(:,:,:,Nm1); un => uu(:,:,:,Nnn); ua => uu(:,:,:,Np1)343 vb => vv(:,:,:,Nm1); vn => vv(:,:,:,Nnn); va => vv(:,:,:,Np1)344 wn => ww(:,:,:)345 hdivn => hdiv(:,:,:)346 rab_b => r_ab (:,:,:,:,Nm1_2lev); rab_n => r_ab (:,:,:,:,Nnn_2lev)347 rn2b => r_n2 (:,:,:,Nm1_2lev) ; rn2 => r_n2 (:,:,:,Nnn_2lev)348 349 tsb => ts(:,:,:,:,Nm1); tsn => ts(:,:,:,:,Nnn); tsa => ts(:,:,:,:,Np1)350 351 e3t_b => e3t(:,:,:,Nm1); e3t_n => e3t(:,:,:,Nnn); e3t_a => e3t(:,:,:,Np1)352 e3u_b => e3u(:,:,:,Nm1); e3u_n => e3u(:,:,:,Nnn); e3u_a => e3u(:,:,:,Np1)353 e3v_b => e3v(:,:,:,Nm1); e3v_n => e3v(:,:,:,Nnn); e3v_a => e3v(:,:,:,Np1)354 355 e3f_n => e3f(:,:,:)356 357 e3w_b => e3w (:,:,:,Nm1_2lev); e3w_n => e3w (:,:,:,Nnn_2lev)358 e3uw_b => e3uw(:,:,:,Nm1_2lev); e3uw_n => e3uw(:,:,:,Nnn_2lev)359 e3vw_b => e3vw(:,:,:,Nm1_2lev); e3vw_n => e3vw(:,:,:,Nnn_2lev)360 361 gdept_b => gdept(:,:,:,Nm1_2lev); gdept_n => gdept(:,:,:,Nnn_2lev)362 gdepw_b => gdepw(:,:,:,Nm1_2lev); gdepw_n => gdepw(:,:,:,Nnn_2lev)363 gde3w_n => gde3w(:,:,:)364 365 END SUBROUTINE update_pointers366 367 331 !!====================================================================== 368 332 END MODULE step
Note: See TracChangeset
for help on using the changeset viewer.