Changeset 14618
- Timestamp:
- 2021-03-19T15:42:32+01:00 (3 years ago)
- Location:
- NEMO/branches/2021/dev_r14318_RK3_stage1/src/OCE
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2021/dev_r14318_RK3_stage1/src/OCE/DIA/diahsb.F90
r14072 r14618 94 94 ! ------------------------- ! 95 95 z_frc_trd_v = r1_rho0 * glob_sum( 'diahsb', - ( emp(:,:) - rnf(:,:) + fwfisf_cav(:,:) + fwfisf_par(:,:) ) * surf(:,:) ) ! volume fluxes 96 #if defined key_RK3 97 CALL ctl_stop( 'dia_hsb: not yet instrumented for RK3' ) 98 #else 96 99 z_frc_trd_t = glob_sum( 'diahsb', sbc_tsc(:,:,jp_tem) * surf(:,:) ) ! heat fluxes 97 100 z_frc_trd_s = glob_sum( 'diahsb', sbc_tsc(:,:,jp_sal) * surf(:,:) ) ! salt fluxes 101 #endif 98 102 ! ! Add runoff heat & salt input 99 103 IF( ln_rnf ) z_frc_trd_t = z_frc_trd_t + glob_sum( 'diahsb', rnf_tsc(:,:,jp_tem) * surf(:,:) ) -
NEMO/branches/2021/dev_r14318_RK3_stage1/src/OCE/DYN/sshwzv.F90
r14547 r14618 216 216 ! & - e3t(:,:,jk,Kbb) ) ) * tmask(:,:,jk) 217 217 !!gm slightly faster : 218 #if defined key_qco 218 219 pww(:,:,jk) = pww(:,:,jk+1) - ( e3t(:,:,jk,Kmm) * hdiv(:,:,jk) & 219 220 & + r1_Dt * e3t_0(:,:,jk) * ( r3t(:,:,Kaa) - r3t(:,:,Kbb) ) ) * tmask(:,:,jk) 220 !!gm end 221 #else 222 pww(:,:,jk) = pww(:,:,jk+1) - ( e3t(:,:,jk,Kmm) * hdiv(:,:,jk) & 223 & + r1_Dt * ( e3t(:,:,jk,Kaa) & 224 & - e3t(:,:,jk,Kbb) ) ) * tmask(:,:,jk) 225 #endif 226 !!gm end !!st need to be there when not using qco 221 227 222 228 -
NEMO/branches/2021/dev_r14318_RK3_stage1/src/OCE/TRA/traatf_qco.F90
r14072 r14618 2 2 !!====================================================================== 3 3 !! *** MODULE traatf_qco *** 4 !! Ocean active tracers: Asselin time filtering for temperature and salinity4 !! Ocean active tracers: MLF, Asselin time filtering for temperature and salinity 5 5 !!====================================================================== 6 6 !! History : OPA ! 1991-11 (G. Madec) Original code … … 17 17 !! 3.3 ! 2010-04 (M. Leclair, G. Madec) semi-implicit hpg with asselin filter + modified LF-RA 18 18 !! - ! 2010-05 (C. Ethe, G. Madec) merge TRC-TRA 19 !! 4.1 ! 2019-08 (A. Coward, D. Storkey) rename tranxt.F90 -> traatfLF.F90. Now only does time filtering. 20 !!---------------------------------------------------------------------- 21 19 !! 4.1 ! 2019-08 (A. Coward, D. Storkey) rename tranxt.F90 -> traatf.F90. Now only does time filtering. 20 !! 4.2 ! 2020-06 (S. Techene, G. Madec) qco version of traatf.F90 21 !!---------------------------------------------------------------------- 22 #if defined key_RK3 23 !!---------------------------------------------------------------------- 24 !! 'key_RK3' EMPTY MODULE 3rd order Runge-Kutta 25 !!---------------------------------------------------------------------- 26 #else 22 27 !!---------------------------------------------------------------------- 23 28 !! tra_atf : time filtering on tracers … … 25 30 !! tra_atf_vvl : time filtering on tracers : variable volume case 26 31 !!---------------------------------------------------------------------- 27 USE oce 28 USE dom_oce 29 USE sbc_oce 30 USE sbcrnf 31 USE isf_oce 32 USE zdf_oce 33 USE domvvl 34 USE trd_oce 35 USE trdtra 36 USE traqsr 37 USE phycst 38 USE ldftra 39 USE ldfslp 40 USE bdy_oce , ONLY 41 USE bdytra 32 USE oce ! ocean dynamics and tracers variables 33 USE dom_oce ! ocean space and time domain variables 34 USE sbc_oce ! surface boundary condition: ocean 35 USE sbcrnf ! river runoffs 36 USE isf_oce ! ice shelf melting 37 USE zdf_oce ! ocean vertical mixing 38 USE domvvl ! variable volume 39 USE trd_oce ! trends: ocean variables 40 USE trdtra ! trends manager: tracers 41 USE traqsr ! penetrative solar radiation (needed for nksr) 42 USE phycst ! physical constant 43 USE ldftra ! lateral physics : tracers 44 USE ldfslp ! lateral physics : slopes 45 USE bdy_oce , ONLY: ln_bdy 46 USE bdytra ! open boundary condition (bdy_tra routine) 42 47 ! 43 USE in_out_manager 44 USE lbclnk 45 USE prtctl 46 USE timing 48 USE in_out_manager ! I/O manager 49 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 50 USE prtctl ! Print control 51 USE timing ! Timing 47 52 48 53 IMPLICIT NONE … … 365 370 ! 366 371 END SUBROUTINE tra_atf_qco_lf 367 372 #endif 373 368 374 !!====================================================================== 369 375 END MODULE traatf_qco -
NEMO/branches/2021/dev_r14318_RK3_stage1/src/OCE/TRA/traqsr.F90
r14215 r14618 77 77 CONTAINS 78 78 79 SUBROUTINE tra_qsr( kt, Kmm, pts, Krhs )79 SUBROUTINE tra_qsr( kt, Kmm, pts, Krhs, kstg ) 80 80 !!---------------------------------------------------------------------- 81 81 !! *** ROUTINE tra_qsr *** … … 103 103 !! Morel, A. et Berthon, JF, 1989, Limnol Oceanogr 34(8), 1545-1562 104 104 !!---------------------------------------------------------------------- 105 INTEGER, INTENT(in ) :: kt ! ocean time-step106 INTEGER, INTENT(in ) :: Kmm, Krhs ! time level indices107 REAL(wp), DIMENSION(jpi,jpj,jpk,jpts,jpt), INTENT(inout) :: pts ! active tracers and RHS of tracer equation105 INTEGER, INTENT(in ) :: kt, Kmm, Krhs ! ocean time-step and time level indices 106 REAL(wp), DIMENSION(jpi,jpj,jpk,jpts,jpt), INTENT(inout) :: pts ! active tracers and RHS of tracer equation 107 INTEGER , OPTIONAL , INTENT(in ) :: kstg ! RK3 stage index 108 108 ! 109 109 INTEGER :: ji, jj, jk ! dummy loop indices 110 110 INTEGER :: irgb, isi, iei, isj, iej ! local integers 111 INTEGER :: istg_1, istg_3 ! - - 111 112 REAL(wp) :: zchl, zcoef, z1_2 ! local scalars 112 REAL(wp) :: zc0 , zc1 , zc2 , zc3 ! --113 REAL(wp) :: zzc0, zzc1, zzc2, zzc3 ! --114 REAL(wp) :: zz0 , zz1 , ze3t, zlui ! --113 REAL(wp) :: zc0 , zc1 , zc2 , zc3 ! - - 114 REAL(wp) :: zzc0, zzc1, zzc2, zzc3 ! - - 115 REAL(wp) :: zz0 , zz1 , ze3t, zlui ! - - 115 116 REAL(wp) :: zCb, zCmax, zpsi, zpsimax, zrdpsi, zCze 116 117 REAL(wp) :: zlogc, zlogze, zlogCtot, zlogCze 117 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: ze0, ze1, ze2, ze3118 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: ztrdt, zetot, ztmp3d118 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: ze0, ze1, ze2, ze3 119 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: ztrdt, zetot, ztmp3d 119 120 !!---------------------------------------------------------------------- 120 121 ! 121 122 IF( ln_timing ) CALL timing_start('tra_qsr') 123 ! 124 IF( PRESENT( kstg ) ) THEN ! RK3 : a few things have to be done at only a specific stage 125 istg_1 = kstg ; istg_3 = kstg 126 ELSE ! MLF : only one call by time step 127 istg_1 = 1 ; istg_3 = 3 128 ENDIF 122 129 ! 123 130 IF( ntile == 0 .OR. ntile == 1 ) THEN ! Do only on the first tile … … 142 149 IF( ntej == Nje0 ) THEN ; iej = nn_hls ; ELSE ; iej = 0 ; ENDIF 143 150 144 IF( kt == nit000 ) THEN !== 1st time step ==!151 IF( kt == nit000 .AND. istg_1 == 1 ) THEN !== 1st time step ==! (RK3: only at stage 1) 145 152 IF( ln_rstart .AND. .NOT.l_1st_euler ) THEN ! read in restart 146 153 z1_2 = 0.5_wp … … 155 162 END_3D 156 163 ENDIF 157 ELSE 164 ELSEIF( istg_3 == 3 ) THEN !== Swap of qsr heat content ==! 158 165 z1_2 = 0.5_wp 159 166 DO_3D( isi, iei, isj, iej, 1, jpk ) … … 207 214 ze3(ji,jj) = EXP( - zc3 ) ! ze3 = 1/zze 208 215 END_2D 209 210 ! 216 ! 211 217 DO_3D( isi, iei, isj, iej, 1, nksr + 1 ) 212 218 ! zchl = ALOG( ze0(ji,jj) ) -
NEMO/branches/2021/dev_r14318_RK3_stage1/src/OCE/TRA/trasbc.F90
r14215 r14618 51 51 CONTAINS 52 52 53 SUBROUTINE tra_sbc ( kt, Kmm, pts, Krhs )53 SUBROUTINE tra_sbc ( kt, Kmm, pts, Krhs, kstg ) 54 54 !!---------------------------------------------------------------------- 55 55 !! *** ROUTINE tra_sbc *** … … 72 72 !! - send trends to trdtra module for further diagnostics(l_trdtra=T) 73 73 !!---------------------------------------------------------------------- 74 INTEGER, INTENT(in ) :: kt ! ocean time-step index75 INTEGER, INTENT(in ) :: Kmm, Krhs ! time level indices76 REAL(wp), DIMENSION(jpi,jpj,jpk,jpts,jpt), INTENT(inout) :: pts ! active tracers and RHS of tracer Eq.74 INTEGER, INTENT(in ) :: kt, Kmm, Krhs ! ocean time-step and time-level indices 75 REAL(wp), DIMENSION(jpi,jpj,jpk,jpts,jpt), INTENT(inout) :: pts ! active tracers and RHS of tracer Eq. 76 INTEGER , OPTIONAL , INTENT(in ) :: kstg ! RK3 stage index 77 77 ! 78 78 INTEGER :: ji, jj, jk, jn ! dummy loop indices 79 INTEGER :: ikt, ikb, isi, iei, isj, iej ! local integers 79 INTEGER :: istg_1, istg_3 ! local integers 80 INTEGER :: ikt, ikb, isi, iei, isj, iej ! - - 80 81 REAL(wp) :: zfact, z1_e3t, zdep, ztim ! local scalar 81 82 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: ztrdt, ztrds … … 83 84 ! 84 85 IF( ln_timing ) CALL timing_start('tra_sbc') 86 ! 87 IF( PRESENT( kstg ) ) THEN ! RK3 : a few things have to be done at only a specific stage 88 istg_1 = kstg ; istg_3 = kstg 89 ELSE ! MLF : only one call by time step 90 istg_1 = 1 ; istg_3 = 3 91 ENDIF 85 92 ! 86 93 IF( ntile == 0 .OR. ntile == 1 ) THEN ! Do only on the first tile … … 104 111 105 112 !!gm This should be moved into sbcmod.F90 module ? (especially now that ln_traqsr is read in namsbc namelist) 106 IF( .NOT.ln_traqsr ) THEN ! no solar radiation penetration113 IF( .NOT.ln_traqsr .AND. istg_1 == 1 ) THEN ! no solar radiation penetration (RK3: only at stage 1) 107 114 DO_2D( isi, iei, isj, iej ) 108 qns(ji,jj) = qns(ji,jj) + qsr(ji,jj) ! total heat flux in qns109 qsr(ji,jj) = 0._wp ! qsr set to zero115 qns(ji,jj) = qns(ji,jj) + qsr(ji,jj) ! total heat flux in qns 116 qsr(ji,jj) = 0._wp ! qsr set to zero 110 117 END_2D 111 118 ENDIF … … 115 122 !---------------------------------------- 116 123 ! !== Set before sbc tracer content fields ==! 117 IF( kt == nit000 ) THEN !* 1st time-step124 IF( kt == nit000 .AND. istg_1 == 1 ) THEN !* 1st time-step 118 125 IF( ln_rstart .AND. .NOT.l_1st_euler ) THEN ! Restart: read in restart file 119 126 zfact = 0.5_wp … … 131 138 END_2D 132 139 ENDIF 133 ELSE !* other time-steps: swap of forcing fields140 ELSEIF( istg_3 == 3 ) THEN !* other time-steps: swap of forcing fields (RK3: only at stage 3) 134 141 zfact = 0.5_wp 135 142 DO_2D( isi, iei, isj, iej ) -
NEMO/branches/2021/dev_r14318_RK3_stage1/src/OCE/stpmlf.F90
r14547 r14618 35 35 !! 4.x ! 2020-08 (S. Techene, G. Madec) quasi eulerian coordinate time stepping 36 36 !!---------------------------------------------------------------------- 37 #if defined key_qco || defined key_linssh 37 #if ! defined key_RK3 38 # if defined key_qco || defined key_linssh 38 39 !!---------------------------------------------------------------------- 39 40 !! 'key_qco' Quasi-Eulerian vertical coordinate … … 527 528 END SUBROUTINE finalize_lbc 528 529 529 # else530 # else 530 531 !!---------------------------------------------------------------------- 531 532 !! default option EMPTY MODULE qco not activated 532 533 !!---------------------------------------------------------------------- 534 # endif 533 535 #endif 534 536 -
NEMO/branches/2021/dev_r14318_RK3_stage1/src/OCE/stprk3.F90
r14548 r14618 210 210 211 211 !==>>> at Nbb no more Nnn 212 212 213 213 IF( ln_diacfl ) CALL dia_cfl ( kstp, Nbb ) ! Courant number diagnostics 214 214 CALL dia_hth ( kstp, Nbb ) ! Thermocline depth (20 degres isotherm depth) 215 215 IF( ln_diadct ) CALL dia_dct ( kstp, Nbb ) ! Transports 216 CALL dia_ar5 ( kstp, Nbb ) ! ar5 diag216 !!st CALL dia_ar5 ( kstp, Nbb ) ! ar5 diag 217 217 CALL dia_ptr ( kstp, Nbb ) ! Poleward adv/ldf TRansports diagnostics 218 218 CALL dia_wri ( kstp, Nbb ) ! ocean model: outputs … … 245 245 ! Control 246 246 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 247 CALL stp_ctl ( kstp, Nnn ) 248 247 CALL stp_ctl ( kstp, Nbb ) 249 248 #if defined key_agrif 250 249 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> … … 282 281 ENDIF 283 282 #endif 284 !285 IF( l_1st_euler ) THEN ! recover Leap-frog timestep286 rDt = 2._wp * rn_Dt287 r1_Dt = 1._wp / rDt288 l_1st_euler = .FALSE.289 ENDIF290 283 ! 291 284 IF( ln_timing ) CALL timing_stop('stp_RK3') -
NEMO/branches/2021/dev_r14318_RK3_stage1/src/OCE/stprk3_stg.F90
r14549 r14618 72 72 ! 73 73 INTEGER :: ji, jj, jk, jtile ! dummy loop indices 74 REAL(wp) :: ze3 Ub, ze3Vb, ze3Tb, ze3Sb, z1_e3t ! local scalars75 REAL(wp) :: ze3 Ur, ze3Vr, ze3Tr, ze3Sr ! - -74 REAL(wp) :: ze3Tb, ze3Sb, z1_e3t ! local scalars 75 REAL(wp) :: ze3Tr, ze3Sr ! - - 76 76 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zaU, zaV ! advective horizontal velocity 77 77 REAL(wp), DIMENSION(jpi,jpj) :: zub, zvb ! advective transport … … 211 211 CALL tra_adv( kstp, Kbb, Kmm, ts, Krhs, zaU, zaV, ww ) ! hor. + vert. advection ==> RHS 212 212 213 214 213 !===>>>>>> stg1&2: Verify the necessity of these trends (we may need it as there are in the RHS of dynspg_ts ?) 215 214 !!gm ====>>>> needed for heat and salt fluxes associated with mass/volume flux 216 ! CALL tra_sbc( kstp, Kmm, ts, Krhs ) ! surface boundary condition 217 ! IF( ln_isf ) CALL tra_isf( kstp, Kmm, ts, Krhs ) ! ice shelf heat flux 215 CALL tra_sbc( kstp, Kmm, ts, Krhs ) ! surface boundary condition 216 217 IF( ln_isf ) CALL tra_isf( kstp, Kmm, ts, Krhs ) ! ice shelf heat flux 218 IF( ln_traqsr ) CALL tra_qsr( kstp, Kmm, ts, Krhs ) ! penetrative solar radiation qsr 218 219 !!gm 219 220 … … 221 222 !!gm ===>>>>>> Verify the necessity of these trends at stages 1 and 2 222 223 ! (we may need it as they are in the RHS of dynspg_ts ?) 223 IF( lk_asminc .AND. ln_asmiau ) THEN ! apply assimilation increment224 IF( ln_dyninc ) CALL dyn_asm_inc( kstp, Kbb, Kmm, uu, vv, Krhs ) ! dynamics ==> RHS225 IF( ln_trainc ) CALL tra_asm_inc( kstp, Kbb, Kmm, ts , Krhs ) ! tracers ==> RHS226 ENDIF224 ! IF( lk_asminc .AND. ln_asmiau ) THEN ! apply assimilation increment 225 ! IF( ln_dyninc ) CALL dyn_asm_inc( kstp, Kbb, Kmm, uu, vv, Krhs ) ! dynamics ==> RHS 226 ! IF( ln_trainc ) CALL tra_asm_inc( kstp, Kbb, Kmm, ts , Krhs ) ! tracers ==> RHS 227 ! ENDIF 227 228 !!gm end Verif 228 229 … … 234 235 ! 235 236 ! !== time integration ==! ∆t = rn_Dt/3 (stg1) or rn_Dt/2 (stg2) 237 IF( ln_dynadv_vec .OR. ln_linssh ) THEN ! applied on velocity 238 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 239 uu(ji,jj,jk,Kaa) = ( uu(ji,jj,jk,Kbb) + rDt * uu(ji,jj,jk,Krhs) ) * umask(ji,jj,jk) 240 vv(ji,jj,jk,Kaa) = ( vv(ji,jj,jk,Kbb) + rDt * vv(ji,jj,jk,Krhs) ) * vmask(ji,jj,jk) 241 END_3D 242 ELSE ! applied on thickness weighted velocity 243 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 244 uu(ji,jj,jk,Kaa) = ( e3u(ji,jj,jk,Kbb) * uu(ji,jj,jk,Kbb ) & 245 & + rDt * e3u(ji,jj,jk,Kmm) * uu(ji,jj,jk,Krhs) ) & 246 & / e3u(ji,jj,jk,Kaa) * umask(ji,jj,jk) 247 vv(ji,jj,jk,Kaa) = ( e3v(ji,jj,jk,Kbb) * vv(ji,jj,jk,Kbb ) & 248 & + rDt * e3v(ji,jj,jk,Kmm) * vv(ji,jj,jk,Krhs) ) & 249 & / e3v(ji,jj,jk,Kaa) * vmask(ji,jj,jk) 250 END_3D 251 ENDIF 252 ! 236 253 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 237 ze3Ub = e3u(ji,jj,jk,Kbb) * uu(ji,jj,jk,Kbb )238 ze3Vb = e3v(ji,jj,jk,Kbb) * vv(ji,jj,jk,Kbb )239 ze3Ur = e3u(ji,jj,jk,Kmm) * uu(ji,jj,jk,Krhs)240 ze3Vr = e3v(ji,jj,jk,Kmm) * vv(ji,jj,jk,Krhs)241 uu(ji,jj,jk,Kaa) = ( ze3Ub + rDt * ze3Ur*umask(ji,jj,jk) ) / e3u(ji,jj,jk, Kaa)242 vv(ji,jj,jk,Kaa) = ( ze3Vb + rDt * ze3Vr*vmask(ji,jj,jk) ) / e3v(ji,jj,jk, Kaa)243 !244 254 ze3Tb = e3t(ji,jj,jk,Kbb) * ts(ji,jj,jk,jp_tem,Kbb ) 245 255 ze3Sb = e3t(ji,jj,jk,Kbb) * ts(ji,jj,jk,jp_sal,Kbb ) … … 291 301 ! 292 302 CALL tra_ldf( kstp, Kbb, Kmm, ts, Krhs ) ! lateral mixing 293 !!gm ====>>>> needed for heat and salt fluxes associated with mass/volume flux294 CALL tra_sbc( kstp, Kmm, ts, Krhs ) ! surface boundary condition295 IF( ln_isf ) CALL tra_isf( kstp, Kmm, ts, Krhs ) ! ice shelf heat flux303 !!gm ====>>>> already called in stage 1, 2 and 3 case 304 !!st CALL tra_sbc( kstp, Kmm, ts, Krhs ) ! surface boundary condition 305 !!st IF( ln_isf ) CALL tra_isf( kstp, Kmm, ts, Krhs ) ! ice shelf heat flux 296 306 !!gm 297 307 ! 298 IF( ln_traqsr ) CALL tra_qsr( kstp, Kmm, ts, Krhs ) ! penetrative solar radiation qsr308 !!st IF( ln_traqsr ) CALL tra_qsr( kstp, Kmm, ts, Krhs ) ! penetrative solar radiation qsr 299 309 IF( ln_trabbc ) CALL tra_bbc( kstp, Kmm, ts, Krhs ) ! bottom heat flux 300 310 IF( ln_trabbl ) CALL tra_bbl( kstp, Kbb, Kmm, ts, Krhs ) ! advective (and/or diffusive) bottom boundary layer scheme … … 320 330 ! 321 331 END SELECT 322 323 332 ! !== correction of the barotropic (all stages) ==! at Kaa = N+1/3, N+1/2 or N+1 324 333 ! ! barotropic velocity correction 325 zub(:,:) = uu_b(:,:,Kaa) - SUM( e3u_0(:,:,:)*uu(:,:,:,Kaa), 3 ) * r1_hu_0(:,:) 326 zvb(:,:) = vv_b(:,:,Kaa) - SUM( e3v_0(:,:,:)*vv(:,:,:,Kaa), 3 ) * r1_hv_0(:,:) 334 zub(A2D(0)) = uu_b(A2D(0),Kaa) - SUM( e3u_0(A2D(0),:)*uu(A2D(0),:,Kaa), 3 ) * r1_hu_0(A2D(0)) 335 zvb(A2D(0)) = vv_b(A2D(0),Kaa) - SUM( e3v_0(A2D(0),:)*vv(A2D(0),:,Kaa), 3 ) * r1_hv_0(A2D(0)) 336 337 !!st zub(:,:) = uu_b(:,:,Kaa) - SUM( e3u_0(:,:,:)*uu(:,:,:,Kaa), 3 ) * r1_hu_0(:,:) 338 !!st zvb(:,:) = vv_b(:,:,Kaa) - SUM( e3v_0(:,:,:)*vv(:,:,:,Kaa), 3 ) * r1_hv_0(:,:) 339 327 340 DO jk = 1, jpkm1 ! corrected horizontal velocity 328 341 uu(:,:,jk,Kaa) = uu(:,:,jk,Kaa) + zub(:,:)*umask(:,:,jk) 329 342 vv(:,:,jk,Kaa) = vv(:,:,jk,Kaa) + zvb(:,:)*vmask(:,:,jk) 330 343 END DO 344 345 !!st DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 346 !!st uu(ji,jj,jk,Kaa) = uu(ji,jj,jk,Kaa) + zub(ji,jj)*umask(ji,jj,jk) 347 !!st vv(ji,jj,jk,Kaa) = vv(ji,jj,jk,Kaa) + zvb(ji,jj)*vmask(ji,jj,jk) 348 !!st END_3D 349 331 350 332 351 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Note: See TracChangeset
for help on using the changeset viewer.