Changeset 11394 for branches/UKMO/dev_r5518_GO6_package_FOAMv14_STOPACK/NEMOGCM/NEMO/OPA_SRC/step.F90
- Timestamp:
- 2019-08-02T15:14:02+02:00 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/dev_r5518_GO6_package_FOAMv14_STOPACK/NEMOGCM/NEMO/OPA_SRC/step.F90
r9288 r11394 118 118 CALL lbc_lnk( tsb(:,:,:,tind), 'T', 1. ) 119 119 END DO 120 120 121 IF( ln_stopack ) CALL stopack_pert( kstp ) 121 122 CALL sbc ( kstp ) ! Sea Boundary Condition (including sea-ice) 122 123 ! clem: moved here for bdy ice purpose 124 123 125 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 124 126 ! Update stochastic parameters and random T/S fluctuations 125 127 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 126 IF( ln_sto_eos ) CALL sto_par( kstp ) ! Stochastic parameters 127 IF( ln_sto_eos ) CALL sto_pts( tsn ) ! Random T/S fluctuations 128 129 IF( ln_sto_eos ) CALL sto_par( kstp ) ! Stochastic parameters 130 IF( ln_sto_eos ) CALL sto_pts( tsn ) ! Random T/S fluctuations 131 IF( ln_skeb ) CALL skeb_comp( kstp ) 128 132 129 133 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> … … 149 153 ENDIF 150 154 IF( ln_rnf_mouth ) THEN ! increase diffusivity at rivers mouths 151 DO jk = 2, nkrnf ; avt(:,:,jk) = avt(:,:,jk) + 2.e0 * rn_avt_rnf * rnfmsk(:,:) * tmask(:,:,jk) ; END DO 155 IF ( nn_spp_arnf .GT. 0 ) THEN 156 rn_avt_rnf0 = rn_avt_rnf 157 CALL spp_gen( kstp, rn_avt_rnf0,nn_spp_arnf,rn_arnf_sd,jk_spp_arnf ) 158 ENDIF 159 DO jk = 2, nkrnf ; avt(:,:,jk) = avt(:,:,jk) + 2.e0 * rn_avt_rnf0(:,:) * rnfmsk(:,:) * tmask(:,:,jk) ; END DO 152 160 ENDIF 153 161 IF( ln_zdfevd ) CALL zdf_evd( kstp ) ! enhanced vertical eddy diffusivity … … 163 171 IF( lrst_oce .AND. lk_zdftke ) CALL tke_rst( kstp, 'WRITE' ) 164 172 IF( lrst_oce .AND. lk_zdfgls ) CALL gls_rst( kstp, 'WRITE' ) 173 IF( lrst_oce .AND. ln_stopack) CALL stopack_rst( kstp, 'WRITE' ) 165 174 ! 166 175 ! LATERAL PHYSICS 167 176 ! 168 177 IF( lk_ldfslp ) THEN ! slope of lateral mixing 169 CALL eos( tsb, rhd, gdept_0(:,:,:) ) ! before in situ density 178 IF(ln_sto_eos ) CALL sto_pts( tsn ) ! Random T/S fluctuations 179 CALL eos( tsb, rhd, gdept_0(:,:,:) ) ! before in situ density 170 180 IF( ln_zps .AND. .NOT. ln_isfcav) & 171 181 & CALL zps_hde ( kstp, jpts, tsb, gtsu, gtsv, & ! Partial steps: before horizontal gradient … … 202 212 ! Note that the computation of vertical velocity above, hence "after" sea level 203 213 ! is necessary to compute momentum advection for the rhs of barotropic loop: 204 CALL eos ( tsn, rhd, rhop, fsdept_n(:,:,:) ) ! now in situ density for hpg computation 214 IF(ln_sto_eos ) CALL sto_pts( tsn ) ! Random T/S fluctuations 215 CALL eos ( tsn, rhd, rhop, fsdept_n(:,:,:) ) ! now in situ density for hpg computation 205 216 IF( ln_zps .AND. .NOT. ln_isfcav) & 206 217 & CALL zps_hde ( kstp, jpts, tsn, gtsu, gtsv, & ! Partial steps: before horizontal gradient … … 214 225 va(:,:,:) = 0.e0 215 226 IF( lk_asminc .AND. ln_asmiau .AND. & 216 & ln_dyninc ) CALL dyn_asm_inc ( kstp ) ! apply dynamics assimilation increment 217 IF( ln_neptsimp ) CALL dyn_nept_cor ( kstp ) ! subtract Neptune velocities (simplified) 218 IF( lk_bdy ) CALL bdy_dyn3d_dmp( kstp ) ! bdy damping trends 219 CALL dyn_adv ( kstp ) ! advection (vector or flux form) 220 CALL dyn_vor ( kstp ) ! vorticity term including Coriolis 221 CALL dyn_ldf ( kstp ) ! lateral mixing 222 IF( ln_neptsimp ) CALL dyn_nept_cor ( kstp ) ! add Neptune velocities (simplified) 227 & ln_dyninc ) CALL dyn_asm_inc ( kstp ) ! apply dynamics assimilation increment 228 IF( ln_sppt_dyn ) CALL dyn_sppt_apply( kstp, 0 ) 229 IF( ln_neptsimp ) CALL dyn_nept_cor ( kstp ) ! subtract Neptune velocities (simplified) 230 IF( lk_bdy ) CALL bdy_dyn3d_dmp ( kstp ) ! bdy damping trends 231 CALL dyn_adv ( kstp ) ! advection (vector or flux form) 232 CALL dyn_vor ( kstp ) ! vorticity term including Coriolis 233 CALL dyn_ldf ( kstp ) ! lateral mixing 234 IF( ln_neptsimp ) CALL dyn_nept_cor ( kstp ) ! add Neptune velocities (simplified) 223 235 #if defined key_agrif 224 236 IF(.NOT. Agrif_Root()) CALL Agrif_Sponge_dyn ! momentum sponge … … 262 274 tsa(:,:,:,:) = 0.e0 ! set tracer trends to zero 263 275 264 IF( lk_asminc .AND. ln_asmiau .AND. & 265 & ln_trainc ) CALL tra_asm_inc( kstp ) ! apply tracer assimilation increment 276 IF( ln_sppt_tra ) CALL tra_sppt_apply ( kstp, 0 ) 277 IF( lk_asminc .AND. ln_asmiau .AND. & 278 & ln_trainc ) CALL tra_asm_inc( kstp ) ! apply tracer assimilation increment 266 279 CALL tra_sbc ( kstp ) ! surface boundary condition 267 280 IF( ln_traqsr ) CALL tra_qsr ( kstp ) ! penetrative solar radiation qsr … … 280 293 IF(.NOT. Agrif_Root()) CALL Agrif_Sponge_tra ! tracers sponge 281 294 #endif 295 IF( ln_sppt_tra ) CALL tra_sppt_apply ( kstp, 1 ) 282 296 CALL tra_zdf ( kstp ) ! vertical mixing and after tracer fields 283 297 … … 285 299 IF( ln_zdfnpc ) CALL tra_npc( kstp ) ! update after fields by non-penetrative convection 286 300 CALL tra_nxt( kstp ) ! tracer fields at next time step 301 IF( ln_sppt_tra ) CALL tra_sppt_apply ( kstp, 2 ) 287 302 CALL eos ( tsa, rhd, rhop, fsdept_n(:,:,:) ) ! Time-filtered in situ density for hpg computation 288 303 IF( ln_zps .AND. .NOT. ln_isfcav) & … … 308 323 CALL tra_nxt( kstp ) ! tracer fields at next time step 309 324 IF( ln_bias ) CALL dyn_bias( kstp ) 325 IF( ln_sppt_tra ) THEN 326 CALL tra_sppt_apply ( kstp, 2 ) 327 CALL eos ( tsn, rhd, rhop, fsdept_n(:,:,:) ) ! now in situ density for hpg computation 328 IF( ln_zps .AND. .NOT. ln_isfcav) & 329 & CALL zps_hde ( kstp, jpts, tsn, gtsu, gtsv, & ! Partial steps: before horizontal gradient 330 & rhd, gru , grv ) ! of t, s, rd at the last ocean level 331 IF( ln_zps .AND. ln_isfcav) & 332 & CALL zps_hde_isf( kstp, jpts, tsn, gtsu, gtsv, & ! Partial steps for top cell (ISF) 333 & rhd, gru , grv , aru , arv , gzu , gzv , ge3ru , ge3rv , & 334 & gtui, gtvi, grui, grvi, arui, arvi, gzui, gzvi, ge3rui, ge3rvi ) ! of t, s, rd at the last ocean level 335 ENDIF 310 336 ENDIF 311 337 … … 324 350 325 351 CALL dyn_bfr( kstp ) ! bottom friction 352 IF( ln_sppt_dyn ) CALL dyn_sppt_apply ( kstp, 1 ) 326 353 CALL dyn_zdf( kstp ) ! vertical diffusion 327 354 ELSE … … 331 358 IF( lk_asminc .AND. ln_asmiau .AND. & 332 359 & ln_dyninc ) CALL dyn_asm_inc( kstp ) ! apply dynamics assimilation increment 360 IF( ln_sppt_dyn ) CALL dyn_sppt_apply ( kstp, 0 ) 333 361 IF( ln_bkgwri ) CALL asm_bkg_wri( kstp ) ! output background fields 334 362 IF( ln_neptsimp ) CALL dyn_nept_cor( kstp ) ! subtract Neptune velocities (simplified) … … 343 371 CALL dyn_hpg( kstp ) ! horizontal gradient of Hydrostatic pressure 344 372 CALL dyn_bfr( kstp ) ! bottom friction 373 IF( ln_sppt_dyn ) CALL dyn_sppt_apply ( kstp, 1 ) 345 374 CALL dyn_zdf( kstp ) ! vertical diffusion 346 375 CALL dyn_spg( kstp, indic ) ! surface pressure gradient 347 376 ENDIF 348 377 CALL dyn_nxt( kstp ) ! lateral velocity at next time step 378 IF( ln_sppt_dyn ) CALL dyn_sppt_apply ( kstp, 2 ) 379 IF( ln_skeb ) CALL skeb_apply ( kstp ) 349 380 350 381 CALL ssh_swp( kstp ) ! swap of sea surface height … … 381 412 IF( lwm.AND.numoni /= -1 ) CALL FLUSH ( numoni ) ! flush output namelist ice 382 413 ENDIF 414 IF( ln_sto_eos ) CALL sto_rst_write( kstp ) ! write restart file for stochastic parameters 383 415 384 416
Note: See TracChangeset
for help on using the changeset viewer.