- Timestamp:
- 2020-12-02T13:22:58+01:00 (4 years ago)
- Location:
- NEMO/branches/2020/dev_r13312_AGRIF-03-04_jchanut_vinterp_tstep/src/NST
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/dev_r13312_AGRIF-03-04_jchanut_vinterp_tstep/src/NST/agrif_top_sponge.F90
r12489 r13987 67 67 ! 68 68 INTEGER :: ji, jj, jk, jn ! dummy loop indices 69 REAL(wp) :: zabe1, zabe2, ztrelax 70 REAL(wp), DIMENSION(i1:i2,j1:j2) :: ztu, ztv 71 REAL(wp), DIMENSION(i1:i2,j1:j2,k1:k2,1:jptra) :: trbdiff 69 INTEGER :: iku, ikv 70 REAL(wp) :: ztra, zabe1, zabe2, zbtr 71 REAL(wp), DIMENSION(i1:i2,j1:j2,jpk) :: ztu, ztv 72 REAL(wp), DIMENSION(i1:i2,j1:j2,k1:k2,n1:n2) :: trbdiff 72 73 ! vertical interpolation: 73 REAL(wp), DIMENSION(i1:i2,j1:j2,jpk, 1:jptra) ::tabres_child74 REAL(wp), DIMENSION(i1:i2,j1:j2,jpk,n1:n2) ::tabres_child 74 75 REAL(wp), DIMENSION(k1:k2,1:jptra) :: tabin 75 76 REAL(wp), DIMENSION(k1:k2) :: h_in 76 77 REAL(wp), DIMENSION(1:jpk) :: h_out 77 78 INTEGER :: N_in, N_out 78 REAL(wp) :: h_diff79 79 !!---------------------------------------------------------------------- 80 80 ! … … 94 94 DO jj=j1,j2 95 95 DO ji=i1,i2 96 tabres(ji,jj,jk,jpts+1) = tmask(ji,jj,jk) * e3t(ji,jj,jk,Kbb_a) 96 tabres(ji,jj,jk,jpts+1) = tmask(ji,jj,jk) * e3t(ji,jj,jk,Kbb_a) 97 97 END DO 98 98 END DO … … 128 128 DO jk=1,jpkm1 129 129 # if defined key_vertical 130 trbdiff(ji,jj,jk,1:jptra) = tr(ji,jj,jk,1:jptra,Kbb_a) - tabres_child(ji,jj,jk,1:jptra)130 trbdiff(ji,jj,jk,1:jptra) = ( tr(ji,jj,jk,1:jptra,Kbb_a) - tabres_child(ji,jj,jk,1:jptra) ) * tmask(ji,jj,jk) 131 131 # else 132 trbdiff(ji,jj,jk,1:jptra) = tr(ji,jj,jk,1:jptra,Kbb_a) - tabres(ji,jj,jk,1:jptra)132 trbdiff(ji,jj,jk,1:jptra) = ( tr(ji,jj,jk,1:jptra,Kbb_a) - tabres(ji,jj,jk,1:jptra)) * tmask(ji,jj,jk) 133 133 # endif 134 134 ENDDO … … 136 136 ENDDO 137 137 138 !* set relaxation time scale139 IF( l_1st_euler .AND. lk_agrif_fstep ) THEN ; ztrelax = rn_trelax_tra / ( rn_Dt )140 ELSE ; ztrelax = rn_trelax_tra / (2._wp * rn_Dt )141 ENDIF142 143 138 DO jn = 1, jptra 144 139 DO jk = 1, jpkm1 145 DO jj = j1,j2-1 140 ztu(i1:i2,j1:j2,jk) = 0._wp 141 DO jj = j1,j2 146 142 DO ji = i1,i2-1 147 zabe1 = rn_sponge_tra * fspu(ji,jj) * e2_e1u(ji,jj) * e3u(ji,jj,jk,Kmm_a) * umask(ji,jj,jk) 148 zabe2 = rn_sponge_tra * fspv(ji,jj) * e1_e2v(ji,jj) * e3v(ji,jj,jk,Kmm_a) * vmask(ji,jj,jk) 149 ztu(ji,jj) = zabe1 * ( trbdiff(ji+1,jj ,jk,jn) - trbdiff(ji,jj,jk,jn) ) 150 ztv(ji,jj) = zabe2 * ( trbdiff(ji ,jj+1,jk,jn) - trbdiff(ji,jj,jk,jn) ) 143 zabe1 = rn_sponge_tra * r1_Dt * fspu(ji,jj) * umask(ji,jj,jk) * e2_e1u(ji,jj) * e3u(ji,jj,jk,Kmm_a) 144 ztu(ji,jj,jk) = zabe1 * ( trbdiff(ji+1,jj,jk,jn) - trbdiff(ji,jj,jk,jn) ) 145 END DO 146 END DO 147 ztv(i1:i2,j1:j2,jk) = 0._wp 148 DO ji = i1,i2 149 DO jj = j1,j2-1 150 zabe2 = rn_sponge_tra * r1_Dt * fspv(ji,jj) * vmask(ji,jj,jk) * e1_e2v(ji,jj) * e3v(ji,jj,jk,Kmm_a) 151 ztv(ji,jj,jk) = zabe2 * ( trbdiff(ji,jj+1,jk,jn) - trbdiff(ji,jj,jk,jn) ) 151 152 END DO 152 153 END DO 153 154 ! 155 IF( ln_zps ) THEN ! set gradient at partial step level 156 DO jj = j1,j2 157 DO ji = i1,i2 158 ! last level 159 iku = mbku(ji,jj) 160 ikv = mbkv(ji,jj) 161 IF( iku == jk ) ztu(ji,jj,jk) = 0._wp 162 IF( ikv == jk ) ztv(ji,jj,jk) = 0._wp 163 END DO 164 END DO 165 ENDIF 166 END DO 167 ! 168 DO jk = 1, jpkm1 154 169 DO jj = j1+1,j2-1 155 170 DO ji = i1+1,i2-1 156 IF( .NOT. tabspongedone_trn(ji,jj) ) THEN 157 tr(ji,jj,jk,jn,Krhs_a) = tr(ji,jj,jk,jn,Krhs_a) + ( ztu(ji,jj) - ztu(ji-1,jj ) & 158 & + ztv(ji,jj) - ztv(ji ,jj-1) ) & 159 & * r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm_a) & 160 & - ztrelax * fspt(ji,jj) * trbdiff(ji,jj,jk,jn) 171 IF( .NOT. tabspongedone_trn(ji,jj) ) THEN 172 zbtr = r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm_a) 173 ! horizontal diffusive trends 174 ztra = zbtr * ( ztu(ji,jj,jk) - ztu(ji-1,jj,jk) + ztv(ji,jj,jk) - ztv(ji,jj-1,jk) ) & 175 & - rn_trelax_tra * r1_Dt * fspt(ji,jj) * trbdiff(ji,jj,jk,jn) 176 ! add it to the general tracer trends 177 tr(ji,jj,jk,jn,Krhs_a) = tr(ji,jj,jk,jn,Krhs_a) + ztra 161 178 ENDIF 162 179 END DO 163 180 END DO 164 181 END DO 165 !166 182 END DO 167 183 ! -
NEMO/branches/2020/dev_r13312_AGRIF-03-04_jchanut_vinterp_tstep/src/NST/agrif_user.F90
r13961 r13987 367 367 CALL Agrif_Bc_variable( unb_interp_id,calledweight=1.,procname=interpunb ) 368 368 CALL Agrif_Bc_variable( vnb_interp_id,calledweight=1.,procname=interpvnb ) 369 CALL Agrif_Bc_variable(ub2b_interp_id,calledweight=1.,procname=interpub2b) 370 CALL Agrif_Bc_variable(vb2b_interp_id,calledweight=1.,procname=interpvb2b) 369 CALL Agrif_Bc_variable(ub2b_interp_id,calledweight=1.,procname=interpub2b) ! must be called before unb_id to define ubdy 370 CALL Agrif_Bc_variable(vb2b_interp_id,calledweight=1.,procname=interpvb2b) ! must be called before vnb_id to define vbdy 371 371 use_sign_north = .FALSE. 372 372 ubdy(:,:) = 0._wp … … 726 726 CALL Agrif_Bc_variable(trn_sponge_id,calledweight=1.,procname=interptrn_sponge) 727 727 ! reset tsa to zero 728 tr a(:,:,:,:) = 0._wp728 tr(:,:,:,:,Krhs_a) = 0._wp 729 729 730 730 ! 3. Some controls
Note: See TracChangeset
for help on using the changeset viewer.