- Timestamp:
- 2019-12-09T13:55:34+01:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_AGRIF-01-05_merged/src/NST/agrif_top_sponge.F90
r10068 r12123 20 20 USE agrif_oce 21 21 USE agrif_oce_sponge 22 USE vremap 22 23 ! 23 24 USE in_out_manager … … 66 67 ! 67 68 INTEGER :: ji, jj, jk, jn ! dummy loop indices 68 REAL(wp) :: zabe1, zabe2 69 REAL(wp), DIMENSION(i1:i2,j1:j2) :: ztu, ztv70 REAL(wp), DIMENSION(i1:i2,j1:j2,k1:k2, n1:n2) :: trbdiff69 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 71 72 ! vertical interpolation: 72 REAL(wp), DIMENSION(i1:i2,j1:j2,jpk, n1:n2) ::tabres_child73 REAL(wp), DIMENSION(k1:k2, n1:n2-1) :: tabin73 REAL(wp), DIMENSION(i1:i2,j1:j2,jpk,1:jptra) ::tabres_child 74 REAL(wp), DIMENSION(k1:k2,1:jptra) :: tabin 74 75 REAL(wp), DIMENSION(k1:k2) :: h_in 75 76 REAL(wp), DIMENSION(1:jpk) :: h_out … … 93 94 DO jj=j1,j2 94 95 DO ji=i1,i2 95 tabres(ji,jj,jk,jpts+1) = tmask(ji,jj,jk) * e3t_ n(ji,jj,jk)96 tabres(ji,jj,jk,jpts+1) = tmask(ji,jj,jk) * e3t_b(ji,jj,jk) 96 97 END DO 97 98 END DO … … 114 115 IF (tmask(ji,jj,jk) == 0) EXIT 115 116 N_out = N_out + 1 116 h_out(jk) = e3t_ n(ji,jj,jk) !Child grid scale factors. Could multiply by e1e2t here instead of division above117 h_out(jk) = e3t_b(ji,jj,jk) !Child grid scale factors. Could multiply by e1e2t here instead of division above 117 118 ENDDO 118 119 IF (N_in > 0) THEN 119 h_diff = sum(h_out(1:N_out))-sum(h_in(1:N_in)) 120 tabres(ji,jj,k2,:) = tabres(ji,jj,k2-1,:) !what is this line for????? 121 DO jn=1,jptra 122 call reconstructandremap(tabin(1:N_in,jn),h_in,tabres_child(ji,jj,1:N_out,jn),h_out,N_in,N_out) 123 ENDDO 120 CALL reconstructandremap(tabin(1:N_in,1:jptra),h_in,tabres_child(ji,jj,1:N_out,1:jptra),h_out,N_in,N_out,jptra) 124 121 ENDIF 125 122 ENDDO … … 139 136 ENDDO 140 137 138 !* set relaxation time scale 139 IF( neuler == 0 .AND. lk_agrif_fstep ) THEN ; ztrelax = rn_trelax_tra / ( rdt ) 140 ELSE ; ztrelax = rn_trelax_tra / (2._wp * rdt ) 141 ENDIF 142 141 143 DO jn = 1, jptra 142 144 DO jk = 1, jpkm1 143 145 DO jj = j1,j2-1 144 146 DO ji = i1,i2-1 145 zabe1 = fsaht_spu(ji,jj) * e2_e1u(ji,jj) * e3u_n(ji,jj,jk) * umask(ji,jj,jk)146 zabe2 = fsaht_spv(ji,jj) * e1_e2v(ji,jj) * e3v_n(ji,jj,jk) * vmask(ji,jj,jk)147 zabe1 = rn_sponge_tra * fspu(ji,jj) * e2_e1u(ji,jj) * e3u_n(ji,jj,jk) * umask(ji,jj,jk) 148 zabe2 = rn_sponge_tra * fspv(ji,jj) * e1_e2v(ji,jj) * e3v_n(ji,jj,jk) * vmask(ji,jj,jk) 147 149 ztu(ji,jj) = zabe1 * ( trbdiff(ji+1,jj ,jk,jn) - trbdiff(ji,jj,jk,jn) ) 148 150 ztv(ji,jj) = zabe2 * ( trbdiff(ji ,jj+1,jk,jn) - trbdiff(ji,jj,jk,jn) ) … … 155 157 tra(ji,jj,jk,jn) = tra(ji,jj,jk,jn) + ( ztu(ji,jj) - ztu(ji-1,jj ) & 156 158 & + ztv(ji,jj) - ztv(ji ,jj-1) ) & 157 & * r1_e1e2t(ji,jj) / e3t_n(ji,jj,jk) 159 & * r1_e1e2t(ji,jj) / e3t_n(ji,jj,jk) & 160 & - ztrelax * fspt(ji,jj) * trbdiff(ji,jj,jk,jn) 158 161 ENDIF 159 162 END DO
Note: See TracChangeset
for help on using the changeset viewer.