- Timestamp:
- 2017-12-14T11:10:02+01:00 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2017/dev_merge_2017/NEMOGCM/NEMO/NST_SRC/agrif_top_sponge.F90
r9019 r9031 44 44 ! 45 45 #if defined SPONGE_TOP 46 zcoef = REAL( Agrif_NbStepint(), wp ) / Agrif_rhot() 46 !! Assume persistence 47 timecoeff = REAL(Agrif_rhot()-1,wp)/REAL(Agrif_rhot()) 47 48 CALL Agrif_sponge 48 49 Agrif_SpecialValue = 0._wp … … 68 69 REAL(wp), DIMENSION(i1:i2,j1:j2) :: ztu, ztv 69 70 REAL(wp), DIMENSION(i1:i2,j1:j2,k1:k2,n1:n2) :: trbdiff 71 ! vertical interpolation: 72 REAL(wp), DIMENSION(i1:i2,j1:j2,jpk,n1:n2) ::tabres_child 73 REAL(wp), DIMENSION(k1:k2,n1:n2-1) :: tabin 74 REAL(wp), DIMENSION(k1:k2) :: h_in 75 REAL(wp), DIMENSION(1:jpk) :: h_out 76 INTEGER :: N_in, N_out 77 REAL(wp) :: h_diff 70 78 !!---------------------------------------------------------------------- 71 79 ! 72 80 IF( before ) THEN 73 tabres(i1:i2,j1:j2,k1:k2,n1:n2) = trn(i1:i2,j1:j2,k1:k2,n1:n2) 81 DO jn = 1, jptra 82 DO jk=k1,k2 83 DO jj=j1,j2 84 DO ji=i1,i2 85 tabres(ji,jj,jk,jn) = trb(ji,jj,jk,jn) 86 END DO 87 END DO 88 END DO 89 END DO 90 91 # if defined key_vertical 92 DO jk=k1,k2 93 DO jj=j1,j2 94 DO ji=i1,i2 95 tabres(ji,jj,jk,jpts+1) = tmask(ji,jj,jk) * e3t_n(ji,jj,jk) 96 END DO 97 END DO 98 END DO 99 # endif 74 100 ELSE 75 !!gm line below use of :,: versus i1:i2,j1:j2 .... strange, not wrong. ===>> to be corrected 76 trbdiff(:,:,:,:) = trb(i1:i2,j1:j2,:,:) - tabres(:,:,:,:) 101 # if defined key_vertical 102 tabres_child(:,:,:,:) = 0. 103 DO jj=j1,j2 104 DO ji=i1,i2 105 N_in = 0 106 DO jk=k1,k2 !k2 = jpk of parent grid 107 IF (tabres(ji,jj,jk,n2) == 0) EXIT 108 N_in = N_in + 1 109 tabin(jk,:) = tabres(ji,jj,jk,n1:n2-1) 110 h_in(N_in) = tabres(ji,jj,jk,n2) 111 END DO 112 N_out = 0 113 DO jk=1,jpk ! jpk of child grid 114 IF (tmask(ji,jj,jk) == 0) EXIT 115 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 above 117 ENDDO 118 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 124 ENDIF 125 ENDDO 126 ENDDO 127 # endif 128 129 DO jj=j1,j2 130 DO ji=i1,i2 131 DO jk=1,jpkm1 132 # if defined key_vertical 133 trbdiff(ji,jj,jk,1:jptra) = trb(ji,jj,jk,1:jptra) - tabres_child(ji,jj,jk,1:jptra) 134 # else 135 trbdiff(ji,jj,jk,1:jptra) = trb(ji,jj,jk,1:jptra) - tabres(ji,jj,jk,1:jptra) 136 # endif 137 ENDDO 138 ENDDO 139 ENDDO 140 77 141 DO jn = 1, jptra 78 142 DO jk = 1, jpkm1
Note: See TracChangeset
for help on using the changeset viewer.