Changeset 6736 for branches/NERC/dev_r3874_FASTNEt/NEMOGCM/NEMO/OPA_SRC/DYN
- Timestamp:
- 2016-06-24T09:50:27+02:00 (8 years ago)
- Location:
- branches/NERC/dev_r3874_FASTNEt/NEMOGCM/NEMO/OPA_SRC/DYN
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/NERC/dev_r3874_FASTNEt/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf_bilap.F90
r3634 r6736 144 144 145 145 ! Multiply by the eddy viscosity coef. (at u- and v-points) 146 zlu(:,:,jk) = zlu(:,:,jk) * ( fsahmu(:,:,jk) * (1-nkahm_smag) + nkahm_smag) 147 148 zlv(:,:,jk) = zlv(:,:,jk) * ( fsahmv(:,:,jk) * (1-nkahm_smag) + nkahm_smag) 146 zlu(:,:,jk) = zlu(:,:,jk) * fsahmu(:,:,jk) 147 zlv(:,:,jk) = zlv(:,:,jk) * fsahmv(:,:,jk) 149 148 150 149 ! Contravariant "laplacian" … … 201 200 & + ( zut(ji,jj+1,jk) - zut(ji ,jj,jk) ) / e2v(ji,jj) 202 201 ! add it to the general momentum trends 203 ua(ji,jj,jk) = ua(ji,jj,jk) + zua * ( fsahmu(ji,jj,jk)*nkahm_smag +(1 -nkahm_smag ))204 va(ji,jj,jk) = va(ji,jj,jk) + zva * ( fsahmv(ji,jj,jk)*nkahm_smag +(1 -nkahm_smag ))202 ua(ji,jj,jk) = ua(ji,jj,jk) + zua 203 va(ji,jj,jk) = va(ji,jj,jk) + zva 205 204 END DO 206 205 END DO -
branches/NERC/dev_r3874_FASTNEt/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf_bilapg.F90
r3634 r6736 414 414 ! II.3 Divergence of vertical fluxes added to the horizontal divergence 415 415 ! --------------------------------------------------------------------- 416 IF( (kahm -nkahm_smag) ==1 ) THEN 416 417 IF( kahm == 1 ) THEN 417 418 ! multiply the laplacian by the eddy viscosity coefficient 418 419 DO jk = 1, jpkm1 … … 429 430 END DO 430 431 END DO 431 ELSEIF( (kahm +nkahm_smag )== 2 ) THEN432 ELSEIF( kahm == 2 ) THEN 432 433 ! second call, no multiplication 433 434 DO jk = 1, jpkm1 -
branches/NERC/dev_r3874_FASTNEt/NEMOGCM/NEMO/OPA_SRC/DYN/dynnxt.F90
r3764 r6736 215 215 ! ! ================! 216 216 ! 217 #if ! defined key_jth_fix 217 218 DO jk = 1, jpkm1 ! Before scale factor at t-points 218 219 fse3t_b(:,:,jk) = fse3t_n(:,:,jk) & … … 220 221 & - 2._wp * fse3t_n(:,:,jk) ) 221 222 END DO 223 #endif 222 224 zec = atfp * rdt / rau0 ! Add filter correction only at the 1st level of t-point scale factors 225 #if ! defined key_jth_fix 223 226 fse3t_b(:,:,1) = fse3t_b(:,:,1) - zec * ( emp_b(:,:) - emp(:,:) ) * tmask(:,:,1) 227 #endif 224 228 ! 225 229 IF( ln_dynadv_vec ) THEN ! vector invariant form (no thickness weighted calulation) 226 230 ! 227 231 ! ! before scale factors at u- & v-pts (computed from fse3t_b) 232 #if ! defined key_jth_fix 228 233 CALL dom_vvl_2( kt, fse3u_b(:,:,:), fse3v_b(:,:,:) ) 234 #endif 229 235 ! 230 236 DO jk = 1, jpkm1 ! Leap-Frog - Asselin filter and swap: applied on velocity … … 244 250 ELSE ! flux form (thickness weighted calulation) 245 251 ! 252 #if ! defined key_jth_fix 246 253 CALL dom_vvl_2( kt, ze3u_f, ze3v_f ) ! before scale factors at u- & v-pts (computed from fse3t_b) 254 #endif 247 255 ! 248 256 DO jk = 1, jpkm1 ! Leap-Frog - Asselin filter and swap: … … 266 274 END DO 267 275 END DO 276 #if ! defined key_jth_fix 268 277 fse3u_b(:,:,1:jpkm1) = ze3u_f(:,:,1:jpkm1) ! e3u_b <-- filtered scale factor 269 278 fse3v_b(:,:,1:jpkm1) = ze3v_f(:,:,1:jpkm1) 279 #endif 280 CALL lbc_lnk( ub, 'U', -1. ) ! lateral boundary conditions 281 CALL lbc_lnk( vb, 'V', -1. ) 270 282 ENDIF 271 283 ! -
branches/NERC/dev_r3874_FASTNEt/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg.F90
r3625 r6736 81 81 ! 82 82 INTEGER :: ji, jj, jk ! dummy loop indices 83 REAL(wp) :: z2dt, zg_2 , zintp, zgrau0r! temporary scalar83 REAL(wp) :: z2dt, zg_2 ! temporary scalar 84 84 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrdu, ztrdv 85 REAL(wp), POINTER, DIMENSION(:,:) :: zpice86 85 !!---------------------------------------------------------------------- 87 86 ! … … 118 117 END DO 119 118 END DO 120 ENDIF121 122 IF( nn_ice_embd == 2 ) THEN !== embedded sea ice: Pressure gradient due to snow-ice mass ==!123 CALL wrk_alloc( jpi, jpj, zpice )124 !125 zintp = REAL( MOD( kt-1, nn_fsbc ) ) / REAL( nn_fsbc )126 zgrau0r = - grav * r1_rau0127 zpice(:,:) = ( zintp * snwice_mass(:,:) + ( 1.- zintp ) * snwice_mass_b(:,:) ) * zgrau0r128 DO jj = 2, jpjm1129 DO ji = fs_2, fs_jpim1 ! vector opt.130 spgu(ji,jj) = ( zpice(ji+1,jj) - zpice(ji,jj) ) / e1u(ji,jj)131 spgv(ji,jj) = ( zpice(ji,jj+1) - zpice(ji,jj) ) / e2v(ji,jj)132 END DO133 END DO134 DO jk = 1, jpkm1 ! Add the surface pressure trend to the general trend135 DO jj = 2, jpjm1136 DO ji = fs_2, fs_jpim1 ! vector opt.137 ua(ji,jj,jk) = ua(ji,jj,jk) + spgu(ji,jj)138 va(ji,jj,jk) = va(ji,jj,jk) + spgv(ji,jj)139 END DO140 END DO141 END DO142 !143 CALL wrk_dealloc( jpi, jpj, zpice )144 119 ENDIF 145 120 -
branches/NERC/dev_r3874_FASTNEt/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_exp.F90
r3680 r6736 27 27 USE prtctl ! Print control 28 28 USE iom ! I/O library 29 USE restart ! only for lrst_oce 29 30 USE timing ! Timing 30 31 -
branches/NERC/dev_r3874_FASTNEt/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_flt.F90
r3765 r6736 45 45 USE prtctl ! Print control 46 46 USE iom 47 USE restart ! only for lrst_oce 47 48 USE lib_fortran 48 49 #if defined key_agrif … … 188 189 #if defined key_obc 189 190 IF( lk_obc ) CALL obc_dyn( kt ) ! Update velocities on each open boundary with the radiation algorithm 190 IF( lk_obc )CALL obc_vol( kt ) ! Correction of the barotropic componant velocity to control the volume of the system191 IF( lk_obc) CALL obc_vol( kt ) ! Correction of the barotropic componant velocity to control the volume of the system 191 192 #endif 192 193 #if defined key_bdy … … 255 256 END DO 256 257 ! applied the lateral boundary conditions 257 IF( nn_solv == 2 .AND. MAX( jpr2di, jpr2dj ) > 0 ) CALL lbc_lnk_e( gcb, c_solver_pt, 1. , jpr2di, jpr2dj)258 IF( nn_solv == 2 .AND. MAX( jpr2di, jpr2dj ) > 0 ) CALL lbc_lnk_e( gcb, c_solver_pt, 1. ) 258 259 259 260 #if defined key_agrif … … 307 308 ! multiplied by z2dt 308 309 #if defined key_obc 309 IF(lk_obc) THEN310 310 ! caution : grad D = 0 along open boundaries 311 311 ! Remark: The filtering force could be reduced here in the FRS zone 312 312 ! by multiplying spgu/spgv by (1-alpha) ?? 313 spgu(ji,jj) = z2dt * ztdgu * obcumask(ji,jj) 314 spgv(ji,jj) = z2dt * ztdgv * obcvmask(ji,jj) 315 ELSE 316 spgu(ji,jj) = z2dt * ztdgu 317 spgv(ji,jj) = z2dt * ztdgv 318 ENDIF 313 spgu(ji,jj) = z2dt * ztdgu * obcumask(ji,jj) 314 spgv(ji,jj) = z2dt * ztdgv * obcvmask(ji,jj) 319 315 #elif defined key_bdy 320 IF(lk_bdy) THEN321 316 ! caution : grad D = 0 along open boundaries 322 spgu(ji,jj) = z2dt * ztdgu * bdyumask(ji,jj) 323 spgv(ji,jj) = z2dt * ztdgv * bdyvmask(ji,jj) 324 ELSE 325 spgu(ji,jj) = z2dt * ztdgu 326 spgv(ji,jj) = z2dt * ztdgv 327 ENDIF 317 spgu(ji,jj) = z2dt * ztdgu * bdyumask(ji,jj) 318 spgv(ji,jj) = z2dt * ztdgv * bdyvmask(ji,jj) 328 319 #else 329 320 spgu(ji,jj) = z2dt * ztdgu -
branches/NERC/dev_r3874_FASTNEt/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_ts.F90
r3680 r6736 41 41 USE in_out_manager ! I/O manager 42 42 USE iom ! IOM library 43 USE restart ! only for lrst_oce 43 44 USE zdf_oce ! Vertical diffusion 44 45 USE wrk_nemo ! Memory Allocation … … 402 403 IF( lk_obc ) CALL obc_dta_bt ( kt, jn ) 403 404 IF( lk_bdy ) CALL bdy_dta ( kt, jit=jn, time_offset=+1 ) 404 IF ( ln_tide_pot .AND. lk_tide) CALL upd_tide( kt, jn )405 IF ( ln_tide_pot ) CALL upd_tide( kt, jn ) 405 406 406 407 ! !* after ssh_e … … 452 453 ENDIF 453 454 ! add tidal astronomical forcing 454 IF ( ln_tide_pot .AND. lk_tide) THEN455 IF ( ln_tide_pot ) THEN 455 456 zu_spg = zu_spg + grav * ( pot_astro(ji+1,jj) - pot_astro(ji,jj) ) / e1u(ji,jj) 456 457 zv_spg = zv_spg + grav * ( pot_astro(ji,jj+1) - pot_astro(ji,jj) ) / e2v(ji,jj) … … 502 503 ENDIF 503 504 ! add tidal astronomical forcing 504 IF ( ln_tide_pot .AND. lk_tide) THEN505 IF ( ln_tide_pot ) THEN 505 506 zu_spg = zu_spg + grav * ( pot_astro(ji+1,jj) - pot_astro(ji,jj) ) / e1u(ji,jj) 506 507 zv_spg = zv_spg + grav * ( pot_astro(ji,jj+1) - pot_astro(ji,jj) ) / e2v(ji,jj) … … 549 550 ENDIF 550 551 ! add tidal astronomical forcing 551 IF ( ln_tide_pot .AND. lk_tide) THEN552 IF ( ln_tide_pot ) THEN 552 553 zu_spg = zu_spg + grav * ( pot_astro(ji+1,jj) - pot_astro(ji,jj) ) / e1u(ji,jj) 553 554 zv_spg = zv_spg + grav * ( pot_astro(ji,jj+1) - pot_astro(ji,jj) ) / e2v(ji,jj) -
branches/NERC/dev_r3874_FASTNEt/NEMOGCM/NEMO/OPA_SRC/DYN/dynzdf_exp.F90
r3625 r6736 61 61 ! 62 62 INTEGER :: ji, jj, jk, jl ! dummy loop indices 63 REAL(wp) :: z lavmr, zua, zva ! local scalars63 REAL(wp) :: zrau0r, zlavmr, zua, zva ! local scalars 64 64 REAL(wp), POINTER, DIMENSION(:,:,:) :: zwx, zwy, zwz, zww 65 65 !!---------------------------------------------------------------------- … … 75 75 ENDIF 76 76 77 zrau0r = 1. / rau0 ! Local constant initialization 77 78 zlavmr = 1. / REAL( nn_zdfexp ) 78 79 … … 80 81 DO jj = 2, jpjm1 ! Surface boundary condition 81 82 DO ji = 2, jpim1 82 zwy(ji,jj,1) = ( utau_b(ji,jj) + utau(ji,jj) ) * r1_rau083 zww(ji,jj,1) = ( vtau_b(ji,jj) + vtau(ji,jj) ) * r1_rau083 zwy(ji,jj,1) = ( utau_b(ji,jj) + utau(ji,jj) ) * zrau0r 84 zww(ji,jj,1) = ( vtau_b(ji,jj) + vtau(ji,jj) ) * zrau0r 84 85 END DO 85 86 END DO -
branches/NERC/dev_r3874_FASTNEt/NEMOGCM/NEMO/OPA_SRC/DYN/dynzdf_imp.F90
r3625 r6736 161 161 DO ji = fs_2, fs_jpim1 ! vector opt. 162 162 ua(ji,jj,1) = ub(ji,jj,1) + p2dt * ( ua(ji,jj,1) + 0.5_wp * ( utau_b(ji,jj) + utau(ji,jj) ) & 163 & * r1_rau0 / fse3u(ji,jj,1))163 & / ( fse3u(ji,jj,1) * rau0 ) ) 164 164 END DO 165 165 END DO … … 247 247 DO ji = fs_2, fs_jpim1 ! vector opt. 248 248 va(ji,jj,1) = vb(ji,jj,1) + p2dt * ( va(ji,jj,1) + 0.5_wp * ( vtau_b(ji,jj) + vtau(ji,jj) ) & 249 & * r1_rau0 / fse3v(ji,jj,1))249 & / ( fse3v(ji,jj,1) * rau0 ) ) 250 250 END DO 251 251 END DO -
branches/NERC/dev_r3874_FASTNEt/NEMOGCM/NEMO/OPA_SRC/DYN/sshwzv.F90
r3764 r6736 20 20 USE divcur ! hor. divergence and curl (div & cur routines) 21 21 USE iom ! I/O library 22 USE restart ! only for lrst_oce 22 23 USE in_out_manager ! I/O manager 23 24 USE prtctl ! Print control
Note: See TracChangeset
for help on using the changeset viewer.