- Timestamp:
- 2011-10-13T11:41:49+02:00 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2011/dev_r2802_TOP_substepping/NEMOGCM/NEMO/TOP_SRC/trcsub.F90
r2904 r2910 26 26 USE divcur ! hor. divergence and curl (div & cur routines) 27 27 USE sbcrnf, ONLY: h_rnf, nk_rnf ! River runoff 28 USE trc, ONLY: nn_dttrc, nittrc000 !TOP_TRC substepping29 28 USE sbc_oce ! surface boundary condition: ocean 30 29 USE bdy_oce … … 36 35 IMPLICIT NONE 37 36 38 PUBLIC trc_sub_stp ! called by trc_stp 39 PUBLIC trc_sub_ini ! called by trc_ini to initialize substepping arrays. 40 PUBLIC trc_sub_reset ! called by trc_stp to reset physics variables 41 PUBLIC trc_sub_ssh ! called by trc_stp to reset physics variables 42 37 PUBLIC trc_sub_stp ! called by trc_stp 38 PUBLIC trc_sub_ini ! called by trc_ini to initialize substepping arrays. 39 PUBLIC trc_sub_reset ! called by trc_stp to reset physics variables 40 PUBLIC trc_sub_ssh ! called by trc_stp to reset physics variables 41 42 !!* Module variables 43 REAL(wp) :: r1_ndttrc ! 1 / nn_dttrc 44 REAL(wp) :: r1_ndttrcp1 ! 1 / (nn_dttrc+1) 45 46 !!* Substitution 43 47 # include "top_substitute.h90" 44 45 48 !!---------------------------------------------------------------------- 46 49 !! NEMO/TOP 3.3 , NEMO Consortium (2010) … … 59 62 !! on TOP steps, calculate averages. 60 63 !!------------------------------------------------------------------- 61 INTEGER, INTENT( in ) :: kt !ocean time-step index 62 INTEGER :: ji,jj,jk !dummy loop indices 64 INTEGER, INTENT( in ) :: kt ! ocean time-step index 65 INTEGER :: ji,jj,jk ! dummy loop indices 66 REAL(wp) :: z1_ne3t, z1_ne3u, z1_ne3v, z1_ne3w 63 67 !!------------------------------------------------------------------- 64 68 … … 67 71 IF(lwp) WRITE(numout,*) 'trc_sub_stp : substepping of the passive tracers' 68 72 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~' 69 70 sshb_hold(:,:)=sshn(:,:) 71 sshu_b_hold(:,:)=sshu_n(:,:) 72 sshv_b_hold(:,:)=sshv_n(:,:) 73 emp_b_hold(:,:)=emp_b(:,:) 73 ! 74 sshb_hold (:,:) = sshn (:,:) 75 sshu_b_hold(:,:) = sshu_n(:,:) 76 sshv_b_hold(:,:) = sshv_n(:,:) 77 emp_b_hold (:,:) = emp_b (:,:) 78 ! 79 r1_ndttrc = 1._wp / REAL( nn_dttrc , wp ) 80 r1_ndttrcp1 = 1._wp / REAL( nn_dttrc + 1, wp ) 81 ! 74 82 ENDIF 83 75 84 IF( MOD( kt , nn_dttrc ) /= 0 ) THEN 85 ! 86 un_tm (:,:,:) = un_tm (:,:,:) + un (:,:,:) * fse3u(:,:,:) 87 vn_tm (:,:,:) = vn_tm (:,:,:) + vn (:,:,:) * fse3v(:,:,:) 88 wn_tm (:,:,:) = wn_tm (:,:,:) + wn (:,:,:) * fse3w(:,:,:) 89 tsn_tm (:,:,:,jp_tem) = tsn_tm (:,:,:,jp_tem) + tsn (:,:,:,jp_tem) * fse3t(:,:,:) 90 tsn_tm (:,:,:,jp_sal) = tsn_tm (:,:,:,jp_tem) + tsn (:,:,:,jp_sal) * fse3t(:,:,:) 91 avt_tm (:,:,:) = avt_tm (:,:,:) + avt (:,:,:) * fse3w(:,:,:) 92 # if defined key_zdfddm 93 avs_tm (:,:,:) = avs_tm (:,:,:) + avs (:,:,:) * fse3w(:,:,:) 94 # endif 95 #if defined key_ldfslp 96 wslpi_tm(:,:,:) = wslpi_tm(:,:,:) + wslpi(:,:,:) * fse3w(:,:,:) 97 wslpj_tm(:,:,:) = wslpj_tm(:,:,:) + wslpj(:,:,:) * fse3w(:,:,:) 98 uslp_tm (:,:,:) = uslp_tm (:,:,:) + uslp (:,:,:) * fse3u(:,:,:) 99 vslp_tm (:,:,:) = vslp_tm (:,:,:) + vslp (:,:,:) * fse3v(:,:,:) 100 #endif 101 ! 102 sshn_tm (:,:) = sshn_tm (:,:) + sshn (:,:) 103 sshu_n_tm(:,:) = sshu_n_tm(:,:) + sshu_n(:,:) 104 sshv_n_tm(:,:) = sshv_n_tm(:,:) + sshv_n(:,:) 105 rnf_tm (:,:) = rnf_tm (:,:) + rnf (:,:) 106 h_rnf_tm (:,:) = h_rnf_tm (:,:) + h_rnf (:,:) 107 hmld_tm (:,:) = hmld_tm (:,:) + hmld (:,:) 108 fr_i_tm (:,:) = fr_i_tm (:,:) + fr_i (:,:) 109 emp_tm (:,:) = emp_tm (:,:) + emp (:,:) 110 emps_tm (:,:) = emps_tm (:,:) + emps (:,:) 111 qsr_tm (:,:) = qsr_tm (:,:) + qsr (:,:) 112 wndm_tm (:,:) = wndm_tm (:,:) + wndm (:,:) 113 ! 114 #if defined key_traldf_c3d 115 ahtt_tm (:,:,:) = ahtt_tm (:,:,:) + ahtt(:,:,:) * fse3t(:,:,:) 116 ahtu_tm (:,:,:) = ahtu_tm (:,:,:) + ahtu(:,:,:) * fse3u(:,:,:) 117 ahtv_tm (:,:,:) = ahtv_tm (:,:,:) + ahtv(:,:,:) * fse3v(:,:,:) 118 ahtw_tm (:,:,:) = ahtw_tm (:,:,:) + ahtw(:,:,:) * fse3w(:,:,:) 119 #elif defined key_traldf_c2d 120 ahtt_tm (:,:) = ahtt_tm (:,:) + ahtt(:,:) 121 ahtu_tm (:,:) = ahtu_tm (:,:) + ahtu(:,:) 122 ahtv_tm (:,:) = ahtv_tm (:,:) + ahtv(:,:) 123 ahtw_tm (:,:) = ahtw_tm (:,:) + ahtw(:,:) 124 #elif defined key_traldf_c1d 125 ahtt_tm (:) = ahtt_tm (:,:) + ahtt(:) 126 ahtu_tm (:) = ahtu_tm (:,:) + ahtu(:) 127 ahtv_tm (:) = ahtv_tm (:,:) + ahtv(:) 128 ahtw_tm (:) = ahtw_tm (:,:) + ahtw(:) 129 #else 130 ahtt_tm = ahtt_tm + ahtt 131 ahtu_tm = ahtu_tm + ahtu 132 ahtv_tm = ahtv_tm + ahtv 133 ahtw_tm = ahtw_tm + ahtw 134 #endif 135 #if defined key_traldf_eiv 136 # if defined key_traldf_c3d 137 aieu_tm (:,:,:) = aieu_tm (:,:,:) + aieu(:,:,:) * fse3u(:,:,:) 138 aiev_tm (:,:,:) = aiev_tm (:,:,:) + aiev(:,:,:) * fse3v(:,:,:) 139 aiew_tm (:,:,:) = aiew_tm (:,:,:) + aiew(:,:,:) * fse3w(:,:,:) 140 # elif defined key_traldf_c2d 141 aieu_tm (:,:) = aieu_tm (:,:) + aieu(:,:) 142 aiev_tm (:,:) = aiev_tm (:,:) + aiev(:,:) 143 aiew_tm (:,:) = aiew_tm (:,:) + aiew(:,:) 144 # elif defined key_traldf_c1d 145 aieu_tm (:) = aieu_tm (:,:) + aieu(:) 146 aiev_tm (:) = aiev_tm (:,:) + aiev(:) 147 aiew_tm (:) = aiew_tm (:,:) + aiew(:) 148 # else 149 aieu_tm = aieu_tm + aieu 150 aiev_tm = aiev_tm + aiev 151 aiew_tm = aiew_tm + aiew 152 # endif 153 #endif 154 155 ELSE ! It is time to substep 156 ! 1. set temporary arrays to hold physics variables 157 sshn_temp (:,:) = sshn (:,:) 158 sshu_n_temp(:,:) = sshu_n(:,:) 159 sshv_n_temp(:,:) = sshv_n(:,:) 160 sshf_n_temp(:,:) = sshf_n(:,:) 161 sshb_temp (:,:) = sshb (:,:) 162 sshu_b_temp(:,:) = sshu_b(:,:) 163 sshv_b_temp(:,:) = sshv_b(:,:) 164 ssha_temp (:,:) = ssha (:,:) 165 sshu_a_temp(:,:) = sshu_a(:,:) 166 sshv_a_temp(:,:) = sshv_a(:,:) 167 rnf_temp (:,:) = rnf (:,:) 168 h_rnf_temp (:,:) = h_rnf (:,:) 169 rotn_temp (:,:,:) = rotn (:,:,:) 170 hdivn_temp (:,:,:) = hdivn (:,:,:) 171 rotb_temp (:,:,:) = rotb (:,:,:) 172 hdivb_temp (:,:,:) = hdivb (:,:,:) 173 un_temp (:,:,:) = un (:,:,:) 174 vn_temp (:,:,:) = vn (:,:,:) 175 wn_temp (:,:,:) = wn (:,:,:) 176 tsn_temp (:,:,:,:) = tsn (:,:,:,:) 177 avt_temp (:,:,:) = avt (:,:,:) 178 # if defined key_zdfddm 179 avs_temp(:,:,:) = avs (:,:,:) 180 # endif 181 hmld_temp (:,:) = hmld (:,:) 182 qsr_temp (:,:) = qsr (:,:) 183 wndm_temp (:,:) = wndm (:,:) 184 emp_temp (:,:) = emp (:,:) 185 emp_b_temp (:,:) = emp_b (:,:) 186 emps_temp (:,:) = emps (:,:) 187 #if defined key_ldfslp 188 wslpi_temp (:,:,:) = wslpi (:,:,:) 189 wslpj_temp (:,:,:) = wslpj (:,:,:) 190 uslp_temp (:,:,:) = uslp (:,:,:) 191 vslp_temp (:,:,:) = vslp (:,:,:) 192 #endif 193 hu_temp (:,:) = hu (:,:) 194 hv_temp (:,:) = hv (:,:) 195 hur_temp (:,:) = hur (:,:) 196 hvr_temp (:,:) = hvr (:,:) 197 #if defined key_traldf_c3d 198 ahtu_temp (:,:,:) = ahtu (:,:,:) 199 ahtv_temp (:,:,:) = ahtv (:,:,:) 200 ahtw_temp (:,:,:) = ahtw (:,:,:) 201 ahtt_temp (:,:,:) = ahtt (:,:,:) 202 #elif defined key_traldf_c2d 203 ahtu_temp (:,:) = ahtu (:,:) 204 ahtv_temp (:,:) = ahtv (:,:) 205 ahtw_temp (:,:) = ahtw (:,:) 206 ahtt_temp (:,:) = ahtt (:,:) 207 #elif defined key_traldf_c1d 208 ahtu_temp (:) = ahtu (:) 209 ahtv_temp (:) = ahtv (:) 210 ahtw_temp (:) = ahtw (:) 211 ahtt_temp (:) = ahtt (:) 212 #else 213 ahtu_temp = ahtu 214 ahtv_temp = ahtv 215 ahtw_temp = ahtw 216 ahtt_temp = ahtt 217 #endif 218 219 #if defined key_traldf_eiv 220 # if defined key_traldf_c3d 221 aeiu_temp (:,:,:) = aeiu(:,:,:) 222 aeiv_temp (:,:,:) = aeiv(:,:,:) 223 aeiw_temp (:,:,:) = aeiw(:,:,:) 224 # elif defined key_traldf_c2d 225 aeiu_temp (:,:) = aeiu(:,:) 226 aeiv_temp (:,:) = aeiv(:,:) 227 aeiw_temp (:,:) = aeiw(:,:) 228 # elif defined key_traldf_c1d 229 aeiu_temp (:) = aeiu(:) 230 aeiv_temp (:) = aeiv(:) 231 aeiw_temp (:) = aeiw(:) 232 # else 233 aeiu_temp = aeiu 234 aeiv_temp = aeiv 235 aeiw_temp = aeiw 236 # endif 237 #endif 238 ! 239 DO jk = 1, jpk 240 e3t_temp(:,:,jk) = fse3t(:,:,jk) 241 e3u_temp(:,:,jk) = fse3u(:,:,jk) 242 e3v_temp(:,:,jk) = fse3v(:,:,jk) 243 e3w_temp(:,:,jk) = fse3w(:,:,jk) 244 ENDDO 245 IF( lk_vvl ) THEN ! Update Now Vertical coord. ! (only in vvl case) 246 ! !------------------------------! 247 DO jk = 1, jpk 248 fse3t (:,:,jk) = fse3t_n (:,:,jk) ! vertical scale factors stored in fse3. arrays 249 fse3u (:,:,jk) = fse3u_n (:,:,jk) 250 fse3v (:,:,jk) = fse3v_n (:,:,jk) 251 fse3w (:,:,jk) = fse3w_n (:,:,jk) 252 END DO 253 ENDIF 254 255 ! 2. Create averages and reassign variables 256 sshn_tm (:,:) = sshn_tm (:,:) + sshn (:,:) 257 sshu_n_tm(:,:) = sshu_n_tm (:,:) + sshu_n(:,:) 258 sshv_n_tm(:,:) = sshv_n_tm (:,:) + sshv_n(:,:) 259 rnf_tm (:,:) = rnf_tm (:,:) + rnf (:,:) 260 h_rnf_tm (:,:) = h_rnf_tm (:,:) + h_rnf (:,:) 261 hmld_tm (:,:) = hmld_tm (:,:) + hmld (:,:) 262 fr_i_tm (:,:) = fr_i_tm (:,:) + fr_i (:,:) 263 emp_tm (:,:) = emp_tm (:,:) + emp (:,:) 264 emps_tm (:,:) = emps_tm (:,:) + emps (:,:) 265 qsr_tm (:,:) = qsr_tm (:,:) + qsr (:,:) 266 wndm_tm (:,:) = wndm_tm (:,:) + wndm (:,:) 267 ! 268 sshn (:,:) = sshn_tm (:,:) * r1_ndttrcp1 269 sshu_n (:,:) = sshu_n_tm (:,:) * r1_ndttrcp1 270 sshv_n (:,:) = sshv_n_tm (:,:) * r1_ndttrcp1 271 sshb (:,:) = sshb_hold (:,:) 272 sshu_b (:,:) = sshu_b_hold(:,:) 273 sshv_b (:,:) = sshv_b_hold(:,:) 274 rnf (:,:) = rnf_tm (:,:) * r1_ndttrcp1 275 h_rnf (:,:) = h_rnf_tm (:,:) * r1_ndttrcp1 276 hmld (:,:) = hmld_tm (:,:) * r1_ndttrcp1 277 fr_i (:,:) = fr_i_tm (:,:) * r1_ndttrcp1 278 ! variables that are initialized after averages initialized 279 emp_b (:,:) = emp_b_hold (:,:) 280 IF( kt == nittrc000 ) THEN 281 wndm (:,:) = wndm_tm (:,:) * r1_ndttrc 282 qsr (:,:) = qsr_tm (:,:) * r1_ndttrc 283 emp (:,:) = emp_tm (:,:) * r1_ndttrc 284 emps (:,:) = emps_tm (:,:) * r1_ndttrc 285 ELSE 286 wndm (:,:) = wndm_tm (:,:) * r1_ndttrcp1 287 qsr (:,:) = qsr_tm (:,:) * r1_ndttrcp1 288 emp (:,:) = emp_tm (:,:) * r1_ndttrcp1 289 emps (:,:) = emps_tm (:,:) * r1_ndttrcp1 290 ENDIF 291 292 un_tm (:,:,:) = un_tm (:,:,:) + un (:,:,:) * e3u_temp(:,:,:) 293 vn_tm (:,:,:) = vn_tm (:,:,:) + vn (:,:,:) * e3v_temp(:,:,:) 294 wn_tm (:,:,:) = wn_tm (:,:,:) + wn (:,:,:) * e3w_temp(:,:,:) 295 tsn_tm (:,:,:,jp_tem) = tsn_tm (:,:,:,jp_tem) + tsn (:,:,:,jp_tem) * e3t_temp(:,:,:) 296 tsn_tm (:,:,:,jp_sal) = tsn_tm (:,:,:,jp_tem) + tsn (:,:,:,jp_sal) * e3t_temp(:,:,:) 297 avt_tm (:,:,:) = avt_tm (:,:,:) + avt (:,:,:) * e3w_temp(:,:,:) 298 # if defined key_zdfddm 299 avs_tm (:,:,:) = avs_tm (:,:,:) + avs (:,:,:) * e3w_temp(:,:,:) 300 # endif 301 #if defined key_ldfslp 302 wslpi_tm (:,:,:) = wslpi_tm(:,:,:) + wslpi(:,:,:) * e3w_temp(:,:,:) 303 wslpj_tm (:,:,:) = wslpj_tm(:,:,:) + wslpj(:,:,:) * e3w_temp(:,:,:) 304 uslp_tm (:,:,:) = uslp_tm (:,:,:) + uslp (:,:,:) * e3u_temp(:,:,:) 305 vslp_tm (:,:,:) = vslp_tm (:,:,:) + vslp (:,:,:) * e3v_temp(:,:,:) 306 #endif 307 ! 76 308 DO jk = 1, jpk 77 309 DO jj = 1, jpj 78 310 DO ji = 1, jpi 79 un_tm(ji,jj,jk)= un_tm(ji,jj,jk)+un(ji,jj,jk)*fse3u(ji,jj,jk) 80 vn_tm(ji,jj,jk)= vn_tm(ji,jj,jk)+vn(ji,jj,jk)*fse3v(ji,jj,jk) 81 wn_tm(ji,jj,jk)= wn_tm(ji,jj,jk)+wn(ji,jj,jk)*fse3w(ji,jj,jk) 82 avt_tm(ji,jj,jk)= avt_tm(ji,jj,jk)+avt(ji,jj,jk)*fse3t(ji,jj,jk) 83 tsn_tm(ji,jj,jk,jp_sal)= tsn_tm(ji,jj,jk,jp_sal)+tsn(ji,jj,jk,jp_sal)*fse3t(ji,jj,jk) 84 tsn_tm(ji,jj,jk,jp_tem)= tsn_tm(ji,jj,jk,jp_tem)+tsn(ji,jj,jk,jp_tem)*fse3t(ji,jj,jk) 311 z1_ne3t = r1_ndttrcp1 / fse3t(ji,jj,jk) 312 z1_ne3u = r1_ndttrcp1 / fse3u(ji,jj,jk) 313 z1_ne3v = r1_ndttrcp1 / fse3v(ji,jj,jk) 314 z1_ne3w = r1_ndttrcp1 / fse3w(ji,jj,jk) 315 ! 316 un (ji,jj,jk) = un_tm (ji,jj,jk) * z1_ne3u 317 vn (ji,jj,jk) = vn_tm (ji,jj,jk) * z1_ne3v 318 wn (ji,jj,jk) = wn_tm (ji,jj,jk) * z1_ne3w 319 tsn (ji,jj,jk,jp_tem) = tsn_tm (ji,jj,jk,jp_tem) * z1_ne3t 320 tsn (ji,jj,jk,jp_sal) = tsn_tm (ji,jj,jk,jp_sal) * z1_ne3t 321 avt (ji,jj,jk) = avt_tm (ji,jj,jk) * z1_ne3w 85 322 # if defined key_zdfddm 86 avs _tm(ji,jj,jk)= avs_tm(ji,jj,jk)+avs(ji,jj,jk)*fse3w(ji,jj,jk)323 avs (ji,jj,jk) = avs_tm (ji,jj,jk) * z1_ne3w 87 324 # endif 88 325 #if defined key_ldfslp 89 wslpi_tm(ji,jj,jk)= wslpi_tm(ji,jj,jk)+wslpi(ji,jj,jk)*fse3w(ji,jj,jk) 90 wslpj_tm(ji,jj,jk)= wslpj_tm(ji,jj,jk)+wslpj(ji,jj,jk)*fse3w(ji,jj,jk) 91 uslp_tm(ji,jj,jk)= uslp_tm(ji,jj,jk)+uslp(ji,jj,jk)*fse3u(ji,jj,jk) 92 vslp_tm(ji,jj,jk)= vslp_tm(ji,jj,jk)+vslp(ji,jj,jk)*fse3v(ji,jj,jk) 93 #endif 94 END DO 95 END DO 96 END DO 97 DO jj = 1, jpj 98 DO ji = 1, jpi 99 sshn_tm(ji,jj)=sshn_tm(ji,jj)+sshn(ji,jj) 100 sshu_n_tm(ji,jj)=sshu_n_tm(ji,jj)+sshu_n(ji,jj) 101 sshv_n_tm(ji,jj)=sshv_n_tm(ji,jj)+sshv_n(ji,jj) 102 rnf_tm(ji,jj)= rnf_tm(ji,jj)+rnf(ji,jj) 103 h_rnf_tm(ji,jj)= h_rnf_tm(ji,jj)+h_rnf(ji,jj) 104 hmld_tm(ji,jj)=hmld_tm(ji,jj)+hmld(ji,jj) 105 qsr_tm(ji,jj)=qsr_tm(ji,jj)+qsr(ji,jj) 106 fr_i_tm(ji,jj)=fr_i_tm(ji,jj)+fr_i(ji,jj) 107 wndm_tm(ji,jj)=wndm_tm(ji,jj)+wndm(ji,jj) 108 emp_tm(ji,jj)=emp_tm(ji,jj)+emp(ji,jj) 109 emps_tm(ji,jj)=emps_tm(ji,jj)+emps(ji,jj) 110 END DO 111 END DO 326 wslpi(ji,jj,jk) = wslpi_tm(ji,jj,jk) * z1_ne3w 327 wslpj(ji,jj,jk) = wslpj_tm(ji,jj,jk) * z1_ne3w 328 uslp (ji,jj,jk) = uslp_tm (ji,jj,jk) * z1_ne3u 329 vslp (ji,jj,jk) = vslp_tm (ji,jj,jk) * z1_ne3v 330 #endif 331 ENDDO 332 ENDDO 333 ENDDO 334 112 335 #if defined key_traldf_c3d 113 DO jk = 1, jpk 114 DO jj = 1, jpj 115 DO ji = 1, jpi 116 ahtt_tm(ji,jj,jk)= ahtt_tm(ji,jj,jk)+ahtt(ji,jj,jk)*fse3t(ji,jj,jk) 117 ahtu_tm(ji,jj,jk)= ahtu_tm(ji,jj,jk)+ahtu(ji,jj,jk)*fse3u(ji,jj,jk) 118 ahtv_tm(ji,jj,jk)= ahtv_tm(ji,jj,jk)+ahtv(ji,jj,jk)*fse3v(ji,jj,jk) 119 ahtw_tm(ji,jj,jk)= ahtw_tm(ji,jj,jk)+ahtw(ji,jj,jk)*fse3w(ji,jj,jk) 120 END DO 121 END DO 122 END DO 336 ahtt_tm (:,:,:) = ahtt_tm (:,:,:) + ahtt(:,:,:) * e3t_temp(:,:,:) 337 ahtu_tm (:,:,:) = ahtu_tm (:,:,:) + ahtu(:,:,:) * e3u_temp(:,:,:) 338 ahtv_tm (:,:,:) = ahtv_tm (:,:,:) + ahtv(:,:,:) * e3v_temp(:,:,:) 339 ahtw_tm (:,:,:) = ahtw_tm (:,:,:) + ahtw(:,:,:) * e3w_temp(:,:,:) 340 ! 341 ahtt (:,:,:) = ahtt_tm (:,:,:) * r1_ndttrcp1 / fse3t(:,:,:) 342 ahtu (:,:,:) = ahtu_tm (:,:,:) * r1_ndttrcp1 / fse3u(:,:,:) 343 ahtv (:,:,:) = ahtv_tm (:,:,:) * r1_ndttrcp1 / fse3v(:,:,:) 344 ahtw (:,:,:) = ahtw_tm (:,:,:) * r1_ndttrcp1 / fse3w(:,:,:) 123 345 #elif defined key_traldf_c2d 124 DO jj = 1, jpj 125 DO ji = 1, jpi 126 ahtt_tm(ji,jj)= ahtt_tm(ji,jj)+ahtt(ji,jj) 127 ahtu_tm(ji,jj)= ahtu_tm(ji,jj)+ahtu(ji,jj) 128 ahtv_tm(ji,jj)= ahtv_tm(ji,jj)+ahtv(ji,jj) 129 ahtw_tm(ji,jj)= ahtw_tm(ji,jj)+ahtw(ji,jj) 130 END DO 131 END DO 346 ahtt_tm (:,:) = ahtt_tm (:,:) + ahtt(:,:) 347 ahtu_tm (:,:) = ahtu_tm (:,:) + ahtu(:,:) 348 ahtv_tm (:,:) = ahtv_tm (:,:) + ahtv(:,:) 349 ahtw_tm (:,:) = ahtw_tm (:,:) + ahtw(:,:) 350 ! 351 ahtt (:,:) = ahtt_tm (:,:) * r1_ndttrcp1 352 ahtu (:,:) = ahtu_tm (:,:) * r1_ndttrcp1 353 ahtv (:,:) = ahtv_tm (:,:) * r1_ndttrcp1 354 ahtw (:,:) = ahtw_tm (:,:) * r1_ndttrcp1 132 355 #elif defined key_traldf_c1d 133 DO jk = 1, jpk 134 ahtt_tm(jk)= ahtt_tm(jk)+ahtt(jk) 135 ahtu_tm(jk)= ahtu_tm(jk)+ahtu(jk) 136 ahtv_tm(jk)= ahtv_tm(jk)+ahtv(jk) 137 ahtw_tm(jk)= ahtw_tm(jk)+ahtw(jk) 138 END DO 356 ahtt_tm (:) = ahtt_tm (:,:) + ahtt(:) 357 ahtu_tm (:) = ahtu_tm (:,:) + ahtu(:) 358 ahtv_tm (:) = ahtv_tm (:,:) + ahtv(:) 359 ahtw_tm (:) = ahtw_tm (:,:) + ahtw(:) 360 ! 361 ahtt (:) = ahtt_tm (:) * r1_ndttrcp1 362 ahtu (:) = ahtu_tm (:) * r1_ndttrcp1 363 ahtv (:) = ahtv_tm (:) * r1_ndttrcp1 364 ahtw (:) = ahtw_tm (:) * r1_ndttrcp1 139 365 #else 140 ahtt_tm= ahtt_tm+ahtt 141 ahtu_tm= ahtu_tm+ahtu 142 ahtv_tm= ahtv_tm+ahtv 143 ahtw_tm= ahtw_tm+ahtw 144 #endif 366 ahtt_tm = ahtt_tm + ahtt 367 ahtu_tm = ahtu_tm + ahtu 368 ahtv_tm = ahtv_tm + ahtv 369 ahtw_tm = ahtw_tm + ahtw 370 ! 371 ahtt = ahtt_tm * r1_ndttrcp1 372 ahtu = ahtu_tm * r1_ndttrcp1 373 ahtv = ahtv_tm * r1_ndttrcp1 374 ahtw = ahtw_tm * r1_ndttrcp1 375 #endif 376 145 377 #if defined key_traldf_eiv 146 378 # if defined key_traldf_c3d 147 DO jk = 1, jpk 148 DO jj = 1, jpj 149 DO ji = 1, jpi 150 aeiu_tm(ji,jj,jk)= aeiu_tm(ji,jj,jk)+aeiu(ji,jj,jk)*fse3u(ji,jj,jk) 151 aeiv_tm(ji,jj,jk)= aeiv_tm(ji,jj,jk)+aeiv(ji,jj,jk)*fse3v(ji,jj,jk) 152 aeiw_tm(ji,jj,jk)= aeiw_tm(ji,jj,jk)+aeiw(ji,jj,jk)*fse3w(ji,jj,jk) 153 END DO 154 END DO 155 END DO 379 aeiu_tm (:,:,:) = aeiu_tm (:,:,:) + aeiu(:,:,:) * e3u_temp(:,:,:) 380 aeiv_tm (:,:,:) = aeiv_tm (:,:,:) + aeiv(:,:,:) * e3v_temp(:,:,:) 381 aeiw_tm (:,:,:) = aeiw_tm (:,:,:) + aeiw(:,:,:) * e3w_temp(:,:,:) 382 ! 383 aeiu (:,:,:) = aeiu_tm (:,:,:) * r1_ndttrcp1 / fse3u(:,:,:) 384 aeiv (:,:,:) = aeiv_tm (:,:,:) * r1_ndttrcp1 / fse3v(:,:,:) 385 aeiw (:,:,:) = aeiw_tm (:,:,:) * r1_ndttrcp1 / fse3w(:,:,:) 156 386 # elif defined key_traldf_c2d 157 DO jj = 1, jpj158 DO ji = 1, jpi159 aeiu_tm(ji,jj)= aeiu_tm(ji,jj)+aeiu(ji,jj)160 aeiv_tm(ji,jj)= aeiv_tm(ji,jj)+aeiv(ji,jj)161 aeiw_tm(ji,jj)= aeiw_tm(ji,jj)+aeiw(ji,jj)162 END DO163 END DO387 aeiu_tm (:,:) = aeiu_tm (:,:) + aeiu(:,:) 388 aeiv_tm (:,:) = aeiv_tm (:,:) + aeiv(:,:) 389 aeiw_tm (:,:) = aeiw_tm (:,:) + aeiw(:,:) 390 ! 391 aeiu (:,:) = aeiu_tm (:,:) * r1_ndttrcp1 392 aeiv (:,:) = aeiv_tm (:,:) * r1_ndttrcp1 393 aeiw (:,:) = aeiw_tm (:,:) * r1_ndttrcp1 164 394 # elif defined key_traldf_c1d 165 DO jk = 1, jpk 166 aeiu_tm(jk)= aeiu_tm(jk)+aeiu(jk) 167 aeiv_tm(jk)= aeiv_tm(jk)+aeiv(jk) 168 aeiw_tm(jk)= aeiw_tm(jk)+aeiw(jk) 169 END DO 395 aeiu_tm (:) = aeiu_tm (:,:) + aeiu(:) 396 aeiv_tm (:) = aeiv_tm (:,:) + aeiv(:) 397 aeiw_tm (:) = aeiw_tm (:,:) + aeiw(:) 398 ! 399 aeiu (:) = aeiu_tm (:) * r1_ndttrcp1 400 aeiv (:) = aeiv_tm (:) * r1_ndttrcp1 401 aeiw (:) = aeiw_tm (:) * r1_ndttrcp1 170 402 # else 171 aeiu_tm= aeiu_tm+aeiu 172 aeiv_tm= aeiv_tm+aeiv 173 aeiw_tm= aeiw_tm+aeiw 174 # endif 175 # endif 176 177 ELSE 178 ! it is time to substep 179 ! 1. set temporary arrays to hold physics variables 180 sshn_temp(:,:)=sshn(:,:) 181 sshu_n_temp(:,:)=sshu_n(:,:) 182 sshv_n_temp(:,:)=sshv_n(:,:) 183 sshf_n_temp(:,:)=sshf_n(:,:) 184 sshb_temp(:,:)=sshb(:,:) 185 sshu_b_temp(:,:)=sshu_b(:,:) 186 sshv_b_temp(:,:)=sshv_b(:,:) 187 ssha_temp(:,:)=ssha(:,:) 188 sshu_a_temp(:,:)=sshu_a(:,:) 189 sshv_a_temp(:,:)=sshv_a(:,:) 190 rnf_temp(:,:)=rnf(:,:) 191 h_rnf_temp(:,:)=h_rnf(:,:) 192 rotn_temp(:,:,:)=rotn(:,:,:) 193 hdivn_temp(:,:,:)=hdivn(:,:,:) 194 rotb_temp(:,:,:)=rotb(:,:,:) 195 hdivb_temp(:,:,:)=hdivb(:,:,:) 196 un_temp(:,:,:)=un(:,:,:) 197 vn_temp(:,:,:)=vn(:,:,:) 198 wn_temp(:,:,:)=wn(:,:,:) 199 tsn_temp(:,:,:,:)=tsn(:,:,:,:) 200 avt_temp(:,:,:)=avt(:,:,:) 201 hmld_temp(:,:)=hmld(:,:) 202 qsr_temp(:,:)=qsr(:,:) 203 wndm_temp(:,:)=wndm(:,:) 204 emp_temp(:,:)=emp(:,:) 205 emp_b_temp(:,:)=emp_b(:,:) 206 emps_temp(:,:)=emps(:,:) 403 aeiu_tm = aeiu_tm + aeiu 404 aeiv_tm = aeiv_tm + aeiv 405 aeiw_tm = aeiw_tm + aeiw 406 ! 407 aeiu = aeiu_tm * r1_ndttrcp1 408 aeiv = aeiv_tm * r1_ndttrcp1 409 aeiw = aeiw_tm * r1_ndttrcp1 410 # endif 411 #endif 412 413 CALL lbc_lnk( sshn (:,:) , 'T', 1. ) 414 CALL lbc_lnk( sshu_n(:,:) , 'U', 1. ) 415 CALL lbc_lnk( sshv_n(:,:) , 'V', 1. ) 416 CALL lbc_lnk( sshf_n(:,:) , 'F', 1. ) 417 CALL lbc_lnk( sshb (:,:) , 'T', 1. ) 418 CALL lbc_lnk( sshu_b(:,:) , 'U', 1. ) 419 CALL lbc_lnk( sshv_b(:,:) , 'V', 1. ) 420 CALL lbc_lnk( ssha (:,:) , 'T', 1. ) 421 CALL lbc_lnk( sshu_a(:,:) , 'U', 1. ) 422 CALL lbc_lnk( sshv_a(:,:) , 'V', 1. ) 423 CALL lbc_lnk( rnf (:,:) , 'T', 1. ) 424 CALL lbc_lnk( h_rnf (:,:) , 'T', 1. ) 425 CALL lbc_lnk( rotn (:,:,:) , 'F', 1. ) 426 CALL lbc_lnk( hdivn (:,:,:) , 'T', 1. ) 427 CALL lbc_lnk( rotb (:,:,:) , 'F', 1. ) 428 CALL lbc_lnk( hdivb (:,:,:) , 'T', 1. ) 429 CALL lbc_lnk( un (:,:,:) , 'U', 1. ) 430 CALL lbc_lnk( vn (:,:,:) , 'V', 1. ) 431 CALL lbc_lnk( wn (:,:,:) , 'V', 1. ) 432 CALL lbc_lnk( tsn (:,:,:,jp_tem), 'T', 1. ) 433 CALL lbc_lnk( tsn (:,:,:,jp_sal), 'T', 1. ) 434 CALL lbc_lnk( avt (:,:,:) , 'W', 1. ) 435 CALL lbc_lnk( hmld (:,:) , 'T', 1. ) 436 CALL lbc_lnk( qsr (:,:) , 'T', 1. ) 437 CALL lbc_lnk( wndm (:,:) , 'T', 1. ) 438 CALL lbc_lnk( emp (:,:) , 'T', 1. ) 439 CALL lbc_lnk( emp_b (:,:) , 'T', 1. ) 440 CALL lbc_lnk( emps (:,:) , 'T', 1. ) 207 441 #if defined key_traldf_c3d 208 ahtu_temp(:,:,:)=ahtu(:,:,:)209 ahtv_temp(:,:,:)=ahtv(:,:,:)210 ahtw_temp(:,:,:)=ahtw(:,:,:)211 ahtt_temp(:,:,:)=ahtt(:,:,:)442 CALL lbc_lnk( ahtt (:,:,:) , 'T', 1. ) 443 CALL lbc_lnk( ahtu (:,:,:) , 'U', 1. ) 444 CALL lbc_lnk( ahtv (:,:,:) , 'V', 1. ) 445 CALL lbc_lnk( ahtw (:,:,:) , 'W', 1. ) 212 446 #elif defined key_traldf_c2d 213 ahtu_temp(:,:)=ahtu(:,:) 214 ahtv_temp(:,:)=ahtv(:,:) 215 ahtw_temp(:,:)=ahtw(:,:) 216 ahtt_temp(:,:)=ahtt(:,:) 217 #elif defined key_traldf_c1d 218 ahtu_temp(:)=ahtu(:) 219 ahtv_temp(:)=ahtv(:) 220 ahtw_temp(:)=ahtw(:) 221 ahtt_temp(:)=ahtt(:) 222 #else 223 ahtu_temp=ahtu 224 ahtv_temp=ahtv 225 ahtw_temp=ahtw 226 ahtt_temp=ahtt 447 CALL lbc_lnk( ahtt (:,:) , 'T', 1. ) 448 CALL lbc_lnk( ahtu (:,:) , 'U', 1. ) 449 CALL lbc_lnk( ahtv (:,:) , 'V', 1. ) 450 CALL lbc_lnk( ahtw (:,:) , 'W', 1. ) 227 451 #endif 228 452 # if defined key_zdfddm 229 avs_temp(:,:,:)=avs(:,:,:)453 CALL lbc_lnk( avs (:,:,:) , 'W', 1. ) 230 454 # endif 231 455 #if defined key_traldf_eiv 232 456 #if defined key_traldf_c3d 233 aeiu_temp(:,:,:)=aeiu(:,:,:)234 aeiv_temp(:,:,:)=aeiv(:,:,:)235 aeiw_temp(:,:,:)=aeiw(:,:,:)457 CALL lbc_lnk( aeiu (:,:,:) , 'U', 1. ) 458 CALL lbc_lnk( aeiv (:,:,:) , 'V', 1. ) 459 CALL lbc_lnk( aeiw (:,:,:) , 'W', 1. ) 236 460 #elif defined key_traldf_c2d 237 aeiu_temp(:,:)=aeiu(:,:) 238 aeiv_temp(:,:)=aeiv(:,:) 239 aeiw_temp(:,:)=aeiw(:,:) 240 #elif defined key_traldf_c1d 241 aeiu_temp(:)=aeiu(:) 242 aeiv_temp(:)=aeiv(:) 243 aeiw_temp(:)=aeiw(:) 244 #else 245 aeiu_temp=aeiu 246 aeiv_temp=aeiv 247 aeiw_temp=aeiw 461 CALL lbc_lnk( aeiu (:,:) , 'U', 1. ) 462 CALL lbc_lnk( aeiv (:,:) , 'V', 1. ) 463 CALL lbc_lnk( aeiw (:,:) , 'W', 1. ) 248 464 #endif 249 465 #endif 250 466 #if defined key_ldfslp 251 wslpi_temp(:,:,:)=wslpi(:,:,:) 252 wslpj_temp(:,:,:)=wslpj(:,:,:) 253 uslp_temp(:,:,:)=uslp(:,:,:) 254 vslp_temp(:,:,:)=vslp(:,:,:) 255 #endif 256 hu_temp(:,:)=hu(:,:) 257 hv_temp(:,:)=hv(:,:) 258 hur_temp(:,:)=hur(:,:) 259 hvr_temp(:,:)=hvr(:,:) 260 261 ! 2. create averages and reassign variables 262 DO jj = 1, jpj 263 DO ji = 1, jpi 264 sshn_tm(ji,jj)= sshn_tm(ji,jj)+sshn(ji,jj) 265 sshn(ji,jj)=sshn_tm(ji,jj)/(nn_dttrc+1) 266 267 sshu_n_tm(ji,jj)= sshu_n_tm(ji,jj)+sshu_n(ji,jj) 268 sshu_n(ji,jj)=sshu_n_tm(ji,jj)/(nn_dttrc+1) 269 270 sshv_n_tm(ji,jj)= sshv_n_tm(ji,jj)+sshv_n(ji,jj) 271 sshv_n(ji,jj)=sshv_n_tm(ji,jj)/(nn_dttrc+1) 272 273 sshb(ji,jj)=sshb_hold(ji,jj) 274 275 sshu_b(ji,jj)=sshu_b_hold(ji,jj) 276 277 sshv_b(ji,jj)=sshv_b_hold(ji,jj) 278 279 rnf_tm(ji,jj)= rnf_tm(ji,jj)+rnf(ji,jj) 280 rnf(ji,jj)=rnf_tm(ji,jj)/(nn_dttrc+1) 281 282 h_rnf_tm(ji,jj)= h_rnf_tm(ji,jj)+h_rnf(ji,jj) 283 h_rnf(ji,jj)=h_rnf_tm(ji,jj)/(nn_dttrc+1) 284 285 hmld_tm(ji,jj)= hmld_tm(ji,jj)+hmld(ji,jj) 286 hmld(ji,jj)=hmld_tm(ji,jj)/(nn_dttrc+1) 287 288 fr_i_tm(ji,jj)= fr_i_tm(ji,jj)+fr_i(ji,jj) 289 fr_i(ji,jj)=fr_i_tm(ji,jj)/(nn_dttrc+1) 290 291 ! variables that are initialized after averages initialized 292 wndm_tm(ji,jj)= wndm_tm(ji,jj)+wndm(ji,jj) 293 IF(kt == nittrc000)THEN 294 wndm(ji,jj)=wndm_tm(ji,jj)/(nn_dttrc) 295 ELSE 296 wndm(ji,jj)=wndm_tm(ji,jj)/(nn_dttrc+1) 297 ENDIF 298 299 qsr_tm(ji,jj)= qsr_tm(ji,jj)+qsr(ji,jj) 300 IF(kt == nittrc000)THEN 301 qsr(ji,jj)=qsr_tm(ji,jj)/(nn_dttrc) 302 ELSE 303 qsr(ji,jj)=qsr_tm(ji,jj)/(nn_dttrc+1) 304 ENDIF 305 306 emp_b(ji,jj)=emp_b_hold(ji,jj) 307 308 emp_tm(ji,jj)= emp_tm(ji,jj)+emp(ji,jj) 309 IF(kt == nittrc000)THEN 310 emp(ji,jj)=emp_tm(ji,jj)/(nn_dttrc) 311 ELSE 312 emp(ji,jj)=emp_tm(ji,jj)/(nn_dttrc+1) 313 ENDIF 314 315 emps_tm(ji,jj)= emps_tm(ji,jj)+emps(ji,jj) 316 IF(kt == nittrc000)THEN 317 emps(ji,jj)=emps_tm(ji,jj)/(nn_dttrc) 318 ELSE 319 emps(ji,jj)=emps_tm(ji,jj)/(nn_dttrc+1) 320 ENDIF 321 322 END DO 323 END DO 324 DO jk = 1, jpk 325 e3t_temp(:,:,jk)= fse3t(:,:,jk) 326 e3u_temp(:,:,jk)= fse3u(:,:,jk) 327 e3v_temp(:,:,jk)= fse3v(:,:,jk) 328 e3w_temp(:,:,jk)= fse3w(:,:,jk) 329 END DO 330 IF( lk_vvl ) THEN ! Update Now Vertical coord. ! (only in vvl case) 331 ! !------------------------------! 332 DO jk = 1, jpk 333 fse3t (:,:,jk) = fse3t_n (:,:,jk) ! vertical scale factors stored in fse3. arrays 334 fse3u (:,:,jk) = fse3u_n (:,:,jk) 335 fse3v (:,:,jk) = fse3v_n (:,:,jk) 336 fse3w (:,:,jk) = fse3w_n (:,:,jk) 337 END DO 338 ENDIF 339 DO jk = 1, jpk 340 DO jj = 1, jpj 341 DO ji = 1, jpi 342 343 un_tm(ji,jj,jk)= un_tm(ji,jj,jk)+un(ji,jj,jk)*e3u_temp(ji,jj,jk) 344 un(ji,jj,jk)=(un_tm(ji,jj,jk)/(nn_dttrc+1))/fse3u(ji,jj,jk) 345 346 vn_tm(ji,jj,jk)= vn_tm(ji,jj,jk)+vn(ji,jj,jk)*e3v_temp(ji,jj,jk) 347 vn(ji,jj,jk)=(vn_tm(ji,jj,jk)/(nn_dttrc+1))/fse3v(ji,jj,jk) 348 349 wn_tm(ji,jj,jk)= wn_tm(ji,jj,jk)+wn(ji,jj,jk)*e3w_temp(ji,jj,jk) 350 wn(ji,jj,jk)=(wn_tm(ji,jj,jk)/(nn_dttrc+1))/fse3w(ji,jj,jk) 351 352 avt_tm(ji,jj,jk)= avt_tm(ji,jj,jk)+avt(ji,jj,jk)*e3t_temp(ji,jj,jk) 353 avt(ji,jj,jk)=(avt_tm(ji,jj,jk)/(nn_dttrc+1))/fse3t(ji,jj,jk) 354 355 tsn_tm(ji,jj,jk,jp_tem)= tsn_tm(ji,jj,jk,jp_tem)+tsn(ji,jj,jk,jp_tem)*e3t_temp(ji,jj,jk) 356 tsn(ji,jj,jk,jp_tem)=(tsn_tm(ji,jj,jk,jp_tem)/(nn_dttrc+1))/fse3t(ji,jj,jk) 357 358 tsn_tm(ji,jj,jk,jp_sal)= tsn_tm(ji,jj,jk,jp_sal)+tsn(ji,jj,jk,jp_sal)*e3t_temp(ji,jj,jk) 359 tsn(ji,jj,jk,jp_sal)=(tsn_tm(ji,jj,jk,jp_sal)/(nn_dttrc+1))/fse3t(ji,jj,jk) 360 361 # if defined key_zdfddm 362 avs_tm(ji,jj,jk)= avs_tm(ji,jj,jk)+avs(ji,jj,jk)*e3w_temp(ji,jj,jk) 363 avs(ji,jj,jk)=(avs_tm(ji,jj,jk)/(nn_dttrc+1))/fse3w(ji,jj,jk) 364 365 # endif 366 367 #if defined key_ldfslp 368 wslpi_tm(ji,jj,jk)= wslpi_tm(ji,jj,jk)+wslpi(ji,jj,jk)*e3w_temp(ji,jj,jk) 369 wslpi(ji,jj,jk)=(wslpi_tm(ji,jj,jk)/(nn_dttrc+1))/fse3w(ji,jj,jk) 370 371 wslpj_tm(ji,jj,jk)= wslpj_tm(ji,jj,jk)+wslpj(ji,jj,jk)*e3w_temp(ji,jj,jk) 372 wslpj(ji,jj,jk)=(wslpj_tm(ji,jj,jk)/(nn_dttrc+1))/fse3w(ji,jj,jk) 373 374 uslp_tm(ji,jj,jk)= uslp_tm(ji,jj,jk)+uslp(ji,jj,jk)*e3u_temp(ji,jj,jk) 375 uslp(ji,jj,jk)=(uslp_tm(ji,jj,jk)/(nn_dttrc+1))/fse3u(ji,jj,jk) 376 377 vslp_tm(ji,jj,jk)= vslp_tm(ji,jj,jk)+vslp(ji,jj,jk)*e3v_temp(ji,jj,jk) 378 vslp(ji,jj,jk)=(vslp_tm(ji,jj,jk)/(nn_dttrc+1))/fse3v(ji,jj,jk) 379 #endif 380 END DO 381 END DO 382 END DO 383 #if defined key_traldf_c3d 384 DO jk = 1, jpk 385 DO jj = 1, jpj 386 DO ji = 1, jpi 387 ahtt_tm(ji,jj,jk)= ahtt_tm(ji,jj,jk)+ahtt(ji,jj,jk)*e3t_temp(ji,jj,jk) 388 ahtt(ji,jj,jk)=(ahtt_tm(ji,jj,jk)/(nn_dttrc+1))/fse3t(ji,jj,jk) 389 390 ahtu_tm(ji,jj,jk)= ahtu_tm(ji,jj,jk)+ahtu(ji,jj,jk)*e3u_temp(ji,jj,jk) 391 ahtu(ji,jj,jk)=(ahtu_tm(ji,jj,jk)/(nn_dttrc+1))/fse3u(ji,jj,jk) 392 393 ahtv_tm(ji,jj,jk)= ahtv_tm(ji,jj,jk)+ahtv(ji,jj,jk)*e3v_temp(ji,jj,jk) 394 ahtv(ji,jj,jk)=(ahtv_tm(ji,jj,jk)/(nn_dttrc+1))/fse3v(ji,jj,jk) 395 396 ahtw_tm(ji,jj,jk)= ahtw_tm(ji,jj,jk)+ahtw(ji,jj,jk)*e3w_temp(ji,jj,jk) 397 ahtw(ji,jj,jk)=(ahtw_tm(ji,jj,jk)/(nn_dttrc+1))/fse3w(ji,jj,jk) 398 399 END DO 400 END DO 401 END DO 402 #elif defined key_traldf_c2d 403 DO jj = 1, jpj 404 DO ji = 1, jpi 405 ahtt_tm(ji,jj)= ahtt_tm(ji,jj)+ahtt(ji,jj) 406 ahtt(ji,jj)=ahtt_tm(ji,jj)/(nn_dttrc+1) 407 408 ahtu_tm(ji,jj)= ahtu_tm(ji,jj)+ahtu(ji,jj) 409 ahtu(ji,jj)=ahtu_tm(ji,jj)/(nn_dttrc+1) 410 411 ahtv_tm(ji,jj)= ahtv_tm(ji,jj)+ahtv(ji,jj) 412 ahtv(ji,jj)=ahtv_tm(ji,jj)/(nn_dttrc+1) 413 414 ahtw_tm(ji,jj)= ahtw_tm(ji,jj)+ahtw(ji,jj) 415 ahtw(ji,jj)=ahtw_tm(ji,jj)/(nn_dttrc+1) 416 END DO 417 END DO 418 #elif defined key_traldf_c1d 419 DO jk = 1, jpk 420 ahtt_tm(jk)= ahtt_tm(jk)+ahtt(jk) 421 ahtt(jk)=ahtt_tm(jk)/(nn_dttrc+1) 422 423 ahtu_tm(jk)= ahtu_tm(jk)+ahtu(jk) 424 ahtu(jk)=ahtu_tm(jk)/(nn_dttrc+1) 425 426 ahtv_tm(jk)= ahtv_tm(jk)+ahtv(jk) 427 ahtv(jk)=ahtv_tm(jk)/(nn_dttrc+1) 428 429 ahtw_tm(jk)= ahtw_tm(jk)+ahtw(jk) 430 ahtw(jk)=ahtw_tm(jk)/(nn_dttrc+1) 431 END DO 432 #else 433 ahtt_tm= ahtt_tm+ahtt 434 ahtt=ahtt_tm/(nn_dttrc+1) 435 436 ahtu_tm= ahtu_tm+ahtu 437 ahtu=ahtu_tm/(nn_dttrc+1) 438 439 ahtv_tm= ahtv_tm+ahtv 440 ahtv=ahtv_tm/(nn_dttrc+1) 441 442 ahtw_tm= ahtw_tm+ahtw 443 ahtw=ahtw_tm/(nn_dttrc+1) 444 445 #endif 446 #if defined key_traldf_eiv 447 # if defined key_traldf_c3d 448 DO jk = 1, jpk 449 DO jj = 1, jpj 450 DO ji = 1, jpi 451 aeiu_tm(ji,jj,jk)= aeiu_tm(ji,jj,jk)+aeiu(ji,jj,jk)*e3u_temp(ji,jj,jk) 452 aeiu(ji,jj,jk)=(aeiu_tm(ji,jj,jk)/(nn_dttrc+1))/fse3u(ji,jj,jk) 453 454 aeiv_tm(ji,jj,jk)= aeiv_tm(ji,jj,jk)+aeiv(ji,jj,jk)*e3v_temp(ji,jj,jk) 455 aeiv(ji,jj,jk)=(aeiv_tm(ji,jj,jk)/(nn_dttrc+1))/fse3v(ji,jj,jk) 456 457 aeiw_tm(ji,jj,jk)= aeiw_tm(ji,jj,jk)+aeiw(ji,jj,jk)*e3w_temp(ji,jj,jk) 458 aeiw(ji,jj,jk)=(aeiw_tm(ji,jj,jk)/(nn_dttrc+1))/fse3w(ji,jj,jk) 459 460 END DO 461 END DO 462 END DO 463 # elif defined key_traldf_c2d 464 DO jj = 1, jpj 465 DO ji = 1, jpi 466 aeiu_tm(ji,jj)= aeiu_tm(ji,jj)+aeiu(ji,jj) 467 aeiu(ji,jj)=aeiu_tm(ji,jj)/(nn_dttrc+1) 468 469 aeiv_tm(ji,jj)= aeiv_tm(ji,jj)+aeiv(ji,jj) 470 aeiv(ji,jj)=aeiv_tm(ji,jj)/(nn_dttrc+1) 471 472 aeiw_tm(ji,jj)= aeiw_tm(ji,jj)+aeiw(ji,jj) 473 aeiw(ji,jj)=aeiw_tm(ji,jj)/(nn_dttrc+1) 474 END DO 475 END DO 476 # elif defined key_traldf_c1d 477 DO jk = 1, jpk 478 aeiu_tm(jk)= aeiu_tm(jk)+aeiu(jk) 479 aeiu(jk)=aeiu_tm(jk)/(nn_dttrc+1) 480 481 aeiv_tm(jk)= aeiv_tm(jk)+aeiv(jk) 482 aeiv(jk)=aeiv_tm(jk)/(nn_dttrc+1) 483 484 aeiw_tm(jk)= aeiw_tm(jk)+aeiw(jk) 485 aeiw(jk)=aeiw_tm(jk)/(nn_dttrc+1) 486 END DO 487 # else 488 aeiu_tm= aeiu_tm+aeiu 489 aeiu=aeiu_tm/(nn_dttrc+1) 490 491 aeiv_tm= aeiv_tm+aeiv 492 aeiv=aeiv_tm/(nn_dttrc+1) 493 494 aeiw_tm= aeiw_tm+aeiw 495 aeiw=aeiw_tm/(nn_dttrc+1) 496 # endif 497 # endif 498 499 CALL lbc_lnk( sshn(:,:), 'T', 1. ) 500 CALL lbc_lnk( sshu_n(:,:), 'U', 1. ) 501 CALL lbc_lnk( sshv_n(:,:), 'V', 1. ) 502 CALL lbc_lnk( sshf_n(:,:), 'F', 1. ) 503 CALL lbc_lnk( sshb(:,:), 'T', 1. ) 504 CALL lbc_lnk( sshu_b(:,:), 'U', 1. ) 505 CALL lbc_lnk( sshv_b(:,:), 'V', 1. ) 506 CALL lbc_lnk( ssha(:,:), 'T', 1. ) 507 CALL lbc_lnk( sshu_a(:,:), 'U', 1. ) 508 CALL lbc_lnk( sshv_a(:,:), 'V', 1. ) 509 CALL lbc_lnk( rnf(:,:), 'T', 1. ) 510 CALL lbc_lnk( h_rnf(:,:), 'T', 1. ) 511 CALL lbc_lnk( rotn(:,:,:), 'F', 1. ) 512 CALL lbc_lnk( hdivn(:,:,:), 'T', 1. ) 513 CALL lbc_lnk( rotb(:,:,:), 'F', 1. ) 514 CALL lbc_lnk( hdivb(:,:,:), 'T', 1. ) 515 CALL lbc_lnk( un(:,:,:), 'U', 1. ) 516 CALL lbc_lnk( vn(:,:,:), 'V', 1. ) 517 CALL lbc_lnk( wn(:,:,:), 'V', 1. ) 518 CALL lbc_lnk( tsn(:,:,:,jp_tem), 'T', 1. ) 519 CALL lbc_lnk( tsn(:,:,:,jp_sal), 'T', 1. ) 520 CALL lbc_lnk( avt(:,:,:), 'T', 1. ) 521 CALL lbc_lnk( hmld(:,:), 'T', 1. ) 522 CALL lbc_lnk( qsr(:,:), 'T', 1. ) 523 CALL lbc_lnk( wndm(:,:), 'T', 1. ) 524 CALL lbc_lnk( emp(:,:), 'T', 1. ) 525 CALL lbc_lnk( emp_b(:,:), 'T', 1. ) 526 CALL lbc_lnk( emps(:,:), 'T', 1. ) 527 #if defined key_traldf_c3d 528 CALL lbc_lnk( ahtt(:,:,:), 'T', 1. ) 529 CALL lbc_lnk( ahtu(:,:,:), 'U', 1. ) 530 CALL lbc_lnk( ahtv(:,:,:), 'V', 1. ) 531 CALL lbc_lnk( ahtw(:,:,:), 'W', 1. ) 532 #elif defined key_traldf_c2d 533 CALL lbc_lnk( ahtt(:,:), 'T', 1. ) 534 CALL lbc_lnk( ahtu(:,:), 'U', 1. ) 535 CALL lbc_lnk( ahtv(:,:), 'V', 1. ) 536 CALL lbc_lnk( ahtw(:,:), 'W', 1. ) 537 #endif 538 # if defined key_zdfddm 539 CALL lbc_lnk( avs, 'W', 1. ) 540 # endif 541 #if defined key_traldf_eiv 542 #if defined key_traldf_c3d 543 CALL lbc_lnk( aeiu(:,:,:), 'U', 1. ) 544 CALL lbc_lnk( aeiv(:,:,:), 'V', 1. ) 545 CALL lbc_lnk( aeiw(:,:,:), 'W', 1. ) 546 #elif defined key_traldf_c2d 547 CALL lbc_lnk( aeiu(:,:), 'U', 1. ) 548 CALL lbc_lnk( aeiv(:,:), 'V', 1. ) 549 CALL lbc_lnk( aeiw(:,:), 'W', 1. ) 550 #endif 551 #endif 552 #if defined key_ldfslp 553 CALL lbc_lnk( uslp(:,:,:), 'U', 1. ) 554 CALL lbc_lnk( vslp(:,:,:), 'V', 1. ) 555 CALL lbc_lnk( wslpi(:,:,:), 'W', 1. ) 556 CALL lbc_lnk( wslpj(:,:,:), 'W', 1. ) 557 #endif 558 CALL lbc_lnk( hu(:,:), 'U', 1. ) 559 CALL lbc_lnk( hv(:,:), 'V', 1. ) 560 CALL lbc_lnk( hur(:,:), 'U', 1. ) 561 CALL lbc_lnk( hvr(:,:), 'V', 1. ) 562 467 CALL lbc_lnk( uslp (:,:,:) , 'U', 1. ) 468 CALL lbc_lnk( vslp (:,:,:) , 'V', 1. ) 469 CALL lbc_lnk( wslpi (:,:,:) , 'W', 1. ) 470 CALL lbc_lnk( wslpj (:,:,:) , 'W', 1. ) 471 #endif 472 CALL lbc_lnk( hu (:,:) , 'U', 1. ) 473 CALL lbc_lnk( hv (:,:) , 'V', 1. ) 474 CALL lbc_lnk( hur (:,:) , 'U', 1. ) 475 CALL lbc_lnk( hvr (:,:) , 'V', 1. ) 476 ! 563 477 CALL trc_sub_ssh( kt ) ! after ssh & vertical velocity 478 ! 564 479 ENDIF 565 480 566 481 567 482 END SUBROUTINE trc_sub_stp 568 !!------------------------------------------------------------------- 569 570 !!------------------------------------------------------------------- 483 571 484 SUBROUTINE trc_sub_ini 572 485 !!------------------------------------------------------------------- … … 578 491 !! Compute the averages for sub-stepping 579 492 !!------------------------------------------------------------------- 580 INTEGER :: jk, jn ,ji,jj ! dummy loop indices581 493 INTEGER :: ierr 582 494 !!------------------------------------------------------------------- … … 590 502 IF( ierr /= 0 ) CALL ctl_stop( 'STOP', 'top_sub_alloc : unable to allocate standard ocean arrays' ) 591 503 592 DO jk = 1, jpk 593 DO jj = 1, jpj 594 DO ji = 1, jpi 595 un_tm(ji,jj,jk)= un(ji,jj,jk)*fse3u(ji,jj,jk) 596 vn_tm(ji,jj,jk)= vn(ji,jj,jk)*fse3v(ji,jj,jk) 597 wn_tm(ji,jj,jk)= wn(ji,jj,jk)*fse3w(ji,jj,jk) 598 avt_tm(ji,jj,jk)=avt(ji,jj,jk)*fse3t(ji,jj,jk) 599 tsn_tm(ji,jj,jk,jp_tem)= tsn_tm(ji,jj,jk,jp_tem)+tsn(ji,jj,jk,jp_tem)*fse3t(ji,jj,jk) 600 tsn_tm(ji,jj,jk,jp_sal)= tsn_tm(ji,jj,jk,jp_sal)+tsn(ji,jj,jk,jp_sal)*fse3t(ji,jj,jk) 601 #if defined key_zdfddm 602 avs_tm(ji,jj,jk)= avs_tm(ji,jj,jk)+avs(ji,jj,jk)*fse3w(ji,jj,jk) 603 #endif 504 un_tm (:,:,:) = un (:,:,:) * fse3u(:,:,:) 505 vn_tm (:,:,:) = vn (:,:,:) * fse3v(:,:,:) 506 wn_tm (:,:,:) = wn (:,:,:) * fse3w(:,:,:) 507 tsn_tm (:,:,:,jp_tem) = tsn (:,:,:,jp_tem) * fse3t(:,:,:) 508 tsn_tm (:,:,:,jp_sal) = tsn (:,:,:,jp_sal) * fse3t(:,:,:) 509 avt_tm (:,:,:) = avt (:,:,:) * fse3w(:,:,:) 510 # if defined key_zdfddm 511 avs_tm (:,:,:) = avs (:,:,:) * fse3w(:,:,:) 512 # endif 604 513 #if defined key_ldfslp 605 wslpi_tm(ji,jj,jk)= wslpi(ji,jj,jk)*fse3w(ji,jj,jk) !0. 606 wslpj_tm(ji,jj,jk)= wslpj(ji,jj,jk)*fse3w(ji,jj,jk) !0. 607 uslp_tm(ji,jj,jk)= uslp(ji,jj,jk)*fse3u(ji,jj,jk) !0. 608 vslp_tm(ji,jj,jk)= vslp(ji,jj,jk)*fse3v(ji,jj,jk) !0. 609 #endif 610 END DO 611 END DO 612 END DO 613 614 ! physics variables that are set after initialization: 615 wndm_tm(:,:)=0. !wndm(:,:) 616 qsr_tm(:,:)= 0. !qsr(:,:) 617 emp_tm(:,:)= 0. !emp(:,:) 618 emps_tm(:,:)=0. !emps(:,:) 619 620 sshn_tm(:,:) = sshn(:,:) !0. 621 sshu_n_tm(:,:) = sshu_n(:,:) !0. 622 sshv_n_tm(:,:) = sshv_n(:,:) !0. 623 rnf_tm(:,:)= rnf(:,:) !0. 624 h_rnf_tm(:,:)= h_rnf(:,:) !0. 625 hmld_tm(:,:)=hmld(:,:) 626 fr_i_tm(:,:)=fr_i(:,:) 514 wslpi_tm(:,:,:) = wslpi(:,:,:) * fse3w(:,:,:) 515 wslpj_tm(:,:,:) = wslpj(:,:,:) * fse3w(:,:,:) 516 uslp_tm (:,:,:) = uslp (:,:,:) * fse3u(:,:,:) 517 vslp_tm (:,:,:) = vslp (:,:,:) * fse3v(:,:,:) 518 #endif 519 520 ! Physics variables that are set after initialization: 521 emp_tm (:,:) = 0. 522 emps_tm(:,:) = 0. 523 qsr_tm (:,:) = 0. 524 wndm_tm(:,:) = 0. 525 ! 526 sshn_tm (:,:) = sshn (:,:) 527 sshu_n_tm(:,:) = sshu_n(:,:) 528 sshv_n_tm(:,:) = sshv_n(:,:) 529 rnf_tm (:,:) = rnf (:,:) 530 h_rnf_tm (:,:) = h_rnf (:,:) 531 hmld_tm (:,:) = hmld (:,:) 532 fr_i_tm (:,:) = fr_i (:,:) 533 ! 627 534 #if defined key_traldf_c3d 628 DO jk = 1, jpk 629 DO jj = 1, jpj 630 DO ji = 1, jpi 631 ahtt_tm(ji,jj,jk)= ahtt(ji,jj,jk)*fse3t(ji,jj,jk) 632 ahtu_tm(ji,jj,jk)= ahtu(ji,jj,jk)*fse3u(ji,jj,jk) 633 ahtv_tm(ji,jj,jk)= ahtv(ji,jj,jk)*fse3v(ji,jj,jk) 634 ahtw_tm(ji,jj,jk)= ahtw(ji,jj,jk)*fse3w(ji,jj,jk) 635 END DO 636 END DO 637 END DO 535 ahtt_tm(:,:,:) = ahtt(:,:,:) * fse3t(:,:,:) 536 ahtu_tm(:,:,:) = ahtu(:,:,:) * fse3u(:,:,:) 537 ahtv_tm(:,:,:) = ahtv(:,:,:) * fse3v(:,:,:) 538 ahtw_tm(:,:,:) = ahtw(:,:,:) * fse3w(:,:,:) 638 539 #elif defined key_traldf_c2d 639 DO jj = 1, jpj 640 DO ji = 1, jpi 641 ahtt_tm(ji,jj)= ahtt(ji,jj) 642 ahtu_tm(ji,jj)= ahtu(ji,jj) 643 ahtv_tm(ji,jj)= ahtv(ji,jj) 644 ahtw_tm(ji,jj)= ahtw(ji,jj) 645 END DO 646 END DO 540 ahtt_tm(:,:) = ahtt(:,:) 541 ahtu_tm(:,:) = ahtu(:,:) 542 ahtv_tm(:,:) = ahtv(:,:) 543 ahtw_tm(:,:) = ahtw(:,:) 647 544 #elif defined key_traldf_c1d 648 DO jk = 1, jpk 649 ahtt_tm(jk)= ahtt(jk) 650 ahtu_tm(jk)= ahtu(jk) 651 ahtv_tm(jk)= ahtv(jk) 652 ahtw_tm(jk)= ahtw(jk) 653 END DO 545 ahtt_tm(:) = ahtt(:) 546 ahtu_tm(:) = ahtu(:) 547 ahtv_tm(:) = ahtv(:) 548 ahtw_tm(:) = ahtw(:) 654 549 #else 655 ahtt_tm= ahtt 656 ahtu_tm= ahtu 657 ahtv_tm= ahtv 658 ahtw_tm= ahtw 659 #endif 550 ahtt_tm = ahtt 551 ahtu_tm = ahtu 552 ahtv_tm = ahtv 553 ahtw_tm = ahtw 554 #endif 555 ! 660 556 #if defined key_traldf_eiv 661 # if defined key_traldf_c3d 662 DO jk = 1, jpk 663 DO jj = 1, jpj 664 DO ji = 1, jpi 665 aeiu_tm(ji,jj,jk)= aeiu(ji,jj,jk)*fse3u(ji,jj,jk) 666 aeiv_tm(ji,jj,jk)= aeiv(ji,jj,jk)*fse3v(ji,jj,jk) 667 aeiw_tm(ji,jj,jk)= aeiw(ji,jj,jk)*fse3w(ji,jj,jk) 668 END DO 669 END DO 670 END DO 671 # elif defined key_traldf_c2d 672 DO jj = 1, jpj 673 DO ji = 1, jpi 674 aeiu_tm(ji,jj)= aeiu(ji,jj) 675 aeiv_tm(ji,jj)= aeiv(ji,jj) 676 aeiw_tm(ji,jj)= aeiw(ji,jj) 677 END DO 678 END DO 679 # elif defined key_traldf_c1d 680 DO jk = 1, jpk 681 aeiu_tm(jk)= aeiu(jk) 682 aeiv_tm(jk)= aeiv(jk) 683 aeiw_tm(jk)= aeiw(jk) 684 END DO 685 # else 686 aeiu_tm= aeiu 687 aeiv_tm= aeiv 688 aeiw_tm= aeiw 689 # endif 690 # endif 691 557 # if defined key_traldf_c3d 558 aieu_tm(:,:,:) = aieu(:,:,:) * fse3u(:,:,:) 559 aiev_tm(:,:,:) = aiev(:,:,:) * fse3v(:,:,:) 560 aiew_tm(:,:,:) = aiew(:,:,:) * fse3w(:,:,:) 561 # elif defined key_traldf_c2d 562 aieu_tm(:,:) = aeiu(:,:) 563 aiev_tm(:,:) = aeiv(:,:) 564 aiew_tm(:,:) = aeiw(:,:) 565 # elif defined key_traldf_c1d 566 aeiu_tm(:) = aeiu(:) 567 aeiv_tm(:) = aeiv(:) 568 aeiw_tm(:) = aeiw(:) 569 # else 570 aeiu_tm = aeiu 571 aeiv_tm = aeiv 572 aeiw_tm = aeiw 573 # endif 574 #endif 575 ! 692 576 END SUBROUTINE trc_sub_ini 693 577 694 !!------------------------------------------------------------------- 695 SUBROUTINE trc_sub_reset(kt) 578 SUBROUTINE trc_sub_reset( kt ) 696 579 !!------------------------------------------------------------------- 697 580 !! *** ROUTINE trc_sub_reset *** … … 702 585 !! Compute the averages for sub-stepping 703 586 !!------------------------------------------------------------------- 704 INTEGER :: jk, jn ,ji,jj ! dummy loop indices705 INTEGER :: ierr706 587 INTEGER, INTENT( in ) :: kt ! ocean time-step index 707 !!------------------------------------------------------------------- 708 709 ! restore physics variables 710 avt(:,:,:)=avt_temp(:,:,:) 711 un(:,:,:)=un_temp(:,:,:) 712 vn(:,:,:)=vn_temp(:,:,:) 713 wn(:,:,:)=wn_temp(:,:,:) 714 sshn(:,:)=sshn_temp(:,:) 715 sshb(:,:)=sshb_temp(:,:) 716 ssha(:,:)=ssha_temp(:,:) 717 sshu_n(:,:)=sshu_n_temp(:,:) 718 sshu_b(:,:)=sshu_b_temp(:,:) 719 sshu_a(:,:)=sshu_a_temp(:,:) 720 sshv_n(:,:)=sshv_n_temp(:,:) 721 sshv_b(:,:)=sshv_b_temp(:,:) 722 sshv_a(:,:)=sshv_a_temp(:,:) 723 sshf_n(:,:)=sshf_n_temp(:,:) 588 INTEGER :: jk ! dummy loop indices 589 !!------------------------------------------------------------------- 590 591 ! restore physics variables 592 avt (:,:,:) = avt_temp (:,:,:) 593 un (:,:,:) = un_temp (:,:,:) 594 vn (:,:,:) = vn_temp (:,:,:) 595 wn (:,:,:) = wn_temp (:,:,:) 596 sshn (:,:) = sshn_temp (:,:) 597 sshb (:,:) = sshb_temp (:,:) 598 ssha (:,:) = ssha_temp (:,:) 599 sshu_n(:,:) = sshu_n_temp(:,:) 600 sshu_b(:,:) = sshu_b_temp(:,:) 601 sshu_a(:,:) = sshu_a_temp(:,:) 602 sshv_n(:,:) = sshv_n_temp(:,:) 603 sshv_b(:,:) = sshv_b_temp(:,:) 604 sshv_a(:,:) = sshv_a_temp(:,:) 605 sshf_n(:,:) = sshf_n_temp(:,:) 724 606 #if defined key_ldfslp 725 wslpi(:,:,:)=wslpi_temp(:,:,:) 726 wslpj(:,:,:)=wslpj_temp(:,:,:) 727 uslp(:,:,:)=uslp_temp(:,:,:) 728 vslp(:,:,:)=vslp_temp(:,:,:) 729 #endif 730 rnf(:,:)=rnf_temp(:,:) 731 h_rnf(:,:)=h_rnf_temp(:,:) 732 hdivn(:,:,:)=hdivn_temp(:,:,:) 733 rotn(:,:,:)=rotn_temp(:,:,:) 734 hdivb(:,:,:)=hdivb_temp(:,:,:) 735 rotb(:,:,:)=rotb_temp(:,:,:) 736 hu(:,:)=hu_temp(:,:) 737 hv(:,:)=hv_temp(:,:) 738 hur(:,:)=hur_temp(:,:) 739 hvr(:,:)=hvr_temp(:,:) 740 tsn(:,:,:,:)=tsn_temp(:,:,:,:) 607 wslpi (:,:,:) = wslpi_temp (:,:,:) 608 wslpj (:,:,:) = wslpj_temp (:,:,:) 609 uslp (:,:,:) = uslp_temp (:,:,:) 610 vslp (:,:,:) = vslp_temp (:,:,:) 611 #endif 612 rnf (:,:) = rnf_temp (:,:) 613 h_rnf (:,:) = h_rnf_temp (:,:) 614 hdivn (:,:,:) = hdivn_temp (:,:,:) 615 rotn (:,:,:) = rotn_temp (:,:,:) 616 hdivb (:,:,:) = hdivb_temp (:,:,:) 617 rotb (:,:,:) = rotb_temp (:,:,:) 618 hu (:,:) = hu_temp (:,:) 619 hv (:,:) = hv_temp (:,:) 620 hur (:,:) = hur_temp (:,:) 621 hvr (:,:) = hvr_temp (:,:) 622 ! 623 tsn (:,:,:,:) = tsn_temp (:,:,:,:) 741 624 # if defined key_zdfddm 742 avs(:,:,:)=avs_temp(:,:,:) 743 # endif 744 hmld(:,:)=hmld_temp(:,:) 745 qsr(:,:)=qsr_temp(:,:) 746 fr_i(:,:)=fr_i_temp(:,:) 747 wndm(:,:)=wndm_temp(:,:) 748 emp(:,:)=emp_temp(:,:) 749 emps(:,:)=emps_temp(:,:) 750 emp_b(:,:)=emp_b_temp(:,:) 625 avs (:,:,:) = avs_temp (:,:,:) 626 # endif 627 hmld (:,:) = hmld_temp (:,:) 628 qsr (:,:) = qsr_temp (:,:) 629 fr_i (:,:) = fr_i_temp (:,:) 630 wndm (:,:) = wndm_temp (:,:) 631 emp (:,:) = emp_temp (:,:) 632 emps (:,:) = emps_temp (:,:) 633 emp_b (:,:) = emp_b_temp (:,:) 634 ! 751 635 #if defined key_traldf_c3d 752 ahtu_temp(:,:,:)=ahtu(:,:,:)753 ahtv_temp(:,:,:)=ahtv(:,:,:)754 ahtw_temp(:,:,:)=ahtw(:,:,:)755 ahtt_temp(:,:,:)=ahtt(:,:,:)636 ahtu (:,:,:) = ahtu_temp (:,:,:) 637 ahtv (:,:,:) = ahtv_temp (:,:,:) 638 ahtw (:,:,:) = ahtw_temp (:,:,:) 639 ahtt (:,:,:) = ahtt_temp (:,:,:) 756 640 #elif defined key_traldf_c2d 757 ahtu_temp(:,:)=ahtu(:,:)758 ahtv_temp(:,:)=ahtv(:,:)759 ahtw_temp(:,:)=ahtw(:,:)760 ahtt_temp(:,:)=ahtt(:,:)641 ahtu (:,:) = ahtu_temp (:,:) 642 ahtv (:,:) = ahtv_temp (:,:) 643 ahtw (:,:) = ahtw_temp (:,:) 644 ahtt (:,:) = ahtt_temp (:,:) 761 645 #elif defined key_traldf_c1d 762 ahtu_temp(:)=ahtu(:)763 ahtv_temp(:)=ahtv(:)764 ahtw_temp(:)=ahtw(:)765 ahtt_temp(:)=ahtt(:)646 ahtu (:) = ahtu_temp (:) 647 ahtv (:) = ahtv_temp (:) 648 ahtw (:) = ahtw_temp (:) 649 ahtt (:) = ahtt_temp (:) 766 650 #else 767 ahtu_temp=ahtu 768 ahtv_temp=ahtv 769 ahtw_temp=ahtw 770 ahtt_temp=ahtt 771 #endif 651 ahtu = ahtu_temp 652 ahtv = ahtv_temp 653 ahtw = ahtw_temp 654 ahtt = ahtt_temp 655 #endif 656 ! 772 657 #if defined key_traldf_eiv 773 658 #if defined key_traldf_c3d 774 aeiu_temp(:,:,:)=aeiu(:,:,:)775 aeiv_temp(:,:,:)=aeiv(:,:,:)776 aeiw_temp(:,:,:)=aeiw(:,:,:)659 aeiu (:,:,:) = aeiu_temp(:,:,:) 660 aeiv (:,:,:) = aeiv_temp(:,:,:) 661 aeiw (:,:,:) = aeiw_temp(:,:,:) 777 662 #elif defined key_traldf_c2d 778 aeiu_temp(:,:)=aeiu(:,:)779 aeiv_temp(:,:)=aeiv(:,:)780 aeiw_temp(:,:)=aeiw(:,:)663 aeiu (:,:) = aeiu_temp(:,:) 664 aeiv (:,:) = aeiv_temp(:,:) 665 aeiw (:,:) = aeiw_temp(:,:) 781 666 #elif defined key_traldf_c1d 782 aeiu_temp(:)=aeiu(:)783 aeiv_temp(:)=aeiv(:)784 aeiw_temp(:)=aeiw(:)667 aeiu (:) = aeiu_temp(:) 668 aeiv (:) = aeiv_temp(:) 669 aeiw (:) = aeiw_temp(:) 785 670 #else 786 aeiu_temp=aeiu 787 aeiv_temp=aeiv 788 aeiw_temp=aeiw 789 #endif 790 #endif 791 792 793 ! !------------------------------! 794 DO jk = 1, jpk 795 fse3t(:,:,jk)= e3t_temp(:,:,jk) !0. 796 fse3u(:,:,jk)= e3u_temp(:,:,jk) !0. 797 fse3v(:,:,jk)= e3v_temp(:,:,jk)!0. 798 fse3w(:,:,jk)= e3w_temp(:,:,jk) !0. 799 END DO 800 IF( lk_vvl ) THEN ! Update Now Vertical coord. ! (only in vvl case) 801 ! !------------------------------! 671 aeiu = aeiu_temp 672 aeiv = aeiv_temp 673 aeiw = aeiw_temp 674 #endif 675 #endif 676 ! 677 DO jk = 1, jpk 678 fse3t(:,:,jk)= e3t_temp(:,:,jk) 679 fse3u(:,:,jk)= e3u_temp(:,:,jk) 680 fse3v(:,:,jk)= e3v_temp(:,:,jk) 681 fse3w(:,:,jk)= e3w_temp(:,:,jk) 682 END DO 683 ! !------------------------------! 684 IF( lk_vvl ) THEN ! Update Now Vertical coord. ! (only in vvl case) 685 ! !------------------------------! 802 686 DO jk = 1, jpkm1 803 687 fsdept(:,:,jk) = fsdept_n(:,:,jk) ! now local depths stored in fsdep. arrays … … 813 697 fse3vw(:,:,jk) = fse3vw_n(:,:,jk) 814 698 END DO 699 ! 815 700 ENDIF 816 701 817 ! start new averages702 ! Start new averages 818 703 DO jk = 1, jpk 819 DO jj = 1, jpj 820 DO ji = 1, jpi 821 un_tm(ji,jj,jk)=un(ji,jj,jk)*fse3u(ji,jj,jk) !0.0 822 vn_tm(ji,jj,jk)=vn(ji,jj,jk)*fse3v(ji,jj,jk) !0.0 823 wn_tm(ji,jj,jk)=wn(ji,jj,jk)*fse3w(ji,jj,jk) !0.0 824 avt_tm(ji,jj,jk)=avt(ji,jj,jk)*fse3t(ji,jj,jk) !0.0 825 tsn_tm(ji,jj,jk,jp_tem)=tsn(ji,jj,jk,jp_tem)*fse3t(ji,jj,jk) !0.0 826 tsn_tm(ji,jj,jk,jp_sal)=tsn(ji,jj,jk,jp_sal)*fse3t(ji,jj,jk) !0.0 704 un_tm (:,:,jk) = un (:,:,jk) * fse3u(:,:,jk) 705 vn_tm (:,:,jk) = vn (:,:,jk) * fse3v(:,:,jk) 706 wn_tm (:,:,jk) = wn (:,:,jk) * fse3w(:,:,jk) 707 tsn_tm (:,:,jk,jp_tem) = tsn (:,:,jk,jp_tem) * fse3t(:,:,jk) 708 tsn_tm (:,:,jk,jp_sal) = tsn (:,:,jk,jp_sal) * fse3t(:,:,jk) 709 avt_tm (:,:,jk) = avt (:,:,jk) * fse3w(:,:,jk) 827 710 # if defined key_zdfddm 828 avs_tm==avs(ji,jj,jk)*fse3w(ji,jj,jk) !0.0711 avs_tm (:,:,jk) = avs (:,:,jk) * fse3w(:,:,jk) 829 712 # endif 830 713 #if defined key_ldfslp 831 wslpi_tm(ji,jj,jk)= wslpi(ji,jj,jk)*fse3w(ji,jj,jk) !0. 832 wslpj_tm(ji,jj,jk)=wslpj(ji,jj,jk)*fse3w(ji,jj,jk) !0. 833 uslp_tm(ji,jj,jk)=uslp(ji,jj,jk)*fse3u(ji,jj,jk) !0. 834 vslp_tm(ji,jj,jk)=vslp(ji,jj,jk)*fse3v(ji,jj,jk) !0. 835 #endif 836 END DO 837 END DO 714 wslpi_tm(:,:,jk) = wslpi(:,:,jk) * fse3w(:,:,jk) 715 wslpj_tm(:,:,jk) = wslpj(:,:,jk) * fse3w(:,:,jk) 716 uslp_tm (:,:,jk) = uslp (:,:,jk) * fse3u(:,:,jk) 717 vslp_tm (:,:,jk) = vslp (:,:,jk) * fse3v(:,:,jk) 718 #endif 838 719 END DO 839 sshn_tm(:,:) = sshn(:,:) !0. 840 sshu_n_tm(:,:) = sshu_n(:,:) !0. 841 sshv_n_tm(:,:) = sshv_n(:,:) !0. 842 rnf_tm(:,:)= rnf(:,:) !0. 843 h_rnf_tm(:,:)= h_rnf(:,:) !0. 844 hmld_tm(:,:)=hmld(:,:) 845 fr_i_tm(:,:)=fr_i(:,:) 846 sshb_hold(:,:)=sshn(:,:) 847 sshu_b_hold(:,:)=sshu_n(:,:) 848 sshv_b_hold(:,:)=sshv_n(:,:) 849 emp_b_hold(:,:)=emp(:,:) 850 emp_tm(:,:)=emp(:,:) 851 emps_tm(:,:)=emps(:,:) 852 qsr_tm(:,:)=qsr(:,:) 853 wndm_tm(:,:)=wndm(:,:) 720 ! 721 sshn_tm (:,:) = sshn (:,:) 722 sshu_n_tm (:,:) = sshu_n(:,:) 723 sshv_n_tm (:,:) = sshv_n(:,:) 724 rnf_tm (:,:) = rnf (:,:) 725 h_rnf_tm (:,:) = h_rnf (:,:) 726 hmld_tm (:,:) = hmld (:,:) 727 fr_i_tm (:,:) = fr_i (:,:) 728 sshb_hold (:,:) = sshn (:,:) 729 sshu_b_hold(:,:) = sshu_n(:,:) 730 sshv_b_hold(:,:) = sshv_n(:,:) 731 emp_b_hold (:,:) = emp (:,:) 732 emp_tm (:,:) = emp (:,:) 733 emps_tm (:,:) = emps (:,:) 734 qsr_tm (:,:) = qsr (:,:) 735 wndm_tm (:,:) = wndm (:,:) 736 ! 854 737 #if defined key_traldf_c3d 855 DO jk = 1, jpk 856 DO jj = 1, jpj 857 DO ji = 1, jpi 858 ahtt_tm(ji,jj,jk)= ahtt(ji,jj,jk)*fse3t(ji,jj,jk) 859 ahtu_tm(ji,jj,jk)= ahtu(ji,jj,jk)*fse3u(ji,jj,jk) 860 ahtv_tm(ji,jj,jk)= ahtv(ji,jj,jk)*fse3v(ji,jj,jk) 861 ahtw_tm(ji,jj,jk)= ahtw(ji,jj,jk)*fse3w(ji,jj,jk) 862 END DO 863 END DO 738 DO jk = 1, jpkm1 739 ahtt_tm(:,:,jk) = ahtt(:,:,jk) * fse3t(:,:,jk) 740 ahtu_tm(:,:,jk) = ahtu(:,:,jk) * fse3u(:,:,jk) 741 ahtv_tm(:,:,jk) = ahtv(:,:,jk) * fse3v(:,:,jk) 742 ahtw_tm(:,:,jk) = ahtw(:,:,jk) * fse3w(:,:,jk) 864 743 END DO 865 744 #elif defined key_traldf_c2d 866 DO jj = 1, jpj 867 DO ji = 1, jpi 868 ahtt_tm(ji,jj)= ahtt(ji,jj) 869 ahtu_tm(ji,jj)= ahtu(ji,jj) 870 ahtv_tm(ji,jj)= ahtv(ji,jj) 871 ahtw_tm(ji,jj)= ahtw(ji,jj) 872 END DO 745 ahtt_tm(:,:) = ahtt(:,:) 746 ahtu_tm(:,:) = ahtu(:,:) 747 ahtv_tm(:,:) = ahtv(:,:) 748 ahtw_tm(:,:) = ahtw(:,:) 749 #elif defined key_traldf_c1d 750 ahtt_tm(:) = ahtt(:) 751 ahtu_tm(:) = ahtu(:) 752 ahtv_tm(:) = ahtv(:) 753 ahtw_tm(:) = ahtw(:) 754 #else 755 ahtt_tm = ahtt 756 ahtu_tm = ahtu 757 ahtv_tm = ahtv 758 ahtw_tm = ahtw 759 #endif 760 ! 761 #if defined key_traldf_eiv 762 # if defined key_traldf_c3d 763 DO jk = 1, jpk 764 aieu_tm(:,:,jk) = aieu(:,:,jk) * fse3u(:,:,jk) 765 aiev_tm(:,:,jk) = aiev(:,:,jk) * fse3v(:,:,jk) 766 aiew_tm(:,:,jk) = aiew(:,:,jk) * fse3w(:,:,jk) 873 767 END DO 874 #elif defined key_traldf_c1d 875 DO jk = 1, jpk 876 ahtt_tm(jk)= ahtt(jk) 877 ahtu_tm(jk)= ahtu(jk) 878 ahtv_tm(jk)= ahtv(jk) 879 ahtw_tm(jk)= ahtw(jk) 880 END DO 881 #else 882 ahtt_tm= ahtt 883 ahtu_tm= ahtu 884 ahtv_tm= ahtv 885 ahtw_tm= ahtw 886 #endif 887 #if defined key_traldf_eiv 888 # if defined key_traldf_c3d 889 DO jk = 1, jpk 890 DO jj = 1, jpj 891 DO ji = 1, jpi 892 aeiu_tm(ji,jj,jk)= aeiu(ji,jj,jk)*fse3u(ji,jj,jk) 893 aeiv_tm(ji,jj,jk)= aeiv(ji,jj,jk)*fse3v(ji,jj,jk) 894 aeiw_tm(ji,jj,jk)= aeiw(ji,jj,jk)*fse3w(ji,jj,jk) 895 END DO 896 END DO 897 END DO 898 # elif defined key_traldf_c2d 899 DO jj = 1, jpj 900 DO ji = 1, jpi 901 aeiu_tm(ji,jj)= aeiu(ji,jj) 902 aeiv_tm(ji,jj)= aeiv(ji,jj) 903 aeiw_tm(ji,jj)= aeiw(ji,jj) 904 END DO 905 END DO 906 # elif defined key_traldf_c1d 907 DO jk = 1, jpk 908 aeiu_tm(jk)= aeiu(jk) 909 aeiv_tm(jk)= aeiv(jk) 910 aeiw_tm(jk)= aeiw(jk) 911 END DO 912 # else 913 aeiu_tm= aeiu 914 aeiv_tm= aeiv 915 aeiw_tm= aeiw 916 # endif 917 # endif 918 919 768 # elif defined key_traldf_c2d 769 aieu_tm(:,:) = aeiu(:,:) 770 aiev_tm(:,:) = aeiv(:,:) 771 aiew_tm(:,:) = aeiw(:,:) 772 # elif defined key_traldf_c1d 773 aeiu_tm(:) = aeiu(:) 774 aeiv_tm(:) = aeiv(:) 775 aeiw_tm(:) = aeiw(:) 776 # else 777 aeiu_tm = aeiu 778 aeiv_tm = aeiv 779 aeiw_tm = aeiw 780 # endif 781 #endif 782 ! 920 783 END SUBROUTINE trc_sub_reset 921 !!------------------------------------------------------------------- 784 785 922 786 SUBROUTINE trc_sub_ssh( kt ) 923 787 !!---------------------------------------------------------------------- … … 940 804 !!---------------------------------------------------------------------- 941 805 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 942 USE oce , ONLY: z3d => ta ! ta used as 3D workspace943 806 USE wrk_nemo, ONLY: zhdiv => wrk_2d_1 , z2d => wrk_2d_2 ! 2D workspace 807 USE wrk_nemo, ONLY: z3d => wrk_3d_10 ! 3D workspace 944 808 ! 945 809 INTEGER, INTENT(in) :: kt ! time step … … 949 813 !!---------------------------------------------------------------------- 950 814 951 IF( wrk_in_use(2, 1,2) ) THEN952 CALL ctl_stop(' ssh_wzv: requested workspace arrays unavailable') ; RETURN815 IF( wrk_in_use(2, 1,2) .OR. wrk_in_use(3,10) ) THEN 816 CALL ctl_stop('trc_sub_ssh: requested workspace arrays unavailable') ; RETURN 953 817 ENDIF 818 954 819 955 820 IF( kt == nittrc000 ) THEN … … 960 825 ! 961 826 wn(:,:,jpk) = 0._wp ! bottom boundary condition: w=0 (set once for all) 962 !963 827 ! 964 828 ENDIF … … 1052 916 1053 917 ! 1054 IF( wrk_not_released(2, 1,2) ) CALL ctl_stop('ssh_wzv: failed to release workspace arrays') 918 IF( wrk_not_released(2, 1,2) .OR. wrk_not_released(3, 10) ) THEN 919 CALL ctl_stop('ssh_wzv: failed to release workspace arrays') 920 ENDIF 1055 921 ! 1056 922 END SUBROUTINE trc_sub_ssh 1057 !!------------------------------------------------------------------- 1058 1059 !!------------------------------------------------------------------- 923 1060 924 INTEGER FUNCTION trc_sub_alloc() 1061 925 !!------------------------------------------------------------------- … … 1063 927 !!------------------------------------------------------------------- 1064 928 USE lib_mpp, ONLY: ctl_warn 1065 INTEGER :: 929 INTEGER :: ierr 1066 930 !!------------------------------------------------------------------- 1067 931 !
Note: See TracChangeset
for help on using the changeset viewer.