- Timestamp:
- 2020-06-24T15:31:32+02:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/dev_r12527_Gurvan_ShallowWater/src/SWE/step.F90
r13151 r13154 17 17 USE phycst ! physical constants 18 18 USE usrdef_nam 19 !19 USE lib_mpp ! MPP library 20 20 USE iom ! xIOs server 21 21 … … 66 66 REAL(wp) :: zue3a, zue3n, zue3b ! local scalars 67 67 REAL(wp) :: zve3a, zve3n, zve3b ! - - 68 REAL(wp) :: ze3t_tf, ze3u_tf, ze3v_tf, zua, zva 68 REAL(wp) :: ze3t_tf, ze3u_tf, ze3v_tf, zua, zva 69 REAL(wp), DIMENSION(jpi,jpj) :: zssh 70 REAL(wp), DIMENSION(jpi,jpj,jpk) :: ze3u, ze3v 69 71 !! --------------------------------------------------------------------- 70 72 #if defined key_agrif … … 141 143 & CALL Agrif_Sponge_dyn ! momentum sponge 142 144 #endif 143 CALL dyn_adv( kstp, Nbb, Nnn , uu, vv, Nrhs ) ! advection (VF or FF) ==> RHS144 145 CALL dyn_vor( kstp, Nnn , uu, vv, Nrhs ) ! vorticity ==> RHS146 147 CALL dyn_ldf( kstp, Nbb, Nnn , uu, vv, Nrhs ) ! lateral mixing148 145 149 146 !!an - calcul du gradient de pression horizontal (explicit) 147 zssh(:,:) = ssh(:,:,Nnn) 148 # if defined key_bvp 149 ! gradient and divergence not penalised 150 zssh(:,:) = zssh(:,:) * r1_rpo(:,:,1) 151 #endif 150 152 DO_3D_00_00( 1, jpkm1 ) 151 uu(ji,jj,jk,Nrhs) = uu(ji,jj,jk,Nrhs) - grav * ( ssh(ji+1,jj,Nnn) - ssh(ji,jj,Nnn) ) * r1_e1u(ji,jj)152 vv(ji,jj,jk,Nrhs) = vv(ji,jj,jk,Nrhs) - grav * ( ssh(ji,jj+1,Nnn) - ssh(ji,jj,Nnn) ) * r1_e2v(ji,jj)153 uu(ji,jj,jk,Nrhs) = uu(ji,jj,jk,Nrhs) - grav * ( zssh(ji+1,jj) - zssh(ji,jj) ) * r1_e1u(ji,jj) 154 vv(ji,jj,jk,Nrhs) = vv(ji,jj,jk,Nrhs) - grav * ( zssh(ji,jj+1) - zssh(ji,jj) ) * r1_e2v(ji,jj) 153 155 END_3D 154 156 ! 155 ! add wind stress forcing and layer linear friction to the RHS 157 158 ! IF( kstp == nit000 .AND. lwp ) THEN 159 ! WRITE(numout,*) 160 ! WRITE(numout,*) 'step.F90 : classic script used' 161 ! WRITE(numout,*) '~~~~~~~' 162 ! IF( ln_dynvor_ens_adVO .OR. ln_dynvor_ens_adKE .OR. ln_dynvor_ens_adKEVO & 163 ! & .OR. ln_dynvor_ene_adVO .OR. ln_dynvor_ene_adKE .OR. ln_dynvor_ene_adKEVO ) THEN 164 ! CALL ctl_stop('STOP','step : alternative direction asked but classis step' ) 165 ! ENDIF 166 ! ENDIF 167 !!an 168 ! CALL dyn_adv( kstp, Nbb, Nnn , uu, vv, Nrhs ) ! advection (VF or FF) ==> RHS 169 ! 170 ! CALL dyn_vor( kstp, Nbb, Nnn , uu, vv, Nrhs ) ! vorticity ==> RHS 171 ! 172 !!an In dynvor, dynkegAD is called even if not AD, so we keep the same step.F90 173 174 CALL dyn_vor( kstp, Nbb, Nnn , uu, vv, Nrhs) ! vorticity ==> RHS 175 176 CALL dyn_ldf( kstp, Nbb, Nnn , uu, vv, Nrhs ) ! lateral mixing 177 178 ! add wind stress forcing and layer linear friction to the RHS 179 ze3u(:,:,:) = e3u(:,:,:,Nnn) 180 ze3v(:,:,:) = e3v(:,:,:,Nnn) 181 # if defined key_bvp 182 !ze3u(:,:,:) = ze3u(:,:,:) * r1_rpo(:,:,:) 183 !ze3v(:,:,:) = ze3v(:,:,:) * r1_rpo(:,:,:) 184 #endif 156 185 z1_2rho0 = 0.5_wp * r1_rho0 157 186 DO_3D_00_00(1,jpkm1) 158 uu(ji,jj,jk,Nrhs) = uu(ji,jj,jk,Nrhs) + z1_2rho0 * ( utau_b(ji,jj) + utau(ji,jj) ) / e3u(ji,jj,jk,Nnn) &187 uu(ji,jj,jk,Nrhs) = uu(ji,jj,jk,Nrhs) + z1_2rho0 * ( utau_b(ji,jj) + utau(ji,jj) ) / ze3u(ji,jj,jk) & 159 188 & - rn_rfr * uu(ji,jj,jk,Nbb) 160 vv(ji,jj,jk,Nrhs) = vv(ji,jj,jk,Nrhs) + z1_2rho0 * ( vtau_b(ji,jj) + vtau(ji,jj) ) / e3v(ji,jj,jk,Nnn) &161 & - rn_rfr * vv(ji,jj,jk,Nbb) 189 vv(ji,jj,jk,Nrhs) = vv(ji,jj,jk,Nrhs) + z1_2rho0 * ( vtau_b(ji,jj) + vtau(ji,jj) ) / ze3v(ji,jj,jk) & 190 & - rn_rfr * vv(ji,jj,jk,Nbb) 162 191 END_3D 163 !!an 192 ! 193 # if defined key_bvp 194 ! Add frictionnal term - sigma * u 195 ! can be done via sigmaT (mean_ij) 196 DO_3D_00_00(1,jpkm1) 197 uu(ji,jj,jk,Nrhs) = uu(ji,jj,jk,Nrhs) - bmpu(ji,jj,jk) * uu(ji,jj,jk,Nbb) 198 vv(ji,jj,jk,Nrhs) = vv(ji,jj,jk,Nrhs) - bmpv(ji,jj,jk) * vv(ji,jj,jk,Nbb) 199 END_3D 200 #endif 201 ! 164 202 165 203 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Note: See TracChangeset
for help on using the changeset viewer.