Changeset 216 for trunk/NEMO/OPA_SRC/DYN/dynhpg.F90
- Timestamp:
- 2005-03-17T15:02:38+01:00 (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMO/OPA_SRC/DYN/dynhpg.F90
r170 r216 19 19 USE phycst ! physical constants 20 20 USE in_out_manager ! I/O manager 21 USE trddyn_oce ! dynamics trends diagnostics variables 21 USE trdmod ! ocean dynamics trends 22 USE trdmod_oce ! ocean variables trends 22 23 23 24 IMPLICIT NONE … … 82 83 !! ! 97-05 (G. Madec) split dynber into dynkeg and dynhpg 83 84 !! 8.5 ! 02-08 (G. Madec) F90: Free form and module, vector opt. 85 !! 9.0 ! 04-08 (C. Talandier) New trends organization 84 86 !!---------------------------------------------------------------------- 85 87 !! * modules used … … 94 96 REAL(wp) :: & 95 97 zcoef0, zcoef1, zuap, zvap ! temporary scalars 98 REAL(wp), DIMENSION(jpi,jpj,jpk) :: & 99 ztdua, ztdva ! temporary scalars 96 100 !!---------------------------------------------------------------------- 97 101 … … 100 104 IF(lwp) WRITE(numout,*) 'dyn_hpg : hydrostatic pressure gradient trend' 101 105 IF(lwp) WRITE(numout,*) '~~~~~~~ s-coordinate case, vector opt. case' 106 ENDIF 107 108 ! Save ua and va trends 109 IF( l_trddyn ) THEN 110 ztdua(:,:,:) = ua(:,:,:) 111 ztdva(:,:,:) = va(:,:,:) 102 112 ENDIF 103 113 … … 125 135 ua(ji,jj,1) = ua(ji,jj,1) + zhpi(ji,jj,1) + zuap 126 136 va(ji,jj,1) = va(ji,jj,1) + zhpj(ji,jj,1) + zvap 127 # if defined key_trddyn || defined key_trd_vor128 ! save the trend for diagnostics129 utrd(ji,jj,1,1) = zhpi(ji,jj,1) + zuap130 vtrd(ji,jj,1,1) = zhpj(ji,jj,1) + zvap131 # endif132 137 END DO 133 138 END DO … … 140 145 ! hydrostatic pressure gradient along s-surfaces 141 146 zhpi(ji,jj,jk) = zhpi(ji,jj,jk-1) + zcoef0 / e1u(ji,jj) & 142 * ( fse3w(ji+1,jj,jk) * ( rhd(ji+1,jj,jk) + rhd(ji+1,jj,jk-1) ) &143 -fse3w(ji ,jj,jk) * ( rhd(ji ,jj,jk) + rhd(ji ,jj,jk-1) ) )147 & * ( fse3w(ji+1,jj,jk) * ( rhd(ji+1,jj,jk) + rhd(ji+1,jj,jk-1) ) & 148 & -fse3w(ji ,jj,jk) * ( rhd(ji ,jj,jk) + rhd(ji ,jj,jk-1) ) ) 144 149 zhpj(ji,jj,jk) = zhpj(ji,jj,jk-1) + zcoef0 / e2v(ji,jj) & 145 * ( fse3w(ji,jj+1,jk) * ( rhd(ji,jj+1,jk) + rhd(ji,jj+1,jk-1) ) &146 -fse3w(ji,jj ,jk) * ( rhd(ji,jj, jk) + rhd(ji,jj ,jk-1) ) )150 & * ( fse3w(ji,jj+1,jk) * ( rhd(ji,jj+1,jk) + rhd(ji,jj+1,jk-1) ) & 151 & -fse3w(ji,jj ,jk) * ( rhd(ji,jj, jk) + rhd(ji,jj ,jk-1) ) ) 147 152 ! s-coordinate pressure gradient correction 148 153 zuap = -zcoef0 * ( rhd(ji+1,jj ,jk) + rhd(ji,jj,jk) ) & … … 153 158 ua(ji,jj,jk) = ua(ji,jj,jk) + zhpi(ji,jj,jk) + zuap 154 159 va(ji,jj,jk) = va(ji,jj,jk) + zhpj(ji,jj,jk) + zvap 155 # if defined key_trddyn || defined key_trd_vor156 ! save the momentum trends for diagnostics157 utrd(ji,jj,jk,1) = zhpi(ji,jj,jk) + zuap158 vtrd(ji,jj,jk,1) = zhpj(ji,jj,jk) + zvap159 # endif160 160 END DO 161 161 END DO 162 162 END DO 163 164 ! save the hydrostatic pressure gradient trends for diagnostic 165 ! momentum trends 166 IF( l_trddyn ) THEN 167 zhpi(:,:,:) = ua(:,:,:) - ztdua(:,:,:) 168 zhpj(:,:,:) = va(:,:,:) - ztdva(:,:,:) 169 CALL trd_mod(zhpi, zhpj, jpdtdhpg, 'DYN', kt) 170 ENDIF 163 171 164 172 IF(l_ctl) THEN ! print sum trends (used for debugging) … … 212 220 zcoef0, zcoef1, zuap, & ! temporary scalars 213 221 zcoef2, zcoef3, zvap ! " " 222 REAL(wp), DIMENSION(jpi,jpj,jpk) :: & 223 ztdua, ztdva ! temporary scalars 214 224 !!---------------------------------------------------------------------- 215 225 … … 219 229 IF(lwp) WRITE(numout,*) '~~~~~~~ z-coordinate with partial steps' 220 230 IF(lwp) WRITE(numout,*) ' vector optimization, no autotasking' 231 ENDIF 232 233 ! Save ua and va trends 234 IF( l_trddyn ) THEN 235 ztdua(:,:,:) = ua(:,:,:) 236 ztdva(:,:,:) = va(:,:,:) 221 237 ENDIF 222 238 … … 238 254 ua(ji,jj,1) = ua(ji,jj,1) + zhpi(ji,jj,1) 239 255 va(ji,jj,1) = va(ji,jj,1) + zhpj(ji,jj,1) 240 # if defined key_trddyn || defined key_trd_vor241 ! save the momentum trends for diagnostics242 utrd(ji,jj,1,1) = zhpi(ji,jj,1)243 vtrd(ji,jj,1,1) = zhpj(ji,jj,1)244 # endif245 256 END DO 246 257 END DO … … 254 265 ! hydrostatic pressure gradient 255 266 zhpi(ji,jj,jk) = zhpi(ji,jj,jk-1) & 256 + zcoef1 * ( ( rhd(ji+1,jj,jk)+rhd(ji+1,jj,jk-1) ) &257 - ( rhd(ji ,jj,jk)+rhd(ji ,jj,jk-1) ) ) / e1u(ji,jj)267 & + zcoef1 * ( ( rhd(ji+1,jj,jk)+rhd(ji+1,jj,jk-1) ) & 268 & - ( rhd(ji ,jj,jk)+rhd(ji ,jj,jk-1) ) ) / e1u(ji,jj) 258 269 259 270 zhpj(ji,jj,jk) = zhpj(ji,jj,jk-1) & 260 + zcoef1 * ( ( rhd(ji,jj+1,jk)+rhd(ji,jj+1,jk-1) ) &261 - ( rhd(ji,jj, jk)+rhd(ji,jj ,jk-1) ) ) / e2v(ji,jj)271 & + zcoef1 * ( ( rhd(ji,jj+1,jk)+rhd(ji,jj+1,jk-1) ) & 272 & - ( rhd(ji,jj, jk)+rhd(ji,jj ,jk-1) ) ) / e2v(ji,jj) 262 273 ! add to the general momentum trend 263 274 ua(ji,jj,jk) = ua(ji,jj,jk) + zhpi(ji,jj,jk) 264 275 va(ji,jj,jk) = va(ji,jj,jk) + zhpj(ji,jj,jk) 265 # if defined key_trddyn || defined key_trd_vor266 ! save the momentum trends for diagnostics267 utrd(ji,jj,jk,1) = zhpi(ji,jj,jk)268 vtrd(ji,jj,jk,1) = zhpj(ji,jj,jk)269 # endif270 276 END DO 271 277 END DO … … 293 299 ! add the new one to the general momentum trend 294 300 ua(ji,jj,iku) = ua(ji,jj,iku) + zhpi(ji,jj,iku) 295 # if defined key_trddyn || defined key_trd_vor296 ! save the momentum trends for diagnostics297 utrd(ji,jj,iku,1) = zhpi(ji,jj,iku)298 # endif299 301 ENDIF 300 302 ! on j-direction … … 307 309 ! add the new one to the general momentum trend 308 310 va(ji,jj,ikv) = va(ji,jj,ikv) + zhpj(ji,jj,ikv) 309 # if defined key_trddyn || defined key_trd_vor310 ! save the momentum trends for diagnostics311 vtrd(ji,jj,ikv,1) = zhpj(ji,jj,ikv)312 # endif313 311 ENDIF 314 312 # if ! defined key_vectopt_loop … … 316 314 # endif 317 315 END DO 316 317 ! save the hydrostatic pressure gradient trends for diagnostic 318 ! momentum trends 319 IF( l_trddyn ) THEN 320 zhpi(:,:,:) = ua(:,:,:) - ztdua(:,:,:) 321 zhpj(:,:,:) = va(:,:,:) - ztdva(:,:,:) 322 CALL trd_mod(zhpi, zhpj, jpdtdhpg, 'DYN', kt) 323 ENDIF 318 324 319 325 IF(l_ctl) THEN ! print sum trends (used for debugging) … … 369 375 REAL(wp) :: & 370 376 zcoef0, zcoef1, zuap, zvap ! temporary scalars 377 REAL(wp), DIMENSION(jpi,jpj,jpk) :: & 378 ztdua, ztdva ! temporary scalars 371 379 !!---------------------------------------------------------------------- 372 380 … … 375 383 IF(lwp) WRITE(numout,*) 'dyn_hpg : hydrostatic pressure gradient trend' 376 384 IF(lwp) WRITE(numout,*) '~~~~~~~ z-coordinate case ' 385 ENDIF 386 387 ! Save ua and va trends 388 IF( l_trddyn ) THEN 389 ztdua(:,:,:) = ua(:,:,:) 390 ztdva(:,:,:) = va(:,:,:) 377 391 ENDIF 378 392 … … 385 399 ! 1. Surface value 386 400 ! ---------------- 387 zcoef1 = zcoef0 * fse3w(1,1,1)388 401 DO jj = 2, jpjm1 389 402 DO ji = fs_2, fs_jpim1 ! vector opt. 403 zcoef1 = zcoef0 * fse3w(ji,jj,1) 390 404 ! hydrostatic pressure gradient 391 405 zhpi(ji,jj,1) = zcoef1 * ( rhd(ji+1,jj,1) - rhd(ji,jj,1) ) / e1u(ji,jj) … … 394 408 ua(ji,jj,1) = ua(ji,jj,1) + zhpi(ji,jj,1) 395 409 va(ji,jj,1) = va(ji,jj,1) + zhpj(ji,jj,1) 396 # if defined key_trddyn || defined key_trd_vor397 ! save the momentum trends for diagnostics398 utrd(ji,jj,1,1) = zhpi(ji,jj,1)399 vtrd(ji,jj,1,1) = zhpj(ji,jj,1)400 # endif401 410 END DO 402 411 END DO … … 405 414 ! ----------------- 406 415 DO jk = 2, jpkm1 407 zcoef1 = zcoef0 * fse3w(1,1,jk)408 416 DO jj = 2, jpjm1 409 417 DO ji = fs_2, fs_jpim1 ! vector opt. 418 zcoef1 = zcoef0 * fse3w(ji,jj,jk) 410 419 ! hydrostatic pressure gradient 411 420 zhpi(ji,jj,jk) = zhpi(ji,jj,jk-1) & 412 + zcoef1 * ( ( rhd(ji+1,jj,jk)+rhd(ji+1,jj,jk-1) ) &413 - ( rhd(ji ,jj,jk)+rhd(ji ,jj,jk-1) ) ) / e1u(ji,jj)421 & + zcoef1 * ( ( rhd(ji+1,jj,jk)+rhd(ji+1,jj,jk-1) ) & 422 & - ( rhd(ji ,jj,jk)+rhd(ji ,jj,jk-1) ) ) / e1u(ji,jj) 414 423 415 424 zhpj(ji,jj,jk) = zhpj(ji,jj,jk-1) & 416 + zcoef1 * ( ( rhd(ji,jj+1,jk)+rhd(ji,jj+1,jk-1) ) &417 - ( rhd(ji,jj, jk)+rhd(ji,jj ,jk-1) ) ) / e2v(ji,jj)425 & + zcoef1 * ( ( rhd(ji,jj+1,jk)+rhd(ji,jj+1,jk-1) ) & 426 & - ( rhd(ji,jj, jk)+rhd(ji,jj ,jk-1) ) ) / e2v(ji,jj) 418 427 ! add to the general momentum trend 419 428 ua(ji,jj,jk) = ua(ji,jj,jk) + zhpi(ji,jj,jk) 420 429 va(ji,jj,jk) = va(ji,jj,jk) + zhpj(ji,jj,jk) 421 # if defined key_trddyn || defined key_trd_vor422 ! save the momentum trends for diagnostics423 utrd(ji,jj,jk,1) = zhpi(ji,jj,jk)424 vtrd(ji,jj,jk,1) = zhpj(ji,jj,jk)425 # endif426 430 END DO 427 431 END DO 428 432 END DO 433 434 ! save the hydrostatic pressure ggradient trends for diagnostic 435 ! momentum trends 436 IF( l_trddyn ) THEN 437 zhpi(:,:,:) = ua(:,:,:) - ztdua(:,:,:) 438 zhpj(:,:,:) = va(:,:,:) - ztdva(:,:,:) 439 440 CALL trd_mod(zhpi, zhpj, jpdtdhpg, 'DYN', kt) 441 ENDIF 429 442 430 443 IF(l_ctl) THEN ! print sum trends (used for debugging)
Note: See TracChangeset
for help on using the changeset viewer.